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 998a473..fe41e74 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 @@ -84,7 +84,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 eventUser; List devCodeList; List csEventSendMsgList = new ArrayList<>(); NoticeUserDto noticeUserDto = new NoticeUserDto(); @@ -98,53 +98,64 @@ public class SendEventUtils { case "1": code = 2; //设备自身事件 不推送给用户,推送给业务管理 - users = getAdminUser(); - if (CollectionUtil.isNotEmpty(users)){ - for (User user : users){ - noticeUserDto.setPushClientId(Collections.singletonList(user.getDevCode())); - noticeUserDto.setTitle("设备事件"); - //记录需要通知的用户和事件关系 + eventUser = getEventUser(devId,false); + if (CollectionUtil.isNotEmpty(eventUser)) { + eventUser.forEach(item->{ CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(user.getId()); + csEventUser.setUserId(item); csEventUser.setStatus(0); csEventUser.setEventId(id); result.add(csEventUser); + }); + + users = getSendUser(eventUser,2); + if (CollectionUtil.isNotEmpty(users)){ + for (User user : users){ + noticeUserDto.setPushClientId(Collections.singletonList(user.getDevCode())); + noticeUserDto.setTitle("设备事件"); + } } } break; case "2": code = 0; //暂态事件 - users = getEventUser(devId,0); - devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); - noticeUserDto.setPushClientId(devCodeList); - noticeUserDto.setTitle("暂态事件"); - //记录需要通知的用户和事件关系 - List list2 = users.stream().map(User::getId).collect(Collectors.toList()); - list2.forEach(item->{ - CsEventUserPO csEventUser2 = new CsEventUserPO(); - csEventUser2.setUserId(item); - csEventUser2.setStatus(0); - csEventUser2.setEventId(id); - result.add(csEventUser2); - }); + eventUser = getEventUser(devId,true); + if (CollectionUtil.isNotEmpty(eventUser)) { + eventUser.forEach(item->{ + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(item); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + }); + users = getSendUser(eventUser,0); + if (CollectionUtil.isNotEmpty(users)){ + devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); + noticeUserDto.setPushClientId(devCodeList); + noticeUserDto.setTitle("暂态事件"); + } + } break; case "3": code = 1; //稳态事件 - users = getEventUser(devId,1); - devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); - noticeUserDto.setPushClientId(devCodeList); - noticeUserDto.setTitle("稳态事件"); - //记录需要通知的用户和事件关系 - List list3 = users.stream().map(User::getId).collect(Collectors.toList()); - list3.forEach(item->{ - CsEventUserPO csEventUser3 = new CsEventUserPO(); - csEventUser3.setUserId(item); - csEventUser3.setStatus(0); - csEventUser3.setEventId(id); - result.add(csEventUser3); - }); + eventUser = getEventUser(devId,true); + if (CollectionUtil.isNotEmpty(eventUser)) { + eventUser.forEach(item->{ + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(item); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + }); + users = getSendUser(eventUser,1); + if (CollectionUtil.isNotEmpty(users)){ + devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); + noticeUserDto.setPushClientId(devCodeList); + noticeUserDto.setTitle("稳态事件"); + } + } break; default: code = 0; @@ -163,19 +174,20 @@ public class SendEventUtils { switch (type) { case "1": //Ⅰ级告警 不推送给用户,推送给业务管理 - users = getAdminUser(); - if (CollectionUtil.isNotEmpty(users)){ - eventName = epdFeignClient.findByName(eventName).getData().getShowName(); - for (User user : users){ - noticeUserDto.setPushClientId(Collections.singletonList(user.getDevCode())); - //记录需要通知的用户和事件关系 - users.forEach(item->{ - CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(item.getId()); - csEventUser.setStatus(0); - csEventUser.setEventId(id); - result.add(csEventUser); - }); + eventUser = getEventUser(devId,false); + if (CollectionUtil.isNotEmpty(eventUser)) { + eventUser.forEach(item->{ + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(item); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + }); + users = getSendUser(eventUser,3); + if (CollectionUtil.isNotEmpty(users)){ + eventName = epdFeignClient.findByName(eventName).getData().getShowName(); + devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); + noticeUserDto.setPushClientId(devCodeList); } } break; @@ -183,18 +195,21 @@ public class SendEventUtils { eventName = epdFeignClient.findByName(eventName).getData().getShowName(); case "3": //Ⅱ、Ⅲ级告警推送相关用户及业务管理员 - users = getEventUser(devId,3); - devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); - noticeUserDto.setPushClientId(devCodeList); - //记录需要通知的用户和事件关系 - List list4 = users.stream().map(User::getId).collect(Collectors.toList()); - list4.forEach(item->{ - CsEventUserPO csEventUser4 = new CsEventUserPO(); - csEventUser4.setUserId(item); - csEventUser4.setStatus(0); - csEventUser4.setEventId(id); - result.add(csEventUser4); - }); + eventUser = getEventUser(devId,true); + if (CollectionUtil.isNotEmpty(eventUser)) { + eventUser.forEach(item->{ + CsEventUserPO csEventUser = new CsEventUserPO(); + csEventUser.setUserId(item); + csEventUser.setStatus(0); + csEventUser.setEventId(id); + result.add(csEventUser); + }); + users = getSendUser(eventUser,3); + if (CollectionUtil.isNotEmpty(users)){ + devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); + noticeUserDto.setPushClientId(devCodeList); + } + } break; default: break; @@ -272,55 +287,52 @@ public class SendEventUtils { } } + /** - * 获取需要通知事件的用户 + * 获取所有需要推送的用户id */ - public List getEventUser(String devId,Integer type) { - List users = new ArrayList<>(); - List result = new ArrayList<>(); - //获取设备下主用户和子用户集合 + public List getEventUser(String devId,boolean isAdmin) { 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(); - 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 (isAdmin) { + List adminUser = appUserFeignClient.getAdminInfo().getData(); + List adminList = adminUser.stream().map(User::getId).collect(Collectors.toList()); + list.addAll(adminList); } - if (CollectionUtil.isNotEmpty(result)){ - users = userFeignClient.appuserByIdList(result).getData(); - } - return users; + return list; } - public List getAdminUser() { - List users = appUserFeignClient.getAdminInfo().getData(); + + /** + * 获取所有打开推送的用户信息 + */ + public List getSendUser(List userList,Integer type) { + List users = new ArrayList<>(); 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()); + List appInfoSet = appInfoSetFeignClient.getListById(userList).getData(); + + 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 2: + result = appInfoSet.stream() + .filter(person -> person.getRunInfo() == 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(result)){ users = userFeignClient.appuserByIdList(result).getData();