Commit cbeabb15291607daca77687980465eb61c99b90f

Authored by 云中非
1 parent 9d0dcf47

fix(DEFECT-582): 告警配置被占用,提示信息修改

1、细化提示内容
@@ -59,7 +59,7 @@ public enum ErrorMessage { @@ -59,7 +59,7 @@ public enum ErrorMessage {
59 DEVICE_LOSED(400039,"设备相关参数丢失"), 59 DEVICE_LOSED(400039,"设备相关参数丢失"),
60 SCENE_REACT_NOT_EXTIED(400040,"场景联动不存在"), 60 SCENE_REACT_NOT_EXTIED(400040,"场景联动不存在"),
61 DEVICE_USED_SCENE_REACT(400041,"场景联动【%s】正在使用该设备"), 61 DEVICE_USED_SCENE_REACT(400041,"场景联动【%s】正在使用该设备"),
62 - SCENE_REACT_USED_ALARM_PROFILE(400042,"场景联动正在使用该告警配置"), 62 + SCENE_REACT_USED_ALARM_PROFILE(400042,"场景联动【%s】正在使用该告警配置"),
63 APP_USER_BINDED(400043,"平台用户【%s】已被其它账号绑定"), 63 APP_USER_BINDED(400043,"平台用户【%s】已被其它账号绑定"),
64 THIRD_PLATFORM_EXCEPTION(400044,"【%s】,第三方异常【%s】"), 64 THIRD_PLATFORM_EXCEPTION(400044,"【%s】,第三方异常【%s】"),
65 DEVICE_NOT_EXTIED(400045,"设备不存在"), 65 DEVICE_NOT_EXTIED(400045,"设备不存在"),
1 package org.thingsboard.server.dao.yunteng.impl; 1 package org.thingsboard.server.dao.yunteng.impl;
2 2
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
5 import lombok.RequiredArgsConstructor; 6 import lombok.RequiredArgsConstructor;
6 import lombok.extern.slf4j.Slf4j; 7 import lombok.extern.slf4j.Slf4j;
@@ -15,8 +16,10 @@ import org.thingsboard.server.common.data.yunteng.dto.*; @@ -15,8 +16,10 @@ import org.thingsboard.server.common.data.yunteng.dto.*;
15 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; 16 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
16 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 17 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
17 import org.thingsboard.server.dao.yunteng.entities.AlarmProfile; 18 import org.thingsboard.server.dao.yunteng.entities.AlarmProfile;
  19 +import org.thingsboard.server.dao.yunteng.entities.SceneLinkage;
18 import org.thingsboard.server.dao.yunteng.mapper.AlarmProfileMapper; 20 import org.thingsboard.server.dao.yunteng.mapper.AlarmProfileMapper;
19 import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; 21 import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper;
  22 +import org.thingsboard.server.dao.yunteng.mapper.SceneLinkageMapper;
20 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; 23 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
21 import org.thingsboard.server.dao.yunteng.service.AlarmProfileService; 24 import org.thingsboard.server.dao.yunteng.service.AlarmProfileService;
22 import org.thingsboard.server.dao.yunteng.service.DoActionService; 25 import org.thingsboard.server.dao.yunteng.service.DoActionService;
@@ -35,6 +38,7 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap @@ -35,6 +38,7 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap
35 private final UserOrganizationMappingServiceImpl userOrganizationMappingService; 38 private final UserOrganizationMappingServiceImpl userOrganizationMappingService;
36 39
37 private final OrganizationMapper ytOrganizationMapper; 40 private final OrganizationMapper ytOrganizationMapper;
  41 + private final SceneLinkageMapper sceneLinkageMapper;
38 42
39 @Override 43 @Override
40 public YtPageData<AlarmProfileDTO> page( 44 public YtPageData<AlarmProfileDTO> page(
@@ -74,10 +78,9 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap @@ -74,10 +78,9 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap
74 if (!alarmProfile.getOrganizationId().equals(alarmProfileDTO.getOrganizationId())) { 78 if (!alarmProfile.getOrganizationId().equals(alarmProfileDTO.getOrganizationId())) {
75 Set<String> profiles = new HashSet<>(); 79 Set<String> profiles = new HashSet<>();
76 profiles.add(alarmProfileDTO.getId()); 80 profiles.add(alarmProfileDTO.getId());
77 - List<DoActionDTO> list =  
78 - doActionService.findDoActionByAlarmProfileIds(alarmProfileDTO.getTenantId(), profiles);  
79 - if (list.size() > FastIotConstants.MagicNumber.ZERO) {  
80 - throw new YtDataValidationException(ErrorMessage.SCENE_REACT_USED_ALARM_PROFILE.getMessage()); 81 + Set<String>names = alarmProfileUsed(alarmProfileDTO.getTenantId(), profiles);
  82 + if(!names.isEmpty()){
  83 + throw new YtDataValidationException(String.format(ErrorMessage.SCENE_REACT_USED_ALARM_PROFILE.getMessage(), names));
81 } 84 }
82 } 85 }
83 baseMapper.updateById(alarmProfileDTO.getEntity(AlarmProfile.class)); 86 baseMapper.updateById(alarmProfileDTO.getEntity(AlarmProfile.class));
@@ -106,13 +109,32 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap @@ -106,13 +109,32 @@ public class AlarmProfileServiceImpl extends AbstractBaseService<AlarmProfileMap
106 @Override 109 @Override
107 @Transactional 110 @Transactional
108 public boolean deleteAlarmProFile(DeleteDTO deleteDTO) { 111 public boolean deleteAlarmProFile(DeleteDTO deleteDTO) {
  112 + Set<String>names = alarmProfileUsed(deleteDTO.getTenantId(), deleteDTO.getIds());
  113 + if(!names.isEmpty()){
  114 + throw new YtDataValidationException(String.format(ErrorMessage.SCENE_REACT_USED_ALARM_PROFILE.getMessage(), names));
  115 + }
  116 + return baseMapper.deleteBatchIds(deleteDTO.getIds()) > 0;
  117 + }
  118 +
  119 + private Set<String> alarmProfileUsed(String tenantId, Set<String> profileIds) {
  120 +
  121 + Set<String> sceneNames = new HashSet<>();
109 // 如果有场景联动使用告警配置,则不能删除 122 // 如果有场景联动使用告警配置,则不能删除
110 List<DoActionDTO> list = 123 List<DoActionDTO> list =
111 - doActionService.findDoActionByAlarmProfileIds(deleteDTO.getTenantId(), deleteDTO.getIds()); 124 + doActionService.findDoActionByAlarmProfileIds(tenantId, profileIds);
112 if (list.size() > FastIotConstants.MagicNumber.ZERO) { 125 if (list.size() > FastIotConstants.MagicNumber.ZERO) {
113 - throw new YtDataValidationException(ErrorMessage.EXIST_LEADER_MEMBER_RELATION.getMessage()); 126 + Set<String> sceneIds = new HashSet<>();
  127 + for(DoActionDTO action:list){
  128 + sceneIds.add(action.getSceneLinkageId());
  129 + }
  130 + List<SceneLinkage> scenes = sceneLinkageMapper.selectList(new QueryWrapper<SceneLinkage>().lambda()
  131 + .eq(SceneLinkage::getId, sceneIds)
  132 + );
  133 + for(SceneLinkage item: scenes){
  134 + sceneNames.add(item.getName());
  135 + }
114 } 136 }
115 - return baseMapper.deleteBatchIds(deleteDTO.getIds()) > 0; 137 + return sceneNames;
116 } 138 }
117 139
118 @Override 140 @Override