From 9988efc5011338c08a70020d2dd7e62c94c3f29b Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Thu, 9 Nov 2023 09:12:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/zlevent/utils/SendEventUtils.java | 102 ++++++++++++------ 1 file changed, 70 insertions(+), 32 deletions(-) diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/utils/SendEventUtils.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/utils/SendEventUtils.java index ce77b14..baa4934 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/utils/SendEventUtils.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/utils/SendEventUtils.java @@ -22,6 +22,7 @@ import com.njcn.zlevent.service.ICsEventUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.io.BufferedReader; @@ -86,7 +87,7 @@ public class SendEventUtils { public void sendUser(Integer eventType,String type,String devId, String eventName, LocalDateTime eventTime, String id) { int code; List users = new ArrayList<>(); - List devCodeList = new ArrayList<>(); + List devCodeList; List csEventSendMsgList = new ArrayList<>(); NoticeUserDto noticeUserDto = new NoticeUserDto(); NoticeUserDto.Payload payload = new NoticeUserDto.Payload(); @@ -99,20 +100,22 @@ public class SendEventUtils { case "1": code = 2; //设备自身事件 不推送给用户,推送给业务管理 - users = appUserFeignClient.getAdminInfo().getData(); - noticeUserDto.setPushClientId(Collections.singletonList(users.get(0).getDevCode())); - noticeUserDto.setTitle("设备事件"); - //记录需要通知的用户和事件关系 - CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(users.get(0).getId()); - csEventUser.setStatus(0); - csEventUser.setEventId(id); - result.add(csEventUser); + users = getAdminUser(); + if (CollectionUtil.isNotEmpty(users)){ + noticeUserDto.setPushClientId(Collections.singletonList(users.get(0).getDevCode())); + noticeUserDto.setTitle("设备事件"); + //记录需要通知的用户和事件关系 + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(users.get(0).getId()); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + } break; case "2": code = 0; //暂态事件 - users = getEventUser(devId); + users = getEventUser(devId,0); devCodeList = users.stream().map(User::getDevCode).collect(Collectors.toList()); noticeUserDto.setPushClientId(devCodeList); noticeUserDto.setTitle("暂态事件"); @@ -129,7 +132,7 @@ public class SendEventUtils { case "3": code = 1; //稳态事件 - users = getEventUser(devId); + users = getEventUser(devId,1); devCodeList = users.stream().map(User::getDevCode).collect(Collectors.toList()); noticeUserDto.setPushClientId(devCodeList); noticeUserDto.setTitle("稳态事件"); @@ -159,24 +162,26 @@ public class SendEventUtils { else if (eventType == 2){ switch (type) { case "1": - eventName = epdFeignClient.findByName(eventName).getData().getShowName(); //Ⅰ级告警 不推送给用户,推送给业务管理 - users = appUserFeignClient.getAdminInfo().getData(); - noticeUserDto.setPushClientId(Collections.singletonList(users.get(0).getDevCode())); - //记录需要通知的用户和事件关系 - users.forEach(item->{ - CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(item.getId()); - csEventUser.setStatus(0); - csEventUser.setEventId(id); - result.add(csEventUser); - }); + users = getAdminUser(); + if (CollectionUtil.isNotEmpty(users)){ + eventName = epdFeignClient.findByName(eventName).getData().getShowName(); + noticeUserDto.setPushClientId(Collections.singletonList(users.get(0).getDevCode())); + //记录需要通知的用户和事件关系 + users.forEach(item->{ + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(item.getId()); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + }); + } break; case "2": eventName = epdFeignClient.findByName(eventName).getData().getShowName(); case "3": //Ⅱ、Ⅲ级告警推送相关用户及业务管理员 - users = getEventUser(devId); + users = getEventUser(devId,3); devCodeList = users.stream().map(User::getDevCode).collect(Collectors.toList()); noticeUserDto.setPushClientId(devCodeList); //记录需要通知的用户和事件关系 @@ -265,25 +270,58 @@ public class SendEventUtils { } /** - * 获取需要通知暂态事件的用户 + * 获取需要通知事件的用户 */ - public List getEventUser(String devId) { + public List getEventUser(String devId,Integer type) { List users = new ArrayList<>(); List result = new ArrayList<>(); //获取设备下主用户和子用户集合 List list = csDeviceUserFeignClient.findUserById(devId).getData(); + List adminUser = appUserFeignClient.getAdminInfo().getData(); + List adminList = adminUser.stream().map(User::getId).collect(Collectors.toList()); + list.addAll(adminList); //查询哪些用户打开了事件提示 if (CollectionUtil.isNotEmpty(list)){ List appInfoSet = appInfoSetFeignClient.getListById(list).getData(); - result = appInfoSet.stream() - .filter(person -> person.getEventInfo() == 1) - .map(AppInfoSet::getUserId).collect(Collectors.toList()); + switch (type) { + case 0: + result = appInfoSet.stream() + .filter(person -> person.getEventInfo() == 1) + .map(AppInfoSet::getUserId).collect(Collectors.toList()); + break; + case 1: + result = appInfoSet.stream() + .filter(person -> person.getHarmonicInfo() == 1) + .map(AppInfoSet::getUserId).collect(Collectors.toList()); + break; + case 3: + result = appInfoSet.stream() + .filter(person -> person.getAlarmInfo() == 1) + .map(AppInfoSet::getUserId).collect(Collectors.toList()); + break; + default: + break; + } } - if (CollectionUtil.isNotEmpty(list)){ + if (CollectionUtil.isNotEmpty(result)){ + users = userFeignClient.getUserByIdList(result).getData(); + } + return users; + } + + public List getAdminUser() { + List users = appUserFeignClient.getAdminInfo().getData(); + List result = new ArrayList<>(); + List adminList = users.stream().map(User::getId).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(adminList)){ + List appInfoSet = appInfoSetFeignClient.getListById(adminList).getData(); + result = appInfoSet.stream() + .filter(person -> person.getRunInfo() == 1) + .map(AppInfoSet::getUserId).collect(Collectors.toList()); + } + if (CollectionUtil.isNotEmpty(result)){ users = userFeignClient.getUserByIdList(result).getData(); } - List adminUser = appUserFeignClient.getAdminInfo().getData(); - users.addAll(adminUser); return users; }