Commit 734adf67aa9a65764a3dde02bf48a9c863e9324b

Authored by 云中非
1 parent 77d50fd4

fix: 场景联动所属设备接口兼容查看功能

... ... @@ -102,7 +102,7 @@ public class YtSceneLinkageController extends BaseController {
102 102
103 103
104 104
105   - @ApiOperation(value = "通过场景id获取所属组织的设备集合")
  105 + @ApiOperation(value = "组织的设备集合")
106 106 @GetMapping("/device")
107 107 public ResponseEntity<Map> findDeviceList(@RequestParam String organizationId)
108 108 throws ThingsboardException {
... ...
... ... @@ -74,6 +74,7 @@ public class DeviceDTO extends TenantDTO {
74 74 private Long lastOnlineTime;
75 75 private Long lastOfflineTime;
76 76 private String description;
  77 + private boolean enable;
77 78
78 79 public void setDeviceState(boolean deviceState) {
79 80 if (deviceState) {
... ...
... ... @@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6 6 import com.fasterxml.jackson.databind.JsonNode;
7 7 import com.fasterxml.jackson.databind.node.ObjectNode;
  8 +import com.google.common.util.concurrent.MoreExecutors;
8 9 import lombok.RequiredArgsConstructor;
9 10 import org.apache.commons.lang3.StringUtils;
10 11 import org.springframework.scheduling.annotation.Async;
  12 +import org.springframework.scheduling.annotation.EnableAsync;
11 13 import org.springframework.stereotype.Service;
12 14 import org.springframework.transaction.annotation.Transactional;
  15 +import org.thingsboard.common.util.ThingsBoardThreadFactory;
  16 +import org.thingsboard.server.common.data.id.EntityId;
13 17 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
14 18 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
15 19 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
... ... @@ -25,6 +29,10 @@ import org.thingsboard.server.dao.yunteng.mapper.*;
25 29 import org.thingsboard.server.dao.yunteng.service.*;
26 30
27 31 import java.util.*;
  32 +import java.util.concurrent.ExecutorService;
  33 +import java.util.concurrent.Executors;
  34 +import java.util.concurrent.ScheduledExecutorService;
  35 +import java.util.concurrent.TimeUnit;
28 36 import java.util.stream.Collectors;
29 37
30 38 /**
... ... @@ -43,7 +51,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
43 51 private final TriggerService triggerService;
44 52 private final DoConditionService doConditionService;
45 53 private final DoActionService doActionService;
46   -
47 54 /**
48 55 * 增加场景联动,触发器可以多个,执行条件可以多个,执行动作可以多个
49 56 *
... ... @@ -339,10 +346,21 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
339 346
340 347
341 348 List<String> customerDevices = deviceMapper.findDeviceIdsByCustomerId(customerId);
342   - if (customerDevices == null || customerDevices.isEmpty()) {
  349 + if (!EntityId.NULL_UUID.toString().equals(customerId) && (customerDevices == null || customerDevices.isEmpty())) {
343 350 return null;
344 351 }
345   - List<DeviceDTO> result = orgDevices.stream().filter(f -> customerDevices.contains(f.getTbDeviceId())).map(device -> device.getDTO(DeviceDTO.class)).collect(Collectors.toList());
  352 + List<DeviceDTO> result = orgDevices.stream()
  353 +// .filter(f -> customerDevices.contains(f.getTbDeviceId()))
  354 + .map(device -> {
  355 + DeviceDTO dto = device.getDTO(DeviceDTO.class);
  356 + if(customerDevices != null && !customerDevices.isEmpty() && customerDevices.contains(device.getTbDeviceId())){
  357 + dto.setEnable(true);
  358 + }else{
  359 + dto.setEnable(false);
  360 + }
  361 + return dto;
  362 + })
  363 + .collect(Collectors.toList());
346 364
347 365
348 366 return result;
... ... @@ -408,7 +426,9 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
408 426 return null;
409 427 }
410 428
411   - freshEntityIds(currentSceneId, allDevices, triggers);
  429 + Executors.newScheduledThreadPool(1).schedule(()->{
  430 + freshEntityIds(currentSceneId, allDevices, triggers);
  431 + },1, TimeUnit.SECONDS);
412 432
413 433 Map<String, Map> engineConfig = new HashMap<>();
414 434 engineConfig.put("scenes", matchedDevices);
... ... @@ -425,7 +445,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
425 445 * @param allDevices
426 446 * @param triggers
427 447 */
428   - @Async
429 448 public void freshEntityIds(String sceneId, List<String> allDevices, List<Trigger> triggers) {
430 449 triggers.forEach(trigger -> {
431 450 if (ScopeEnum.ALL.equals(trigger.getEntityType()) && sceneId.equals(trigger.getSceneLinkageId())) {
... ...