Commit 34cffaed69559a609160d9f54cbcef935a8d29de

Authored by 云中非
1 parent 2a0496be

refactor: 场景联动执行动作命令内容类型调整

1、从字符串改为json
1 1 package org.thingsboard.server.common.data.yunteng.dto;
2 2
  3 +import com.fasterxml.jackson.databind.JsonNode;
3 4 import io.swagger.annotations.ApiModelProperty;
4 5 import lombok.Data;
5 6 import lombok.EqualsAndHashCode;
... ... @@ -22,7 +23,7 @@ public class DoActionDTO extends TenantDTO{
22 23
23 24
24 25 @ApiModelProperty(value = "场景联动内容")
25   - private String doContext;
  26 + private JsonNode doContext;
26 27
27 28 @ApiModelProperty(value = "输出目标:设备,场景,其他")
28 29 private ActionTypeEnum outTarget;
... ...
... ... @@ -2,6 +2,8 @@ package org.thingsboard.server.dao.yunteng.entities;
2 2
3 3 import com.baomidou.mybatisplus.annotation.TableField;
4 4 import com.baomidou.mybatisplus.annotation.TableName;
  5 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
  6 +import com.fasterxml.jackson.databind.JsonNode;
5 7 import lombok.Data;
6 8 import lombok.EqualsAndHashCode;
7 9 import org.apache.ibatis.type.EnumTypeHandler;
... ... @@ -24,7 +26,8 @@ public class DoAction extends TenantBaseEntity {
24 26 /**
25 27 * 场景联动内容
26 28 */
27   - private String doContext;
  29 + @TableField(typeHandler = JacksonTypeHandler.class)
  30 + private JsonNode doContext;
28 31
29 32 /**
30 33 * 场景联动id
... ...
... ... @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
6 6 import com.fasterxml.jackson.core.type.TypeReference;
7 7 import com.fasterxml.jackson.databind.JsonNode;
8 8 import com.fasterxml.jackson.databind.ObjectMapper;
  9 +import com.fasterxml.jackson.databind.node.ObjectNode;
9 10 import lombok.RequiredArgsConstructor;
10 11 import org.apache.commons.lang3.StringUtils;
11 12 import org.springframework.stereotype.Service;
... ... @@ -219,9 +220,10 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
219 220 .map(doActionDTO -> {
220 221 doActionDTO.setTenantId(sceneLinkageDTO.getTenantId());
221 222 doActionDTO.setSceneLinkageId(sceneLinkageDTO.getId());
222   - StringBuilder contextBuilder = new StringBuilder("{\"method\": \"methodThingskit\",\"params\": ");
223   - contextBuilder.append(doActionDTO.getDoContext());
224   - doActionDTO.setDoContext(contextBuilder.toString());
  223 + ObjectNode doContext = JacksonUtil.newObjectNode();
  224 + doContext.put("method","methodThingskit");
  225 + doContext.put("params",doActionDTO.getDoContext());
  226 + doActionDTO.setDoContext(doContext);
225 227 return doActionDTO.getEntity(DoAction.class);
226 228 })
227 229 .collect(Collectors.toList());
... ...
... ... @@ -5,7 +5,7 @@
5 5 <resultMap id="actionDTO" type="org.thingsboard.server.common.data.yunteng.dto.DoActionDTO">
6 6 <result property="id" column="id"/>
7 7 <result property="deviceId" column="device_id"/>
8   - <result property="doContext" column="do_context"/>
  8 + <result property="doContext" column="do_context" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
9 9 <result property="outTarget" column="out_target" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
10 10 <result property="sceneLinkageId" column="scene_linkage_id"/>
11 11 <result property="description" column="description"/>
... ...
... ... @@ -3,6 +3,7 @@
3 3 */
4 4 package org.thingsboard.rule.engine.yunteng.scene;
5 5
  6 +import com.fasterxml.jackson.databind.JsonNode;
6 7 import lombok.extern.slf4j.Slf4j;
7 8 import org.jetbrains.annotations.NotNull;
8 9 import org.thingsboard.rule.engine.api.TbContext;
... ... @@ -12,6 +13,7 @@ import org.thingsboard.server.common.data.device.profile.AlarmConditionFilter;
12 13 import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey;
13 14 import org.thingsboard.server.common.data.rule.RuleNodeState;
14 15 import org.thingsboard.server.common.data.yunteng.dto.TriggerDTO;
  16 +import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
15 17 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
16 18 import org.thingsboard.server.common.msg.TbMsg;
17 19 import org.thingsboard.server.common.msg.TbMsgMetaData;
... ... @@ -176,7 +178,7 @@ class ReactState {
176 178 }
177 179 }
178 180
179   - private TbMsg rpcMsg(TbContext ctx, TbMsg msg,String context){
  181 + private TbMsg rpcMsg(TbContext ctx, TbMsg msg, JsonNode context){
180 182 String lastMsgQueueName = msg.getQueueName();
181 183 TbMsgMetaData metaData = msg.getMetaData();
182 184 metaData.putValue(DataConstants.IS_CLEARED_ALARM, Boolean.TRUE.toString());
... ... @@ -185,7 +187,7 @@ class ReactState {
185 187 , msg.getOriginator()
186 188 , msg != null ? msg.getCustomerId() : null
187 189 , metaData
188   - , context);
  190 + , JacksonUtil.toString(context));
189 191 return newMsg;
190 192 }
191 193 }
... ...