App消息推送调整

This commit is contained in:
xy
2026-04-07 09:15:55 +08:00
parent d20c869bad
commit 292e8b58a5
4 changed files with 109 additions and 102 deletions

View File

@@ -51,6 +51,7 @@ public class FileCommonUtils {
*/ */
public void cleanRedisData(String nDid, String fileName) { public void cleanRedisData(String nDid, String fileName) {
redisUtil.deleteKeysByString("downloadFilePath:"+ nDid); redisUtil.deleteKeysByString("downloadFilePath:"+ nDid);
redisUtil.deleteKeysByString("isWeb:"+ nDid);
redisUtil.delete("fileDowning:"+nDid); redisUtil.delete("fileDowning:"+nDid);
redisUtil.delete("fileCheck" + nDid + fileName); redisUtil.delete("fileCheck" + nDid + fileName);
redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(fileName)); redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(fileName));

View File

@@ -87,6 +87,7 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService {
public boolean downloadFile(String nDid, String name, Integer size, String fileCheck) { public boolean downloadFile(String nDid, String name, Integer size, String fileCheck) {
boolean result = true; boolean result = true;
try { try {
redisUtil.saveByKeyWithExpire("isWeb:"+nDid,name,30L);
redisUtil.saveByKeyWithExpire("fileDowning:"+nDid,"fileDowning",300L); redisUtil.saveByKeyWithExpire("fileDowning:"+nDid,"fileDowning",300L);
redisUtil.saveByKey("fileCheck"+nDid+name,fileCheck); redisUtil.saveByKey("fileCheck"+nDid+name,fileCheck);
Object object = getDeviceMid(nDid); Object object = getDeviceMid(nDid);
@@ -104,6 +105,7 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService {
redisUtil.delete("fileDowning:"+nDid); redisUtil.delete("fileDowning:"+nDid);
redisUtil.delete("fileCheck"+nDid+name); redisUtil.delete("fileCheck"+nDid+name);
redisUtil.delete("fileDownUserId"+nDid+name); redisUtil.delete("fileDownUserId"+nDid+name);
redisUtil.deleteKeysByString("isWeb:"+ nDid);
throw new BusinessException(AlgorithmResponseEnum.FILE_DOWNLOAD_ERROR); throw new BusinessException(AlgorithmResponseEnum.FILE_DOWNLOAD_ERROR);
} }
return result; return result;

View File

@@ -31,7 +31,6 @@ import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.redis.pojo.enums.AppRedisKey;
import com.njcn.redis.utils.RedisUtil; import com.njcn.redis.utils.RedisUtil;
import com.njcn.user.api.UserFeignClient;
import com.njcn.zlevent.param.CsEventParam; import com.njcn.zlevent.param.CsEventParam;
import com.njcn.zlevent.pojo.dto.FileInfoDto; import com.njcn.zlevent.pojo.dto.FileInfoDto;
import com.njcn.zlevent.pojo.dto.FileStreamDto; import com.njcn.zlevent.pojo.dto.FileStreamDto;
@@ -270,7 +269,7 @@ public class FileServiceImpl implements IFileService {
+ ",nowStep:" + appFileMessage.getMsg().getFrameCurr() + ",nowStep:" + appFileMessage.getMsg().getFrameCurr()
+ ",userId:" + userIndex + ",userId:" + userIndex
+"}"; +"}";
publisher.send("/Web/Progress/" + appFileMessage.getId(), new Gson().toJson(json), 1, false); publisher.send("/Web/Progress/" + appFileMessage.getId(), new Gson().toJson(json), 2, false);
if (!Objects.isNull(filePath)){ if (!Objects.isNull(filePath)){
redisUtil.saveByKeyWithExpire("downloadFilePath:" + appFileMessage.getId() + appFileMessage.getMsg().getName(),filePath,60L); redisUtil.saveByKeyWithExpire("downloadFilePath:" + appFileMessage.getId() + appFileMessage.getMsg().getName(),filePath,60L);
} }
@@ -280,6 +279,7 @@ public class FileServiceImpl implements IFileService {
//2.缓存了判断收到的报文个数是否和总个数一致,一致则解析文件;不一致则更新缓存 //2.缓存了判断收到的报文个数是否和总个数一致,一致则解析文件;不一致则更新缓存
//3.超时判断: 30s未收到相关文件信息核查文件个数看丢失哪些帧重新请求 //3.超时判断: 30s未收到相关文件信息核查文件个数看丢失哪些帧重新请求
else { else {
Object isWeb = redisUtil.getObjectByKey("isWeb:" + appFileMessage.getId());
redisUtil.saveByKey("handleEvent:" + appFileMessage.getId(),"doing"); redisUtil.saveByKey("handleEvent:" + appFileMessage.getId(),"doing");
if (appFileMessage.getMsg().getFrameTotal() == 1){ if (appFileMessage.getMsg().getFrameTotal() == 1){
//解析文件入库 //解析文件入库
@@ -289,18 +289,20 @@ public class FileServiceImpl implements IFileService {
csEventLogs.setNowStep(1); csEventLogs.setNowStep(1);
csEventLogs.setAllStep(1); csEventLogs.setAllStep(1);
csEventLogs.setIsAll(1); csEventLogs.setIsAll(1);
//更新文件信息 if (Objects.isNull(isWeb)) {
csWaveService.updateCsWave(fileName); //更新文件信息
//波形文件关联事件 csWaveService.updateCsWave(fileName);
filePath = filePath.replaceAll(GeneralConstant.CFG,"").replaceAll(GeneralConstant.DAT,""); //波形文件关联事件
List<String> eventList = correlateEvents(fileInfoDto,filePath,fileName); filePath = filePath.replaceAll(GeneralConstant.CFG,"").replaceAll(GeneralConstant.DAT,"");
if (CollectionUtil.isNotEmpty(eventList) && devModel){ List<String> eventList = correlateEvents(fileInfoDto,filePath,fileName);
eventList.forEach(item -> { if (CollectionUtil.isNotEmpty(eventList) && devModel){
//波形文件解析成图片 eventList.forEach(item -> {
wavePicFeignClient.getWavePics(item); //波形文件解析成图片
//同步更新r_mp_event_detail将波形路径录入 wavePicFeignClient.getWavePics(item);
wavePicFeignClient.updateEventById(item); //同步更新r_mp_event_detail将波形路径录入
}); wavePicFeignClient.updateEventById(item);
});
}
} }
//解析完删除、处理缓存 //解析完删除、处理缓存
removeInfoUtils.deleteEventInfo(appFileMessage.getId(),fileName); removeInfoUtils.deleteEventInfo(appFileMessage.getId(),fileName);
@@ -339,18 +341,20 @@ public class FileServiceImpl implements IFileService {
csEventLogs.setAllStep(appFileMessage.getMsg().getFrameTotal()); csEventLogs.setAllStep(appFileMessage.getMsg().getFrameTotal());
csEventLogs.setIsAll(1); csEventLogs.setIsAll(1);
log.info("当前文件 {} 帧,这是第 {} 帧报文,全部收到,解析成功!", appFileMessage.getMsg().getFrameTotal(), appFileMessage.getMsg().getFrameCurr()); log.info("当前文件 {} 帧,这是第 {} 帧报文,全部收到,解析成功!", appFileMessage.getMsg().getFrameTotal(), appFileMessage.getMsg().getFrameCurr());
//修改文件信息 if (Objects.isNull(isWeb)) {
csWaveService.updateCsWave(fileName); //修改文件信息
//波形文件关联事件 csWaveService.updateCsWave(fileName);
filePath = filePath.replaceAll(GeneralConstant.CFG, "").replaceAll(GeneralConstant.DAT, ""); //波形文件关联事件
List<String> eventList = correlateEvents(fileInfoDto, filePath, fileName); filePath = filePath.replaceAll(GeneralConstant.CFG, "").replaceAll(GeneralConstant.DAT, "");
if (CollectionUtil.isNotEmpty(eventList) && devModel){ List<String> eventList = correlateEvents(fileInfoDto, filePath, fileName);
eventList.forEach(item -> { if (CollectionUtil.isNotEmpty(eventList) && devModel){
//波形文件解析成图片 eventList.forEach(item -> {
wavePicFeignClient.getWavePics(item); //波形文件解析成图片
//同步更新r_mp_event_detail将波形路径录入 wavePicFeignClient.getWavePics(item);
wavePicFeignClient.updateEventById(item); //同步更新r_mp_event_detail将波形路径录入
}); wavePicFeignClient.updateEventById(item);
});
}
} }
redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(appFileMessage.getMsg().getName())); redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(appFileMessage.getMsg().getName()));
redisUtil.delete(AppRedisKey.FILE_PART.concat(appFileMessage.getMsg().getName())); redisUtil.delete(AppRedisKey.FILE_PART.concat(appFileMessage.getMsg().getName()));

View File

@@ -90,7 +90,7 @@ public class SendEventUtils {
eventName = epdFeignClient.findByName(eventName).getData().getShowName(); eventName = epdFeignClient.findByName(eventName).getData().getShowName();
switch (type) { switch (type) {
case "1": case "1":
code = 2; code = 3;
//设备自身事件 不推送给用户,推送给业务管理 //设备自身事件 不推送给用户,推送给业务管理
eventUser = getEventUser(devId,false); eventUser = getEventUser(devId,false);
if (CollectionUtil.isNotEmpty(eventUser)) { if (CollectionUtil.isNotEmpty(eventUser)) {
@@ -108,7 +108,7 @@ public class SendEventUtils {
userList.add(user.getDevCode()); userList.add(user.getDevCode());
} }
noticeUserDto.setPushClientId(userList); noticeUserDto.setPushClientId(userList);
noticeUserDto.setTitle("设备事件"); noticeUserDto.setTitle("运行事件");
} }
} }
break; break;
@@ -132,26 +132,26 @@ public class SendEventUtils {
} }
} }
break; break;
case "3": // case "3":
code = 1; // code = 1;
//稳态事件 // //稳态事件
eventUser = getEventUser(devId,true); // eventUser = getEventUser(devId,true);
if (CollectionUtil.isNotEmpty(eventUser)) { // if (CollectionUtil.isNotEmpty(eventUser)) {
eventUser.forEach(item->{ // eventUser.forEach(item->{
CsEventUserPO csEventUser = new CsEventUserPO(); // CsEventUserPO csEventUser = new CsEventUserPO();
csEventUser.setUserId(item); // csEventUser.setUserId(item);
csEventUser.setStatus(0); // csEventUser.setStatus(0);
csEventUser.setEventId(id); // csEventUser.setEventId(id);
result.add(csEventUser); // result.add(csEventUser);
}); // });
users = getSendUser(eventUser,1); // users = getSendUser(eventUser,1);
if (CollectionUtil.isNotEmpty(users)){ // if (CollectionUtil.isNotEmpty(users)){
devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); // devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList());
noticeUserDto.setPushClientId(devCodeList); // noticeUserDto.setPushClientId(devCodeList);
noticeUserDto.setTitle("稳态事件"); // noticeUserDto.setTitle("稳态事件");
} // }
} // }
break; // break;
default: default:
code = 0; code = 0;
break; break;
@@ -161,62 +161,62 @@ public class SendEventUtils {
content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生" + eventName; content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生" + eventName;
noticeUserDto.setContent(content); noticeUserDto.setContent(content);
payload.setType(code); payload.setType(code);
payload.setPath("/pages/message/message?type="+payload.getType()); payload.setPath("/pages/index/message1?type="+payload.getType());
noticeUserDto.setPayload(payload);
}
//告警处理
else if (eventType == 2){
switch (type) {
case "1":
//Ⅰ级告警 不推送给用户,推送给业务管理
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;
case "2":
eventName = epdFeignClient.findByName(eventName).getData().getShowName();
case "3":
//Ⅱ、Ⅲ级告警推送相关用户及业务管理员
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;
}
noticeUserDto.setTitle("告警事件");
DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(devId).getData();
content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生告警,告警信息:" + eventName;
noticeUserDto.setContent(content);
payload.setType(3);
payload.setPath("/pages/message/message?type="+payload.getType());
noticeUserDto.setPayload(payload); noticeUserDto.setPayload(payload);
} }
// //告警处理
// else if (eventType == 2){
// switch (type) {
// case "1":
// //Ⅰ级告警 不推送给用户,推送给业务管理
// 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;
// case "2":
// eventName = epdFeignClient.findByName(eventName).getData().getShowName();
// case "3":
// //Ⅱ、Ⅲ级告警推送相关用户及业务管理员
// 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;
// }
// noticeUserDto.setTitle("告警事件");
// DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(devId).getData();
// content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生告警,告警信息:" + eventName;
// noticeUserDto.setContent(content);
// payload.setType(3);
// payload.setPath("/pages/message/message?type="+payload.getType());
// noticeUserDto.setPayload(payload);
// }
if (CollectionUtil.isNotEmpty(noticeUserDto.getPushClientId())) { if (CollectionUtil.isNotEmpty(noticeUserDto.getPushClientId())) {
List<String> filteredList = noticeUserDto.getPushClientId().stream() List<String> filteredList = noticeUserDto.getPushClientId().stream()
.filter(Objects::nonNull) .filter(Objects::nonNull)