|
@@ -440,8 +440,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
|
@@ -440,8 +440,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
440
|
String currentSceneId, String tenantId, String customerId, Integer state) {
|
440
|
String currentSceneId, String tenantId, String customerId, Integer state) {
|
441
|
List<TkSceneLinkageEntity> runningScenes =
|
441
|
List<TkSceneLinkageEntity> runningScenes =
|
442
|
baseMapper.selectList(
|
442
|
baseMapper.selectList(
|
443
|
- new QueryWrapper<TkSceneLinkageEntity>()
|
|
|
444
|
- .lambda()
|
443
|
+ new LambdaQueryWrapper<TkSceneLinkageEntity>()
|
445
|
.eq(TkSceneLinkageEntity::getTenantId, tenantId)
|
444
|
.eq(TkSceneLinkageEntity::getTenantId, tenantId)
|
446
|
.eq(TkSceneLinkageEntity::getStatus, FastIotConstants.StateValue.ENABLE));
|
445
|
.eq(TkSceneLinkageEntity::getStatus, FastIotConstants.StateValue.ENABLE));
|
447
|
Set<String> enableIds = new HashSet<>();
|
446
|
Set<String> enableIds = new HashSet<>();
|
|
@@ -468,17 +467,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
|
@@ -468,17 +467,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
468
|
|
467
|
|
469
|
List<DeviceDTO> organizationDevices =
|
468
|
List<DeviceDTO> organizationDevices =
|
470
|
findDeviceList(self.getOrganizationId(), tenantId, customerId,new ArrayList<>());
|
469
|
findDeviceList(self.getOrganizationId(), tenantId, customerId,new ArrayList<>());
|
471
|
- List<String> allDevices = new ArrayList<>();
|
|
|
472
|
- List<String> rpcDevices = new ArrayList<>();
|
|
|
473
|
- if(organizationDevices != null && !organizationDevices.isEmpty()){
|
|
|
474
|
- for (DeviceDTO item : organizationDevices) {
|
|
|
475
|
- allDevices.add(item.getTbDeviceId());
|
|
|
476
|
- DeviceTypeEnum deviceType = item.getDeviceType();
|
|
|
477
|
- if(!DeviceTypeEnum.SENSOR.equals(deviceType)){
|
|
|
478
|
- rpcDevices.add(item.getTbDeviceId());
|
|
|
479
|
- }
|
|
|
480
|
- }
|
|
|
481
|
- }
|
470
|
+
|
482
|
|
471
|
|
483
|
Map<String, List<String>> matchedDevices = new HashMap<>();
|
472
|
Map<String, List<String>> matchedDevices = new HashMap<>();
|
484
|
|
473
|
|
|
@@ -495,6 +484,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
|
@@ -495,6 +484,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
495
|
String scenId = trigger.getSceneLinkageId();
|
484
|
String scenId = trigger.getSceneLinkageId();
|
496
|
List<String> devices = trigger.getEntityId();
|
485
|
List<String> devices = trigger.getEntityId();
|
497
|
if(currentSceneId.equals(scenId)){
|
486
|
if(currentSceneId.equals(scenId)){
|
|
|
487
|
+ List<String> allDevices = filterDevice(organizationDevices,trigger.getDeviceProfileId(),false);
|
498
|
if (ScopeEnum.ALL.equals(trigger.getEntityType()) ) {
|
488
|
if (ScopeEnum.ALL.equals(trigger.getEntityType()) ) {
|
499
|
devices = allDevices;
|
489
|
devices = allDevices;
|
500
|
}else{
|
490
|
}else{
|
|
@@ -516,7 +506,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
|
@@ -516,7 +506,7 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
516
|
Executors.newScheduledThreadPool(1)
|
506
|
Executors.newScheduledThreadPool(1)
|
517
|
.schedule(
|
507
|
.schedule(
|
518
|
() -> {
|
508
|
() -> {
|
519
|
- freshEntityIds(currentSceneId, allDevices,rpcDevices, triggers);
|
509
|
+ freshEntityIds(currentSceneId, organizationDevices, triggers);
|
520
|
},
|
510
|
},
|
521
|
1,
|
511
|
1,
|
522
|
TimeUnit.SECONDS);
|
512
|
TimeUnit.SECONDS);
|
|
@@ -528,51 +518,65 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
|
@@ -528,51 +518,65 @@ public class TkSceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageM |
528
|
return JacksonUtil.convertValue(engineConfig, JsonNode.class);
|
518
|
return JacksonUtil.convertValue(engineConfig, JsonNode.class);
|
529
|
}
|
519
|
}
|
530
|
|
520
|
|
|
|
521
|
+ private List<String> filterDevice(List<DeviceDTO> organizationDevices,String profileId,boolean rpc){
|
|
|
522
|
+ List<String> allDevices = new ArrayList<>();
|
|
|
523
|
+ if(organizationDevices != null && !organizationDevices.isEmpty()){
|
|
|
524
|
+ for (DeviceDTO item : organizationDevices) {
|
|
|
525
|
+ if(!item.getDeviceProfileId().equals(profileId)){
|
|
|
526
|
+ continue;
|
|
|
527
|
+ }
|
|
|
528
|
+ DeviceTypeEnum deviceType = item.getDeviceType();
|
|
|
529
|
+ if(rpc && DeviceTypeEnum.SENSOR.equals(deviceType)){
|
|
|
530
|
+ allDevices.add(item.getGatewayId());
|
|
|
531
|
+ continue;
|
|
|
532
|
+ }
|
|
|
533
|
+ allDevices.add(item.getTbDeviceId());
|
|
|
534
|
+ }
|
|
|
535
|
+ }
|
|
|
536
|
+ return allDevices;
|
|
|
537
|
+ }
|
|
|
538
|
+
|
531
|
/**
|
539
|
/**
|
532
|
* 异步刷新场景联动的设备ID
|
540
|
* 异步刷新场景联动的设备ID
|
533
|
*
|
541
|
*
|
534
|
* @param sceneId
|
542
|
* @param sceneId
|
535
|
- * @param allDevices
|
543
|
+ * @param organizationDevices
|
536
|
* @param triggers
|
544
|
* @param triggers
|
537
|
*/
|
545
|
*/
|
538
|
- public void freshEntityIds(String sceneId, List<String> allDevices,List<String> rpcDevices, List<TkTriggerEntity> triggers) {
|
546
|
+ public void freshEntityIds(String sceneId, List<DeviceDTO> organizationDevices,List<TkTriggerEntity> triggers) {
|
539
|
triggers.forEach(
|
547
|
triggers.forEach(
|
540
|
trigger -> {
|
548
|
trigger -> {
|
541
|
if (ScopeEnum.ALL.equals(trigger.getEntityType())
|
549
|
if (ScopeEnum.ALL.equals(trigger.getEntityType())
|
542
|
&& sceneId.equals(trigger.getSceneLinkageId())) {
|
550
|
&& sceneId.equals(trigger.getSceneLinkageId())) {
|
543
|
- trigger.setEntityId(allDevices);
|
551
|
+ List<String> ids = filterDevice(organizationDevices,trigger.getDeviceProfileId(),false);
|
|
|
552
|
+ trigger.setEntityId(ids);
|
544
|
triggerMapper.updateById(trigger);
|
553
|
triggerMapper.updateById(trigger);
|
545
|
}
|
554
|
}
|
546
|
});
|
555
|
});
|
547
|
|
556
|
|
548
|
List<TkDoConditionEntity> conditions =
|
557
|
List<TkDoConditionEntity> conditions =
|
549
|
doConditionMapper.selectList(
|
558
|
doConditionMapper.selectList(
|
550
|
- new QueryWrapper<TkDoConditionEntity>()
|
|
|
551
|
- .lambda()
|
559
|
+ new LambdaQueryWrapper<TkDoConditionEntity>()
|
552
|
.eq(TkDoConditionEntity::getSceneLinkageId, sceneId)
|
560
|
.eq(TkDoConditionEntity::getSceneLinkageId, sceneId)
|
553
|
.eq(TkDoConditionEntity::getEntityType, ScopeEnum.ALL));
|
561
|
.eq(TkDoConditionEntity::getEntityType, ScopeEnum.ALL));
|
554
|
conditions.forEach(
|
562
|
conditions.forEach(
|
555
|
item -> {
|
563
|
item -> {
|
556
|
if (sceneId.equals(item.getSceneLinkageId())) {
|
564
|
if (sceneId.equals(item.getSceneLinkageId())) {
|
557
|
- item.setEntityId(allDevices);
|
565
|
+ List<String> ids = filterDevice(organizationDevices,item.getDeviceProfileId(),false);
|
|
|
566
|
+ item.setEntityId(ids);
|
558
|
doConditionMapper.updateById(item);
|
567
|
doConditionMapper.updateById(item);
|
559
|
}
|
568
|
}
|
560
|
});
|
569
|
});
|
561
|
|
570
|
|
562
|
List<TkDoActionEntity> actions =
|
571
|
List<TkDoActionEntity> actions =
|
563
|
doActionMapper.selectList(
|
572
|
doActionMapper.selectList(
|
564
|
- new QueryWrapper<TkDoActionEntity>()
|
|
|
565
|
- .lambda()
|
|
|
566
|
- .eq(TkDoActionEntity::getSceneLinkageId, sceneId)
|
|
|
567
|
- .eq(TkDoActionEntity::getEntityType, ScopeEnum.ALL));
|
573
|
+ new LambdaQueryWrapper<TkDoActionEntity>()
|
|
|
574
|
+ .eq(TkDoActionEntity::getSceneLinkageId, sceneId));
|
568
|
actions.forEach(
|
575
|
actions.forEach(
|
569
|
item -> {
|
576
|
item -> {
|
570
|
if (sceneId.equals(item.getSceneLinkageId())) {
|
577
|
if (sceneId.equals(item.getSceneLinkageId())) {
|
571
|
- if(ActionTypeEnum.DEVICE_OUT.equals(item.getOutTarget())){
|
|
|
572
|
- item.setDeviceId(rpcDevices);
|
|
|
573
|
- }else{
|
|
|
574
|
- item.setDeviceId(allDevices);
|
|
|
575
|
- }
|
578
|
+ List<String> ids = filterDevice(organizationDevices,item.getDeviceProfileId(),ActionTypeEnum.DEVICE_OUT.equals(item.getOutTarget())?true:false);
|
|
|
579
|
+ item.setDeviceId(ids);
|
576
|
|
580
|
|
577
|
doActionMapper.updateById(item);
|
581
|
doActionMapper.updateById(item);
|
578
|
}
|
582
|
}
|