Commit 2e3350f246c2c579153305a416b21826fa8ec36b

Authored by xp.Huang
2 parents 25ac41fe 1c38ad2a

Merge branch '20200307' into 'master'

feat: 设备配置编辑异常

See merge request huang/thingsboard3.3.2!61
1 package org.thingsboard.server.common.data.yunteng.dto; 1 package org.thingsboard.server.common.data.yunteng.dto;
2 2
  3 +import com.fasterxml.jackson.databind.JsonNode;
3 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
4 import lombok.Data; 5 import lombok.Data;
5 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
@@ -22,7 +23,7 @@ public class DoActionDTO extends TenantDTO{ @@ -22,7 +23,7 @@ public class DoActionDTO extends TenantDTO{
22 23
23 24
24 @ApiModelProperty(value = "场景联动内容") 25 @ApiModelProperty(value = "场景联动内容")
25 - private String doContext; 26 + private JsonNode doContext;
26 27
27 @ApiModelProperty(value = "输出目标:设备,场景,其他") 28 @ApiModelProperty(value = "输出目标:设备,场景,其他")
28 private ActionTypeEnum outTarget; 29 private ActionTypeEnum outTarget;
@@ -2,6 +2,8 @@ package org.thingsboard.server.dao.yunteng.entities; @@ -2,6 +2,8 @@ package org.thingsboard.server.dao.yunteng.entities;
2 2
3 import com.baomidou.mybatisplus.annotation.TableField; 3 import com.baomidou.mybatisplus.annotation.TableField;
4 import com.baomidou.mybatisplus.annotation.TableName; 4 import com.baomidou.mybatisplus.annotation.TableName;
  5 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
  6 +import com.fasterxml.jackson.databind.JsonNode;
5 import lombok.Data; 7 import lombok.Data;
6 import lombok.EqualsAndHashCode; 8 import lombok.EqualsAndHashCode;
7 import org.apache.ibatis.type.EnumTypeHandler; 9 import org.apache.ibatis.type.EnumTypeHandler;
@@ -24,7 +26,8 @@ public class DoAction extends TenantBaseEntity { @@ -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 * 场景联动id 33 * 场景联动id
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
6 import com.fasterxml.jackson.core.type.TypeReference; 6 import com.fasterxml.jackson.core.type.TypeReference;
7 import com.fasterxml.jackson.databind.JsonNode; 7 import com.fasterxml.jackson.databind.JsonNode;
8 import com.fasterxml.jackson.databind.ObjectMapper; 8 import com.fasterxml.jackson.databind.ObjectMapper;
  9 +import com.fasterxml.jackson.databind.node.ObjectNode;
9 import lombok.RequiredArgsConstructor; 10 import lombok.RequiredArgsConstructor;
10 import org.apache.commons.lang3.StringUtils; 11 import org.apache.commons.lang3.StringUtils;
11 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
@@ -219,9 +220,10 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -219,9 +220,10 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
219 .map(doActionDTO -> { 220 .map(doActionDTO -> {
220 doActionDTO.setTenantId(sceneLinkageDTO.getTenantId()); 221 doActionDTO.setTenantId(sceneLinkageDTO.getTenantId());
221 doActionDTO.setSceneLinkageId(sceneLinkageDTO.getId()); 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 return doActionDTO.getEntity(DoAction.class); 227 return doActionDTO.getEntity(DoAction.class);
226 }) 228 })
227 .collect(Collectors.toList()); 229 .collect(Collectors.toList());
@@ -84,7 +84,9 @@ public class YtDeviceProfileServiceImpl @@ -84,7 +84,9 @@ public class YtDeviceProfileServiceImpl
84 alarmProfileMapper.insert(alarmProfile); 84 alarmProfileMapper.insert(alarmProfile);
85 } 85 }
86 }); 86 });
87 - Optional.ofNullable(oldIds).ifPresent(item -> alarmProfileMapper.deleteBatchIds(item)); 87 + if(!oldIds.isEmpty()){
  88 + alarmProfileMapper.deleteBatchIds(oldIds);
  89 + }
88 return deviceProfileDTO; 90 return deviceProfileDTO;
89 } 91 }
90 92
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <resultMap id="actionDTO" type="org.thingsboard.server.common.data.yunteng.dto.DoActionDTO"> 5 <resultMap id="actionDTO" type="org.thingsboard.server.common.data.yunteng.dto.DoActionDTO">
6 <result property="id" column="id"/> 6 <result property="id" column="id"/>
7 <result property="deviceId" column="device_id"/> 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 <result property="outTarget" column="out_target" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/> 9 <result property="outTarget" column="out_target" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
10 <result property="sceneLinkageId" column="scene_linkage_id"/> 10 <result property="sceneLinkageId" column="scene_linkage_id"/>
11 <result property="description" column="description"/> 11 <result property="description" column="description"/>
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 */ 3 */
4 package org.thingsboard.rule.engine.yunteng.scene; 4 package org.thingsboard.rule.engine.yunteng.scene;
5 5
  6 +import com.fasterxml.jackson.databind.JsonNode;
6 import lombok.extern.slf4j.Slf4j; 7 import lombok.extern.slf4j.Slf4j;
7 import org.jetbrains.annotations.NotNull; 8 import org.jetbrains.annotations.NotNull;
8 import org.thingsboard.rule.engine.api.TbContext; 9 import org.thingsboard.rule.engine.api.TbContext;
@@ -12,6 +13,7 @@ import org.thingsboard.server.common.data.device.profile.AlarmConditionFilter; @@ -12,6 +13,7 @@ import org.thingsboard.server.common.data.device.profile.AlarmConditionFilter;
12 import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey; 13 import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey;
13 import org.thingsboard.server.common.data.rule.RuleNodeState; 14 import org.thingsboard.server.common.data.rule.RuleNodeState;
14 import org.thingsboard.server.common.data.yunteng.dto.TriggerDTO; 15 import org.thingsboard.server.common.data.yunteng.dto.TriggerDTO;
  16 +import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
15 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils; 17 import org.thingsboard.server.common.data.yunteng.utils.SpringBeanUtils;
16 import org.thingsboard.server.common.msg.TbMsg; 18 import org.thingsboard.server.common.msg.TbMsg;
17 import org.thingsboard.server.common.msg.TbMsgMetaData; 19 import org.thingsboard.server.common.msg.TbMsgMetaData;
@@ -176,7 +178,7 @@ class ReactState { @@ -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 String lastMsgQueueName = msg.getQueueName(); 182 String lastMsgQueueName = msg.getQueueName();
181 TbMsgMetaData metaData = msg.getMetaData(); 183 TbMsgMetaData metaData = msg.getMetaData();
182 metaData.putValue(DataConstants.IS_CLEARED_ALARM, Boolean.TRUE.toString()); 184 metaData.putValue(DataConstants.IS_CLEARED_ALARM, Boolean.TRUE.toString());
@@ -185,7 +187,7 @@ class ReactState { @@ -185,7 +187,7 @@ class ReactState {
185 , msg.getOriginator() 187 , msg.getOriginator()
186 , msg != null ? msg.getCustomerId() : null 188 , msg != null ? msg.getCustomerId() : null
187 , metaData 189 , metaData
188 - , context); 190 + , JacksonUtil.toString(context));
189 return newMsg; 191 return newMsg;
190 } 192 }
191 } 193 }