Commit 60555b6bf33be1a56ec257a6b0528b4320d01f67

Authored by 芯火源
1 parent 9dca6291

fix: 命令下发记录内容不一致问题修复

@@ -282,8 +282,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { @@ -282,8 +282,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
282 rpc.setExpirationTime(request.getExpirationTime()); 282 rpc.setExpirationTime(request.getExpirationTime());
283 rpc.setRequest(JacksonUtil.valueToTree(request)); 283 rpc.setRequest(JacksonUtil.valueToTree(request));
284 rpc.setStatus(status); 284 rpc.setStatus(status);
285 - rpc.setAdditionalInfo(JacksonUtil.toJsonNode(request.getAdditionalInfo()));  
286 -  
287 rpc.setAdditionalInfo(additional); 285 rpc.setAdditionalInfo(additional);
288 286
289 return systemContext.getTbRpcService().save(tenantId, rpc); 287 return systemContext.getTbRpcService().save(tenantId, rpc);
@@ -81,7 +81,12 @@ public abstract class AbstractRpcController extends BaseController { @@ -81,7 +81,12 @@ public abstract class AbstractRpcController extends BaseController {
81 protected DeferredResult<ResponseEntity> handleDeviceRPCRequest(boolean oneWay, DeviceId deviceId, String requestBody, HttpStatus timeoutStatus, HttpStatus noActiveConnectionStatus) throws ThingsboardException { 81 protected DeferredResult<ResponseEntity> handleDeviceRPCRequest(boolean oneWay, DeviceId deviceId, String requestBody, HttpStatus timeoutStatus, HttpStatus noActiveConnectionStatus) throws ThingsboardException {
82 try { 82 try {
83 JsonNode rpcRequestBody = JacksonUtil.toJsonNode(requestBody); 83 JsonNode rpcRequestBody = JacksonUtil.toJsonNode(requestBody);
84 - ToDeviceRpcRequestBody body = new ToDeviceRpcRequestBody(rpcRequestBody.get("method").asText(), JacksonUtil.toString(rpcRequestBody.get("params"))); 84 +
  85 + //Thingskit function
  86 + JsonNode paramJson = rpcRequestBody.get("params");
  87 + String paramStr =paramJson.isTextual()?paramJson.asText():JacksonUtil.toString(paramJson);
  88 +
  89 + ToDeviceRpcRequestBody body = new ToDeviceRpcRequestBody(rpcRequestBody.get("method").asText(), paramStr);
85 SecurityUser currentUser = getCurrentUser(); 90 SecurityUser currentUser = getCurrentUser();
86 TenantId tenantId = currentUser.getTenantId(); 91 TenantId tenantId = currentUser.getTenantId();
87 final DeferredResult<ResponseEntity> response = new DeferredResult<>(); 92 final DeferredResult<ResponseEntity> response = new DeferredResult<>();
@@ -173,8 +173,9 @@ public class RpcCommandTask { @@ -173,8 +173,9 @@ public class RpcCommandTask {
173 SecurityUser securityUser, 173 SecurityUser securityUser,
174 String taskCenterId) { 174 String taskCenterId) {
175 JsonNode rpcCommand = cmdJsonNode.get(FastIotConstants.RPC_COMMAND); 175 JsonNode rpcCommand = cmdJsonNode.get(FastIotConstants.RPC_COMMAND);
  176 + String paramStr =rpcCommand.isTextual()?rpcCommand.asText():JacksonUtil.toString(rpcCommand);
176 ToDeviceRpcRequestBody body = 177 ToDeviceRpcRequestBody body =
177 - new ToDeviceRpcRequestBody("methodThingskit", JacksonUtil.toString(rpcCommand)); 178 + new ToDeviceRpcRequestBody(FastIotConstants.Rpc.METHOD_NAME_VALUE, paramStr);
178 DeviceId deviceId = new DeviceId(UUID.fromString(originateId)); 179 DeviceId deviceId = new DeviceId(UUID.fromString(originateId));
179 ObjectNode objectNode = JacksonUtil.newObjectNode(); 180 ObjectNode objectNode = JacksonUtil.newObjectNode();
180 objectNode.put( 181 objectNode.put(
@@ -165,6 +165,7 @@ public interface FastIotConstants { @@ -165,6 +165,7 @@ public interface FastIotConstants {
165 165
166 /**RPC方法名*/ 166 /**RPC方法名*/
167 public static String METHOD_NAME = "method"; 167 public static String METHOD_NAME = "method";
  168 + public static String METHOD_NAME_VALUE = "methodThingskit";
168 /**RPC参数*/ 169 /**RPC参数*/
169 public static String PARAMS_NAME = "params"; 170 public static String PARAMS_NAME = "params";
170 /**实控设备*/ 171 /**实控设备*/
@@ -136,12 +136,8 @@ public class JsonTcpAdaptor implements TcpTransportAdaptor { @@ -136,12 +136,8 @@ public class JsonTcpAdaptor implements TcpTransportAdaptor {
136 136
137 @Override 137 @Override
138 public Optional<TcpDownEntry> convertToPublish(TcpDeviceWareSessionContext ctx, TransportProtos.ToDeviceRpcRequestMsg rpcRequest) throws ExecutionException, InterruptedException { 138 public Optional<TcpDownEntry> convertToPublish(TcpDeviceWareSessionContext ctx, TransportProtos.ToDeviceRpcRequestMsg rpcRequest) throws ExecutionException, InterruptedException {
139 -// ListenableFuture<Object> result = ctx.getContext().getJsEngine().invokeFunction(ctx.getRpcScriptId(), rpcRequest.getParams());  
140 -// return Optional.of(Futures.transform(result, t -> JacksonUtil.fromString(t.toString(), TcpDownEntry.class), MoreExecutors.directExecutor()).get());  
141 String payload = rpcRequest.getParams();//methodThingskit 139 String payload = rpcRequest.getParams();//methodThingskit
142 - if (!payload.startsWith("{") && !payload.endsWith("}")) {  
143 - payload = payload.replace("\"","").replace(" ","");  
144 - } 140 +
145 TcpDownEntry data = new TcpDownEntry(); 141 TcpDownEntry data = new TcpDownEntry();
146 data.setDatas(payload); 142 data.setDatas(payload);
147 data.setIdentifier(payload); 143 data.setIdentifier(payload);
@@ -21,6 +21,7 @@ import org.springframework.util.StringUtils; @@ -21,6 +21,7 @@ import org.springframework.util.StringUtils;
21 import org.thingsboard.server.common.data.DataConstants; 21 import org.thingsboard.server.common.data.DataConstants;
22 import org.thingsboard.server.common.data.id.DeviceId; 22 import org.thingsboard.server.common.data.id.DeviceId;
23 import org.thingsboard.server.common.data.kv.*; 23 import org.thingsboard.server.common.data.kv.*;
  24 +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
24 import org.thingsboard.server.gen.transport.TransportProtos; 25 import org.thingsboard.server.gen.transport.TransportProtos;
25 import org.thingsboard.server.gen.transport.TransportProtos.*; 26 import org.thingsboard.server.gen.transport.TransportProtos.*;
26 27
@@ -136,7 +137,7 @@ public class JsonConverter { @@ -136,7 +137,7 @@ public class JsonConverter {
136 public static JsonElement toJson(TransportProtos.ToDeviceRpcRequestMsg msg, boolean includeRequestId) { 137 public static JsonElement toJson(TransportProtos.ToDeviceRpcRequestMsg msg, boolean includeRequestId) {
137 //Thingskit function 138 //Thingskit function
138 JsonObject result = null; 139 JsonObject result = null;
139 - if("methodThingskit".equals(msg.getMethodName())){ 140 + if(FastIotConstants.Rpc.METHOD_NAME_VALUE.equals(msg.getMethodName())){
140 result= JSON_PARSER.parse(msg.getParams()).getAsJsonObject(); 141 result= JSON_PARSER.parse(msg.getParams()).getAsJsonObject();
141 }else{ 142 }else{
142 result = new JsonObject(); 143 result = new JsonObject();
@@ -252,7 +252,7 @@ public class TkSceneLinkageServiceImpl @@ -252,7 +252,7 @@ public class TkSceneLinkageServiceImpl
252 JsonNode inputContext = 252 JsonNode inputContext =
253 doActionDTO.getDoContext().get(FastIotConstants.Rpc.PARAMS_NAME); 253 doActionDTO.getDoContext().get(FastIotConstants.Rpc.PARAMS_NAME);
254 ObjectNode outputContext = JacksonUtil.newObjectNode(); 254 ObjectNode outputContext = JacksonUtil.newObjectNode();
255 - outputContext.put(FastIotConstants.Rpc.METHOD_NAME, "methodThingskit"); 255 + outputContext.put(FastIotConstants.Rpc.METHOD_NAME, FastIotConstants.Rpc.METHOD_NAME_VALUE);
256 if (inputContext == null) { 256 if (inputContext == null) {
257 outputContext.put(FastIotConstants.Rpc.PARAMS_NAME, ""); 257 outputContext.put(FastIotConstants.Rpc.PARAMS_NAME, "");
258 } else if (inputContext.isTextual()) { 258 } else if (inputContext.isTextual()) {