From 986522c01723804764abd8656f65d479b99598c5 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Thu, 16 May 2024 10:05:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=B3=E5=8C=97=E4=B8=A4=E7=BA=A7=E8=B4=AF?= =?UTF-8?q?=E9=80=9A=E6=96=87=E6=A1=A3=E4=BF=AE=E6=94=B9=20=E5=86=80?= =?UTF-8?q?=E5=8C=97=E5=8F=B0=E8=B4=A6=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/RmpEventDetailConsumer.java | 281 ++++++++++++++++++ .../impl/EventWaveAnalysisServiceImpl.java | 6 +- .../njcn/advance/utils/JnaCallBalance.java | 5 +- .../njcn/advance/utils/JnaCallDllOrSo.java | 12 +- .../pq/controller/RunManageController.java | 12 + .../njcn/device/pq/mapper/DeviceMapper.java | 9 + .../device/pq/mapper/mapping/DeviceMapper.xml | 76 ++++- .../device/pq/service/RunManageService.java | 5 + .../pq/service/impl/RunManageServiceImpl.java | 54 ++-- .../harmonic/pojo/vo/upload/DimBusBarVO.java | 27 ++ .../njcn/harmonic/pojo/vo/upload/PmsPage.java | 54 ++++ .../upload/EvaluationDownController.java | 15 +- .../upload/IEvaluationDataService.java | 6 +- .../impl/REvaluationDataServiceImpl.java | 19 +- .../user/UserReportManageController.java | 12 + .../service/user/UserReportPOService.java | 3 + .../user/impl/UserReportPOServiceImpl.java | 16 + 17 files changed, 572 insertions(+), 40 deletions(-) create mode 100644 pqs-advance/advance-boot/src/main/java/com/njcn/advance/handler/RmpEventDetailConsumer.java create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/PmsPage.java diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/handler/RmpEventDetailConsumer.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/handler/RmpEventDetailConsumer.java new file mode 100644 index 000000000..7baeee917 --- /dev/null +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/handler/RmpEventDetailConsumer.java @@ -0,0 +1,281 @@ +//package com.njcn.advance.handler; +// +//import cn.hutool.core.collection.CollUtil; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.njcn.advance.mapper.RmpEventAdvanceMapper; +//import com.njcn.advance.pojo.dto.waveAnalysis.AnalyWave; +//import com.njcn.advance.pojo.dto.waveAnalysis.AnalyWaveModel; +//import com.njcn.advance.pojo.dto.waveAnalysis.CauseStruct; +//import com.njcn.advance.pojo.dto.waveAnalysis.Rect; +//import com.njcn.advance.utils.JnaCallBalance; +//import com.njcn.advance.utils.JnaCallDllOrSo; +//import com.njcn.common.pojo.exception.BusinessException; +//import com.njcn.event.api.RmpEventDetailFeignClient; +//import com.njcn.event.pojo.po.RmpEventDetailPO; +//import com.njcn.middle.rocket.domain.BaseMessage; +//import com.njcn.middle.rocket.handler.EnhanceConsumerMessageHandler; +//import com.njcn.mq.constant.BusinessTopic; +//import com.njcn.mq.message.AppEventMessage; +//import com.njcn.mq.message.RmpEventDetailMessage; +//import com.njcn.mq.template.RmpEventDetailMessageTemplate; +//import com.njcn.system.api.DicDataFeignClient; +//import com.njcn.system.enums.DicDataTypeEnum; +//import com.njcn.system.pojo.po.DictData; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +//import org.apache.rocketmq.spring.core.RocketMQListener; +//import org.springframework.messaging.Message; +//import org.springframework.stereotype.Component; +//import org.springframework.stereotype.Service; +// +//import java.time.ZoneId; +//import java.util.*; +//import java.util.function.Function; +//import java.util.stream.Collectors; +// +///** +// * pqs +// * +// * @author cdf +// * @date 2023/8/24 +// */ +//@RocketMQMessageListener(topic = BusinessTopic.RMP_EVENT_DETAIL_TOPIC, +// consumerGroup = BusinessTopic.RMP_EVENT_DETAIL_TOPIC, +// enableMsgTrace = true) +//@Slf4j +//@Service +//@RequiredArgsConstructor +//public class RmpEventDetailConsumer extends EnhanceConsumerMessageHandler implements RocketMQListener { +// //波形最大值计算 +// private final int MAXLENGTH = 128 * 3000; +// +// private final RmpEventAdvanceMapper rmpEventAdvanceMapper; +// +// private final DicDataFeignClient dicDataFeignClient; +// +// +// +// @Override +// protected void handleMessage(RmpEventDetailMessage rmpEventDetailMessage) throws Exception { +// System.out.println("6666666666666666"); +// /* if(Objects.nonNull(rmpEventDetailMessage)){ +// List eventIds = rmpEventDetailMessage.getEventIds(); +// if(CollUtil.isNotEmpty(eventIds)){ +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.in(RmpEventDetailPO::getEventId,eventIds); +// List rmpEventDetailPOList = rmpEventAdvanceMapper.selectList(queryWrapper); +// +// for(RmpEventDetailPO rmpEventDetailPO : rmpEventDetailPOList){ +// if(rmpEventDetailPO.getDealFlag() != 1){ +// //调用算法文件计算暂降特征值 +// +// if(rmpEventDetailPO.getFileFlag() == 1){ +// //存在录波 +// JnaCallDllOrSo jnaCallDllOrSo = new JnaCallBalance("qvvr_dll"); +// jnaCallDllOrSo.setPath(); +// // 计算暂降类 +// Rect rect = new Rect(); +// CauseStruct causeStruct = new CauseStruct(); +// +// JnaCallBalance.Eventlibrary INSTANTCE = JnaCallBalance.Eventlibrary.INSTANTCE; +// INSTANTCE.qvvr_fun(rect); +// +// byte[] arr = new byte[1024]; +// AnalyWave analyWave = new AnalyWave(); +// List> pitchList = analyWave.AnalyseComtradeDat(arr,1); +// for (int i = 0; i < pitchList.size(); i++) { +// rect.smp_va[i] = pitchList.get(i).get(1); +// causeStruct.smp_va[i] = pitchList.get(i).get(1); +// +// rect.smp_vb[i] = pitchList.get(i).get(2); +// causeStruct.smp_vb[i] = pitchList.get(i).get(2); +// +// rect.smp_vc[i] = pitchList.get(i).get(3); +// causeStruct.smp_vc[i] = pitchList.get(i).get(3); +// } +// +// rect.smp_len = pitchList.size(); +// //超过60s的波形直接抛异常给上面处理 +// if (rect.smp_len >= MAXLENGTH) { +// throw new BusinessException("波形超过60S"); +// } +// +// rect.smp_rate = 32; +// +// +// +// +// *//** +// * @判断是否调用成功 +// * @成功执行更新pqs_eventdetail操作:更新dq持续时间、暂降类型、暂降原因、总分段数目 +// *//* +// if (rect.evt_num > 0) { +// RmpEventDetailPO detail = new RmpEventDetailPO(); +// detail.setEventId("rmpEventDetailPOQuery.getEventId()"); +// detail.setNum(rect.evt_num); +// detail.setDqTime((double) rect.evt_buf[0].hold_time_dq); +// detail.setFirstType((Integer.toString(rect.evt_buf[0].qvvr_cata_type[0]))); +// //detail.setFirstTime(waveData.getFirstTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); +// //detail.setFirstMs((double)waveData.getFirstMs()); +// +// +// // 排序并获取多段中最小的数据 +// float[] f = new float[rect.evt_num]; +// +// for (int i = 0; i < rect.evt_num; i++) { +// Arrays.parallelSort(rect.evt_buf[i].u3_min, 0, Math.max(rect.evt_buf[i].u_min_num - 1, 0)); +// f[i] = rect.evt_buf[i].u3_min[0]; +// } +// +// float min = f[0]; +// int index = 0; +// +// for (int len = 1; len < f.length; len++) { +// if (min - f[len] > 0) { +// index = len; +// min = f[len]; +// } +// } +// +// *//******************************************************************** +// * add by sw 返回的分段位置需根据采样率进行恢复 +// ********************************************************************//* +// List list = waveData.getRatesCfg().OneRate; +// int rate = (int) waveData.getnOneWaveNum(); +// int k = 0; +// int l = 0; +// +// for (int i = 0; i < list.size(); i++) { +// if (i == 0) { +// for (int j = 0; j < rect.evt_buf[0].SEG_T_num; j++) { +// if (list.get(i).nOneSample >= rate && rect.evt_buf[0].SEG_T_idx[j] < list.get(i).nSampleNum +// / (list.get(i).nOneSample / rate)) { +// rect.evt_buf[0].SEG_T_idx[j] = (int) (rect.evt_buf[0].SEG_T_idx[j] +// * (list.get(i).nOneSample / rate)); +// k++; +// } +// } +// +// for (int j = 0; j < rect.evt_buf[0].u_min_num; j++) { +// if (list.get(i).nOneSample >= rate && rect.evt_buf[0].order_min_idx[j] < list.get(i).nSampleNum +// / (list.get(i).nOneSample / rate)) { +// rect.evt_buf[0].order_min_idx[j] = (int) (rect.evt_buf[0].order_min_idx[j] +// * (list.get(i).nOneSample / rate)); +// l++; +// } +// } +// } else { +// for (int j = k; j < rect.evt_buf[0].SEG_T_num; j++) { +// int posb = 0; +// int pose = 0; +// int pos = 0; +// +// for (int kk = 0; kk <= i; kk++) { +// pose += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate; +// +// if (kk < i) { +// posb += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate; +// pos += list.get(kk).nSampleNum; +// } +// } +// +// if (list.get(i).nOneSample >= rate +// && rect.evt_buf[0].SEG_T_idx[j] > posb +// && rect.evt_buf[0].SEG_T_idx[j] < pose) { +// rect.evt_buf[0].SEG_T_idx[j] = (int) ((rect.evt_buf[0].SEG_T_idx[j] - posb) * list.get(i).nOneSample / rate) + pos; +// k++; +// } +// } +// +// for (int j = l; j < rect.evt_buf[0].u_min_num; j++) { +// int posb = 0; +// int pose = 0; +// int pos = 0; +// +// for (int kk = 0; kk <= i; kk++) { +// pose += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate; +// +// if (kk < i) { +// posb += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate; +// pos += list.get(kk).nSampleNum; +// } +// } +// +// if (list.get(i).nOneSample >= rate +// && rect.evt_buf[0].order_min_idx[j] > posb +// && rect.evt_buf[0].order_min_idx[j] < pose) { +// rect.evt_buf[0].order_min_idx[j] = (int) ((rect.evt_buf[0].order_min_idx[j] - posb) * list.get(i).nSampleNum / rate) + pos; +// l++; +// } +// } +// } +// } +// +// +// List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_TYPE.getCode()).getData(); +// Map eventTypeMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity())); +// +// Integer tem = rect.evt_buf[index].qvvr_cata_type[0]; +// if(eventTypeMap.containsKey(tem)) { +// rmpEventDetailPO.setAdvanceType(eventTypeMap.get(tem).getId()); +// } +// rmpEventDetailPO.setDealFlag(1); +// //rmpEventAdvanceMapper.updateById(rmpEventDetailPO); +// //setEntityAdvanceData(); +// //WriteData2File(); +// //eventDetailMapper.updateDealFlag(1, eventIndex); //计算有结果 +// } else if (rect.evt_num == 0) { +// //eventDetailMapper.updateDealFlag(2, eventIndex);//已计算无结果 +// } +// +// } +// +// +// //TODO 如果不存在录波文件情况 +// //如果不存在录波文件情况 +// } +// } +// } +// }*/ +// +// +// } +// +// @Override +// protected void handleMaxRetriesExceeded(RmpEventDetailMessage rmpEventDetailMessage) { +// +// } +// +// @Override +// protected boolean isRetry() { +// return false; +// } +// +// @Override +// protected boolean throwException() { +// return false; +// } +// +// @Override +// public void onMessage(RmpEventDetailMessage rmpEventDetailMessage) { +// super.dispatchMessage(rmpEventDetailMessage); +// } +// +// /********************************* +// * 获取最小采样率方法 +// * @param OneRate cfg中关于采样率参数 +// * @return 返回最小采样率 +// **********************************/ +// private long MinWaveSample(List OneRate) { +// long nMinOneSample = OneRate.get(0).nOneSample; +// for (int i = 0; i < OneRate.size(); i++) { +// if (OneRate.get(i).nOneSample >= 32) { +// if (nMinOneSample > OneRate.get(i).nOneSample) { +// nMinOneSample = OneRate.get(i).nOneSample; +// } +// } +// } +// return nMinOneSample; +// } +//} diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/EventWaveAnalysisServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/EventWaveAnalysisServiceImpl.java index 5990ae51c..ab9ad676b 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/EventWaveAnalysisServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/impl/EventWaveAnalysisServiceImpl.java @@ -90,8 +90,8 @@ public class EventWaveAnalysisServiceImpl implements EventWaveAnalysisService { if (rmpEventDetailPO.getFileFlag() == 1) { //获取所有暂态原因 - List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_REASON.getCode()).getData(); - Map eventReasonMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity())); + List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_TYPE.getCode()).getData(); + Map eventTypeMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity())); InputStream inputStreamCfg = null; InputStream inputStreamDat = null; @@ -197,7 +197,7 @@ public class EventWaveAnalysisServiceImpl implements EventWaveAnalysisService { ****************************************************************/ if (entityAdvancedData.backNumber > 0) { for (int i = 0; i < entityAdvancedData.backNumber; i++) { - entityAdvancedData.sagType[i] = eventReasonMap.get(entityAdvancedData.evt_buf[i].qvvr_cata_type[0]).getName(); + entityAdvancedData.sagType[i] = eventTypeMap.get(entityAdvancedData.evt_buf[i].qvvr_cata_type[0]).getName(); switch (entityAdvancedData.evt_buf[i].qvvr_phasetype[0]) { case 1: diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallBalance.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallBalance.java index 9926269c6..0c427802d 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallBalance.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallBalance.java @@ -23,7 +23,6 @@ public class JnaCallBalance extends JnaCallDllOrSo{ @Override public void setPath() { JnaCallBalance.strpath = super.getStrpath(); - System.out.println("真实路径-----"+super.getStrpath()); } public interface Balancelibrary extends Library { @@ -33,10 +32,10 @@ public class JnaCallBalance extends JnaCallDllOrSo{ Balancelibrary INSTANTCE = (Balancelibrary) Native.loadLibrary(JnaCallBalance.strpath, Balancelibrary.class); - // 定义方法--->与C方法相对应 + // 定义方法--->与C方法相对应(暂降综合评估) void qvvr_fun_cause(QvvrDataStruct data); - // 定义方法--->与C方法相对应 + // 定义方法--->与C方法相对应(暂降原因) void qvvr_fun_cause(CauseStruct data); diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java index dec5aa20a..7d4fd7950 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java @@ -16,9 +16,7 @@ import java.net.URLDecoder; @Slf4j public class JnaCallDllOrSo { private String path = ""; - private String nameDll; - public static String jarPath = ""; public JnaCallDllOrSo(String name) { super(); @@ -27,15 +25,16 @@ public class JnaCallDllOrSo { String os = System.getProperty("os.name"); // windows操作系统为1 否则为0 int beginIndex = os != null && os.startsWith("Windows") ? 1 : 0; + String nameDll; if (beginIndex == 0) { //linux操作系统 - this.nameDll = "lib" + name + "_dll"; + nameDll = "lib" + name + "_dll"; suffix = ".so"; } else { - this.nameDll = name; + nameDll = name; } - String tem = "/usr/local/dllFile/"+this.nameDll.concat(suffix); + String tem = "/usr/local/dllFile/"+ nameDll.concat(suffix); File dockerFile = new File(tem); if(!dockerFile.exists()){ boolean f = dockerFile.getParentFile().mkdirs(); @@ -43,7 +42,7 @@ public class JnaCallDllOrSo { System.out.println("文件夹创建:"+f); System.out.println("文件创建:"+d); - try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(this.nameDll.concat(suffix))) { + try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(nameDll.concat(suffix))) { try (FileOutputStream outputStream = new FileOutputStream(dockerFile)) { byte[] buffer = new byte[1024]; int bytesRead; @@ -55,6 +54,7 @@ public class JnaCallDllOrSo { } this.path = dockerFile.getAbsolutePath(); } catch (Exception e) { + log.error("调用高级算法文件异常,异常信息如下:"); log.error(e.getMessage()); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/RunManageController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/RunManageController.java index 637d735d9..8582b0def 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/RunManageController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/RunManageController.java @@ -1,5 +1,6 @@ package com.njcn.device.pq.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; @@ -61,6 +62,17 @@ public class RunManageController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getDeviceLedger") + @ApiOperation("获取基本的终端台账信息") + @ApiImplicitParam(name = "runManageParam", value = "终端台账参数", required = true) + public HttpResult> getDeviceLedger(@RequestBody @Validated RunManageParam runManageParam) { + String methodDescribe = getMethodDescribe("getRuntimeData"); + Page result = runManageService.getDeviceLedger(runManageParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getTerminalLedger") @ApiOperation("终端台账统计") diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java index 272a42bb5..0607a47c3 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java @@ -2,6 +2,7 @@ package com.njcn.device.pq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pq.pojo.po.Device; import com.njcn.device.pq.pojo.vo.DevDetail; import com.njcn.device.pq.pojo.vo.LineInfluxDbOnlineVO; @@ -61,6 +62,14 @@ public interface DeviceMapper extends BaseMapper { @Param("searchValue") String searchValue); + Page getDeviceLedger(@Param("page")Page page, + @Param("list") List list, + @Param("comFlag") List comFlag, + @Param("runFlag") List runFlag, + @Param("manufacturers") List manufacturer, + @Param("searchValue") String searchValue); + + List getOnlineEvaluate(@Param("list") List devIndexes, @Param("begin") String searchBeginTime, @Param("end") String searchEndTime); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml index 7de714647..4b0380c18 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml @@ -190,7 +190,7 @@ ORDER BY gdName, bdName, - devName; + devName + SELECT + dev.Id AS id, + area.NAME AS areaName, + gd.NAME AS gdName, + sub.NAME AS bdName, + manufacturerId.NAME AS manufacturer, + dev.NAME AS devName, + device.IP AS ip, + device.Login_Time AS loginTime, + devT.Name AS devType, + device.PORT AS PORT, + CASE + device.Run_Flag + WHEN 0 THEN + "投运" + WHEN 1 THEN + "热备用" + WHEN 2 THEN + "停运" + END AS runFlag, + CASE + device.Com_Flag + WHEN 0 THEN + "中断" + WHEN 1 THEN + "正常" + END AS comFlag, + device.Update_Time AS updateTime + FROM + pq_line dev + INNER JOIN pq_line sub ON sub.Id = dev.Pid + INNER JOIN pq_line gd ON gd.Id = sub.Pid + INNER JOIN pq_line areaId ON areaId.Id = gd.Pid + INNER JOIN sys_area area ON area.Id = areaId.NAME + INNER JOIN pq_device device ON device.Id = dev.Id + INNER JOIN sys_dict_data manufacturerId ON manufacturerId.Id = device.Manufacturer + INNER JOIN sys_dict_data devT ON devT.Id = device.Dev_Type + WHERE dev.Id in + + #{item} + + + and device.Run_Flag in + + #{item1} + + + + and device.Com_Flag in + + #{item2} + + + + and device.Manufacturer in + + #{item3} + + + + + AND sub.NAME LIKE #{searchValueLike} + OR dev.NAME LIKE #{searchValueLike} + OR devT.Name LIKE #{searchValueLike} + OR device.IP LIKE #{searchValueLike} + + ORDER BY + gdName, + bdName, + devName + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/RunManageService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/RunManageService.java index 9980b8a72..55fd1c641 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/RunManageService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/RunManageService.java @@ -1,5 +1,6 @@ package com.njcn.device.pq.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.RunManageParam; import com.njcn.device.pq.pojo.vo.RunManageVO; @@ -29,6 +30,10 @@ public interface RunManageService { List getRuntimeDetail(RunManageParam runManageParam); + Page getDeviceLedger(RunManageParam runManageParam); + + + /** * 终端台账统计 * @author cdf diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java index 42224a6d8..f9ae2529e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; @@ -27,6 +28,7 @@ import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.po.DictData; +import com.njcn.web.factory.PageFactory; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -70,9 +72,9 @@ public class RunManageServiceImpl implements RunManageService { DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); BeanUtil.copyProperties(runManageParam, deviceInfoParam); List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList())); - List lineIndexes = generalDeviceDTOList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList()); + List lineIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(lineIndexes)) { - return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(),runManageParam.getSearchValue()); + return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(), runManageParam.getSearchValue()); } else { return new ArrayList<>(); } @@ -86,51 +88,65 @@ public class RunManageServiceImpl implements RunManageService { List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList())); if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { - List devIndexes = generalDeviceDTOList.stream().flatMap(list->list.getDeviceIndexes().stream()).collect(Collectors.toList()); + List devIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getDeviceIndexes().stream()).collect(Collectors.toList()); DateFormat bf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - if(StrUtil.isNotBlank(runManageParam.getSearchBeginTime()) && StrUtil.isNotBlank(runManageParam.getSearchEndTime()) ){ + if (StrUtil.isNotBlank(runManageParam.getSearchBeginTime()) && StrUtil.isNotBlank(runManageParam.getSearchEndTime())) { runManageParam.setSearchBeginTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchBeginTime())))); runManageParam.setSearchEndTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchEndTime())))); } List manuList = runManageParam.getManufacturer().stream().map(SimpleDTO::getId).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(devIndexes)){ - runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag(),manuList,runManageParam.getSearchValue()); - List lineInfluxDbOnlineVOList = deviceMapper.getOnlineEvaluate(devIndexes,runManageParam.getSearchBeginTime(),runManageParam.getSearchEndTime()); - Map map = lineInfluxDbOnlineVOList.stream().collect(Collectors.toMap(LineInfluxDbOnlineVO::getDevIndex, Function.identity())); - runManageDevList = runManageDevList.stream().peek(item-> item.setOnlineEvaluate(!map.containsKey(item.getId()) ? 3.14159 : NumberUtil.round(map.get(item.getId()).getOnlineRate(), 4).doubleValue())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(devIndexes)) { + runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag(), manuList, runManageParam.getSearchValue()); + List lineInfluxDbOnlineVOList = deviceMapper.getOnlineEvaluate(devIndexes, runManageParam.getSearchBeginTime(), runManageParam.getSearchEndTime()); + Map map = lineInfluxDbOnlineVOList.stream().collect(Collectors.toMap(LineInfluxDbOnlineVO::getDevIndex, Function.identity())); + runManageDevList = runManageDevList.stream().peek(item -> item.setOnlineEvaluate(!map.containsKey(item.getId()) ? 3.14159 : NumberUtil.round(map.get(item.getId()).getOnlineRate(), 4).doubleValue())).collect(Collectors.toList()); String evaluate = runManageParam.getEvaluate(); - if(StrUtil.isNotBlank(evaluate)){ - runManageDevList=runManageDevList.stream().filter(x->filterOnlineEvaluate(evaluate,x.getOnlineEvaluate())).collect(Collectors.toList()); + if (StrUtil.isNotBlank(evaluate)) { + runManageDevList = runManageDevList.stream().filter(x -> filterOnlineEvaluate(evaluate, x.getOnlineEvaluate())).collect(Collectors.toList()); } } } return runManageDevList; } + @Override + public Page getDeviceLedger(RunManageParam runManageParam) { + DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); + BeanUtil.copyProperties(runManageParam, deviceInfoParam); + List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0, 1, 2).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); + if (CollectionUtils.isEmpty(generalDeviceDTOList)) { + throw new BusinessException("当前部门没有装置台账"); + } + List devIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getDeviceIndexes().stream()).collect(Collectors.toList()); + //List manuList = runManageParam.getManufacturer().stream().map(SimpleDTO::getId).collect(Collectors.toList()); + return deviceMapper.getDeviceLedger(new Page<>(PageFactory.getPageNum(runManageParam), PageFactory.getPageSize(runManageParam)), devIndexes, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), null); + } + /** * 评价筛选 + * * @param evaluate * @param onlineEvaluate * @return */ private boolean filterOnlineEvaluate(String evaluate, Double onlineEvaluate) { - if(onlineEvaluate!=null){ - onlineEvaluate=onlineEvaluate*100; - switch (evaluate){ + if (onlineEvaluate != null) { + onlineEvaluate = onlineEvaluate * 100; + switch (evaluate) { case "优": - if(onlineEvaluate>90){ + if (onlineEvaluate > 90) { return true; } return false; case "良": - if(60 lines, List keyIds, Integer level) { GeneralDeviceDTO generalDeviceDTO = new GeneralDeviceDTO(); - if(LineBaseEnum.SUB_V_LEVEL.getCode().equals(level)){ + if (LineBaseEnum.SUB_V_LEVEL.getCode().equals(level)) { generalDeviceDTO.setName(simpleDTO.getValue()); - }else { + } else { generalDeviceDTO.setName(simpleDTO.getName()); } generalDeviceDTO.setIndex(simpleDTO.getId()); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/DimBusBarVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/DimBusBarVO.java index c3b19a021..f190d005e 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/DimBusBarVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/DimBusBarVO.java @@ -76,4 +76,31 @@ public class DimBusBarVO { } + + + @Data + public static class DimBusBarMonitorVoltageVO{ + private String actualCollectNum; + private String busId; + private String busName; + private String busVoltageLevel; + private String busVoltageLevelName; + private String cityOrg; + private String cityOrgName; + private String dataFullRate; + private String expectCollectNum; + private String id; + private String maintOrg; + private String maintOrgName; + private String monitorId; + private String monitorName; + private String statDate; + private String stationId; + private String stationName; + private String status; + private String statusName; + private String whetherOptimal; + private String whetherOptimalName; + } + } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/PmsPage.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/PmsPage.java new file mode 100644 index 000000000..8c2e8715e --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/PmsPage.java @@ -0,0 +1,54 @@ +package com.njcn.harmonic.pojo.vo.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.poi.ss.formula.functions.T; + +import java.util.Collections; +import java.util.List; + +/** + * pqs + * + * @author cdf + * @date 2024/5/15 + */ +@Data +public class PmsPage { + + public List list = Collections.emptyList(); + + /** + * 总数 + */ + public long total = 0; + /** + * 每页显示条数,默认 10 + */ + public long size = 10; + + /** + * 当前页 + */ + public long current = 1; + + public long pageNum; + public long pageSize; + public long pages; + public long prePage; + public long startRow; + + + public PmsPage(long current,long size){ + this.current = current; + this.size = size; + } + + + public PmsPage(){ + + } + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDownController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDownController.java index 76fac0486..dfadc59d2 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDownController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDownController.java @@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.harmonic.pojo.param.upload.DimBusBarParam; import com.njcn.harmonic.pojo.vo.upload.DimBusBarVO; import com.njcn.harmonic.pojo.vo.upload.PmsHttpResult; +import com.njcn.harmonic.pojo.vo.upload.PmsPage; import com.njcn.harmonic.service.upload.IEvaluationDataService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -74,9 +75,19 @@ public class EvaluationDownController extends BaseController { @PostMapping("/getMonitorListByBus") @ApiOperation("国网上送-接收总部基准水平评估监测母线下有效监测点详情下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) - public PmsHttpResult> getMonitorListByBus(@RequestBody DimBusBarParam param) { + public PmsHttpResult> getMonitorListByBus(@RequestBody DimBusBarParam param) { String methodDescribe = getMethodDescribe("getMonitorListByBus"); - Page page = evaluationDataService.getMonitorListByBus(param); + PmsPage page = evaluationDataService.getMonitorListByBus(param); + return new PmsHttpResult<>(0, page); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getBaseEvaBusMonitorList") + @ApiOperation("国网上送-接收总部基准水平评估电压等级母线监测点列表详情下穿接口") + @ApiImplicitParam(name = "param", value = "实体参数", required = true) + public PmsHttpResult> getBaseEvaBusMonitorList(@RequestBody DimBusBarParam param) { + String methodDescribe = getMethodDescribe("getBaseEvaBusMonitorList"); + PmsPage page = evaluationDataService.getBaseEvaBusMonitorList(param); return new PmsHttpResult<>(0, page); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java index c8a0dc7b5..5f9f6b91e 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java @@ -7,6 +7,7 @@ import com.njcn.harmonic.pojo.param.UploadParam; import com.njcn.harmonic.pojo.param.upload.DimBusBarParam; import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; import com.njcn.harmonic.pojo.vo.upload.DimBusBarVO; +import com.njcn.harmonic.pojo.vo.upload.PmsPage; import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo; /** @@ -44,6 +45,9 @@ public interface IEvaluationDataService extends IService Page getBusListByVoltageLevel(DimBusBarParam param); - Page getMonitorListByBus(DimBusBarParam param); + PmsPage getMonitorListByBus(DimBusBarParam param); + + PmsPage getBaseEvaBusMonitorList(DimBusBarParam param); + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java index e9ebe9026..6a9cfbaf1 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java @@ -29,6 +29,7 @@ import com.njcn.harmonic.pojo.param.UploadParam; import com.njcn.harmonic.pojo.param.upload.DimBusBarParam; import com.njcn.harmonic.pojo.po.upload.*; import com.njcn.harmonic.pojo.vo.upload.DimBusBarVO; +import com.njcn.harmonic.pojo.vo.upload.PmsPage; import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo; import com.njcn.harmonic.service.upload.IEvaluationDataService; import com.njcn.system.api.DicDataFeignClient; @@ -344,18 +345,21 @@ public class REvaluationDataServiceImpl extends ServiceImpl getMonitorListByBus(DimBusBarParam param) { + public PmsPage getMonitorListByBus(DimBusBarParam param) { if(StrUtil.isBlank(param.getBusId())){ - return new Page<>(); + return new PmsPage<>(); } - Page result = new Page<>(param.getPageNum(),param.getPageSize()); + PmsPage result = new PmsPage<>(param.getPageNum(),param.getPageSize()); List rDimUpDTOList = new ArrayList<>(); List midBusIds = this.busTargetAss(param, Stream.of(param.getBusId()).collect(Collectors.toList()), rDimUpDTOList); + if(CollectionUtil.isEmpty(midBusIds)){ + return new PmsPage<>(); + } List pmsMidLedgerList = pmsMidLedgerClient.getPmsMidLedgerList(midBusIds).getData(); if(CollectionUtil.isEmpty(pmsMidLedgerList)){ - return new Page<>(); + return new PmsPage<>(); } Map midLedgerMap = pmsMidLedgerList.stream().collect(Collectors.toMap(PmsMidLedger::getId,Function.identity())); List effectIds = rDimUpDTOList.stream().map(RDimUpDTO::getEffectIds).filter(Objects::nonNull).collect(Collectors.toList()); @@ -396,10 +400,15 @@ public class REvaluationDataServiceImpl extends ServiceImpl getBaseEvaBusMonitorList(DimBusBarParam param) { + return null; + } + /** * 根据稳态指标筛选符合条件的母线 diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java index 8ab6383e5..f2b5d1791 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java @@ -107,4 +107,16 @@ public class UserReportManageController extends BaseController { List out = userReportPOService.getUserReportList(); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, out, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getInterferenceUserPage") + @ApiOperation("分页查询干扰源用户台账") + @ApiImplicitParam(name = "userReportQueryParam", value = "参数", required = true) + public HttpResult> getInterferenceUserPage(@RequestBody @Validated UserReportParam.UserReportQueryParam userReportQueryParam){ + String methodDescribe = getMethodDescribe("getInterferenceUserPage"); + Page out = userReportPOService.getInterferenceUserPage(userReportQueryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, out, methodDescribe); + } + + } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java index 47b3d3db7..505dbfadf 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java @@ -31,4 +31,7 @@ public interface UserReportPOService extends IService { void updateUserReportStatus(String businessKey, Integer status); List getUserReportList(); + + + Page getInterferenceUserPage(UserReportParam.UserReportQueryParam userReportQueryParam); } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java index f12712ede..03deb5e8f 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java @@ -255,6 +255,22 @@ public class UserReportPOServiceImpl extends ServiceImpl getInterferenceUserPage(UserReportParam.UserReportQueryParam userReportQueryParam) { + QueryWrapper userReportVOQueryWrapper = new QueryWrapper<>(); + userReportVOQueryWrapper + .eq("supervision_user_report.state", DataStateEnum.ENABLE.getCode()).eq("supervision_user_report.status",FlowStatusEnum.APPROVE.getCode()); + //TODO + if (Objects.nonNull(userReportQueryParam)) { + if (StrUtil.isNotBlank(userReportQueryParam.getCity())) { + //查询所有区域下的数据 + userReportVOQueryWrapper.in("supervision_user_report.city", userReportQueryParam.getCity()); + } + } + userReportVOQueryWrapper.orderByDesc("supervision_user_report.create_time"); + return this.baseMapper.page(new Page<>(PageFactory.getPageNum(userReportQueryParam), PageFactory.getPageSize(userReportQueryParam)), userReportVOQueryWrapper); + } + /** * 获取所有字段为null的属性名