Commit 1075c6f7e10b4ed7a83ec3d8d2f1c8715468885b

Authored by 芯火源
1 parent d708f589

fix(DEFECT-1305): 命令下发多种协议兼容问题

@@ -94,13 +94,16 @@ public abstract class AbstractRpcController extends BaseController { @@ -94,13 +94,16 @@ public abstract class AbstractRpcController extends BaseController {
94 if(!additional.has(FastIotConstants.Rpc.TARGET_ID)){ 94 if(!additional.has(FastIotConstants.Rpc.TARGET_ID)){
95 additional.put(FastIotConstants.Rpc.TARGET_ID, deviceId.getId().toString()); 95 additional.put(FastIotConstants.Rpc.TARGET_ID, deviceId.getId().toString());
96 } 96 }
97 - String methodName = rpcRequestBody.get("method").asText();  
98 - ObjectNode methodParams = (ObjectNode) rpcRequestBody.get("params");  
99 - methodParams.put(FastIotConstants.Rpc.TARGET_NAME,targetDevice.getName());  
100 - DeviceId realDevice = DeviceTypeEnum.SENSOR == targetDevice.getDeviceType()?new DeviceId(UUID.fromString(targetDevice.getGatewayId())):deviceId;  
101 String additionalInfo = JacksonUtil.toString(additional); 97 String additionalInfo = JacksonUtil.toString(additional);
  98 + String methodName = rpcRequestBody.get(FastIotConstants.Rpc.METHOD_NAME).asText();
  99 + JsonNode params = rpcRequestBody.get(FastIotConstants.Rpc.PARAMS_NAME);
  100 + if(params!=null && !params.isTextual()){
  101 + ObjectNode methodParams = (ObjectNode) rpcRequestBody.get(FastIotConstants.Rpc.PARAMS_NAME);
  102 + methodParams.put(FastIotConstants.Rpc.TARGET_NAME,targetDevice.getName());
  103 + }
  104 + DeviceId realDevice = DeviceTypeEnum.SENSOR == targetDevice.getDeviceType()?new DeviceId(UUID.fromString(targetDevice.getGatewayId())):deviceId;
102 105
103 - ToDeviceRpcRequestBody body = new ToDeviceRpcRequestBody(methodName, JacksonUtil.toString(methodParams)); 106 + ToDeviceRpcRequestBody body = new ToDeviceRpcRequestBody(methodName, JacksonUtil.toString(params));
104 TenantId tenantId = currentUser.getTenantId(); 107 TenantId tenantId = currentUser.getTenantId();
105 final DeferredResult<ResponseEntity> response = new DeferredResult<>(); 108 final DeferredResult<ResponseEntity> response = new DeferredResult<>();
106 long timeout = rpcRequestBody.has(DataConstants.TIMEOUT) ? rpcRequestBody.get(DataConstants.TIMEOUT).asLong() : defaultTimeout; 109 long timeout = rpcRequestBody.has(DataConstants.TIMEOUT) ? rpcRequestBody.get(DataConstants.TIMEOUT).asLong() : defaultTimeout;