From fa09ac7a6758677fb824d68fb4788e277f5498a4 Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Fri, 21 Feb 2025 15:34:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=B5=E5=8E=8B=E5=90=AB?= =?UTF-8?q?=E6=9C=89=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/stat/messagedto/MessageDataV.java | 17 ++ .../com/njcn/stat/utils/BeanVConverter.java | 234 +++++++++++++++++- .../impl/MessageAnalysisServiceImpl.java | 27 +- .../com/njcn/dataProcess/dto/LnDataDTO.java | 1 + data-processing/data-processing-boot/pom.xml | 18 ++ .../DataProcessBootApplication.java | 1 + .../controller/DataHarmrateVController.java | 64 +++++ .../controller/DataRecallController.java | 161 ++++++++++++ .../dao/imapper/DataHarmrateVMapper.java | 18 ++ .../dataProcess/service/IDataHarmrateV.java | 17 ++ .../service/impl/LnDataDealServiceImpl.java | 4 + .../influxdb/InfluxdbDataHarmrateVImpl.java | 51 ++++ .../relation/RelationDataHarmrateVImpl.java | 56 +++++ 13 files changed, 666 insertions(+), 3 deletions(-) create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataHarmrateVController.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataRecallController.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/imapper/DataHarmrateVMapper.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataHarmrateV.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmrateVImpl.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataHarmrateVImpl.java diff --git a/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/MessageDataV.java b/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/MessageDataV.java index 2b928eb..ed54c01 100644 --- a/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/MessageDataV.java +++ b/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/MessageDataV.java @@ -47,6 +47,23 @@ public class MessageDataV { @JsonProperty("MIN_VRMS") private Double minVrms; + //95值 电压有效值 + @JsonProperty("G_VRMS_LVR") + private Double gVrmsLvr; + + + //平均值 电压有效值 + @JsonProperty("VRMS_LVR") + private Double vrmsLvr; + + //最大值 电压有效值 + @JsonProperty("MAX_VRMS_LVR") + private Double maxVrmsLvr; + + //最小值 电压有效值 + @JsonProperty("MIN_VRMS_LVR") + private Double minVrmsLvr; + //95值 电压总谐波畸变率 @JsonProperty("G_VTHD") private Double gVthd; diff --git a/analysis/stat/stat-api/src/main/java/com/njcn/stat/utils/BeanVConverter.java b/analysis/stat/stat-api/src/main/java/com/njcn/stat/utils/BeanVConverter.java index c9b508d..a89109f 100644 --- a/analysis/stat/stat-api/src/main/java/com/njcn/stat/utils/BeanVConverter.java +++ b/analysis/stat/stat-api/src/main/java/com/njcn/stat/utils/BeanVConverter.java @@ -3,6 +3,7 @@ package com.njcn.stat.utils; import com.njcn.dataProcess.dto.DataHarmphasicVDTO; +import com.njcn.dataProcess.dto.DataHarmrateVDTO; import com.njcn.dataProcess.dto.DataInharmVDTO; import com.njcn.dataProcess.dto.DataVDTO; import com.njcn.stat.messagedto.MessageDataV; @@ -278,7 +279,7 @@ public class BeanVConverter { }; //T项 - public static DataVDTO messageDataVTODataV(MessageDataVT messageDataVT){ + public static DataVDTO messageDataVTODataV(MessageDataVT messageDataVT,MessageDataV messageDataVa,MessageDataV messageDataVb,MessageDataV messageDataVc){ DataVDTO dataVRelation = new DataVDTO(); if(Objects.nonNull(messageDataVT)){ dataVRelation.setFreq(messageDataVT.getFreq()); @@ -308,7 +309,29 @@ public class BeanVConverter { dataVRelation.setVPosCp95(messageDataVT.getGvpseq()); dataVRelation.setVNegCp95(messageDataVT.getGvnseq()); dataVRelation.setVZeroCp95(messageDataVT.getGvzseq()); + } + if(Objects.nonNull(messageDataVa)){ + dataVRelation.setRmsab(messageDataVa.getVrmsLvr()); + dataVRelation.setRmsabMax(messageDataVa.getMaxVrmsLvr()); + dataVRelation.setRmsabMin(messageDataVa.getMinVrmsLvr()); + dataVRelation.setRmsabCp95(messageDataVa.getGVrmsLvr()); + } + if(Objects.nonNull(messageDataVb)){ + dataVRelation.setRmsab(messageDataVb.getVrmsLvr()); + dataVRelation.setRmsabMax(messageDataVb.getMaxVrmsLvr()); + dataVRelation.setRmsabMin(messageDataVb.getMinVrmsLvr()); + dataVRelation.setRmsabCp95(messageDataVb.getGVrmsLvr()); + } + + if(Objects.nonNull(messageDataVc)){ + dataVRelation.setRmsbc(messageDataVc.getVrmsLvr()); + dataVRelation.setRmsbcMax(messageDataVc.getMaxVrmsLvr()); + dataVRelation.setRmsbcMin(messageDataVc.getMinVrmsLvr()); + dataVRelation.setRmsbcCp95(messageDataVc.getGVrmsLvr()); + } + + return dataVRelation; } @@ -739,4 +762,213 @@ public class BeanVConverter { } + public static DataHarmrateVDTO messageDataVTODataHarmprateV(MessageDataV a) { + DataHarmrateVDTO dataHarmrateVDTO = new DataHarmrateVDTO(); + if(Objects.nonNull(a)){ + + + dataHarmrateVDTO.setV2(a.getV2()); + dataHarmrateVDTO.setV3(a.getV3()); + dataHarmrateVDTO.setV4(a.getV4()); + dataHarmrateVDTO.setV5(a.getV5()); + dataHarmrateVDTO.setV6(a.getV6()); + dataHarmrateVDTO.setV7(a.getV7()); + dataHarmrateVDTO.setV8(a.getV8()); + dataHarmrateVDTO.setV9(a.getV9()); + dataHarmrateVDTO.setV10(a.getV10()); + dataHarmrateVDTO.setV11(a.getV11()); + dataHarmrateVDTO.setV12(a.getV12()); + dataHarmrateVDTO.setV13(a.getV13()); + dataHarmrateVDTO.setV14(a.getV14()); + dataHarmrateVDTO.setV15(a.getV15()); + dataHarmrateVDTO.setV16(a.getV16()); + dataHarmrateVDTO.setV17(a.getV17()); + dataHarmrateVDTO.setV18(a.getV18()); + dataHarmrateVDTO.setV19(a.getV19()); + dataHarmrateVDTO.setV20(a.getV20()); + dataHarmrateVDTO.setV21(a.getV21()); + dataHarmrateVDTO.setV22(a.getV22()); + dataHarmrateVDTO.setV23(a.getV23()); + dataHarmrateVDTO.setV24(a.getV24()); + dataHarmrateVDTO.setV25(a.getV25()); + dataHarmrateVDTO.setV26(a.getV26()); + dataHarmrateVDTO.setV27(a.getV27()); + dataHarmrateVDTO.setV28(a.getV28()); + dataHarmrateVDTO.setV29(a.getV29()); + dataHarmrateVDTO.setV30(a.getV30()); + dataHarmrateVDTO.setV31(a.getV31()); + dataHarmrateVDTO.setV32(a.getV32()); + dataHarmrateVDTO.setV33(a.getV33()); + dataHarmrateVDTO.setV34(a.getV34()); + dataHarmrateVDTO.setV35(a.getV35()); + dataHarmrateVDTO.setV36(a.getV36()); + dataHarmrateVDTO.setV37(a.getV37()); + dataHarmrateVDTO.setV38(a.getV38()); + dataHarmrateVDTO.setV39(a.getV39()); + dataHarmrateVDTO.setV40(a.getV40()); + dataHarmrateVDTO.setV41(a.getV41()); + dataHarmrateVDTO.setV42(a.getV42()); + dataHarmrateVDTO.setV43(a.getV43()); + dataHarmrateVDTO.setV44(a.getV44()); + dataHarmrateVDTO.setV45(a.getV45()); + dataHarmrateVDTO.setV46(a.getV46()); + dataHarmrateVDTO.setV47(a.getV47()); + dataHarmrateVDTO.setV48(a.getV48()); + dataHarmrateVDTO.setV49(a.getV49()); + dataHarmrateVDTO.setV50(a.getV50()); + + dataHarmrateVDTO.setV2Max(a.getMaxV2()); + dataHarmrateVDTO.setV3Max(a.getMaxV3()); + dataHarmrateVDTO.setV4Max(a.getMaxV4()); + dataHarmrateVDTO.setV5Max(a.getMaxV5()); + dataHarmrateVDTO.setV6Max(a.getMaxV6()); + dataHarmrateVDTO.setV7Max(a.getMaxV7()); + dataHarmrateVDTO.setV8Max(a.getMaxV8()); + dataHarmrateVDTO.setV9Max(a.getMaxV9()); + dataHarmrateVDTO.setV10Max(a.getMaxV10()); + dataHarmrateVDTO.setV11Max(a.getMaxV11()); + dataHarmrateVDTO.setV12Max(a.getMaxV12()); + dataHarmrateVDTO.setV13Max(a.getMaxV13()); + dataHarmrateVDTO.setV14Max(a.getMaxV14()); + dataHarmrateVDTO.setV15Max(a.getMaxV15()); + dataHarmrateVDTO.setV16Max(a.getMaxV16()); + dataHarmrateVDTO.setV17Max(a.getMaxV17()); + dataHarmrateVDTO.setV18Max(a.getMaxV18()); + dataHarmrateVDTO.setV19Max(a.getMaxV19()); + dataHarmrateVDTO.setV20Max(a.getMaxV20()); + dataHarmrateVDTO.setV21Max(a.getMaxV21()); + dataHarmrateVDTO.setV22Max(a.getMaxV22()); + dataHarmrateVDTO.setV23Max(a.getMaxV23()); + dataHarmrateVDTO.setV24Max(a.getMaxV24()); + dataHarmrateVDTO.setV25Max(a.getMaxV25()); + dataHarmrateVDTO.setV26Max(a.getMaxV26()); + dataHarmrateVDTO.setV27Max(a.getMaxV27()); + dataHarmrateVDTO.setV28Max(a.getMaxV28()); + dataHarmrateVDTO.setV29Max(a.getMaxV29()); + dataHarmrateVDTO.setV30Max(a.getMaxV30()); + dataHarmrateVDTO.setV31Max(a.getMaxV31()); + dataHarmrateVDTO.setV32Max(a.getMaxV32()); + dataHarmrateVDTO.setV33Max(a.getMaxV33()); + dataHarmrateVDTO.setV34Max(a.getMaxV34()); + dataHarmrateVDTO.setV35Max(a.getMaxV35()); + dataHarmrateVDTO.setV36Max(a.getMaxV36()); + dataHarmrateVDTO.setV37Max(a.getMaxV37()); + dataHarmrateVDTO.setV38Max(a.getMaxV38()); + dataHarmrateVDTO.setV39Max(a.getMaxV39()); + dataHarmrateVDTO.setV40Max(a.getMaxV40()); + dataHarmrateVDTO.setV41Max(a.getMaxV41()); + dataHarmrateVDTO.setV42Max(a.getMaxV42()); + dataHarmrateVDTO.setV43Max(a.getMaxV43()); + dataHarmrateVDTO.setV44Max(a.getMaxV44()); + dataHarmrateVDTO.setV45Max(a.getMaxV45()); + dataHarmrateVDTO.setV46Max(a.getMaxV46()); + dataHarmrateVDTO.setV47Max(a.getMaxV47()); + dataHarmrateVDTO.setV48Max(a.getMaxV48()); + dataHarmrateVDTO.setV49Max(a.getMaxV49()); + dataHarmrateVDTO.setV50Max(a.getMaxV50()); + + dataHarmrateVDTO.setV2Min(a.getMinV2()); + dataHarmrateVDTO.setV3Min(a.getMinV3()); + dataHarmrateVDTO.setV4Min(a.getMinV4()); + dataHarmrateVDTO.setV5Min(a.getMinV5()); + dataHarmrateVDTO.setV6Min(a.getMinV6()); + dataHarmrateVDTO.setV7Min(a.getMinV7()); + dataHarmrateVDTO.setV8Min(a.getMinV8()); + dataHarmrateVDTO.setV9Min(a.getMinV9()); + dataHarmrateVDTO.setV10Min(a.getMinV10()); + dataHarmrateVDTO.setV11Min(a.getMinV11()); + dataHarmrateVDTO.setV12Min(a.getMinV12()); + dataHarmrateVDTO.setV13Min(a.getMinV13()); + dataHarmrateVDTO.setV14Min(a.getMinV14()); + dataHarmrateVDTO.setV15Min(a.getMinV15()); + dataHarmrateVDTO.setV16Min(a.getMinV16()); + dataHarmrateVDTO.setV17Min(a.getMinV17()); + dataHarmrateVDTO.setV18Min(a.getMinV18()); + dataHarmrateVDTO.setV19Min(a.getMinV19()); + dataHarmrateVDTO.setV20Min(a.getMinV20()); + dataHarmrateVDTO.setV21Min(a.getMinV21()); + dataHarmrateVDTO.setV22Min(a.getMinV22()); + dataHarmrateVDTO.setV23Min(a.getMinV23()); + dataHarmrateVDTO.setV24Min(a.getMinV24()); + dataHarmrateVDTO.setV25Min(a.getMinV25()); + dataHarmrateVDTO.setV26Min(a.getMinV26()); + dataHarmrateVDTO.setV27Min(a.getMinV27()); + dataHarmrateVDTO.setV28Min(a.getMinV28()); + dataHarmrateVDTO.setV29Min(a.getMinV29()); + dataHarmrateVDTO.setV30Min(a.getMinV30()); + dataHarmrateVDTO.setV31Min(a.getMinV31()); + dataHarmrateVDTO.setV32Min(a.getMinV32()); + dataHarmrateVDTO.setV33Min(a.getMinV33()); + dataHarmrateVDTO.setV34Min(a.getMinV34()); + dataHarmrateVDTO.setV35Min(a.getMinV35()); + dataHarmrateVDTO.setV36Min(a.getMinV36()); + dataHarmrateVDTO.setV37Min(a.getMinV37()); + dataHarmrateVDTO.setV38Min(a.getMinV38()); + dataHarmrateVDTO.setV39Min(a.getMinV39()); + dataHarmrateVDTO.setV40Min(a.getMinV40()); + dataHarmrateVDTO.setV41Min(a.getMinV41()); + dataHarmrateVDTO.setV42Min(a.getMinV42()); + dataHarmrateVDTO.setV43Min(a.getMinV43()); + dataHarmrateVDTO.setV44Min(a.getMinV44()); + dataHarmrateVDTO.setV45Min(a.getMinV45()); + dataHarmrateVDTO.setV46Min(a.getMinV46()); + dataHarmrateVDTO.setV47Min(a.getMinV47()); + dataHarmrateVDTO.setV48Min(a.getMinV48()); + dataHarmrateVDTO.setV49Min(a.getMinV49()); + dataHarmrateVDTO.setV50Min(a.getMinV50()); + + dataHarmrateVDTO.setV2Cp95(a.getGv2()); + dataHarmrateVDTO.setV3Cp95(a.getGv3()); + dataHarmrateVDTO.setV4Cp95(a.getGv4()); + dataHarmrateVDTO.setV5Cp95(a.getGv5()); + dataHarmrateVDTO.setV6Cp95(a.getGv6()); + dataHarmrateVDTO.setV7Cp95(a.getGv7()); + dataHarmrateVDTO.setV8Cp95(a.getGv8()); + dataHarmrateVDTO.setV9Cp95(a.getGv9()); + dataHarmrateVDTO.setV10Cp95(a.getGv10()); + dataHarmrateVDTO.setV11Cp95(a.getGv11()); + dataHarmrateVDTO.setV12Cp95(a.getGv12()); + dataHarmrateVDTO.setV13Cp95(a.getGv13()); + dataHarmrateVDTO.setV14Cp95(a.getGv14()); + dataHarmrateVDTO.setV15Cp95(a.getGv15()); + dataHarmrateVDTO.setV16Cp95(a.getGv16()); + dataHarmrateVDTO.setV17Cp95(a.getGv17()); + dataHarmrateVDTO.setV18Cp95(a.getGv18()); + dataHarmrateVDTO.setV19Cp95(a.getGv19()); + dataHarmrateVDTO.setV20Cp95(a.getGv20()); + dataHarmrateVDTO.setV21Cp95(a.getGv21()); + dataHarmrateVDTO.setV22Cp95(a.getGv22()); + dataHarmrateVDTO.setV23Cp95(a.getGv23()); + dataHarmrateVDTO.setV24Cp95(a.getGv24()); + dataHarmrateVDTO.setV25Cp95(a.getGv25()); + dataHarmrateVDTO.setV26Cp95(a.getGv26()); + dataHarmrateVDTO.setV27Cp95(a.getGv27()); + dataHarmrateVDTO.setV28Cp95(a.getGv28()); + dataHarmrateVDTO.setV29Cp95(a.getGv29()); + dataHarmrateVDTO.setV30Cp95(a.getGv30()); + dataHarmrateVDTO.setV31Cp95(a.getGv31()); + dataHarmrateVDTO.setV32Cp95(a.getGv32()); + dataHarmrateVDTO.setV33Cp95(a.getGv33()); + dataHarmrateVDTO.setV34Cp95(a.getGv34()); + dataHarmrateVDTO.setV35Cp95(a.getGv35()); + dataHarmrateVDTO.setV36Cp95(a.getGv36()); + dataHarmrateVDTO.setV37Cp95(a.getGv37()); + dataHarmrateVDTO.setV38Cp95(a.getGv38()); + dataHarmrateVDTO.setV39Cp95(a.getGv39()); + dataHarmrateVDTO.setV40Cp95(a.getGv40()); + dataHarmrateVDTO.setV41Cp95(a.getGv41()); + dataHarmrateVDTO.setV42Cp95(a.getGv42()); + dataHarmrateVDTO.setV43Cp95(a.getGv43()); + dataHarmrateVDTO.setV44Cp95(a.getGv44()); + dataHarmrateVDTO.setV45Cp95(a.getGv45()); + dataHarmrateVDTO.setV46Cp95(a.getGv46()); + dataHarmrateVDTO.setV47Cp95(a.getGv47()); + dataHarmrateVDTO.setV48Cp95(a.getGv48()); + dataHarmrateVDTO.setV49Cp95(a.getGv49()); + dataHarmrateVDTO.setV50Cp95(a.getGv50()); + + } + + return dataHarmrateVDTO; + } } diff --git a/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java b/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java index cad19bc..876948d 100644 --- a/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java +++ b/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java @@ -41,6 +41,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService { //12张表数据 List dataVList = new ArrayList<>(); List dataHarmphasicVDTOList = new ArrayList<>(); + List dataHarmrateVDTOList = new ArrayList<>(); List dataInharmVDTOList = new ArrayList<>(); List dataIDTOList = new ArrayList<>(); List dataHarmphasicIDTOList = new ArrayList<>(); @@ -70,8 +71,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService { DataVDTO dataVa = BeanVConverter.messageDataVTODataV(v.getA()); DataVDTO dataVb = BeanVConverter.messageDataVTODataV(v.getB()); DataVDTO dataVc = BeanVConverter.messageDataVTODataV(v.getC()); - DataVDTO dataVt = BeanVConverter.messageDataVTODataV(v.getT()); - + DataVDTO dataVt = BeanVConverter.messageDataVTODataV(v.getT(),v.getA(),v.getB(),v.getC()); dataVa.setTimeid(localDateTime); dataVa.setLineid(lineId); dataVa.setPhasicType("A"); @@ -135,6 +135,24 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService { dataInharmVc.setPhasicType("C"); dataInharmVc.setQualityflag(flag); + DataHarmrateVDTO dataHarmrateVDTOa = BeanVConverter.messageDataVTODataHarmprateV(v.getA()); + DataHarmrateVDTO dataHarmrateVDTOb = BeanVConverter.messageDataVTODataHarmprateV(v.getB()); + DataHarmrateVDTO dataHarmrateVDTOc = BeanVConverter.messageDataVTODataHarmprateV(v.getC()); + dataHarmrateVDTOa.setTimeid(localDateTime); + dataHarmrateVDTOa.setLineid(lineId); + dataHarmrateVDTOa.setPhasicType("A"); + dataHarmrateVDTOa.setQualityflag(flag); + + dataHarmrateVDTOb.setTimeid(localDateTime); + dataHarmrateVDTOb.setLineid(lineId); + dataHarmrateVDTOb.setPhasicType("B"); + dataHarmrateVDTOb.setQualityflag(flag); + + dataHarmrateVDTOc.setTimeid(localDateTime); + dataHarmrateVDTOc.setLineid(lineId); + dataHarmrateVDTOc.setPhasicType("C"); + dataHarmrateVDTOc.setQualityflag(flag); + dataInharmVDTOList.add(dataInharmVa); dataInharmVDTOList.add(dataInharmVb); dataInharmVDTOList.add(dataInharmVc); @@ -142,6 +160,10 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService { dataVList.add(dataVb); dataVList.add(dataVc); dataVList.add(dataVt); + dataHarmrateVDTOList.add(dataHarmrateVDTOa); + dataHarmrateVDTOList.add(dataHarmrateVDTOb); + dataHarmrateVDTOList.add(dataHarmrateVDTOc); + } //解析出电流数据ABCT @@ -471,6 +493,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService { }); LnDataDTO lnDataDTO = new LnDataDTO(); lnDataDTO.setDataVList(dataVList); + lnDataDTO.setDataHarmrateVDTOList(dataHarmrateVDTOList); lnDataDTO.setDataHarmphasicVDTOList(dataHarmphasicVDTOList); lnDataDTO.setDataInharmVDTOList(dataInharmVDTOList); lnDataDTO.setDataIDTOList(dataIDTOList); diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/dto/LnDataDTO.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/dto/LnDataDTO.java index 6b35e14..67f6cb2 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/dto/LnDataDTO.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/dto/LnDataDTO.java @@ -17,6 +17,7 @@ import java.util.List; public class LnDataDTO { private List dataVList; private List dataHarmphasicVDTOList; + private List dataHarmrateVDTOList; private List dataInharmVDTOList; private List dataIDTOList; private List dataHarmphasicIDTOList; diff --git a/data-processing/data-processing-boot/pom.xml b/data-processing/data-processing-boot/pom.xml index 5758142..19945f2 100644 --- a/data-processing/data-processing-boot/pom.xml +++ b/data-processing/data-processing-boot/pom.xml @@ -44,6 +44,24 @@ 1.0.0 compile + + com.njcn + common-device-biz + 1.0.0 + compile + + + pqs-influx + com.njcn + + + + + com.njcn.platform + message-api + 1.0.0 + compile + diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/DataProcessBootApplication.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/DataProcessBootApplication.java index cbce0b6..fe752e6 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/DataProcessBootApplication.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/DataProcessBootApplication.java @@ -14,6 +14,7 @@ import org.springframework.context.annotation.DependsOn; @Slf4j @DependsOn("proxyMapperRegister") @MapperScan("com.njcn.**.mapper") +@EnableFeignClients(basePackages = "com.njcn") @SpringBootApplication(scanBasePackages = "com.njcn") public class DataProcessBootApplication { diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataHarmrateVController.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataHarmrateVController.java new file mode 100644 index 0000000..1125f40 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataHarmrateVController.java @@ -0,0 +1,64 @@ +package com.njcn.dataProcess.controller; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.dataProcess.annotation.InsertBean; +import com.njcn.dataProcess.annotation.QueryBean; +import com.njcn.dataProcess.dto.DataHarmphasicIDTO; +import com.njcn.dataProcess.dto.DataHarmrateVDTO; +import com.njcn.dataProcess.po.influx.DataHarmrateV; +import com.njcn.dataProcess.service.IDataHarmphasicI; +import com.njcn.dataProcess.service.IDataHarmrateV; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author hongawen + * @version 1.0 + * @data 2024/11/6 19:48 + */ +@Validated +@Slf4j +@Controller +@RestController +@RequestMapping("/dataHarmratev") +@Api(tags = "谐波电流角度数据") +public class DataHarmrateVController extends BaseController { + + @QueryBean + private IDataHarmrateV dataHarmrateVQuery; + + @InsertBean + private IDataHarmrateV dataHarmrateVInsert; + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD) + @PostMapping("/batchInsertion") + @ApiOperation("批量插入") + public HttpResult batchInsertion(@RequestBody List dataHarmrateVDTOList) { + String methodDescribe = getMethodDescribe("batchInsertion"); + + dataHarmrateVInsert.batchInsertion(dataHarmrateVDTOList); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + + + + + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataRecallController.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataRecallController.java new file mode 100644 index 0000000..f439263 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataRecallController.java @@ -0,0 +1,161 @@ +package com.njcn.dataProcess.controller;//package com.njcn.message.websocket; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.alibaba.fastjson.JSONObject; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; + +import com.njcn.dataProcess.annotation.QueryBean; +import com.njcn.dataProcess.api.DataVFeignClient; +import com.njcn.dataProcess.service.IDataV; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.LineDevGetDTO; +import com.njcn.message.api.ProduceFeignClient; +import com.njcn.message.message.RecallMessage; +import com.njcn.middle.rocket.domain.BaseMessage; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + + +/** + * @author hongawen + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "数据补招") +@RequestMapping("/data") +public class DataRecallController extends BaseController { + + @QueryBean + private IDataV dataVQuery; + private final CommTerminalGeneralClient commTerminalGeneralClient; + private final ProduceFeignClient produceFeignClient; + + + + /** + * 算法保存 + */ + @PostMapping("/recall") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("数据补招") + @ApiImplicitParam(name = "param", value = "参数", required = true) + public HttpResult recall(@RequestBody List param) { + String methodDescribe = getMethodDescribe("recall"); + RecallMessage message = new RecallMessage(); + BaseMessage baseMessage = new BaseMessage(); + + if(CollectionUtils.isEmpty(param)){ + LocalDate localDate =LocalDate.now().plusDays(-1); + List runMonitorIds = commTerminalGeneralClient.getRunMonitorIds().getData(); + List recallDTOList = new ArrayList<>(); + runMonitorIds.forEach(temp->{ + LineDevGetDTO data = commTerminalGeneralClient.getMonitorDetail(temp).getData(); + Integer timeInterval = data.getTimeInterval(); + List localDateTimeList = generateTimeIntervals(localDate, timeInterval); + List data1 = dataVQuery.monitoringTime(temp, LocalDateTimeUtil.format(localDate, DatePattern.NORM_DATE_PATTERN)); + localDateTimeList.removeAll(data1); + if(!CollectionUtils.isEmpty(localDateTimeList)){ + List timePeriod = mergeTimeIntervals(localDateTimeList, timeInterval); + RecallMessage.RecallDTO recallDTO = new RecallMessage.RecallDTO(); + recallDTO.setDataType("0"); + recallDTO.setMonitorId(Stream.of(temp).collect(Collectors.toList())); + recallDTO.setTimeInterval(timePeriod); + + recallDTOList.add(recallDTO); + } + }); + if(!CollectionUtils.isEmpty(recallDTOList)){ + + message.setData(recallDTOList); +// baseMessage.setMessageBody(JSONObject.toJSONString(message)); + + produceFeignClient.recall(message); + } + }else { + message.setData(param); +// baseMessage.setMessageBody(JSONObject.toJSONString(message)); + produceFeignClient.recall(message); + } + + + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + + } + + public List generateTimeIntervals(LocalDate date, int intervalMinutes) { + List dateTimeList = new ArrayList<>(); + + // Create the starting LocalDateTime + LocalDateTime startDateTime = LocalDateTime.of(date, LocalTime.MIDNIGHT); + + // Create the ending LocalDateTime + LocalDateTime endDateTime = LocalDateTime.of(date, LocalTime.MAX); + + // Generate LocalDateTime list with the given interval + LocalDateTime currentDateTime = startDateTime; + while (!currentDateTime.isAfter(endDateTime)) { + dateTimeList.add(currentDateTime); + currentDateTime = currentDateTime.plusMinutes(intervalMinutes); + } + + return dateTimeList; + } + + public static List mergeTimeIntervals(List times, int intervalMinutes) { + List mergedIntervals = new ArrayList<>(); + if (times == null || times.isEmpty()) { + return mergedIntervals; + } + + // Sort the list to ensure the times are in order + times.sort(LocalDateTime::compareTo); + + LocalDateTime start = times.get(0); + LocalDateTime end = start; + + for (int i = 1; i < times.size(); i++) { + LocalDateTime current = times.get(i); + if (current.isAfter(end.plusMinutes(intervalMinutes))) { + // If the current time is more than interval minutes after the end, close the current interval + mergedIntervals.add(formatInterval(start, end)); + start = current; // Start a new interval + } + end = current; // Update the end of the current interval + } + + // Add the last interval + mergedIntervals.add(formatInterval(start, end)); + + return mergedIntervals; + } + + private static String formatInterval(LocalDateTime start, LocalDateTime end) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return start.format(formatter) + "~" + end.format(formatter); + } + + + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/imapper/DataHarmrateVMapper.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/imapper/DataHarmrateVMapper.java new file mode 100644 index 0000000..2b72cdc --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/imapper/DataHarmrateVMapper.java @@ -0,0 +1,18 @@ +package com.njcn.dataProcess.dao.imapper; + + +import com.njcn.dataProcess.po.influx.DataHarmphasicV; +import com.njcn.dataProcess.po.influx.DataHarmrateV; +import com.njcn.influx.base.InfluxDbBaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author hongawen + * @since 2023-12-28 + */ +public interface DataHarmrateVMapper extends InfluxDbBaseMapper { + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataHarmrateV.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataHarmrateV.java new file mode 100644 index 0000000..621ccd5 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataHarmrateV.java @@ -0,0 +1,17 @@ +package com.njcn.dataProcess.service; + +import com.njcn.dataProcess.dto.DataHarmphasicIDTO; +import com.njcn.dataProcess.dto.DataHarmrateVDTO; + +import java.util.List; + +/** + * Description: + * Date: 2024/11/18 11:17【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface IDataHarmrateV { + void batchInsertion(List dataHarmrateVDTOList); +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/LnDataDealServiceImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/LnDataDealServiceImpl.java index c09e8e5..86683c1 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/LnDataDealServiceImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/LnDataDealServiceImpl.java @@ -22,6 +22,9 @@ public class LnDataDealServiceImpl implements LnDataDealService { private IDataHarmphasicI dataHarmphasicIInsert; @InsertBean private IDataHarmphasicV dataHarmphasicVInsert; + + @InsertBean + private IDataHarmrateV dataHarmrateVInsert; @InsertBean private IDataHarmpowerP dataHarmpowerPService; @InsertBean @@ -42,6 +45,7 @@ public class LnDataDealServiceImpl implements LnDataDealService { @Override public void batchInsertion(LnDataDTO lnDataDTO) { dataVService.batchInsertion(lnDataDTO.getDataVList()); + dataHarmrateVInsert.batchInsertion(lnDataDTO.getDataHarmrateVDTOList()); dataFlickerInsert.batchInsertion(lnDataDTO.getDataFlickerDTOList()); dataFlucInsert.batchInsertion(lnDataDTO.getDataFlucDTOList()); dataHarmphasicIInsert.batchInsertion(lnDataDTO.getDataHarmphasicIDTOList()); diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmrateVImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmrateVImpl.java new file mode 100644 index 0000000..b7d8025 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmrateVImpl.java @@ -0,0 +1,51 @@ +package com.njcn.dataProcess.service.impl.influxdb; + +import com.njcn.dataProcess.dao.imapper.DataHarmphasicVMapper; +import com.njcn.dataProcess.dao.imapper.DataHarmrateVMapper; +import com.njcn.dataProcess.dto.DataHarmphasicVDTO; +import com.njcn.dataProcess.dto.DataHarmrateVDTO; +import com.njcn.dataProcess.po.influx.DataHarmphasicV; +import com.njcn.dataProcess.po.influx.DataHarmrateV; +import com.njcn.dataProcess.service.IDataHarmphasicV; +import com.njcn.dataProcess.service.IDataHarmrateV; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.ListUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * Date: 2024/11/18 14:33【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service("InfluxdbDataHarmrateVImpl") +@RequiredArgsConstructor +public class InfluxdbDataHarmrateVImpl implements IDataHarmrateV { + + private final DataHarmrateVMapper dataHarmrateVMapper; + + + @Override + public void batchInsertion(List dataHarmrateVDTOList) { + int totalCount = dataHarmrateVDTOList.size(); + if(totalCount<=0){ + return; + } + + List collect = dataHarmrateVDTOList.stream().flatMap(temp -> DataHarmrateV.relationToInfluxDB(temp).stream()).collect(Collectors.toList()); + int minSize = Math.min(1200000, collect.size()); + + List> partition = ListUtils.partition(collect, minSize); + for (List dataHarmrateVList : partition) { + List sublistAsOriginalListType = new ArrayList<>(dataHarmrateVList); + + dataHarmrateVMapper.insertBatch(sublistAsOriginalListType); + + } + } +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataHarmrateVImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataHarmrateVImpl.java new file mode 100644 index 0000000..de1c676 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataHarmrateVImpl.java @@ -0,0 +1,56 @@ +package com.njcn.dataProcess.service.impl.relation; + +import com.njcn.dataProcess.dao.relation.mapper.DataHarmphasicVRelationMapper; +import com.njcn.dataProcess.dao.relation.mapper.DataHarmrateVRelationMapper; +import com.njcn.dataProcess.dto.DataHarmrateVDTO; +import com.njcn.dataProcess.po.relation.DataHarmphasicV; +import com.njcn.dataProcess.po.relation.DataHarmrateV; +import com.njcn.dataProcess.service.IDataHarmrateV; +import com.njcn.dataProcess.util.BeanFeildUtils; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.ListUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * Date: 2025/02/21 下午 3:15【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service("RelationDataHarmrateVImpl") +@RequiredArgsConstructor +public class RelationDataHarmrateVImpl implements IDataHarmrateV { + private final DataHarmrateVRelationMapper dataHarmrateVRelationMapper; + + + @Override + public void batchInsertion(List dataHarmrateVDTOList) { + int totalCount = dataHarmrateVDTOList.size(); + int minSize = Math.min(120, totalCount); + + if(totalCount<=0){ + return; + } + List collect = dataHarmrateVDTOList.stream().map(temp -> { + DataHarmrateV dataHarmrateV = new DataHarmrateV(); + BeanUtils.copyProperties(temp, dataHarmrateV, BeanFeildUtils.getNullPropertyNames(temp)); + return dataHarmrateV; + }).collect(Collectors.toList()); + collect = collect.stream().collect(Collectors.toMap( + temp -> temp.getTimeid() + temp.getLineid() + temp.getPhasicType(), + temp -> temp, + (exist, replace) -> exist + )).values().stream().collect(Collectors.toList()); + + List> partition = ListUtils.partition(collect, minSize); + for (List dataHarmphasicVList : partition) { + dataHarmrateVRelationMapper.insertBatchSomeColumn(dataHarmphasicVList); + + } + } +}