From 292e8b58a599f88206917a97f24a470b7b2e6aae Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Tue, 7 Apr 2026 09:15:55 +0800 Subject: [PATCH] =?UTF-8?q?App=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/access/utils/FileCommonUtils.java | 1 + .../impl/AskDeviceDataServiceImpl.java | 2 + .../zlevent/service/impl/FileServiceImpl.java | 56 ++++--- .../njcn/zlevent/utils/SendEventUtils.java | 152 +++++++++--------- 4 files changed, 109 insertions(+), 102 deletions(-) diff --git a/iot-access/access-api/src/main/java/com/njcn/access/utils/FileCommonUtils.java b/iot-access/access-api/src/main/java/com/njcn/access/utils/FileCommonUtils.java index 6640211..6f36921 100644 --- a/iot-access/access-api/src/main/java/com/njcn/access/utils/FileCommonUtils.java +++ b/iot-access/access-api/src/main/java/com/njcn/access/utils/FileCommonUtils.java @@ -51,6 +51,7 @@ public class FileCommonUtils { */ public void cleanRedisData(String nDid, String fileName) { redisUtil.deleteKeysByString("downloadFilePath:"+ nDid); + redisUtil.deleteKeysByString("isWeb:"+ nDid); redisUtil.delete("fileDowning:"+nDid); redisUtil.delete("fileCheck" + nDid + fileName); redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(fileName)); diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/AskDeviceDataServiceImpl.java b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/AskDeviceDataServiceImpl.java index b48cec4..c91cdc4 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/AskDeviceDataServiceImpl.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/AskDeviceDataServiceImpl.java @@ -87,6 +87,7 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService { public boolean downloadFile(String nDid, String name, Integer size, String fileCheck) { boolean result = true; try { + redisUtil.saveByKeyWithExpire("isWeb:"+nDid,name,30L); redisUtil.saveByKeyWithExpire("fileDowning:"+nDid,"fileDowning",300L); redisUtil.saveByKey("fileCheck"+nDid+name,fileCheck); Object object = getDeviceMid(nDid); @@ -104,6 +105,7 @@ public class AskDeviceDataServiceImpl implements AskDeviceDataService { redisUtil.delete("fileDowning:"+nDid); redisUtil.delete("fileCheck"+nDid+name); redisUtil.delete("fileDownUserId"+nDid+name); + redisUtil.deleteKeysByString("isWeb:"+ nDid); throw new BusinessException(AlgorithmResponseEnum.FILE_DOWNLOAD_ERROR); } return result; diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java index ad1614f..9fbcde7 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java @@ -31,7 +31,6 @@ import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.redis.utils.RedisUtil; -import com.njcn.user.api.UserFeignClient; import com.njcn.zlevent.param.CsEventParam; import com.njcn.zlevent.pojo.dto.FileInfoDto; import com.njcn.zlevent.pojo.dto.FileStreamDto; @@ -270,7 +269,7 @@ public class FileServiceImpl implements IFileService { + ",nowStep:" + appFileMessage.getMsg().getFrameCurr() + ",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)){ redisUtil.saveByKeyWithExpire("downloadFilePath:" + appFileMessage.getId() + appFileMessage.getMsg().getName(),filePath,60L); } @@ -280,6 +279,7 @@ public class FileServiceImpl implements IFileService { //2.缓存了判断收到的报文个数是否和总个数一致,一致则解析文件;不一致则更新缓存 //3.超时判断: 30s未收到相关文件信息,核查文件个数,看丢失哪些帧,重新请求 else { + Object isWeb = redisUtil.getObjectByKey("isWeb:" + appFileMessage.getId()); redisUtil.saveByKey("handleEvent:" + appFileMessage.getId(),"doing"); if (appFileMessage.getMsg().getFrameTotal() == 1){ //解析文件入库 @@ -289,18 +289,20 @@ public class FileServiceImpl implements IFileService { csEventLogs.setNowStep(1); csEventLogs.setAllStep(1); csEventLogs.setIsAll(1); - //更新文件信息 - csWaveService.updateCsWave(fileName); - //波形文件关联事件 - filePath = filePath.replaceAll(GeneralConstant.CFG,"").replaceAll(GeneralConstant.DAT,""); - List eventList = correlateEvents(fileInfoDto,filePath,fileName); - if (CollectionUtil.isNotEmpty(eventList) && devModel){ - eventList.forEach(item -> { - //波形文件解析成图片 - wavePicFeignClient.getWavePics(item); - //同步更新r_mp_event_detail,将波形路径录入 - wavePicFeignClient.updateEventById(item); - }); + if (Objects.isNull(isWeb)) { + //更新文件信息 + csWaveService.updateCsWave(fileName); + //波形文件关联事件 + filePath = filePath.replaceAll(GeneralConstant.CFG,"").replaceAll(GeneralConstant.DAT,""); + List eventList = correlateEvents(fileInfoDto,filePath,fileName); + if (CollectionUtil.isNotEmpty(eventList) && devModel){ + eventList.forEach(item -> { + //波形文件解析成图片 + wavePicFeignClient.getWavePics(item); + //同步更新r_mp_event_detail,将波形路径录入 + wavePicFeignClient.updateEventById(item); + }); + } } //解析完删除、处理缓存 removeInfoUtils.deleteEventInfo(appFileMessage.getId(),fileName); @@ -339,18 +341,20 @@ public class FileServiceImpl implements IFileService { csEventLogs.setAllStep(appFileMessage.getMsg().getFrameTotal()); csEventLogs.setIsAll(1); log.info("当前文件 {} 帧,这是第 {} 帧报文,全部收到,解析成功!", appFileMessage.getMsg().getFrameTotal(), appFileMessage.getMsg().getFrameCurr()); - //修改文件信息 - csWaveService.updateCsWave(fileName); - //波形文件关联事件 - filePath = filePath.replaceAll(GeneralConstant.CFG, "").replaceAll(GeneralConstant.DAT, ""); - List eventList = correlateEvents(fileInfoDto, filePath, fileName); - if (CollectionUtil.isNotEmpty(eventList) && devModel){ - eventList.forEach(item -> { - //波形文件解析成图片 - wavePicFeignClient.getWavePics(item); - //同步更新r_mp_event_detail,将波形路径录入 - wavePicFeignClient.updateEventById(item); - }); + if (Objects.isNull(isWeb)) { + //修改文件信息 + csWaveService.updateCsWave(fileName); + //波形文件关联事件 + filePath = filePath.replaceAll(GeneralConstant.CFG, "").replaceAll(GeneralConstant.DAT, ""); + List eventList = correlateEvents(fileInfoDto, filePath, fileName); + if (CollectionUtil.isNotEmpty(eventList) && devModel){ + eventList.forEach(item -> { + //波形文件解析成图片 + wavePicFeignClient.getWavePics(item); + //同步更新r_mp_event_detail,将波形路径录入 + wavePicFeignClient.updateEventById(item); + }); + } } redisUtil.delete(AppRedisKey.FILE_PART_TIME.concat(appFileMessage.getMsg().getName())); redisUtil.delete(AppRedisKey.FILE_PART.concat(appFileMessage.getMsg().getName())); 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 6d6b7e9..730e5bf 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 @@ -90,7 +90,7 @@ public class SendEventUtils { eventName = epdFeignClient.findByName(eventName).getData().getShowName(); switch (type) { case "1": - code = 2; + code = 3; //设备自身事件 不推送给用户,推送给业务管理 eventUser = getEventUser(devId,false); if (CollectionUtil.isNotEmpty(eventUser)) { @@ -108,7 +108,7 @@ public class SendEventUtils { userList.add(user.getDevCode()); } noticeUserDto.setPushClientId(userList); - noticeUserDto.setTitle("设备事件"); + noticeUserDto.setTitle("运行事件"); } } break; @@ -132,26 +132,26 @@ public class SendEventUtils { } } break; - case "3": - code = 1; - //稳态事件 - 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; +// case "3": +// code = 1; +// //稳态事件 +// 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; break; @@ -161,62 +161,62 @@ public class SendEventUtils { content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生" + eventName; noticeUserDto.setContent(content); payload.setType(code); - payload.setPath("/pages/message/message?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()); + 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); +// } if (CollectionUtil.isNotEmpty(noticeUserDto.getPushClientId())) { List filteredList = noticeUserDto.getPushClientId().stream() .filter(Objects::nonNull)