|
@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
@@ -5,11 +5,15 @@ 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.databind.JsonNode;
|
6
|
import com.fasterxml.jackson.databind.JsonNode;
|
7
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
7
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
8
|
+import com.google.common.util.concurrent.MoreExecutors;
|
8
|
import lombok.RequiredArgsConstructor;
|
9
|
import lombok.RequiredArgsConstructor;
|
9
|
import org.apache.commons.lang3.StringUtils;
|
10
|
import org.apache.commons.lang3.StringUtils;
|
10
|
import org.springframework.scheduling.annotation.Async;
|
11
|
import org.springframework.scheduling.annotation.Async;
|
|
|
12
|
+import org.springframework.scheduling.annotation.EnableAsync;
|
11
|
import org.springframework.stereotype.Service;
|
13
|
import org.springframework.stereotype.Service;
|
12
|
import org.springframework.transaction.annotation.Transactional;
|
14
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
15
|
+import org.thingsboard.common.util.ThingsBoardThreadFactory;
|
|
|
16
|
+import org.thingsboard.server.common.data.id.EntityId;
|
13
|
import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
|
17
|
import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
|
14
|
import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
|
18
|
import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
|
15
|
import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
|
19
|
import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
|
|
@@ -25,6 +29,10 @@ import org.thingsboard.server.dao.yunteng.mapper.*; |
|
@@ -25,6 +29,10 @@ import org.thingsboard.server.dao.yunteng.mapper.*; |
25
|
import org.thingsboard.server.dao.yunteng.service.*;
|
29
|
import org.thingsboard.server.dao.yunteng.service.*;
|
26
|
|
30
|
|
27
|
import java.util.*;
|
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
|
import java.util.stream.Collectors;
|
36
|
import java.util.stream.Collectors;
|
29
|
|
37
|
|
30
|
/**
|
38
|
/**
|
|
@@ -43,7 +51,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
|
@@ -43,7 +51,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
43
|
private final TriggerService triggerService;
|
51
|
private final TriggerService triggerService;
|
44
|
private final DoConditionService doConditionService;
|
52
|
private final DoConditionService doConditionService;
|
45
|
private final DoActionService doActionService;
|
53
|
private final DoActionService doActionService;
|
46
|
-
|
|
|
47
|
/**
|
54
|
/**
|
48
|
* 增加场景联动,触发器可以多个,执行条件可以多个,执行动作可以多个
|
55
|
* 增加场景联动,触发器可以多个,执行条件可以多个,执行动作可以多个
|
49
|
*
|
56
|
*
|
|
@@ -339,10 +346,21 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
|
@@ -339,10 +346,21 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
339
|
|
346
|
|
340
|
|
347
|
|
341
|
List<String> customerDevices = deviceMapper.findDeviceIdsByCustomerId(customerId);
|
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
|
return null;
|
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
|
return result;
|
366
|
return result;
|
|
@@ -408,7 +426,9 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
|
@@ -408,7 +426,9 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
408
|
return null;
|
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
|
Map<String, Map> engineConfig = new HashMap<>();
|
433
|
Map<String, Map> engineConfig = new HashMap<>();
|
414
|
engineConfig.put("scenes", matchedDevices);
|
434
|
engineConfig.put("scenes", matchedDevices);
|
|
@@ -425,7 +445,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
|
@@ -425,7 +445,6 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap |
425
|
* @param allDevices
|
445
|
* @param allDevices
|
426
|
* @param triggers
|
446
|
* @param triggers
|
427
|
*/
|
447
|
*/
|
428
|
- @Async
|
|
|
429
|
public void freshEntityIds(String sceneId, List<String> allDevices, List<Trigger> triggers) {
|
448
|
public void freshEntityIds(String sceneId, List<String> allDevices, List<Trigger> triggers) {
|
430
|
triggers.forEach(trigger -> {
|
449
|
triggers.forEach(trigger -> {
|
431
|
if (ScopeEnum.ALL.equals(trigger.getEntityType()) && sceneId.equals(trigger.getSceneLinkageId())) {
|
450
|
if (ScopeEnum.ALL.equals(trigger.getEntityType()) && sceneId.equals(trigger.getSceneLinkageId())) {
|