Commit 82ab51e4a43cf873680a7defcd33057b66106100

Authored by 云中非
1 parent acfb186d

fix: 场景联动执行条件或触发器为空异常修复

@@ -3,15 +3,12 @@ package org.thingsboard.server.dao.yunteng.impl; @@ -3,15 +3,12 @@ package org.thingsboard.server.dao.yunteng.impl;
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6 -import com.fasterxml.jackson.core.type.TypeReference;  
7 import com.fasterxml.jackson.databind.JsonNode; 6 import com.fasterxml.jackson.databind.JsonNode;
8 -import com.fasterxml.jackson.databind.ObjectMapper;  
9 import com.fasterxml.jackson.databind.node.ObjectNode; 7 import com.fasterxml.jackson.databind.node.ObjectNode;
10 import lombok.RequiredArgsConstructor; 8 import lombok.RequiredArgsConstructor;
11 import org.apache.commons.lang3.StringUtils; 9 import org.apache.commons.lang3.StringUtils;
12 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
13 import org.springframework.transaction.annotation.Transactional; 11 import org.springframework.transaction.annotation.Transactional;
14 -import org.thingsboard.server.common.data.id.EntityId;  
15 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; 12 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
16 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; 13 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
17 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 14 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
@@ -22,8 +19,6 @@ import org.thingsboard.server.common.data.yunteng.enums.TriggerTypeEnum; @@ -22,8 +19,6 @@ import org.thingsboard.server.common.data.yunteng.enums.TriggerTypeEnum;
22 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil; 19 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
23 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; 20 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
24 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 21 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
25 -import org.thingsboard.server.dao.exception.DataValidationException;  
26 -import org.thingsboard.server.dao.yunteng.ConvertConfig;  
27 import org.thingsboard.server.dao.yunteng.entities.*; 22 import org.thingsboard.server.dao.yunteng.entities.*;
28 import org.thingsboard.server.dao.yunteng.mapper.*; 23 import org.thingsboard.server.dao.yunteng.mapper.*;
29 import org.thingsboard.server.dao.yunteng.service.*; 24 import org.thingsboard.server.dao.yunteng.service.*;
@@ -182,8 +177,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -182,8 +177,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
182 177
183 178
184 } 179 }
185 - } else {  
186 - return;  
187 } 180 }
188 181
189 // 先删除触发器 182 // 先删除触发器
@@ -194,15 +187,17 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -194,15 +187,17 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
194 187
195 188
196 // 如果获取的触发器不为空,进行添加操作 189 // 如果获取的触发器不为空,进行添加操作
197 - List<Trigger> triggers =  
198 - triggerDTOS.stream()  
199 - .map(triggerDTO -> {  
200 - triggerDTO.setTenantId(sceneLinkage.getTenantId());  
201 - triggerDTO.setSceneLinkageId(sceneLinkage.getId());  
202 - return triggerDTO.getEntity(Trigger.class);  
203 - })  
204 - .collect(Collectors.toList());  
205 - triggerService.insertBatch(triggers, 1000); 190 + if(triggerDTOS != null && !triggerDTOS.isEmpty()){
  191 + List<Trigger> triggers =
  192 + triggerDTOS.stream()
  193 + .map(triggerDTO -> {
  194 + triggerDTO.setTenantId(sceneLinkage.getTenantId());
  195 + triggerDTO.setSceneLinkageId(sceneLinkage.getId());
  196 + return triggerDTO.getEntity(Trigger.class);
  197 + })
  198 + .collect(Collectors.toList());
  199 + triggerService.insertBatch(triggers, 1000);
  200 + }
206 } 201 }
207 202
208 /** 203 /**
@@ -238,22 +233,24 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -238,22 +233,24 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
238 .lambda() 233 .lambda()
239 .eq(StringUtils.isNoneBlank(sceneLinkageDTO.getId()), DoAction::getSceneLinkageId, sceneLinkageDTO.getId())); 234 .eq(StringUtils.isNoneBlank(sceneLinkageDTO.getId()), DoAction::getSceneLinkageId, sceneLinkageDTO.getId()));
240 235
  236 + if (actionDTOS != null && !actionDTOS.isEmpty()) {
  237 + List<DoAction> collectA =
  238 + actionDTOS.stream()
  239 + .map(doActionDTO -> {
  240 + doActionDTO.setTenantId(sceneLinkageDTO.getTenantId());
  241 + doActionDTO.setSceneLinkageId(sceneLinkageDTO.getId());
  242 + if (ActionTypeEnum.DEVICE_OUT.equals(doActionDTO.getOutTarget())) {
  243 + ObjectNode doContext = JacksonUtil.newObjectNode();
  244 + doContext.put("method", "methodThingskit");
  245 + doContext.put("params", doActionDTO.getDoContext());
  246 + doActionDTO.setDoContext(doContext);
  247 + }
  248 + return doActionDTO.getEntity(DoAction.class);
  249 + })
  250 + .collect(Collectors.toList());
  251 + doActionService.insertBatch(collectA, 1000);
241 252
242 - List<DoAction> collectA =  
243 - sceneLinkageDTO.getDoActions().stream()  
244 - .map(doActionDTO -> {  
245 - doActionDTO.setTenantId(sceneLinkageDTO.getTenantId());  
246 - doActionDTO.setSceneLinkageId(sceneLinkageDTO.getId());  
247 - if (ActionTypeEnum.DEVICE_OUT.equals(doActionDTO.getOutTarget())) {  
248 - ObjectNode doContext = JacksonUtil.newObjectNode();  
249 - doContext.put("method", "methodThingskit");  
250 - doContext.put("params", doActionDTO.getDoContext());  
251 - doActionDTO.setDoContext(doContext);  
252 - }  
253 - return doActionDTO.getEntity(DoAction.class);  
254 - })  
255 - .collect(Collectors.toList());  
256 - doActionService.insertBatch(collectA, 1000); 253 + }
257 254
258 255
259 } 256 }
@@ -293,17 +290,20 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap @@ -293,17 +290,20 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
293 290
294 291
295 // 4.批量新增执行条件 292 // 4.批量新增执行条件
296 - List<DoCondition> collectC =  
297 - sceneLinkageDTO.getDoConditions().stream()  
298 - .map(doConditionDTO -> { 293 + if (conditionDTOS != null && !conditionDTOS.isEmpty()) {
  294 + List<DoCondition> collectC =
  295 + conditionDTOS.stream()
  296 + .map(doConditionDTO -> {
  297 +
  298 + doConditionDTO.setTenantId(sceneLinkageDTO.getTenantId());
  299 + doConditionDTO.setSceneLinkageId(sceneLinkageDTO.getId());
  300 + return doConditionDTO.getEntity(DoCondition.class);
  301 + }
  302 + )
  303 + .collect(Collectors.toList());
  304 + doConditionService.insertBatch(collectC, 1000);
299 305
300 - doConditionDTO.setTenantId(sceneLinkageDTO.getTenantId());  
301 - doConditionDTO.setSceneLinkageId(sceneLinkageDTO.getId());  
302 - return doConditionDTO.getEntity(DoCondition.class);  
303 - }  
304 - )  
305 - .collect(Collectors.toList());  
306 - doConditionService.insertBatch(collectC, 1000); 306 + }
307 } 307 }
308 308
309 /** 309 /**