From 689f9ee51c0d0932ad6f620e9da4eef18a382106 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Thu, 11 Jun 2026 15:16:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(data):=20=E6=B7=BB=E5=8A=A0=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E5=88=AB=E5=90=8D=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BA=8B=E4=BB=B6=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AppLineDetailVo中新增指标别名和其他名称单位字段 - 移除CsEventUserPOMapper.xml中的注释代码 - 重构事件查询SQL,使用CASE语句统一事件等级映射 - 更新事件查询条件,按等级重新分组过滤逻辑 - 优化DataServiceImpl中数据处理流程,增加空值检查和排序 - 添加对电压负序分量和零序分量的特殊处理 - 改进FTP服务实现,使用轮询机制替代固定延时 - 更新事件详情中的等级描述文档 --- .../service/impl/DeviceFtpServiceImpl.java | 26 ++-- .../csharmonic/pojo/vo/AppLineDetailVo.java | 6 + .../csharmonic/pojo/vo/EventDetailVO.java | 4 +- .../mapper/mapping/CsEventUserPOMapper.xml | 111 ++++++------------ .../service/impl/DataServiceImpl.java | 30 ++++- 5 files changed, 84 insertions(+), 93 deletions(-) diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/DeviceFtpServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/DeviceFtpServiceImpl.java index deba94e..9288b11 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/DeviceFtpServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/DeviceFtpServiceImpl.java @@ -51,11 +51,13 @@ public class DeviceFtpServiceImpl implements DeviceFtpService { } redisUtil.delete(AppRedisKey.DEVICE_ROOT_PATH + nDid); askDeviceDataFeignClient.askDeviceRootPath(nDid); - Thread.sleep(3000); - Object object = redisUtil.getObjectByKey(AppRedisKey.DEVICE_ROOT_PATH + nDid); - if (Objects.nonNull(object)) { - makeUpVo.setPrjDataPath(object.toString()); - makeUpVo.setType("dir"); + for (int i = 0; i <= 3; i++) { + Thread.sleep(1000); + Object object = redisUtil.getObjectByKey(AppRedisKey.DEVICE_ROOT_PATH + nDid); + if (Objects.nonNull(object)) { + makeUpVo.setPrjDataPath(object.toString()); + makeUpVo.setType("dir"); + } } } catch (Exception e) { throw new BusinessException(e.getMessage()); @@ -75,12 +77,14 @@ public class DeviceFtpServiceImpl implements DeviceFtpService { redisUtil.delete(AppRedisKey.PROJECT_INFO + nDid); // 请求设备文件或目录信息 askDeviceDataFeignClient.askDeviceFileOrDir(nDid, name); - Thread.sleep(10000); - // 从 Redis 获取对象 - Object object = redisUtil.getObjectByKey(AppRedisKey.PROJECT_INFO + nDid); - if (object != null) { - // 根据类型处理不同的数据 - processObject(result, object, type); + for (int i = 0; i <= 10; i++) { + Thread.sleep(1000); + // 从 Redis 获取对象 + Object object = redisUtil.getObjectByKey(AppRedisKey.PROJECT_INFO + nDid); + if (object != null) { + // 根据类型处理不同的数据 + processObject(result, object, type); + } } } catch (Exception e) { // 捕获特定异常并抛出运行时异常 diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AppLineDetailVo.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AppLineDetailVo.java index 321367a..5bdf803 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AppLineDetailVo.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AppLineDetailVo.java @@ -47,6 +47,12 @@ public class AppLineDetailVo implements Serializable { @ApiModelProperty("指标名称") private String name; + @ApiModelProperty("指标别名") + private String otherName; + + @ApiModelProperty("指标别名单位") + private String otherNameUnit; + @ApiModelProperty("单位") private String unit; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java index cbf38bf..2563d37 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/EventDetailVO.java @@ -110,9 +110,7 @@ public class EventDetailVO { * RMS波形图,存在多张的情况 */ private String rmsPics; - @ApiModelProperty(value = " /**\n" + - " * 事件等级(1:Ⅰ级 2:Ⅱ级 3:Ⅲ级)\n" + - " */") + @ApiModelProperty(value = "事件等级(1:Ⅰ级||ERROR 2:Ⅱ级||WARN 3:Ⅲ级||(DEBUG&&NORMAL))") private String level; /** diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml index 619afa0..677b692 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml @@ -87,68 +87,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select DISTINCT b.id id, b.device_id deviceId,b.line_id lineId,b.code code, - b.start_time startTime,b.tag tag ,b.wave_path wavePath,b.instant_pics,b.rms_pics , b.type type,b.level level,b.location location,b.cl_did clDid + b.start_time startTime,b.tag tag ,b.wave_path wavePath,b.instant_pics,b.rms_pics , b.type type, + CASE + WHEN b.level = 4 THEN 3 + WHEN b.level = 5 THEN 3 + WHEN b.level = 6 THEN 2 + WHEN b.level = 7 THEN 1 + ELSE b.level + END AS level, + b.location location,b.cl_did clDid ,d.name lineName,b.advance_reason advanceReason,b.advance_type advanceType,b.sag_source sagSource,e.dev_type devType,b.severity severity,e.ndid nDid from cs_event b left join cs_line d on d.line_id=b.line_id @@ -295,18 +252,22 @@ - AND b.type in(2,3) + AND b.type =#{ csEventUserQueryPage.type} and b.level in (1,2,3,6,7) - AND b.type =#{ csEventUserQueryPage.type} + AND b.type =#{ csEventUserQueryPage.type} - - AND b.level IN - - #{level} - + + AND b.level IN (1,7) + + + AND b.level IN (2,6) + + + AND b.level IN (3) + AND b.tag = #{csEventUserQueryPage.eventType} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java index 14cfedd..4c3e975 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DataServiceImpl.java @@ -169,7 +169,6 @@ public class DataServiceImpl implements IDataService { //获取指标名称和对应的指标集合 List csStatisticalSetPOList = csStatisticalSetFeignClient.queryStatisticalById(idList).getData(); Map> csStatisticalSetPOMap = csStatisticalSetPOList.stream().collect(Collectors.groupingBy(CsStatisticalSetPO::getStatisicalId)); - epdPqdMap.forEach((k,v) ->{ if (Objects.equals(map.get(k).getName(), "data_v")) { partitions.forEach(l -> { @@ -423,8 +422,12 @@ public class DataServiceImpl implements IDataService { if (CollUtil.isEmpty(l1)) { return; } + List list1 = new ArrayList<>(); l1.forEach(item1 -> { - EleEpdPqd epdPqd = epdPqdMap2.get(item1.getTargetId()); + list1.add(epdPqdMap2.get(item1.getTargetId())); + }); + list1.sort(Comparator.comparingInt(EleEpdPqd::getSort)); + list1.forEach(epdPqd -> { AppLineDetailVo.targetDetail targetDetail = new AppLineDetailVo.targetDetail(); targetDetail.setTargetId(item3.getId()); targetDetail.setName(item3.getName()); @@ -432,6 +435,8 @@ public class DataServiceImpl implements IDataService { targetDetail.setUnit(epdPqd.getUnit()); targetDetail.setSort(item3.getSort()); targetDetail.setPrimaryFormula(epdPqd.getPrimaryFormula()); + targetDetail.setOtherName(epdPqd.getShowName()); + targetDetail.setOtherNameUnit(epdPqd.getUnit()); if (Objects.equals(map.get(epdPqd.getClassId()).getName(), "data_v")) { if (!Objects.isNull(epdPqd.getHarmStart()) && !Objects.isNull(epdPqd.getHarmEnd())) { for (int i = epdPqd.getHarmStart(); i <= epdPqd.getHarmEnd(); i++) { @@ -1493,8 +1498,15 @@ public class DataServiceImpl implements IDataService { List finalChildren = children2; children.forEach(item3->{ List l1 = csStatisticalSetPOMap.get(item3.getId()); + if (CollUtil.isEmpty(l1)) { + return; + } + List list1 = new ArrayList<>(); l1.forEach(item1 -> { - EleEpdPqd epdPqd = epdPqdMap2.get(item1.getTargetId()); + list1.add(epdPqdMap2.get(item1.getTargetId())); + }); + list1.sort(Comparator.comparingInt(EleEpdPqd::getSort)); + list1.forEach(epdPqd -> { AppLineDetailVo.targetDetail targetDetail = new AppLineDetailVo.targetDetail(); targetDetail.setTargetId(item3.getId()); targetDetail.setName(item3.getName()); @@ -1798,6 +1810,9 @@ public class DataServiceImpl implements IDataService { public void chanelData(List finalChildren, String dataLevel1, String dataLevel2, Double pt, Double ct) { finalChildren.forEach(item->{ + if(Objects.equals(item.getOtherName(),"电压负序分量") || Objects.equals(item.getOtherName(),"电压零序分量")) { + return; + } Double re; String unit = item.getUnit(); @@ -1865,6 +1880,7 @@ public class DataServiceImpl implements IDataService { } } item.setUnit(unit); + item.setOtherNameUnit(unit); }); } @@ -1949,8 +1965,14 @@ public class DataServiceImpl implements IDataService { List finalChildren = children2; children.forEach(item3->{ List l1 = csStatisticalSetPOMap.get(item3.getId()); + if (CollUtil.isEmpty(l1)) { + return; + } + List list1 = new ArrayList<>(); l1.forEach(item1 -> { - EleEpdPqd epdPqd = epdPqdMap2.get(item1.getTargetId()); + list1.add(epdPqdMap2.get(item1.getTargetId())); + }); + list1.forEach(epdPqd -> { AppLineDetailVo.targetDetail targetDetail = new AppLineDetailVo.targetDetail(); targetDetail.setTargetId(item3.getId()); targetDetail.setName(item3.getName());