This commit is contained in:
xy
2024-09-03 17:57:31 +08:00
parent 81286c33cb
commit 63c293d813

View File

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