...
|
...
|
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
6
|
6
|
import lombok.RequiredArgsConstructor;
|
7
|
7
|
import lombok.extern.slf4j.Slf4j;
|
8
|
8
|
import org.apache.commons.lang3.StringUtils;
|
|
9
|
+import org.jetbrains.annotations.Nullable;
|
9
|
10
|
import org.springframework.stereotype.Service;
|
10
|
11
|
import org.springframework.transaction.annotation.Transactional;
|
11
|
12
|
import org.thingsboard.server.common.data.DeviceProfile;
|
...
|
...
|
@@ -355,4 +356,63 @@ public class YtDeviceServiceImpl extends AbstractBaseService<DeviceMapper, YtDev |
355
|
356
|
return snBuilder.substring(0, 16);
|
356
|
357
|
}
|
357
|
358
|
|
|
359
|
+
|
|
360
|
+ @Override
|
|
361
|
+ public Boolean otherUsing(String deviceId,String tenantId) {
|
|
362
|
+ YtDevice device = baseMapper.selectById(deviceId);
|
|
363
|
+ if(device == null){
|
|
364
|
+ throw new YtDataValidationException(ErrorMessage.DEVICE_NOT_EXTIED.getMessage());
|
|
365
|
+ }
|
|
366
|
+ String tbDeviceId = device.getTbDeviceId();
|
|
367
|
+
|
|
368
|
+ /**场景联动*/
|
|
369
|
+ Boolean userd = usedBySceneLinkage(tenantId, tbDeviceId);
|
|
370
|
+
|
|
371
|
+ return userd;
|
|
372
|
+ }
|
|
373
|
+
|
|
374
|
+ @Nullable
|
|
375
|
+ private Boolean usedBySceneLinkage(String tenantId, String tbDeviceId) {
|
|
376
|
+ LambdaQueryWrapper<SceneLinkage> sceneFilter =
|
|
377
|
+ new QueryWrapper<SceneLinkage>()
|
|
378
|
+ .lambda()
|
|
379
|
+ .eq(SceneLinkage::getTenantId, tenantId)
|
|
380
|
+ .eq(SceneLinkage::getStatus, 1);
|
|
381
|
+ Optional<List<SceneLinkage>> list= Optional.ofNullable(sceneLinkageMapper.selectList(sceneFilter));
|
|
382
|
+ if(list.isEmpty()){
|
|
383
|
+ return false;
|
|
384
|
+ }
|
|
385
|
+ List<String> sceneIds = list.get().stream()
|
|
386
|
+ .map(i -> i.getId()).collect(Collectors.toList());
|
|
387
|
+ LambdaQueryWrapper<Trigger> triggerFilter =
|
|
388
|
+ new QueryWrapper<Trigger>()
|
|
389
|
+ .lambda()
|
|
390
|
+ .in(sceneIds.size()>0,Trigger::getSceneLinkageId, sceneIds)
|
|
391
|
+ .eq(Trigger::getEntityId, tbDeviceId);
|
|
392
|
+ Optional<List<Trigger>> triggers = Optional.ofNullable(triggerMapper.selectList(triggerFilter));
|
|
393
|
+ if(triggers.isPresent() && triggers.get().size()>0){
|
|
394
|
+ return true;
|
|
395
|
+ }
|
|
396
|
+
|
|
397
|
+ LambdaQueryWrapper<DoCondition> conditionFilter =
|
|
398
|
+ new QueryWrapper<DoCondition>()
|
|
399
|
+ .lambda()
|
|
400
|
+ .in(sceneIds.size()>0,DoCondition::getSceneLinkageId, sceneIds)
|
|
401
|
+ .eq(DoCondition::getEntityId, tbDeviceId);
|
|
402
|
+ Optional<List<DoCondition>> doConditions = Optional.ofNullable(conditionMapper.selectList(conditionFilter));
|
|
403
|
+ if(doConditions.isPresent()&& doConditions.get().size()>0){
|
|
404
|
+ return true;
|
|
405
|
+ }
|
|
406
|
+
|
|
407
|
+ LambdaQueryWrapper<DoAction> actionFilter =
|
|
408
|
+ new QueryWrapper<DoAction>()
|
|
409
|
+ .lambda()
|
|
410
|
+ .in(sceneIds.size()>0,DoAction::getSceneLinkageId, sceneIds)
|
|
411
|
+ .eq(DoAction::getDeviceId, tbDeviceId);
|
|
412
|
+ Optional<List<DoAction>> doActions = Optional.ofNullable(actionMapper.selectList(actionFilter));
|
|
413
|
+ if(doActions.isPresent()&& doActions.get().size()>0){
|
|
414
|
+ return true;
|
|
415
|
+ }
|
|
416
|
+ return false;
|
|
417
|
+ }
|
358
|
418
|
} |
...
|
...
|
|