Commit 97375a4fbb8f726f06bb1934661786f146634d6d

Authored by 云中非
1 parent 8c021413

fix: 设备是否被场景联动占用

... ... @@ -424,4 +424,10 @@ public class YtDeviceController extends BaseController {
424 424 sendRelationNotificationMsg(
425 425 getTenantId(), relation, EdgeEventActionType.RELATION_ADD_OR_UPDATE);
426 426 }
  427 + @GetMapping({"used/{id}"})
  428 + @ApiOperation("设备是否被占用")
  429 + public ResponseEntity<Boolean> otherUsing(@PathVariable("id") String deviceId) throws ThingsboardException {
  430 + Boolean result = deviceService.otherUsing(deviceId, getCurrentUser().getCurrentTenantId());
  431 + return ResponseEntity.ok(result);
  432 + }
427 433 }
... ...
... ... @@ -62,6 +62,7 @@ public enum ErrorMessage {
62 62 SCENE_REACT_USED_ALARM_PROFILE(400042,"场景联动正在使用该告警配置"),
63 63 APP_USER_BINDED(400043,"平台用户【%s】已被其它账号绑定"),
64 64 THIRD_PLATFORM_EXCEPTION(400044,"【%s】,第三方异常【%s】"),
  65 + DEVICE_NOT_EXTIED(400045,"设备不存在"),
65 66 HAVE_NO_PERMISSION(500002,"没有修改权限");
66 67 private final int code;
67 68 private String message;
... ...
... ... @@ -179,7 +179,7 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap
179 179 }
180 180
181 181 // 先删除触发器
182   - triggerMapper.delete(
  182 + int result = triggerMapper.delete(
183 183 new QueryWrapper<Trigger>()
184 184 .lambda()
185 185 .eq(
... ...
... ... @@ -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 }
... ...
... ... @@ -94,4 +94,13 @@ public interface YtDeviceService extends BaseService<YtDevice> {
94 94 * @return
95 95 */
96 96 String generateSn();
  97 +
  98 + /**
  99 + *
  100 + * 设备是否被其它资源使用,例如:场景联动
  101 + * @param deviceId 平台设备ID
  102 + * @param tenantId 租户ID
  103 + * @return
  104 + */
  105 + Boolean otherUsing(String deviceId,String tenantId);
97 106 }
... ...