Commit 371b783f18e3126b3c8a999534e0698c4b8b5662

Authored by 黄 x
1 parent 694c5493

feat: add query alarm contact api by organizationId

... ... @@ -32,7 +32,9 @@ import static org.thingsboard.server.common.data.yunteng.constant.FastIotConstan
32 32 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE;
33 33 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.PAGE_SIZE;
34 34
35   -/** @Description 告警联系人 @Author cxy @Date 2021/11/2 14:54 */
  35 +/**
  36 + * @Description 告警联系人 @Author cxy @Date 2021/11/2 14:54
  37 + */
36 38 @RestController
37 39 @RequestMapping("/api/yt/alarmContact")
38 40 @RequiredArgsConstructor
... ... @@ -43,7 +45,8 @@ public class YtAlarmContactController extends BaseController {
43 45
44 46 @ApiOperation(value = "新增联系人|编辑")
45 47 @PostMapping
46   - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:post','api:yt:alarmContact:update'})")
  48 + @PreAuthorize(
  49 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:post','api:yt:alarmContact:update'})")
47 50 public ResponseEntity<AlarmContactDTO> saveAlarmContact(
48 51 @Validated(AddGroup.class) @RequestBody AlarmContactDTO alarmContactDTO)
49 52 throws ThingsboardException {
... ... @@ -71,6 +74,15 @@ public class YtAlarmContactController extends BaseController {
71 74 return ResponseEntity.ok(all);
72 75 }
73 76
  77 + @ApiOperation(value = "获取组织下的告警联系人")
  78 + @GetMapping("/{organizationId}")
  79 + public ResponseEntity<List<AlarmContactDTO>> findallByOrganizationId(
  80 + @PathVariable("organizationId") String organizationId) throws ThingsboardException {
  81 +
  82 + List<AlarmContactDTO> all =
  83 + alarmService.findAllByOrganizationId(getCurrentUser().getCurrentTenantId(), organizationId);
  84 + return ResponseEntity.ok(all);
  85 + }
74 86
75 87 @ApiOperation(value = "分页查询")
76 88 @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{})")
... ... @@ -99,7 +111,8 @@ public class YtAlarmContactController extends BaseController {
99 111
100 112 @ApiOperation(value = "删除")
101 113 @DeleteMapping
102   - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:delete'})")
  114 + @PreAuthorize(
  115 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:delete'})")
103 116 public void deleteById(@RequestBody String[] ids) throws ThingsboardException {
104 117 if (ids.length == 0) {
105 118 throw new YtDataValidationException("please provide alarm ids to delete");
... ... @@ -110,9 +123,11 @@ public class YtAlarmContactController extends BaseController {
110 123 alarmProfileService.findAlarmProfilesByContactId(
111 124 id, getCurrentUser().getCurrentTenantId());
112 125 if (null != list && list.size() > FastIotConstants.MagicNumber.ZERO) {
113   - StringBuilder configName =new StringBuilder();
114   - list.forEach( i -> configName.append(","+i.getName()));
115   - throw new YtDataValidationException(String.format(ErrorMessage.CONTACT_ALREADY_ASSOCIATED.getMessage(),configName.substring(1)));
  126 + StringBuilder configName = new StringBuilder();
  127 + list.forEach(i -> configName.append("," + i.getName()));
  128 + throw new YtDataValidationException(
  129 + String.format(
  130 + ErrorMessage.CONTACT_ALREADY_ASSOCIATED.getMessage(), configName.substring(1)));
116 131 }
117 132 }
118 133 alarmService.delete(ids);
... ... @@ -120,7 +135,8 @@ public class YtAlarmContactController extends BaseController {
120 135
121 136 @ApiOperation(value = "修改告警联系人信息")
122 137 @PostMapping("/update")
123   - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:update:update'})")
  138 + @PreAuthorize(
  139 + "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:alarmContact:update:update'})")
124 140 public void update(@RequestBody AlarmContactDTO alarmContactDTO) {
125 141
126 142 alarmService.update(alarmContactDTO);
... ...
... ... @@ -11,6 +11,7 @@ import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
11 11 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
12 12 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
13 13 import org.thingsboard.server.common.data.yunteng.dto.AlarmContactDTO;
  14 +import org.thingsboard.server.common.data.yunteng.dto.BaseDTO;
14 15 import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
15 16 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
16 17 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
... ... @@ -30,156 +31,189 @@ import java.util.stream.Collectors;
30 31 @Service
31 32 @RequiredArgsConstructor
32 33 public class YtAlarmContactServiceImpl extends AbstractBaseService<AlarmContactMapper, AlarmContact>
33   - implements YtAlarmContactService {
34   - /**
35   - * mapper注入 自带方法加入,继承的baseMapper
36   - */
37   - private final AlarmContactMapper alarmContactMapper;
  34 + implements YtAlarmContactService {
  35 + /** mapper注入 自带方法加入,继承的baseMapper */
  36 + private final AlarmContactMapper alarmContactMapper;
38 37
39   - private final OrganizationMapper ytOrganizationMapper;
  38 + private final OrganizationMapper ytOrganizationMapper;
40 39
41   - private final UserOrganizationMappingService userOrganizationMappingService;
  40 + private final UserOrganizationMappingService userOrganizationMappingService;
42 41
43   - /**
44   - * 查询全部的告警联系人
45   - *
46   - * @param params 传参
47   - * @return List
48   - */
49   - @Override
50   - public List<AlarmContactDTO> findAll(String tenantId, Map<String, Object> params) {
51   - // 查询当前租户
52   - List<AlarmContact> list =
53   - alarmContactMapper.selectList(
54   - new QueryWrapper<AlarmContact>()
55   - .lambda()
56   - .eq(AlarmContact::getTenantId, tenantId)
57   - .like(
58   - params.containsKey("username"),
59   - AlarmContact::getUsername,
60   - String.valueOf(params.get("username")))
61   - .or()
62   - .like(
63   - params.containsKey("department"),
64   - AlarmContact::getOrganizationId,
65   - String.valueOf(params.get("organizationId"))));
66   - System.out.println(list);
67   - return ReflectUtils.sourceToTarget(list, AlarmContactDTO.class);
68   - }
  42 + /**
  43 + * 查询全部的告警联系人
  44 + *
  45 + * @param params 传参
  46 + * @return List
  47 + */
  48 + @Override
  49 + public List<AlarmContactDTO> findAll(String tenantId, Map<String, Object> params) {
  50 + // 查询当前租户
  51 + List<AlarmContact> list =
  52 + alarmContactMapper.selectList(
  53 + new QueryWrapper<AlarmContact>()
  54 + .lambda()
  55 + .eq(AlarmContact::getTenantId, tenantId)
  56 + .like(
  57 + params.containsKey("username"),
  58 + AlarmContact::getUsername,
  59 + String.valueOf(params.get("username")))
  60 + .or()
  61 + .like(
  62 + params.containsKey("department"),
  63 + AlarmContact::getOrganizationId,
  64 + String.valueOf(params.get("organizationId"))));
  65 + return ReflectUtils.sourceToTarget(list, AlarmContactDTO.class);
  66 + }
69 67
70   - /**
71   - * 新增租户
72   - *
73   - * @param tenantId 租户编码
74   - * @return alarmContactDTO
75   - */
76   - private LambdaQueryWrapper<AlarmContact> tenantWapper(String tenantId) {
77   - return new QueryWrapper<AlarmContact>().lambda().eq(AlarmContact::getTenantId, tenantId);
  68 + @Override
  69 + public List<AlarmContactDTO> findAllByOrganizationId(String tenantId, String organizationId) {
  70 + Set<String> ids = new HashSet<>();
  71 + ids.add(organizationId);
  72 + // 查询该组织的所有子类
  73 + List<OrganizationDTO> organizationDTOS =
  74 + ytOrganizationMapper.findOrganizationTreeList(tenantId, ids);
  75 + if (null == organizationDTOS || organizationDTOS.size() == 0) {
  76 + throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
78 77 }
79   -
80   - @Override
81   - @Transactional
82   - public AlarmContactDTO saveAlarmContact(String tenantId, AlarmContactDTO alarmContactDTO) {
83   - LambdaQueryWrapper<AlarmContact> Wrapper =
84   - tenantWapper(tenantId).eq(AlarmContact::getUsername, alarmContactDTO.getUsername());
85   - int Count = baseMapper.selectCount(Wrapper);
86   - if (Count > 0) {
87   - throw new YtDataValidationException(String.format(ErrorMessage.NAME_EXISTED.getMessage(),alarmContactDTO.getUsername()));
88   - }
89   - if (checkPhoneEmail(tenantId,alarmContactDTO.getPhone(), alarmContactDTO.getEmail()).size() > 0) {
90   - throw new YtDataValidationException(ErrorMessage.PHONE_OR_EMAIL_HAS_REGISTER.getMessage());
91   - }
92   - alarmContactDTO.setTenantId(tenantId);
93   - AlarmContact alarmContact = alarmContactDTO.getEntity(AlarmContact.class);
94   - int insertCount = baseMapper.insert(alarmContact);
95   - if (insertCount > 0) {
96   - alarmContact.copyToDTO(alarmContactDTO);
97   - return alarmContactDTO;
98   - }
99   - return null;
  78 + List<String> organizationIds =
  79 + organizationDTOS.stream().map(BaseDTO::getId).collect(Collectors.toList());
  80 + List<AlarmContact> list =
  81 + alarmContactMapper.selectList(
  82 + new QueryWrapper<AlarmContact>()
  83 + .lambda()
  84 + .eq(AlarmContact::getTenantId, tenantId)
  85 + .in(AlarmContact::getOrganizationId, organizationIds));
  86 + if (null != list && list.size() > 0) {
  87 + return list.stream()
  88 + .map(obj -> obj.getDTO(AlarmContactDTO.class))
  89 + .collect(Collectors.toList());
100 90 }
  91 + return null;
  92 + }
101 93
102   - /**
103   - * 删除告警联系人,byId
104   - *
105   - * @param alarmIds 通过列表id
106   - * @return Integer
107   - */
108   - @Override
109   - @Transactional
110   - public boolean delete(String[] alarmIds) {
111   - Set<String> ids = Set.of(alarmIds);
112   - baseMapper.deleteBatchIds(ids);
113   - return true;
114   - }
  94 + /**
  95 + * 新增租户
  96 + *
  97 + * @param tenantId 租户编码
  98 + * @return alarmContactDTO
  99 + */
  100 + private LambdaQueryWrapper<AlarmContact> tenantWapper(String tenantId) {
  101 + return new QueryWrapper<AlarmContact>().lambda().eq(AlarmContact::getTenantId, tenantId);
  102 + }
115 103
116   - /**
117   - * 修改告警联系人数据
118   - *
119   - * @param alarmContactDTO 对象
120   - * @return Integer
121   - */
122   - @Override
123   - @Transactional
124   - public boolean update(AlarmContactDTO alarmContactDTO) {
125   -
126   - // 得到对象
127   - AlarmContact alarmContact = baseMapper.selectById(alarmContactDTO.getId());
128   - if (alarmContact == null) {
129   - throw new YtDataValidationException("此数据不存在");
130   - }
131   - if (checkPhoneEmail(alarmContact.getTenantId(),alarmContactDTO.getPhone(), alarmContactDTO.getEmail()).size() > 1) {
132   - throw new YtDataValidationException(ErrorMessage.PHONE_OR_EMAIL_HAS_REGISTER.getMessage());
133   - }
134   - AlarmContact entity = alarmContactDTO.getEntity(AlarmContact.class);
135   - System.out.println(alarmContact);
136   - baseMapper.updateById(entity);
137   - alarmContact.copyToDTO(alarmContactDTO);
138   - return true;
  104 + @Override
  105 + @Transactional
  106 + public AlarmContactDTO saveAlarmContact(String tenantId, AlarmContactDTO alarmContactDTO) {
  107 + LambdaQueryWrapper<AlarmContact> Wrapper =
  108 + tenantWapper(tenantId).eq(AlarmContact::getUsername, alarmContactDTO.getUsername());
  109 + int Count = baseMapper.selectCount(Wrapper);
  110 + if (Count > 0) {
  111 + throw new YtDataValidationException(
  112 + String.format(ErrorMessage.NAME_EXISTED.getMessage(), alarmContactDTO.getUsername()));
  113 + }
  114 + if (checkPhoneEmail(tenantId, alarmContactDTO.getPhone(), alarmContactDTO.getEmail()).size()
  115 + > 0) {
  116 + throw new YtDataValidationException(ErrorMessage.PHONE_OR_EMAIL_HAS_REGISTER.getMessage());
139 117 }
  118 + alarmContactDTO.setTenantId(tenantId);
  119 + AlarmContact alarmContact = alarmContactDTO.getEntity(AlarmContact.class);
  120 + int insertCount = baseMapper.insert(alarmContact);
  121 + if (insertCount > 0) {
  122 + alarmContact.copyToDTO(alarmContactDTO);
  123 + return alarmContactDTO;
  124 + }
  125 + return null;
  126 + }
  127 +
  128 + /**
  129 + * 删除告警联系人,byId
  130 + *
  131 + * @param alarmIds 通过列表id
  132 + * @return Integer
  133 + */
  134 + @Override
  135 + @Transactional
  136 + public boolean delete(String[] alarmIds) {
  137 + Set<String> ids = Set.of(alarmIds);
  138 + baseMapper.deleteBatchIds(ids);
  139 + return true;
  140 + }
140 141
  142 + /**
  143 + * 修改告警联系人数据
  144 + *
  145 + * @param alarmContactDTO 对象
  146 + * @return Integer
  147 + */
  148 + @Override
  149 + @Transactional
  150 + public boolean update(AlarmContactDTO alarmContactDTO) {
141 151
142   - private List<String> checkPhoneEmail(String tenantId,String phone, String email) {
143   - return baseMapper.selectList(new QueryWrapper<AlarmContact>()
144   - .lambda()
145   - .eq(AlarmContact::getTenantId,tenantId)
146   - .and(second -> second.eq(email!=null,AlarmContact::getEmail, email)
147   - .or(f -> f.eq(phone !=null,AlarmContact::getPhone, phone)))
148   - )
149   - .stream().map(i -> i.getId()).collect(Collectors.toList());
  152 + // 得到对象
  153 + AlarmContact alarmContact = baseMapper.selectById(alarmContactDTO.getId());
  154 + if (alarmContact == null) {
  155 + throw new YtDataValidationException("此数据不存在");
150 156 }
  157 + if (checkPhoneEmail(
  158 + alarmContact.getTenantId(), alarmContactDTO.getPhone(), alarmContactDTO.getEmail())
  159 + .size()
  160 + > 1) {
  161 + throw new YtDataValidationException(ErrorMessage.PHONE_OR_EMAIL_HAS_REGISTER.getMessage());
  162 + }
  163 + AlarmContact entity = alarmContactDTO.getEntity(AlarmContact.class);
  164 + System.out.println(alarmContact);
  165 + baseMapper.updateById(entity);
  166 + alarmContact.copyToDTO(alarmContactDTO);
  167 + return true;
  168 + }
  169 +
  170 + private List<String> checkPhoneEmail(String tenantId, String phone, String email) {
  171 + return baseMapper
  172 + .selectList(
  173 + new QueryWrapper<AlarmContact>()
  174 + .lambda()
  175 + .eq(AlarmContact::getTenantId, tenantId)
  176 + .and(
  177 + second ->
  178 + second
  179 + .eq(email != null, AlarmContact::getEmail, email)
  180 + .or(f -> f.eq(phone != null, AlarmContact::getPhone, phone))))
  181 + .stream()
  182 + .map(i -> i.getId())
  183 + .collect(Collectors.toList());
  184 + }
151 185
152   - /**
153   - * @param queryMap 查询集合
154   - * @return PageData
155   - */
156   - @Override
157   - public YtPageData<AlarmContactDTO> page(
158   - String tenantId,
159   - boolean isPtTenantAdmin,
160   - String currentUserId,
161   - Map<String, Object> queryMap) {
162   - // 查询分页,加入条模糊条件查询
163   - String organizationId = (String) queryMap.get("organizationId");
164   - queryMap.put("tenantId", tenantId);
165   - if (StringUtils.isNotEmpty(organizationId)) {
166   - Set<String> ids = new HashSet<>();
167   - ids.add(organizationId);
168   - // 查询该组织的所有子类
169   - List<OrganizationDTO> organizationDTOS =
170   - ytOrganizationMapper.findOrganizationTreeList(tenantId, ids);
171   - List<String> queryOrganizationIds = new ArrayList<>();
172   - organizationDTOS.forEach(item -> queryOrganizationIds.add(item.getId()));
173   - queryMap.put("organizationIds", queryOrganizationIds);
174   - } else {
175   - if (!isPtTenantAdmin) {
176   - List<String> queryOrganizationIds =
177   - userOrganizationMappingService.getOrganizationIdsByUserId(currentUserId);
178   - queryMap.put("organizationIds", queryOrganizationIds);
179   - }
180   - }
181   - IPage<AlarmContact> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false);
182   - IPage<AlarmContactDTO> pageDto = baseMapper.getAlarmPage(page, queryMap);
183   - return getPageData(pageDto, AlarmContactDTO.class);
  186 + /**
  187 + * @param queryMap 查询集合
  188 + * @return PageData
  189 + */
  190 + @Override
  191 + public YtPageData<AlarmContactDTO> page(
  192 + String tenantId,
  193 + boolean isPtTenantAdmin,
  194 + String currentUserId,
  195 + Map<String, Object> queryMap) {
  196 + // 查询分页,加入条模糊条件查询
  197 + String organizationId = (String) queryMap.get("organizationId");
  198 + queryMap.put("tenantId", tenantId);
  199 + if (StringUtils.isNotEmpty(organizationId)) {
  200 + Set<String> ids = new HashSet<>();
  201 + ids.add(organizationId);
  202 + // 查询该组织的所有子类
  203 + List<OrganizationDTO> organizationDTOS =
  204 + ytOrganizationMapper.findOrganizationTreeList(tenantId, ids);
  205 + List<String> queryOrganizationIds = new ArrayList<>();
  206 + organizationDTOS.forEach(item -> queryOrganizationIds.add(item.getId()));
  207 + queryMap.put("organizationIds", queryOrganizationIds);
  208 + } else {
  209 + if (!isPtTenantAdmin) {
  210 + List<String> queryOrganizationIds =
  211 + userOrganizationMappingService.getOrganizationIdsByUserId(currentUserId);
  212 + queryMap.put("organizationIds", queryOrganizationIds);
  213 + }
184 214 }
  215 + IPage<AlarmContact> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false);
  216 + IPage<AlarmContactDTO> pageDto = baseMapper.getAlarmPage(page, queryMap);
  217 + return getPageData(pageDto, AlarmContactDTO.class);
  218 + }
185 219 }
... ...
... ... @@ -18,6 +18,14 @@ public interface YtAlarmContactService extends BaseService<AlarmContact> {
18 18 List<AlarmContactDTO> findAll(String tenantId, Map<String, Object> params);
19 19
20 20 /**
  21 + * 查询该组织下的所有告警联系人
  22 + * @param tenantId 租户ID
  23 + * @param organizationId 组织ID
  24 + * @return 告警人列表
  25 + */
  26 + List<AlarmContactDTO> findAllByOrganizationId(String tenantId, String organizationId);
  27 +
  28 + /**
21 29 * 添加告警联系人
22 30 *
23 31 * @param alarmContactDTO 对象
... ...