Commit 82ab51e4a43cf873680a7defcd33057b66106100

Authored by 云中非
1 parent acfb186d

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

... ... @@ -3,15 +3,12 @@ package org.thingsboard.server.dao.yunteng.impl;
3 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6   -import com.fasterxml.jackson.core.type.TypeReference;
7 6 import com.fasterxml.jackson.databind.JsonNode;
8   -import com.fasterxml.jackson.databind.ObjectMapper;
9 7 import com.fasterxml.jackson.databind.node.ObjectNode;
10 8 import lombok.RequiredArgsConstructor;
11 9 import org.apache.commons.lang3.StringUtils;
12 10 import org.springframework.stereotype.Service;
13 11 import org.springframework.transaction.annotation.Transactional;
14   -import org.thingsboard.server.common.data.id.EntityId;
15 12 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
16 13 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
17 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 19 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
23 20 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
24 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 22 import org.thingsboard.server.dao.yunteng.entities.*;
28 23 import org.thingsboard.server.dao.yunteng.mapper.*;
29 24 import org.thingsboard.server.dao.yunteng.service.*;
... ... @@ -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 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 233 .lambda()
239 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 290
294 291
295 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 /**
... ...