From 6288e6902c568770d0bf930d917fb441b309399e Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Wed, 13 Mar 2024 18:24:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E5=8D=97=E7=89=88=E6=9C=AC=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../advance/enums/AdvanceResponseEnum.java | 5 + .../advance/enums/CarryingCapacityEnum.java | 57 +- .../excel/CarryCapcityDataIEexcel.java | 406 +++++- .../excel/CarryCapcityDataPEexcel.java | 52 +- .../excel/CarryCapcityDataQEexcel.java | 52 +- .../excel/CarryCapcityDataVEexcel.java | 52 +- .../carrycapacity/excel/ExcelDataDTO.java | 24 + .../param/CarryCapacityCalParam.java | 7 + .../param/CarryCapacityEvaluateParam.java | 45 + .../param/CarryCapacityQueryDataParam.java | 3 - .../param/CarryCapacityResultParam.java | 52 + .../carrycapacity/param/ExcelDataParam.java | 29 + .../carrycapacity/po/CarryCapacityDataPO.java | 2 + .../po/CarryCapacityResultPO.java | 67 +- .../po/CarryCapacityStrategyPO.java | 28 +- .../vo/CarryCapacityDResultVO.java | 55 + pqs-advance/advance-boot/pom.xml | 5 + .../CarryCapacityController.java | 49 +- .../CarryCapacityResultController.java | 51 + .../CarryCapacityUserController.java | 9 + .../CarryCapacityDataPOMapper.java | 4 +- .../CarryCapacityResultPOMapper.java | 3 +- .../mapping/CarryCapacityResultPOMapper.xml | 9 +- .../CarryCapacityDataPOService.java | 4 +- .../CarryCapacityResultPOService.java | 9 +- .../CarryCapacityUserPOService.java | 2 + .../carrycapacity/CarryCapcityService.java | 13 +- .../impl/CarryCapacityDataPOServiceImpl.java | 10 +- .../CarryCapacityResultPOServiceImpl.java | 47 +- .../impl/CarryCapacityUserPOServiceImpl.java | 8 +- .../impl/CarryCapcityServiceImpl.java | 1147 +++++++++++++---- .../java/com/njcn/advance/utils/Utils.java | 34 +- .../java/com/njcn/oss/constant/OssPath.java | 4 + pqs-common/common-redis/pom.xml | 6 + .../com/njcn/redis/config/RedisConfig.java | 11 + .../com/njcn/system/enums/DicDataEnum.java | 24 +- .../njcn/system/enums/DicDataTypeEnum.java | 6 +- 37 files changed, 1918 insertions(+), 473 deletions(-) create mode 100644 pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/ExcelDataDTO.java create mode 100644 pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityEvaluateParam.java create mode 100644 pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityResultParam.java create mode 100644 pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/ExcelDataParam.java create mode 100644 pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityResultController.java diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/AdvanceResponseEnum.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/AdvanceResponseEnum.java index cbec0f0d0..a43f4e641 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/AdvanceResponseEnum.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/AdvanceResponseEnum.java @@ -33,6 +33,11 @@ public enum AdvanceResponseEnum { EVENT_EMPTY("A0102","没有查询到未分析事件"), USER_NAME_EXIST("A0103","用户名已存在"), DATA_NOT_FOUND("A0104","数据缺失,请根据模版上传近两周数据"), + DATA_UNDERRUN("A0104","数据量不足,请根据模版上传充足近两周数据"), + DOCUMENT_FORMAT_ERROR("A0105","数据缺失,导入失败!请检查导入文档的格式是否正确"), + USER_LOST("A0106","干扰源用户缺失") + + ; private final String code; diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/CarryingCapacityEnum.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/CarryingCapacityEnum.java index 341c18527..88538b808 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/CarryingCapacityEnum.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/enums/CarryingCapacityEnum.java @@ -77,7 +77,62 @@ public enum CarryingCapacityEnum { I_INV_32("I_INV_32","0.026","32次典型谐波电流含有率"), I_INV_33("I_INV_33","0.033","33次典型谐波电流含有率"), I_INV_34("I_INV_34","0.018","34次典型谐波电流含有率"), - I_INV_35("I_INV_35","0.072","35次典型谐波电流含有率"); + I_INV_35("I_INV_35","0.072","35次典型谐波电流含有率"), + + //电弧炉谐波电流含有率 + EAF_I_2("EAF_I_2","0.6112","2次电弧炉谐波电流含有率"), + EAF_I_3("EAF_I_3","0.68935","3次电弧炉谐波电流含有率"), + EAF_I_4("EAF_I_4","0.9906","4次电弧炉谐波电流含有率"), + EAF_I_5("EAF_I_5","6.9575","5次电弧炉谐波电流含有率"), + EAF_I_6("EAF_I_6","0.5750","6次电弧炉谐波电流含有率"), + EAF_I_7("EAF_I_7","3.2731","7次电弧炉谐波电流含有率"), + EAF_I_8("EAF_I_8","0.4782","8次电弧炉谐波电流含有率"), + EAF_I_9("EAF_I_9","0.5197","9次电弧炉谐波电流含有率"), + EAF_I_10("EAF_I_10","0.6003","10次电弧炉谐波电流含有率"), + EAF_I_11("EAF_I_11","4.5631","11次电弧炉谐波电流含有率"), + EAF_I_12("EAF_I_12","0.5242","12次电弧炉谐波电流含有率"), + EAF_I_13("EAF_I_13","2.9196","13次电弧炉谐波电流含有率"), + EAF_I_14("EAF_I_14","0.5720","14次电弧炉谐波电流含有率"), + EAF_I_15("EAF_I_15","0.5956","15次电弧炉谐波电流含有率"), + EAF_I_16("EAF_I_16","0.8234","16次电弧炉谐波电流含有率"), + EAF_I_17("EAF_I_17","5.4185","17次电弧炉谐波电流含有率"), + EAF_I_18("EAF_I_18","0.8848","18次电弧炉谐波电流含有率"), + EAF_I_19("EAF_I_19","2.3503","19次电弧炉谐波电流含有率"), + EAF_I_20("EAF_I_20","0.6789","20次电弧炉谐波电流含有率"), + + //充电桩谐波电流含有率 + CP_I_2("CP_I_2","5.00","2次电弧炉谐波电流含有率"), + CP_I_3("CP_I_3","7.00","3次电弧炉谐波电流含有率"), + CP_I_4("CP_I_4","4.00","4次电弧炉谐波电流含有率"), + CP_I_5("CP_I_5","5.00","5次电弧炉谐波电流含有率"), + CP_I_6("CP_I_6","4.00","6次电弧炉谐波电流含有率"), + CP_I_7("CP_I_7","2.00","7次电弧炉谐波电流含有率"), + CP_I_8("CP_I_8","2.00","8次电弧炉谐波电流含有率"), + CP_I_9("CP_I_9","1.00","9次电弧炉谐波电流含有率"), + CP_I_10("CP_I_10","1.50","10次电弧炉谐波电流含有率"), + CP_I_11("CP_I_11","1.50","11次电弧炉谐波电流含有率"), + CP_I_12("CP_I_12","0.50","12次电弧炉谐波电流含有率"), + CP_I_13("CP_I_13","0.50","13次电弧炉谐波电流含有率"), + CP_I_14("CP_I_14","0.00","14次电弧炉谐波电流含有率"), + CP_I_15("CP_I_15","0.00","15次电弧炉谐波电流含有率"), + CP_I_16("CP_I_16","0.00","16次电弧炉谐波电流含有率"), + CP_I_17("CP_I_17","0.00","17次电弧炉谐波电流含有率"), + CP_I_18("CP_I_18","0.00","18次电弧炉谐波电流含有率"), + CP_I_19("CP_I_19","0.00","19次电弧炉谐波电流含有率"), + CP_I_20("CP_I_20","0.00","20次电弧炉谐波电流含有率"), + + //电气化铁路典型 + ER_I_3("ER_I_3","20.11","3次电弧炉谐波电流含有率"), + ER_I_5("ER_I_5","10.69","5次电弧炉谐波电流含有率"), + ER_I_7("ER_I_7","6.47","7次电弧炉谐波电流含有率"), + ER_I_9("ER_I_9","3.76","9次电弧炉谐波电流含有率"), + ER_I_11("ER_I_11","2.32","11次电弧炉谐波电流含有率"), + ER_I_13("ER_I_13","1.55","13次电弧炉谐波电流含有率"), + ER_I_15("ER_I_15","1.17","15次电弧炉谐波电流含有率"), + ER_I_17("ER_I_17","0.95","17次电弧炉谐波电流含有率"), + ER_I_19("ER_I_19","0.80","19次电弧炉谐波电流含有率"), + + ; /** * 字段code */ diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataIEexcel.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataIEexcel.java index 828ccbc13..464a151d4 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataIEexcel.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataIEexcel.java @@ -1,12 +1,16 @@ package com.njcn.advance.pojo.carrycapacity.excel; import cn.afterturn.easypoi.excel.annotation.Excel; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.njcn.influx.utils.InstantDateSerializer; +import com.njcn.influx.pojo.po.DataI; import lombok.Data; import org.influxdb.annotation.Column; +import org.springframework.beans.BeanUtils; import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 类的介绍: @@ -18,8 +22,6 @@ import java.time.Instant; @Data public class CarryCapcityDataIEexcel { - @Column(name = "time") - @JsonSerialize(using = InstantDateSerializer.class) @Excel(name = "时间",width = 30) private Instant time; @@ -27,108 +29,396 @@ public class CarryCapcityDataIEexcel { @Excel(name = "监测点id",width = 30) private String lineId; - @Column(name = "phasic_type") - @Excel(name = "项别",width = 30) - private String phaseType; - - @Column(name = "value_type") - @Excel(name = "数据类型",width = 30) + @Excel(name = "数据类型(CP95)",width = 30) private String valueType; @Column(name = "i_2") - @Excel(name = "2次谐波幅值)",width = 30) - private Double i2; + @Excel(name = "A项2次谐波幅值",width = 15) + private Double i2_a; @Column(name = "i_3") - @Excel(name = "3次谐波幅值)",width = 30) - private Double i3; + @Excel(name = "A项3次谐波幅值",width = 15) + private Double i3_a; @Column(name = "i_4") - @Excel(name = "4次谐波幅值)",width = 30) - private Double i4; + @Excel(name = "A项4次谐波幅值",width = 15) + private Double i4_a; @Column(name = "i_5") - @Excel(name = "5次谐波幅值)",width = 30) - private Double i5; + @Excel(name = "A项5次谐波幅值",width = 15) + private Double i5_a; @Column(name = "i_6") - @Excel(name = "6次谐波幅值)",width = 30) - private Double i6; + @Excel(name = "A项6次谐波幅值",width = 15) + private Double i6_a; @Column(name = "i_7") - @Excel(name = "7次谐波幅值)",width = 30) - private Double i7; + @Excel(name = "A项7次谐波幅值",width = 15) + private Double i7_a; @Column(name = "i_8") - @Excel(name = "8次谐波幅值)",width = 30) - private Double i8; + @Excel(name = "A项8次谐波幅值",width = 15) + private Double i8_a; @Column(name = "i_9") - @Excel(name = "9次谐波幅值)",width = 30) - private Double i9; + @Excel(name = "A项9次谐波幅值",width = 15) + private Double i9_a; @Column(name = "i_10") - @Excel(name = "10次谐波幅值)",width = 30) - private Double i10; + @Excel(name = "A项10次谐波幅值",width = 15) + private Double i10_a; @Column(name = "i_11") - @Excel(name = "11次谐波幅值)",width = 30) - private Double i11; + @Excel(name = "A项11次谐波幅值",width = 15) + private Double i11_a; @Column(name = "i_12") - @Excel(name = "12次谐波幅值)",width = 30) - private Double i12; + @Excel(name = "A项12次谐波幅值",width = 15) + private Double i12_a; @Column(name = "i_13") - @Excel(name = "13次谐波幅值)",width = 30) - private Double i13; + @Excel(name = "A项13次谐波幅值",width = 15) + private Double i13_a; @Column(name = "i_14") - @Excel(name = "14次谐波幅值)",width = 30) - private Double i14; + @Excel(name = "A项14次谐波幅值",width = 15) + private Double i14_a; @Column(name = "i_15") - @Excel(name = "15次谐波幅值)",width = 30) - private Double i15; + @Excel(name = "A项15次谐波幅值",width = 15) + private Double i15_a; @Column(name = "i_16") - @Excel(name = "16次谐波幅值)",width = 30) - private Double i16; + @Excel(name = "A项16次谐波幅值",width = 15) + private Double i16_a; @Column(name = "i_17") - @Excel(name = "17次谐波幅值)",width = 30) - private Double i17; + @Excel(name = "A项17次谐波幅值",width = 15) + private Double i17_a; @Column(name = "i_18") - @Excel(name = "18次谐波幅值)",width = 30) - private Double i18; + @Excel(name = "A项18次谐波幅值",width = 15) + private Double i18_a; @Column(name = "i_19") - @Excel(name = "19次谐波幅值)",width = 30) - private Double i19; + @Excel(name = "A项19次谐波幅值",width = 15) + private Double i19_a; @Column(name = "i_20") - @Excel(name = "20次谐波幅值)",width = 30) - private Double i20; + @Excel(name = "A项20次谐波幅值",width = 15) + private Double i20_a; @Column(name = "i_21") - @Excel(name = "21次谐波幅值)",width = 30) - private Double i21; + @Excel(name = "A项21次谐波幅值",width = 15) + private Double i21_a; @Column(name = "i_22") - @Excel(name = "22次谐波幅值)",width = 30) - private Double i22; + @Excel(name = "A项22次谐波幅值",width = 15) + private Double i22_a; @Column(name = "i_23") - @Excel(name = "23次谐波幅值)",width = 30) - private Double i23; + @Excel(name = "A项23次谐波幅值",width = 15) + private Double i23_a; @Column(name = "i_24") - @Excel(name = "24次谐波幅值)",width = 30) - private Double i24; + @Excel(name = "A项24次谐波幅值",width = 15) + private Double i24_a; @Column(name = "i_25") - @Excel(name = "25次谐波幅值)",width = 30) - private Double i25; + @Excel(name = "A项25次谐波幅值",width = 15) + private Double i25_a; + + @Column(name = "i_2") + @Excel(name = "B项2次谐波幅值",width = 15) + private Double i2_b; + + @Column(name = "i_3") + @Excel(name = "B项3次谐波幅值",width = 15) + private Double i3_b; + + @Column(name = "i_4") + @Excel(name = "B项4次谐波幅值",width = 15) + private Double i4_b; + + @Column(name = "i_5") + @Excel(name = "B项5次谐波幅值",width = 15) + private Double i5_b; + + @Column(name = "i_6") + @Excel(name = "B项6次谐波幅值",width = 15) + private Double i6_b; + + @Column(name = "i_7") + @Excel(name = "B项7次谐波幅值",width = 15) + private Double i7_b; + + @Column(name = "i_8") + @Excel(name = "B项8次谐波幅值",width = 15) + private Double i8_b; + + @Column(name = "i_9") + @Excel(name = "B项9次谐波幅值",width = 15) + private Double i9_b; + + @Column(name = "i_10") + @Excel(name = "B项10次谐波幅值",width = 15) + private Double i10_b; + + @Column(name = "i_11") + @Excel(name = "B项11次谐波幅值",width = 15) + private Double i11_b; + + @Column(name = "i_12") + @Excel(name = "B项12次谐波幅值",width = 15) + private Double i12_b; + + @Column(name = "i_13") + @Excel(name = "B项13次谐波幅值",width = 15) + private Double i13_b; + + @Column(name = "i_14") + @Excel(name = "B项14次谐波幅值",width = 15) + private Double i14_b; + + @Column(name = "i_15") + @Excel(name = "B项15次谐波幅值",width = 15) + private Double i15_b; + + @Column(name = "i_16") + @Excel(name = "B项16次谐波幅值",width = 15) + private Double i16_b; + + @Column(name = "i_17") + @Excel(name = "B项17次谐波幅值",width = 15) + private Double i17_b; + + @Column(name = "i_18") + @Excel(name = "B项18次谐波幅值",width = 15) + private Double i18_b; + + @Column(name = "i_19") + @Excel(name = "B项19次谐波幅值",width = 15) + private Double i19_b; + + @Column(name = "i_20") + @Excel(name = "B项20次谐波幅值",width = 15) + private Double i20_b; + + @Column(name = "i_21") + @Excel(name = "B项21次谐波幅值",width = 15) + private Double i21_b; + + @Column(name = "i_22") + @Excel(name = "B项22次谐波幅值",width = 15) + private Double i22_b; + + @Column(name = "i_23") + @Excel(name = "B项23次谐波幅值",width = 15) + private Double i23_b; + + @Column(name = "i_24") + @Excel(name = "B项24次谐波幅值",width = 15) + private Double i24_b; + @Column(name = "i_25") + @Excel(name = "B项25次谐波幅值",width = 15) + private Double i25_b; + + + + @Column(name = "i_2") + @Excel(name = "C项2次谐波幅值",width = 15) + private Double i2_c; + + @Column(name = "i_3") + @Excel(name = "C项3次谐波幅值",width = 15) + private Double i3_c; + + @Column(name = "i_4") + @Excel(name = "C项4次谐波幅值",width = 15) + private Double i4_c; + + @Column(name = "i_5") + @Excel(name = "C项5次谐波幅值",width = 15) + private Double i5_c; + + @Column(name = "i_6") + @Excel(name = "C项6次谐波幅值",width = 15) + private Double i6_c; + + @Column(name = "i_7") + @Excel(name = "C项7次谐波幅值",width = 15) + private Double i7_c; + + @Column(name = "i_8") + @Excel(name = "C项8次谐波幅值",width = 15) + private Double i8_c; + + @Column(name = "i_9") + @Excel(name = "C项9次谐波幅值",width = 15) + private Double i9_c; + + @Column(name = "i_10") + @Excel(name = "C项10次谐波幅值",width = 15) + private Double i10_c; + + @Column(name = "i_11") + @Excel(name = "C项11次谐波幅值",width = 15) + private Double i11_c; + + @Column(name = "i_12") + @Excel(name = "C项12次谐波幅值",width = 15) + private Double i12_c; + + @Column(name = "i_13") + @Excel(name = "C项13次谐波幅值",width = 15) + private Double i13_c; + + @Column(name = "i_14") + @Excel(name = "C项14次谐波幅值",width = 15) + private Double i14_c; + + @Column(name = "i_15") + @Excel(name = "C项15次谐波幅值",width = 15) + private Double i15_c; + + @Column(name = "i_16") + @Excel(name = "C项16次谐波幅值",width = 15) + private Double i16_c; + + @Column(name = "i_17") + @Excel(name = "C项17次谐波幅值",width = 15) + private Double i17_c; + + @Column(name = "i_18") + @Excel(name = "C项18次谐波幅值",width = 15) + private Double i18_c; + + @Column(name = "i_19") + @Excel(name = "C项19次谐波幅值",width = 15) + private Double i19_c; + + @Column(name = "i_20") + @Excel(name = "C项20次谐波幅值",width = 15) + private Double i20_c; + + @Column(name = "i_21") + @Excel(name = "C项21次谐波幅值",width = 15) + private Double i21_c; + + @Column(name = "i_22") + @Excel(name = "C项22次谐波幅值",width = 15) + private Double i22_c; + + @Column(name = "i_23") + @Excel(name = "C项23次谐波幅值",width = 15) + private Double i23_c; + + @Column(name = "i_24") + @Excel(name = "C项24次谐波幅值",width = 15) + private Double i24_c; + @Column(name = "i_25") + @Excel(name = "C项25次谐波幅值",width = 15) + private Double i25_c; + + //excel对象转DataI + public static List excelToPO(CarryCapcityDataIEexcel carryCapcityDataIEexcel) { + List data = new ArrayList<>(); + if (carryCapcityDataIEexcel == null) { + return null; + } + List phaseList = Stream.of("A", "B", "C").collect(Collectors.toList()); + for (String phase : phaseList) { + DataI dataI = new DataI(); + BeanUtils.copyProperties(carryCapcityDataIEexcel,dataI); + dataI.setPhaseType(phase); + dataI.setTime(carryCapcityDataIEexcel.getTime().plusSeconds(8*60*60)); + + if (phase.equals("A")) { + + dataI.setI2( carryCapcityDataIEexcel.getI2_a()); + dataI.setI3( carryCapcityDataIEexcel.getI3_a()); + dataI.setI4( carryCapcityDataIEexcel.getI4_a()); + dataI.setI5( carryCapcityDataIEexcel.getI5_a()); + dataI.setI6( carryCapcityDataIEexcel.getI6_a()); + dataI.setI7( carryCapcityDataIEexcel.getI7_a()); + dataI.setI8( carryCapcityDataIEexcel.getI8_a()); + dataI.setI9( carryCapcityDataIEexcel.getI9_a()); + dataI.setI10( carryCapcityDataIEexcel.getI10_a()); + dataI.setI11( carryCapcityDataIEexcel.getI11_a()); + dataI.setI12( carryCapcityDataIEexcel.getI12_a()); + dataI.setI13( carryCapcityDataIEexcel.getI13_a()); + dataI.setI14( carryCapcityDataIEexcel.getI14_a()); + dataI.setI15( carryCapcityDataIEexcel.getI15_a()); + dataI.setI16( carryCapcityDataIEexcel.getI16_a()); + dataI.setI17( carryCapcityDataIEexcel.getI17_a()); + dataI.setI18( carryCapcityDataIEexcel.getI18_a()); + dataI.setI19( carryCapcityDataIEexcel.getI19_a()); + dataI.setI20( carryCapcityDataIEexcel.getI20_a()); + dataI.setI21( carryCapcityDataIEexcel.getI21_a()); + dataI.setI22( carryCapcityDataIEexcel.getI22_a()); + dataI.setI23( carryCapcityDataIEexcel.getI23_a()); + dataI.setI24( carryCapcityDataIEexcel.getI24_a()); + dataI.setI25( carryCapcityDataIEexcel.getI25_a()); + + + } else if (phase.equals("B")) { + dataI.setI2( carryCapcityDataIEexcel.getI2_b()); + dataI.setI3( carryCapcityDataIEexcel.getI3_b()); + dataI.setI4( carryCapcityDataIEexcel.getI4_b()); + dataI.setI5( carryCapcityDataIEexcel.getI5_b()); + dataI.setI6( carryCapcityDataIEexcel.getI6_b()); + dataI.setI7( carryCapcityDataIEexcel.getI7_b()); + dataI.setI8( carryCapcityDataIEexcel.getI8_b()); + dataI.setI9( carryCapcityDataIEexcel.getI9_b()); + dataI.setI10( carryCapcityDataIEexcel.getI10_b()); + dataI.setI11( carryCapcityDataIEexcel.getI11_b()); + dataI.setI12( carryCapcityDataIEexcel.getI12_b()); + dataI.setI13( carryCapcityDataIEexcel.getI13_b()); + dataI.setI14( carryCapcityDataIEexcel.getI14_b()); + dataI.setI15( carryCapcityDataIEexcel.getI15_b()); + dataI.setI16( carryCapcityDataIEexcel.getI16_b()); + dataI.setI17( carryCapcityDataIEexcel.getI17_b()); + dataI.setI18( carryCapcityDataIEexcel.getI18_b()); + dataI.setI19( carryCapcityDataIEexcel.getI19_b()); + dataI.setI20( carryCapcityDataIEexcel.getI20_b()); + dataI.setI21( carryCapcityDataIEexcel.getI21_b()); + dataI.setI22( carryCapcityDataIEexcel.getI22_b()); + dataI.setI23( carryCapcityDataIEexcel.getI23_b()); + dataI.setI24( carryCapcityDataIEexcel.getI24_b()); + dataI.setI25( carryCapcityDataIEexcel.getI25_b()); + + }else if (phase.equals("C")){ + dataI.setI2( carryCapcityDataIEexcel.getI2_c()); + dataI.setI3( carryCapcityDataIEexcel.getI3_c()); + dataI.setI4( carryCapcityDataIEexcel.getI4_c()); + dataI.setI5( carryCapcityDataIEexcel.getI5_c()); + dataI.setI6( carryCapcityDataIEexcel.getI6_c()); + dataI.setI7( carryCapcityDataIEexcel.getI7_c()); + dataI.setI8( carryCapcityDataIEexcel.getI8_c()); + dataI.setI9( carryCapcityDataIEexcel.getI9_c()); + dataI.setI10( carryCapcityDataIEexcel.getI10_c()); + dataI.setI11( carryCapcityDataIEexcel.getI11_c()); + dataI.setI12( carryCapcityDataIEexcel.getI12_c()); + dataI.setI13( carryCapcityDataIEexcel.getI13_c()); + dataI.setI14( carryCapcityDataIEexcel.getI14_c()); + dataI.setI15( carryCapcityDataIEexcel.getI15_c()); + dataI.setI16( carryCapcityDataIEexcel.getI16_c()); + dataI.setI17( carryCapcityDataIEexcel.getI17_c()); + dataI.setI18( carryCapcityDataIEexcel.getI18_c()); + dataI.setI19( carryCapcityDataIEexcel.getI19_c()); + dataI.setI20( carryCapcityDataIEexcel.getI20_c()); + dataI.setI21( carryCapcityDataIEexcel.getI21_c()); + dataI.setI22( carryCapcityDataIEexcel.getI22_c()); + dataI.setI23( carryCapcityDataIEexcel.getI23_c()); + dataI.setI24( carryCapcityDataIEexcel.getI24_c()); + dataI.setI25( carryCapcityDataIEexcel.getI25_c()); + + } + data.add(dataI); + } + return data; + } + + } diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataPEexcel.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataPEexcel.java index 3f6df687b..6cff56f89 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataPEexcel.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataPEexcel.java @@ -1,12 +1,15 @@ package com.njcn.advance.pojo.carrycapacity.excel; import cn.afterturn.easypoi.excel.annotation.Excel; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.njcn.influx.utils.InstantDateSerializer; +import com.njcn.influx.pojo.bo.CarryCapcityData; import lombok.Data; -import org.influxdb.annotation.Column; +import org.springframework.beans.BeanUtils; import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 类的介绍: @@ -18,24 +21,45 @@ import java.time.Instant; @Data public class CarryCapcityDataPEexcel { - @Column(name = "time") - @JsonSerialize(using = InstantDateSerializer.class) @Excel(name = "时间",width = 30) private Instant time; - @Column(name = "line_id") @Excel(name = "监测点id",width = 30) private String lineId; - @Column(name = "phasic_type") - @Excel(name = "项别",width = 30) - private String phaseType; - - @Column(name = "value_type") - @Excel(name = "数据类型",width = 30) + @Excel(name = "数据类型(CP95)",width = 30) private String valueType; - @Excel(name = "数据(有功功率)",width = 30) - private Double value; + @Excel(name = "数据(A项有功功率)",width = 30) + private Double value_a; + @Excel(name = "数据(B项有功功率)",width = 30) + private Double value_b; + @Excel(name = "数据(C项有功功率)",width = 30) + private Double value_c; + + public static List excelToPO(CarryCapcityDataPEexcel carryCapcityDataPEexcel) { + List data = new ArrayList<>(); + if (carryCapcityDataPEexcel == null) { + return null; + } + List phaseList = Stream.of("A", "B", "C").collect(Collectors.toList()); + for (String phase : phaseList) { + CarryCapcityData carryCapcityData = new CarryCapcityData(); + BeanUtils.copyProperties(carryCapcityDataPEexcel,carryCapcityData); + carryCapcityData.setPhaseType(phase); + carryCapcityData.setTime(carryCapcityDataPEexcel.getTime().plusSeconds(8*60*60)); + + if (phase.equals("A")) { + carryCapcityData.setValue(carryCapcityDataPEexcel.getValue_a()); + } else if (phase.equals("B")) { + carryCapcityData.setValue(carryCapcityDataPEexcel.getValue_b()); + }else if (phase.equals("C")){ + carryCapcityData.setValue(carryCapcityDataPEexcel.getValue_c()); + } + data.add(carryCapcityData); + + } + return data; + } } diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataQEexcel.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataQEexcel.java index 85af97677..291241e8f 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataQEexcel.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataQEexcel.java @@ -1,12 +1,15 @@ package com.njcn.advance.pojo.carrycapacity.excel; import cn.afterturn.easypoi.excel.annotation.Excel; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.njcn.influx.utils.InstantDateSerializer; +import com.njcn.influx.pojo.bo.CarryCapcityData; import lombok.Data; -import org.influxdb.annotation.Column; +import org.springframework.beans.BeanUtils; import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 类的介绍: @@ -18,24 +21,47 @@ import java.time.Instant; @Data public class CarryCapcityDataQEexcel { - @Column(name = "time") - @JsonSerialize(using = InstantDateSerializer.class) @Excel(name = "时间",width = 30) private Instant time; - @Column(name = "line_id") @Excel(name = "监测点id",width = 30) private String lineId; - @Column(name = "phasic_type") - @Excel(name = "项别",width = 30) - private String phaseType; - @Column(name = "value_type") - @Excel(name = "数据类型",width = 30) + @Excel(name = "数据类型(CP95)",width = 30) private String valueType; - @Excel(name = "数据(无功功率)",width = 30) - private Double value; + @Excel(name = "数据(A项无功功率)",width = 30) + private Double value_a; + @Excel(name = "数据(B项无功功率)",width = 30) + private Double value_b; + @Excel(name = "数据(C项无功功率)",width = 30) + private Double value_c; + + + public static List excelToPO(CarryCapcityDataQEexcel carryCapcityDataQEexcel) { + List data = new ArrayList<>(); + if (carryCapcityDataQEexcel == null) { + return null; + } + List phaseList = Stream.of("A", "B", "C").collect(Collectors.toList()); + for (String phase : phaseList) { + CarryCapcityData carryCapcityData = new CarryCapcityData(); + BeanUtils.copyProperties(carryCapcityDataQEexcel,carryCapcityData); + carryCapcityData.setPhaseType(phase); + carryCapcityData.setTime(carryCapcityDataQEexcel.getTime().plusSeconds(8*60*60)); + + if (phase.equals("A")) { + carryCapcityData.setValue(carryCapcityDataQEexcel.getValue_a()); + } else if (phase.equals("B")) { + carryCapcityData.setValue(carryCapcityDataQEexcel.getValue_b()); + }else if (phase.equals("C")){ + carryCapcityData.setValue(carryCapcityDataQEexcel.getValue_c()); + } + data.add(carryCapcityData); + + } + return data; + } } diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataVEexcel.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataVEexcel.java index 9a064860d..aadac7ee1 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataVEexcel.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/CarryCapcityDataVEexcel.java @@ -1,12 +1,15 @@ package com.njcn.advance.pojo.carrycapacity.excel; import cn.afterturn.easypoi.excel.annotation.Excel; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.njcn.influx.utils.InstantDateSerializer; +import com.njcn.influx.pojo.bo.CarryCapcityData; import lombok.Data; -import org.influxdb.annotation.Column; +import org.springframework.beans.BeanUtils; import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 类的介绍: @@ -18,24 +21,45 @@ import java.time.Instant; @Data public class CarryCapcityDataVEexcel { - @Column(name = "time") - @JsonSerialize(using = InstantDateSerializer.class) @Excel(name = "时间",width = 30) private Instant time; - @Column(name = "line_id") @Excel(name = "监测点id",width = 30) private String lineId; - @Column(name = "phasic_type") - @Excel(name = "项别",width = 30) - private String phaseType; - - @Column(name = "value_type") - @Excel(name = "数据类型",width = 30) + @Excel(name = "数据类型(CP95)",width = 30) private String valueType; - @Excel(name = "数据(电压)",width = 30) - private Double value; + @Excel(name = "数据(A项电压)",width = 30) + private Double value_a; + @Excel(name = "数据(B项电压)",width = 30) + private Double value_b; + @Excel(name = "数据(C项电压)",width = 30) + private Double value_c; + + public static List excelToPO(CarryCapcityDataVEexcel carryCapcityDataVEexcel) { + List data = new ArrayList<>(); + if (carryCapcityDataVEexcel == null) { + return null; + } + List phaseList = Stream.of("A", "B", "C").collect(Collectors.toList()); + for (String phase : phaseList) { + CarryCapcityData carryCapcityData = new CarryCapcityData(); + BeanUtils.copyProperties(carryCapcityDataVEexcel,carryCapcityData); + carryCapcityData.setPhaseType(phase); + carryCapcityData.setTime(carryCapcityDataVEexcel.getTime().plusSeconds(8*60*60)); + + if (phase.equals("A")) { + carryCapcityData.setValue(carryCapcityDataVEexcel.getValue_a()); + } else if (phase.equals("B")) { + carryCapcityData.setValue(carryCapcityDataVEexcel.getValue_b()); + }else if (phase.equals("C")){ + carryCapcityData.setValue(carryCapcityDataVEexcel.getValue_c()); + } + data.add(carryCapcityData); + + } + return data; + } } diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/ExcelDataDTO.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/ExcelDataDTO.java new file mode 100644 index 000000000..f8f2b1c7e --- /dev/null +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/excel/ExcelDataDTO.java @@ -0,0 +1,24 @@ +package com.njcn.advance.pojo.carrycapacity.excel; + +import com.njcn.influx.pojo.bo.CarryCapcityData; +import com.njcn.influx.pojo.po.DataI; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Date: 2024/3/12 14:31【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class ExcelDataDTO { + private List dataHarmPowerPList; + private List dataHarmPowerQList; + private List dataIList; + private List dataHarmPowerP2List; + private List dataHarmPowerQ2List; + private List dataHarmPowerU2List; +} diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityCalParam.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityCalParam.java index d6c6c7e33..a338b625b 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityCalParam.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityCalParam.java @@ -1,11 +1,13 @@ package com.njcn.advance.pojo.carrycapacity.param; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; +import java.time.LocalDate; import java.util.List; import java.util.Map; @@ -26,6 +28,11 @@ public class CarryCapacityCalParam { private String lineId; @ApiModelProperty("用户Id") private String userId; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") + private LocalDate startTime; + @ApiModelProperty("结束时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") + private LocalDate endTime; @ApiModelProperty(name = "scale",value = "电压等级") private String scale; @ApiModelProperty(name = "S_T",value = "S_T为配变额定容量(监测点基准容量)") diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityEvaluateParam.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityEvaluateParam.java new file mode 100644 index 000000000..21ef1f534 --- /dev/null +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityEvaluateParam.java @@ -0,0 +1,45 @@ +package com.njcn.advance.pojo.carrycapacity.param; + +import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityUserVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * + * Description: + * Date: 2024/2/20 11:15【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CarryCapacityEvaluateParam { + @ApiModelProperty(value = "接线类型不可为空\"星型接法_0\", \"三角型接法_1\", \"开口三角型接法_2\"") + private String ptType; + @ApiModelProperty(value = "变压器连接方式") + private String connectionMode; + @ApiModelProperty(value = "功率因数(0.95-1之间)") + private Double k; + + @ApiModelProperty(value = "专变用户,公变用户") + private String userMode; + + + @ApiModelProperty(name = "scale",value = "电压等级") + private String scale; + + @ApiModelProperty(name = "shortCapacity",value = "短路容量") + private Float shortCapacity; + + + @ApiModelProperty(name = "deviceCapacity",value = "设备容量") + private Float deviceCapacity; + @ApiModelProperty(name = "userList",value = "干扰源用户列表") + private List userList; +} \ No newline at end of file diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityQueryDataParam.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityQueryDataParam.java index 20e688b2d..5761df8f0 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityQueryDataParam.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityQueryDataParam.java @@ -8,7 +8,6 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.Max; import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; import java.time.LocalDate; /** @@ -25,11 +24,9 @@ import java.time.LocalDate; public class CarryCapacityQueryDataParam { - @NotBlank(message = "监测点索引为空") @ApiModelProperty("监测点索引") private String lineId; @ApiModelProperty("用户Id") - @NotBlank(message = "用户ID为空") private String userId; @ApiModelProperty("开始时间") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityResultParam.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityResultParam.java new file mode 100644 index 000000000..1a462fb27 --- /dev/null +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/CarryCapacityResultParam.java @@ -0,0 +1,52 @@ +package com.njcn.advance.pojo.carrycapacity.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * Description: + * Date: 2024/3/8 16:23【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CarryCapacityResultParam { + /** + * 承载能力评估id + */ + private String id; + + + private String evaluateType; + + + @Data + @EqualsAndHashCode(callSuper = true) + public static class CarryCapacityResultPageParam extends CarryCapacityResultParam { + + @NotNull(message="当前页不能为空!") + @Min(value = 1, message = "当前页不能为0") + @ApiModelProperty(value = "当前页",name = "pageNum",dataType ="Integer",required = true) + private Integer pageNum; + /**显示条数*/ + @NotNull(message="显示条数不能为空!") + @ApiModelProperty(value = "显示条数",name = "pageSize",dataType ="Integer",required = true) + private Integer pageSize; + + @ApiModelProperty(value="起始时间") + private String startTime; + + @ApiModelProperty(value="结束时间") + private String endTime; + + } +} \ No newline at end of file diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/ExcelDataParam.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/ExcelDataParam.java new file mode 100644 index 000000000..d6fead6b3 --- /dev/null +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/param/ExcelDataParam.java @@ -0,0 +1,29 @@ +package com.njcn.advance.pojo.carrycapacity.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.constraints.NotBlank; + +/** + * Description: + * Date: 2024/3/6 17:30【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class ExcelDataParam { + @NotBlank(message = "监测点索引为空") + @ApiModelProperty("监测点索引") + private String lineId; + + @ApiModelProperty("开始时间") + private String startTime; + @ApiModelProperty("结束时间") + private String endTime; + + @ApiModelProperty(value = "excel文件") + private MultipartFile file; +} diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityDataPO.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityDataPO.java index 8e5d622ab..401be6a3c 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityDataPO.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityDataPO.java @@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.njcn.db.bo.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDate; @@ -19,6 +20,7 @@ import java.time.LocalDate; */ @Data @AllArgsConstructor +@NoArgsConstructor @TableName(value = "carry_capacity_data") public class CarryCapacityDataPO extends BaseEntity{ /** diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityResultPO.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityResultPO.java index aea506062..6863c0028 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityResultPO.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityResultPO.java @@ -4,29 +4,55 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.time.LocalDate; -import java.time.LocalDateTime; +import com.njcn.db.bo.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; /** - * * Description: - * Date: 2024/3/1 15:38【需求编号】 + * Date: 2024/3/8 16:23【需求编号】 * * @author clam * @version V1.0.0 */ @Data @AllArgsConstructor +@NoArgsConstructor @TableName(value = "carry_capacity_result") -public class CarryCapacityResultPO { +public class CarryCapacityResultPO extends BaseEntity { /** * 承载能力评估id */ - @TableId(value = "id", type = IdType.INPUT) + @TableId(value = "id",type = IdType.ASSIGN_UUID) private String id; + /** + * 台区id + */ + @TableField(value = "line_id") + private String lineId; + + /** + * 用户id + */ + @TableField(value = "user_id") + private String userId; + + /** + * 开始时间 + */ + @TableField(value = "start_time") + private LocalDate startTime; + + /** + * 结束时间 + */ + @TableField(value = "end_time") + private LocalDate endTime; + /** * 配变首端电压等级(1-安全,2-III级预警,3-II级预警,4-I 级预警) */ @@ -64,26 +90,19 @@ public class CarryCapacityResultPO { private LocalDate evaluateDate; /** - * 创建用户 + * 是否删除(0,无效,1有效) */ - @TableField(value = "create_by") - private String createBy; + @TableField(value = "`status`") + private Integer status; - /** - * 创建时间 - */ - @TableField(value = "create_time") - private LocalDateTime createTime; + @TableField(value = "evaluate_type") + private String evaluateType; - /** - * 更新用户 - */ - @TableField(value = "update_by") - private String updateBy; - /** - * 更新时间 - */ - @TableField(value = "update_time") - private LocalDateTime updateTime; + @TableField(value = "first_result") + private Double firstResult; + + @TableField(value = "i_result_list") + private String iResultList; + } \ No newline at end of file diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityStrategyPO.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityStrategyPO.java index 9914100d9..24b686ca4 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityStrategyPO.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/po/CarryCapacityStrategyPO.java @@ -2,12 +2,11 @@ package com.njcn.advance.pojo.carrycapacity.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDateTime; - /** * Description: * Date: 2024/3/5 10:54【需求编号】 @@ -19,7 +18,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor @TableName(value = "carry_capacity_strategy") -public class CarryCapacityStrategyPO { +public class CarryCapacityStrategyPO extends BaseEntity { /** * 总承载能力评估结果(1-安全,2-III级预警,3-II级预警,4-I 级预警) */ @@ -56,27 +55,4 @@ public class CarryCapacityStrategyPO { @TableField(value = "user_flag") private Integer userFlag; - /** - * 创建用户 - */ - @TableField(value = "create_by") - private String createBy; - - /** - * 创建时间 - */ - @TableField(value = "create_time") - private LocalDateTime createTime; - - /** - * 更新用户 - */ - @TableField(value = "update_by") - private String updateBy; - - /** - * 更新时间 - */ - @TableField(value = "update_time") - private LocalDateTime updateTime; } \ No newline at end of file diff --git a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/vo/CarryCapacityDResultVO.java b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/vo/CarryCapacityDResultVO.java index 6bd3fffa0..cec275ff1 100644 --- a/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/vo/CarryCapacityDResultVO.java +++ b/pqs-advance/advance-api/src/main/java/com/njcn/advance/pojo/carrycapacity/vo/CarryCapacityDResultVO.java @@ -1,7 +1,11 @@ package com.njcn.advance.pojo.carrycapacity.vo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDate; +import java.util.List; + /** * Description: * Date: 2024/2/27 11:24【需求编号】 @@ -13,6 +17,35 @@ import lombok.Data; @Data public class CarryCapacityDResultVO { + + private String id; + + /** + * 台区id + */ + private String lineId; + + private String lineName; + + /** + * 用户id + */ + private String userId; + + private String userName; + + /** + * 开始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; + + + private Integer uTLevel; /** @@ -34,4 +67,26 @@ public class CarryCapacityDResultVO { * 总结果等级(1-安全,2-III级预警,3-II级预警,4-I 级预警) */ private Integer reslutLevel; + + private LocalDate evaluateDate; + + + private String evaluateType; + //电弧炉等评估结果 + + private double firstResult; + + private List iResultList; + + + @Data + public static class CarryCapacityIResult { + + @ApiModelProperty("谐波次数") + private Integer time=2; + + private Double i; + + private Double i_limit; + } } diff --git a/pqs-advance/advance-boot/pom.xml b/pqs-advance/advance-boot/pom.xml index 170269323..edb7775be 100644 --- a/pqs-advance/advance-boot/pom.xml +++ b/pqs-advance/advance-boot/pom.xml @@ -62,6 +62,11 @@ pqs-influx ${project.version} + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityController.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityController.java index b9860d052..880f768c0 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityController.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityController.java @@ -9,11 +9,10 @@ import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataPEexcel; import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataQEexcel; import com.njcn.advance.pojo.carrycapacity.excel.CarryCapcityDataVEexcel; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityCalParam; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityEvaluateParam; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityQueryDataParam; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataIVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataQVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataVO; +import com.njcn.advance.pojo.carrycapacity.param.ExcelDataParam; +import com.njcn.advance.pojo.carrycapacity.vo.*; import com.njcn.advance.service.carrycapacity.CarryCapcityService; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; @@ -62,6 +61,16 @@ public class CarryCapacityController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, carryCapacityDataVO, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/modelTraining") + @ApiOperation("承载能力评估模型训练") + @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true) + public HttpResult modelTraining(@RequestBody @Validated CarryCapacityQueryDataParam queryParam) { + String methodDescribe = getMethodDescribe("modelTraining"); + CarryCapacityDataVO carryCapacityDataVO = carryCapcityService.modelTraining(queryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, carryCapacityDataVO, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryCarryCapacityQData") @ApiOperation("承载能力评估数据查询-无功功率") @@ -102,7 +111,7 @@ public class CarryCapacityController extends BaseController { } @ResponseBody - @ApiOperation("导出设备模板") + @ApiOperation("导出数据集模板") @GetMapping(value = "getExcelTemplate") public HttpResult getExcelTemplate(HttpServletResponse response) { final List> sheetsList = Lists.newArrayList(); @@ -116,7 +125,7 @@ public class CarryCapacityController extends BaseController { sheetsList.add(exportMap); Map exportMap2 = Maps.newHashMap(); - final ExportParams exportParams2 = new ExportParams(null, "电压", ExcelType.HSSF); + final ExportParams exportParams2 = new ExportParams(null, "电压", ExcelType.XSSF); // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集 exportMap2.put("title", exportParams2); exportMap2.put("entity", CarryCapcityDataVEexcel.class); @@ -125,7 +134,7 @@ public class CarryCapacityController extends BaseController { sheetsList.add(exportMap2); Map exportMap3 = Maps.newHashMap(); - final ExportParams exportParams3 = new ExportParams(null, "有功功率", ExcelType.HSSF); + final ExportParams exportParams3 = new ExportParams(null, "有功功率", ExcelType.XSSF); // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集 exportMap3.put("title", exportParams3); exportMap3.put("entity", CarryCapcityDataPEexcel.class); @@ -134,17 +143,17 @@ public class CarryCapacityController extends BaseController { sheetsList.add(exportMap3); Map exportMap4 = Maps.newHashMap(); - final ExportParams exportParams4 = new ExportParams(null, "无功功率", ExcelType.HSSF); + final ExportParams exportParams4 = new ExportParams(null, "无功功率", ExcelType.XSSF); // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集 exportMap4.put("title", exportParams4); exportMap4.put("entity", CarryCapcityDataQEexcel.class); exportMap4.put("data", new ArrayList<>()); // 加入多sheet配置列表 sheetsList.add(exportMap4); - Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF); + Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF); - String fileName = "数据集.xls"; + String fileName = "数据集.xlsx"; ExportParams exportExcel = new ExportParams("数据集", "数据集"); PoiUtil.exportFileByWorkbook(workbook, fileName, response); @@ -153,5 +162,25 @@ public class CarryCapacityController extends BaseController { return null; } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/uploadExcel") + @ApiOperation("上传数据集") + public HttpResult uploadExcel(@Validated ExcelDataParam excelDataParam) throws Exception { + String methodDescribe = getMethodDescribe("uploadExcel"); + + boolean flag = carryCapcityService.uploadExcel(excelDataParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/carryCapacityEvaluate") + @ApiOperation("承载能力评估_充电站、电加热负荷、电气化铁路承载能力评估") + @ApiImplicitParam(name = "calParam", value = "计算参数", required = true) + public HttpResult carryCapacityEvaluate(@RequestBody @Validated CarryCapacityEvaluateParam calParam) { + String methodDescribe = getMethodDescribe("carryCapacityEvaluate"); + CarryCapacityDResultVO vo = carryCapcityService.carryCapacityEvaluate(calParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe); + } + } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityResultController.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityResultController.java new file mode 100644 index 000000000..71296a350 --- /dev/null +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityResultController.java @@ -0,0 +1,51 @@ +package com.njcn.advance.controller.carrycapacity; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityResultParam; +import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO; +import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService; +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.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +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; + + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年07月21日 10:06 + */ +@RestController +@RequestMapping("result") +@Api(tags = "承载能力评估结果") +@RequiredArgsConstructor +public class CarryCapacityResultController extends BaseController { + + + private final CarryCapacityResultPOService carryCapacityResultPOService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryResultList") + @ApiOperation("承载能力评估列表查询") + @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true) + public HttpResult> queryResultList(@RequestBody @Validated CarryCapacityResultParam.CarryCapacityResultPageParam queryParam) { + String methodDescribe = getMethodDescribe("queryResultList"); + IPage vo = carryCapacityResultPOService.queryResultList(queryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe); + } + + + + +} diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityUserController.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityUserController.java index 7ebdb96ed..b6206319a 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityUserController.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/controller/carrycapacity/CarryCapacityUserController.java @@ -74,6 +74,15 @@ public class CarryCapacityUserController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queyDetailUserById") + @ApiOperation("承载能力评估用户查询") + public HttpResult queyDetailUserById(@RequestParam("userId") String userId) { + String methodDescribe = getMethodDescribe("queyDetailUserById"); + CarryCapacityUserPO po = carryCapacityUserPOService.queyDetailUserById(userId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, po, methodDescribe); + } + diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityDataPOMapper.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityDataPOMapper.java index e9dadf167..d29c436e5 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityDataPOMapper.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityDataPOMapper.java @@ -1,6 +1,6 @@ package com.njcn.advance.mapper.carrycapacity; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; /** @@ -11,5 +11,5 @@ import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; * @author clam * @version V1.0.0 */ -public interface CarryCapacityDataPOMapper extends BaseMapper { +public interface CarryCapacityDataPOMapper extends MppBaseMapper { } \ No newline at end of file diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityResultPOMapper.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityResultPOMapper.java index 8f438739c..05bd07630 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityResultPOMapper.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/CarryCapacityResultPOMapper.java @@ -4,9 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO; /** - * * Description: - * Date: 2024/3/1 15:38【需求编号】 + * Date: 2024/3/8 16:23【需求编号】 * * @author clam * @version V1.0.0 diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/mapping/CarryCapacityResultPOMapper.xml b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/mapping/CarryCapacityResultPOMapper.xml index eadc02cef..869ba5a39 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/mapping/CarryCapacityResultPOMapper.xml +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/mapper/carrycapacity/mapping/CarryCapacityResultPOMapper.xml @@ -5,12 +5,17 @@ + + + + + @@ -18,7 +23,7 @@ - id, u_t_level, pf_t_level, b_t_level, i_level, reslut_level, evaluate_date, create_by, - create_time, update_by, update_time + id, line_id, user_id, start_time, end_time, u_t_level, pf_t_level, b_t_level, i_level, + reslut_level, evaluate_date, `status`, create_by, create_time, update_by, update_time \ No newline at end of file diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityDataPOService.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityDataPOService.java index 4cc58753f..ed270ba5a 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityDataPOService.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityDataPOService.java @@ -1,7 +1,7 @@ package com.njcn.advance.service.carrycapacity; +import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; -import com.baomidou.mybatisplus.extension.service.IService; /** * * Description: @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * @author clam * @version V1.0.0 */ -public interface CarryCapacityDataPOService extends IService{ +public interface CarryCapacityDataPOService extends IMppService { } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityResultPOService.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityResultPOService.java index 17fcff57b..22e3b800c 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityResultPOService.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityResultPOService.java @@ -1,8 +1,12 @@ package com.njcn.advance.service.carrycapacity; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityResultParam; import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO; import com.baomidou.mybatisplus.extension.service.IService; - /** +import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO; + +/** * * Description: * Date: 2024/3/1 15:38【需求编号】 @@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface CarryCapacityResultPOService extends IService{ -} + IPage queryResultList(CarryCapacityResultParam.CarryCapacityResultPageParam queryParam); + } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityUserPOService.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityUserPOService.java index 59dea006f..90ec428c5 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityUserPOService.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapacityUserPOService.java @@ -20,4 +20,6 @@ public interface CarryCapacityUserPOService extends IService queyDetailUser(CarryCapacityUserParam.CarryCapacityUserPageParam pageParm); + + CarryCapacityUserPO queyDetailUserById(String userId); } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapcityService.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapcityService.java index e6064b03c..d51ce766e 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapcityService.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/CarryCapcityService.java @@ -1,11 +1,10 @@ package com.njcn.advance.service.carrycapacity; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityCalParam; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityEvaluateParam; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityQueryDataParam; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataIVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataQVO; -import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDataVO; +import com.njcn.advance.pojo.carrycapacity.param.ExcelDataParam; +import com.njcn.advance.pojo.carrycapacity.vo.*; import com.njcn.device.pq.pojo.vo.TerminalTree; import java.util.List; @@ -29,4 +28,10 @@ public interface CarryCapcityService { CarryCapacityDResultVO carryCapacityCal(CarryCapacityCalParam calParam); List carryCapacityTree(); + + boolean uploadExcel(ExcelDataParam excelDataParam) throws Exception; + + CarryCapacityDataVO modelTraining(CarryCapacityQueryDataParam queryParam); + + CarryCapacityDResultVO carryCapacityEvaluate(CarryCapacityEvaluateParam calParam); } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityDataPOServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityDataPOServiceImpl.java index 536b3ae59..a71152e47 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityDataPOServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityDataPOServiceImpl.java @@ -1,12 +1,10 @@ package com.njcn.advance.service.carrycapacity.impl; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import java.util.List; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.advance.mapper.carrycapacity.CarryCapacityDataPOMapper; +import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; import com.njcn.advance.service.carrycapacity.CarryCapacityDataPOService; +import org.springframework.stereotype.Service; /** * * Description: @@ -16,6 +14,6 @@ import com.njcn.advance.service.carrycapacity.CarryCapacityDataPOService; * @version V1.0.0 */ @Service -public class CarryCapacityDataPOServiceImpl extends ServiceImpl implements CarryCapacityDataPOService{ +public class CarryCapacityDataPOServiceImpl extends MppServiceImpl implements CarryCapacityDataPOService{ } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java index 01698c561..e92661bb4 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java @@ -1,10 +1,25 @@ package com.njcn.advance.service.carrycapacity.impl; -import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.advance.mapper.carrycapacity.CarryCapacityResultPOMapper; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityResultParam; import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO; +import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityUserPO; +import com.njcn.advance.pojo.carrycapacity.vo.CarryCapacityDResultVO; import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService; +import com.njcn.advance.service.carrycapacity.CarryCapacityUserPOService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * * Description: @@ -14,6 +29,36 @@ import com.njcn.advance.service.carrycapacity.CarryCapacityResultPOService; * @version V1.0.0 */ @Service +@RequiredArgsConstructor public class CarryCapacityResultPOServiceImpl extends ServiceImpl implements CarryCapacityResultPOService{ + private final CarryCapacityUserPOService carryCapacityUserPOService; + @Override + public IPage queryResultList(CarryCapacityResultParam.CarryCapacityResultPageParam queryParam) { + Page returnpage = new Page<> (queryParam.getPageNum ( ), queryParam.getPageSize ( )); + Page temppage = new Page<> (queryParam.getPageNum ( ), queryParam.getPageSize ( )); + + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(StringUtils.isNotBlank(queryParam.getEvaluateType()) ,CarryCapacityResultPO::getEvaluateType,queryParam.getEvaluateType()) + .between(StringUtils.isNotBlank(queryParam.getStartTime()) && StringUtils.isNotBlank(queryParam.getEndTime()) ,CarryCapacityResultPO::getEvaluateDate,queryParam.getStartTime(),queryParam.getEndTime()) + .orderByDesc(CarryCapacityResultPO::getEvaluateDate); + + IPage page = this.page(temppage, queryWrapper); + List collect = page.getRecords().stream().map(temp -> { + CarryCapacityDResultVO vo = new CarryCapacityDResultVO(); + BeanUtils.copyProperties(temp, vo); + String[] split = temp.getUserId().split(","); + List collect1 = Arrays.stream(split).sequential().map(userId -> { + CarryCapacityUserPO carryCapacityUserPO = carryCapacityUserPOService.queyDetailUserById(userId); + return carryCapacityUserPO.getUserName(); + }).collect(Collectors.toList()); + vo.setUserName(collect1.stream().collect(Collectors.joining(","))); + return vo; + }).collect(Collectors.toList()); + returnpage.setRecords(collect); + returnpage.setTotal(page.getTotal()); + + return returnpage; + } } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java index c9b3b6075..43196cd75 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java @@ -61,9 +61,15 @@ public class CarryCapacityUserPOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(StringUtils.isNotBlank(pageParm.getUserId()) ,CarryCapacityUserPO::getUserId,pageParm.getUserId()) .eq(StringUtils.isNotBlank(pageParm.getUserType()) ,CarryCapacityUserPO::getUserType,pageParm.getUserType()) - .between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime(),pageParm.getEndTime()); + .between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime(),pageParm.getEndTime()). + orderByDesc(CarryCapacityUserPO::getCreateTime); IPage page = this.page (returnpage, queryWrapper); return page; } + + @Override + public CarryCapacityUserPO queyDetailUserById(String userId) { + return this.lambdaQuery().eq(CarryCapacityUserPO::getUserId,userId).one(); + } } diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java index 8f51003dc..3aea0e2b6 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java @@ -1,21 +1,32 @@ package com.njcn.advance.service.carrycapacity.impl; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.json.JSONUtil; import com.njcn.advance.enums.AdvanceResponseEnum; import com.njcn.advance.enums.CarryingCapacityEnum; +import com.njcn.advance.pojo.carrycapacity.excel.*; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityCalParam; +import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityEvaluateParam; import com.njcn.advance.pojo.carrycapacity.param.CarryCapacityQueryDataParam; +import com.njcn.advance.pojo.carrycapacity.param.ExcelDataParam; +import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityDataPO; +import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityResultPO; +import com.njcn.advance.pojo.carrycapacity.po.CarryCapacityUserPO; import com.njcn.advance.pojo.carrycapacity.vo.*; -import com.njcn.advance.service.carrycapacity.CarryCapacityStrategyPOService; -import com.njcn.advance.service.carrycapacity.CarryCapcityService; +import com.njcn.advance.service.carrycapacity.*; import com.njcn.advance.utils.CZNLPG; import com.njcn.advance.utils.Utils; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.device.biz.utils.COverlimitUtil; import com.njcn.device.pq.api.DeviceTreeClient; import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.device.pq.pojo.vo.TerminalTree; import com.njcn.influx.deprecated.InfluxDBPublicParam; import com.njcn.influx.imapper.DataHarmPowerPMapper; @@ -23,15 +34,23 @@ import com.njcn.influx.imapper.DataHarmPowerQMapper; import com.njcn.influx.imapper.DataVMapper; import com.njcn.influx.imapper.IDataIMapper; import com.njcn.influx.pojo.bo.CarryCapcityData; -import com.njcn.influx.pojo.po.DataHarmPowerP; -import com.njcn.influx.pojo.po.DataHarmPowerQ; import com.njcn.influx.pojo.po.DataI; -import com.njcn.influx.pojo.po.DataV; +import com.njcn.oss.constant.OssPath; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.redis.utils.RedisUtil; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.pojo.po.DictData; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDate; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -57,172 +76,309 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { private final IDataIMapper dataIMapper; private final CarryCapacityStrategyPOService carryCapacityStrategyPOService; - + private final CarryCapacityDataPOService carryCapacityDataPOService; private final RedisUtil redisUtil; - + private final CarryCapacityResultPOService carryCapacityResultPOService; + private final CarryCapacityUserPOService carryCapacityUserPOService; private static final double DEFAULTVALUE=3.1415926; + + private final FileStorageUtil fileStorageUtil; + + private final DicDataFeignClient dicDataFeignClient; + //光伏评估 - void photovoltaicEvaluate(double S_T, double S_pv) { - //电压等级 - - List dataHarmPowerPList = null; - List dataHarmPowerQList = null; - - Integer voltage = null; - //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 - List listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .map(DataHarmPowerP::getP) - .collect(Collectors.toList()); - - List listQ = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .map(DataHarmPowerQ::getQ) - .collect(Collectors.toList()); - //todo 检查数据是否缺失校验数据完整性 - double P_βmin = CZNLPG.calculatePercentile(listP, 1); - double Q_βmin = CZNLPG.calculatePercentile(listQ, 1); - - - double P_pv = S_pv * Integer.valueOf(CarryingCapacityEnum.K.getValue()); - double Bt = CZNLPG.calculateB(P_βmin, Q_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), S_T, S_pv, P_pv); - - CZNLPG.calculatePF_T(P_βmin, Q_βmin,Double.valueOf(CarryingCapacityEnum.K.getValue()),S_pv); - //前2周的数据 - List dataHarmPowerPList2 = null; - List dataHarmPowerQList2 = null; - List DataVList2 = null; - List phaseType = Stream.of("A", "B", "C").collect(Collectors.toList()); - //存储UA, UB,UC; - List uList = new ArrayList<>(); - - phaseType.stream().forEach(phase -> { - List listP2 = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getPhaseType().equals(phase)) - .map(DataHarmPowerP::getP) - .collect(Collectors.toList()); - - List listQ2 = dataHarmPowerQList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getPhaseType().equals(phase)) - .map(DataHarmPowerQ::getQ) - .collect(Collectors.toList()); - - List listV2 = DataVList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getPhasicType().equals(phase)) - .map(DataV::getRms) - .collect(Collectors.toList()); - //todo 抽取5000条数据(抽取方式待确定) - Double[] res = new Double[3]; - CZNLPG.cznlpgDataTrain(listV2, listP2, listQ2, listV2.size(), res); - //前一周数据计算p_min,q_min - List listPPhase = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getPhaseType().equals(phase)) - .map(DataHarmPowerP::getP) - .collect(Collectors.toList()); - - List listQPhase = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getPhaseType().equals(phase)) - .map(DataHarmPowerQ::getQ) - .collect(Collectors.toList()); - //todo 检查数据是否缺失校验数据完整性 - double p_min = CZNLPG.calculatePercentile(listPPhase, 1); - double q_min = CZNLPG.calculatePercentile(listQPhase, 1); - - double U = CZNLPG.calculateU(res[0], res[1], res[2], p_min, Double.valueOf(CarryingCapacityEnum.K.getValue()), q_min, S_pv, voltage); - uList.add(U); - }); - //取uList最大值 - double U_T = uList.stream().mapToDouble(Double::doubleValue) - .max() - .getAsDouble(); - - - List i_Th_List = new ArrayList<>(); - - List dataIList = null; - List integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25).collect(Collectors.toList()); - - integerList.stream().forEach(temp->{ - List iList = new ArrayList<>(); - phaseType.stream().forEach(phase -> { - - List tempDataIList = dataIList.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp1 -> temp1.getPhaseType().equals(phase)) - .collect(Collectors.toList()); - //todo 检查数据是否缺失校验数据完整性 - - List attributeValueByPropertyName = Utils.getAttributeValueByPropertyName(tempDataIList, "i" + temp); - double I_cp95 = CZNLPG.calculatePercentile(attributeValueByPropertyName, 0); - double I_phase = CZNLPG.calculateITm(I_cp95, Double.valueOf(CarryingCapacityEnum.K.getValue()), - voltage, S_pv, Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + temp)), - Double.valueOf(CarryingCapacityEnum.getValueByCode("I_INV_" + temp))); - iList.add(I_phase); - }); - double I_th = iList.stream().mapToDouble(Double::doubleValue) - .max() - .getAsDouble(); - i_Th_List.add(I_th); - - }); - //todo 根据监测点查找限值 - - - - - - - - - - - - } +// void photovoltaicEvaluate(double S_T, double S_pv) { +// //电压等级 +// +// List dataHarmPowerPList = null; +// List dataHarmPowerQList = null; +// +// Integer voltage = null; +// //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 +// List listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .map(DataHarmPowerP::getP) +// .collect(Collectors.toList()); +// +// List listQ = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .map(DataHarmPowerQ::getQ) +// .collect(Collectors.toList()); +// //todo 检查数据是否缺失校验数据完整性 +// double P_βmin = CZNLPG.calculatePercentile(listP, 1); +// double Q_βmin = CZNLPG.calculatePercentile(listQ, 1); +// +// +// double P_pv = S_pv * Integer.valueOf(CarryingCapacityEnum.K.getValue()); +// double Bt = CZNLPG.calculateB(P_βmin, Q_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), S_T, S_pv, P_pv); +// +// CZNLPG.calculatePF_T(P_βmin, Q_βmin,Double.valueOf(CarryingCapacityEnum.K.getValue()),S_pv); +// //前2周的数据 +// List dataHarmPowerPList2 = null; +// List dataHarmPowerQList2 = null; +// List DataVList2 = null; +// List phaseType = Stream.of("A", "B", "C").collect(Collectors.toList()); +// //存储UA, UB,UC; +// List uList = new ArrayList<>(); +// +// phaseType.stream().forEach(phase -> { +// List listP2 = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp -> temp.getPhaseType().equals(phase)) +// .map(DataHarmPowerP::getP) +// .collect(Collectors.toList()); +// +// List listQ2 = dataHarmPowerQList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp -> temp.getPhaseType().equals(phase)) +// .map(DataHarmPowerQ::getQ) +// .collect(Collectors.toList()); +// +// List listV2 = DataVList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp -> temp.getPhasicType().equals(phase)) +// .map(DataV::getRms) +// .collect(Collectors.toList()); +// //todo 抽取5000条数据(抽取方式待确定) +// Double[] res = new Double[3]; +// CZNLPG.cznlpgDataTrain(listV2, listP2, listQ2, listV2.size(), res); +// //前一周数据计算p_min,q_min +// List listPPhase = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp -> temp.getPhaseType().equals(phase)) +// .map(DataHarmPowerP::getP) +// .collect(Collectors.toList()); +// +// List listQPhase = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp -> temp.getPhaseType().equals(phase)) +// .map(DataHarmPowerQ::getQ) +// .collect(Collectors.toList()); +// //todo 检查数据是否缺失校验数据完整性 +// double p_min = CZNLPG.calculatePercentile(listPPhase, 1); +// double q_min = CZNLPG.calculatePercentile(listQPhase, 1); +// +// double U = CZNLPG.calculateU(res[0], res[1], res[2], p_min, Double.valueOf(CarryingCapacityEnum.K.getValue()), q_min, S_pv, voltage); +// uList.add(U); +// }); +// //取uList最大值 +// double U_T = uList.stream().mapToDouble(Double::doubleValue) +// .max() +// .getAsDouble(); +// +// +// List i_Th_List = new ArrayList<>(); +// +// List dataIList = null; +// List integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25).collect(Collectors.toList()); +// +// integerList.stream().forEach(temp->{ +// List iList = new ArrayList<>(); +// phaseType.stream().forEach(phase -> { +// +// List tempDataIList = dataIList.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) +// .filter(temp1 -> temp1.getPhaseType().equals(phase)) +// .collect(Collectors.toList()); +// //todo 检查数据是否缺失校验数据完整性 +// +// List attributeValueByPropertyName = Utils.getAttributeValueByPropertyName(tempDataIList, "i" + temp); +// double I_cp95 = CZNLPG.calculatePercentile(attributeValueByPropertyName, 0); +// double I_phase = CZNLPG.calculateITm(I_cp95, Double.valueOf(CarryingCapacityEnum.K.getValue()), +// voltage, S_pv, Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + temp)), +// Double.valueOf(CarryingCapacityEnum.getValueByCode("I_INV_" + temp))); +// iList.add(I_phase); +// }); +// double I_th = iList.stream().mapToDouble(Double::doubleValue) +// .max() +// .getAsDouble(); +// i_Th_List.add(I_th); +// +// }); +// //todo 根据监测点查找限值 +// +// +// +// +// +// +// +// +// +// +// +// } @Override public CarryCapacityDataVO queryCarryCapacityData(CarryCapacityQueryDataParam queryParam) { + + //前一周数据 + List dataHarmPowerPList = new ArrayList<>(); + List dataHarmPowerQList = new ArrayList<>(); + List dataIList = new ArrayList<>(); + //前2周的数据 + List dataHarmPowerP2List = new ArrayList<>(); + List dataHarmPowerQ2List = new ArrayList<>(); + List dataHarmPowerU2List = new ArrayList<>(); + CarryCapacityDataVO carryCapacityDataVO = new CarryCapacityDataVO(); String lineId = queryParam.getLineId(); -// LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); + LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); // //时间间隔 -// Integer timeInterval = data.getTimeInterval(); - Integer timeInterval =1; + Integer timeInterval = data.getTimeInterval(); +// Integer timeInterval =10; //根据时间间隔算出最低数据量 7天*6小时*60分钟*3项*90%/时间间隔 int minDataNum = 7*6*60*3*90/(100*timeInterval); +// int minDataNum = 0; + LocalDate startDate = queryParam.getStartTime(); + LocalDate endDate = queryParam.getEndTime(); + //前2周的时间 + LocalDate startDate2 = startDate.plusWeeks(-1); + LocalDate endDate2 = endDate.plusWeeks(-1); + + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00"; String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00"; - /* 近一周的数据包括电流,电压,有功功率,无功功率,数据完整性校验就取有功功率一组数据校验,因为,要有都有要没有都没有,数据查询按时间间隔和tag分组, - 缺失布置3.1415926,后边更具3.1415926个数来判断数据完整性,及进行数据补充*/ - //有功功率 - String SqlP1 = "select mean(p) as value from data_harmpower_p where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ - "' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; - List dataHarmPowerPList = dataHarmPowerPMapper.getSqlResult(SqlP1); + //先重redis读取数据,无数据,查看是否存在文件,不存在文件查数据库,数据校验补通过上传文件 +// dataHarmPowerPList = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "P"); +// dataHarmPowerP2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "P"); +// dataHarmPowerQ2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "Q"); +// dataHarmPowerU2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "U"); - //数据校验 if(CollectionUtil.isEmpty(dataHarmPowerPList)){ - throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); - }else { - //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 - List listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getValue()!=DEFAULTVALUE) - .map(CarryCapcityData::getValue) - .collect(Collectors.toList()); - if (listP.size()= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerPList = dataHarmPowerPMapper.getSqlResult(SqlP1); + + //数据校验 + if(CollectionUtil.isEmpty(dataHarmPowerPList)){ + throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); + }else { + //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 + List listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (listP.size()= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerQList = dataHarmPowerQMapper.getSqlResult(SqlQ1); + //数据缺失填补 + + //数据校验 + linearInterpolation(dataHarmPowerQList); + redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q", + dataHarmPowerQList); + + //电流 +// StringBuilder stringBuilder1 = new StringBuilder(); +// StringBuilder stringBuilder2 = new StringBuilder(); +// for (int i = 2; i <=25 ; i++) { +// if (i==25){ +// stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i); +// } else { +// stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i).append(","); +// } +// } +// stringBuilder2.append ("line_id='").append (lineId).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' group by time(").append(timeInterval).append("m),* fill(3.1415926) ").append(InfluxDBPublicParam.TIME_ZONE); +// String sqlI1 = "select "+stringBuilder1+" from "+ InfluxDBPublicParam.DATA_I+" where value_type='CP95' and phasic_type!='T' and "+stringBuilder2; +// dataIList = dataIMapper.getSqlResult(sqlI1); +// //数据校验 +// //数据缺失填补 +// linearInterpolationI(dataIList); +// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I", +// dataIList); + + //前2周的数据用于计算首端电流模型参数 + String forwardStartTime = LocalDateTimeUtil.format(queryParam.getStartTime() +// .plusWeeks(-1) + , formatter) + " 00:00:00"; + String forwardEndTime = LocalDateTimeUtil.format(queryParam.getEndTime() +// .plusWeeks(-1) + , formatter) + " 23:59:00"; + + String SqlP2 = "select mean(p)*1000 as value from data_harmpower_p where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ + "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerP2List = dataHarmPowerPMapper.getSqlResult(SqlP2); + //数据校验 + // if(CollectionUtil.isEmpty(dataHarmPowerPList2)){ + // throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); + // }else { + // //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 + // List listP = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + // .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + // .map(CarryCapcityData::getValue) + // .collect(Collectors.toList()); + // if (listP.size()= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerQ2List = dataHarmPowerQMapper.getSqlResult(SqlQ2); + //数据校验 + //数据缺失填补 + linearInterpolation(dataHarmPowerQ2List); + + + //电压 + String SqlU2 = "select mean(rms)*1000 as value from data_v where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ + "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerU2List = dataVMapper.getSqlResult(SqlU2); + //数据校验 + + //数据缺失填补 + linearInterpolation(dataHarmPowerU2List); + redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P", + dataHarmPowerP2List); + redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q", + dataHarmPowerQ2List); + redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U", + dataHarmPowerU2List); + redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I", + dataIList); + - throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); } + + } - //数据缺失填补 - linearInterpolation(dataHarmPowerPList); carryCapacityDataVO.setData(dataHarmPowerPList); + + + + + List phaseType = Stream.of("A", "B", "C").collect(Collectors.toList()); Map results = new HashMap<>(4); //计算最小Cp95值用于评估 + List finalDataHarmPowerPList = dataHarmPowerPList; phaseType.stream().forEach(phase -> { - List listP = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getValue()!=DEFAULTVALUE) + List listP = finalDataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) .filter(temp -> Objects.equals(temp.getPhaseType(),phase)) .map(CarryCapcityData::getValue) .collect(Collectors.toList()); @@ -233,55 +389,8 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { carryCapacityDataVO.setP_βminMap(results); - - - - - //前2周的数据用于计算首端电流模型参数 - String forwardStartTime = LocalDateTimeUtil.format(queryParam.getStartTime() -// .plusWeeks(-1) - , formatter) + " 00:00:00"; - String forwardEndTime = LocalDateTimeUtil.format(queryParam.getEndTime() -// .plusWeeks(-1) - , formatter) + " 23:59:00"; - - String SqlP2 = "select mean(p) as value from data_harmpower_p where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ - "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; - List dataHarmPowerPList2 = dataHarmPowerPMapper.getSqlResult(SqlP2); - //数据校验 -// if(CollectionUtil.isEmpty(dataHarmPowerPList2)){ -// throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); -// }else { -// //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 -// List listP = dataHarmPowerPList2.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) -// .filter(temp -> temp.getValue()!=DEFAULTVALUE) -// .map(CarryCapcityData::getValue) -// .collect(Collectors.toList()); -// if (listP.size()= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; - List dataHarmPowerQList2 = dataHarmPowerQMapper.getSqlResult(SqlQ2); - //数据缺失填补 - linearInterpolation(dataHarmPowerQList2); - - - - //电压 - String SqlU2 = "select mean(rms) as value from data_v where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ - "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; - List dataVList2 = dataVMapper.getSqlResult(SqlU2); - //数据缺失填补 - linearInterpolation(dataVList2); - //用前2周的数据计算C,a,b - Map stringMap = calUParam(dataHarmPowerPList2, dataHarmPowerQList2, dataVList2); + Map stringMap = calUParam(dataHarmPowerP2List, dataHarmPowerQ2List, dataHarmPowerU2List); carryCapacityDataVO.setStringMap(stringMap); return carryCapacityDataVO; @@ -292,16 +401,18 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { CarryCapacityDataQVO carryCapacityDataQVO = new CarryCapacityDataQVO(); String lineId = queryParam.getLineId(); -// LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); -// //时间间隔 -// Integer timeInterval = data.getTimeInterval(); - Integer timeInterval =1; + LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); + //时间间隔 + Integer timeInterval = data.getTimeInterval(); +// Integer timeInterval =10; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00"; String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00"; + + //无功功率 - String SqlQ1 = "select mean(q) as value from data_harmpower_q where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ + String SqlQ1 = "select mean(q)*1000 as value from data_harmpower_q where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ "' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; List dataHarmPowerList = dataHarmPowerQMapper.getSqlResult(SqlQ1); //数据缺失填补 @@ -317,7 +428,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { //计算最小Cp95值用于评估 phaseType.stream().forEach(phase -> { List listQ = dataHarmPowerList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) - .filter(temp -> temp.getValue()!=DEFAULTVALUE) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) .filter(temp -> Objects.equals(temp.getPhaseType(),phase)) .map(CarryCapcityData::getValue) .collect(Collectors.toList()); @@ -333,14 +444,16 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { public CarryCapacityDataIVO queryCarryCapacityIData(CarryCapacityQueryDataParam queryParam) { CarryCapacityDataIVO carryCapacityDataIVO = new CarryCapacityDataIVO(); String lineId = queryParam.getLineId(); -// LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); -// //时间间隔 -// Integer timeInterval = data.getTimeInterval(); - Integer timeInterval =1; + LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); + //时间间隔 + Integer timeInterval = data.getTimeInterval(); +// Integer timeInterval =10; + LocalDate startDate = queryParam.getStartTime(); + LocalDate endDate = queryParam.getEndTime(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00"; - String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00"; + String startTime = LocalDateTimeUtil.format(startDate, formatter) + " 00:00:00"; + String endTime = LocalDateTimeUtil.format(endDate, formatter) + " 23:59:00"; //电流 StringBuilder stringBuilder1 = new StringBuilder(); @@ -392,8 +505,14 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { } @Override + @Transactional(rollbackFor = Exception.class) public CarryCapacityDResultVO carryCapacityCal(CarryCapacityCalParam calParam) { CarryCapacityDResultVO carryCapacityDResultVO = new CarryCapacityDResultVO(); + + String scale = calParam.getScale(); + String scaleValue = dicDataFeignClient.getDicDataById(scale).getData().getValue(); + + //todo S_T查询监测点的容量 Double S_T = calParam.getS_T(); Double S_pv = calParam.getS_pv(); Double P_pv = calParam.getS_pv()*Double.valueOf(CarryingCapacityEnum.K.getValue()); @@ -409,7 +528,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { BtList.add(Bt); double PF_T = CZNLPG.calculatePF_T(P_βmin, Q_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), S_pv); PF_TList.add(PF_T); - double U = CZNLPG.calculateU(res[0], res[1], res[2], P_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), Q_βmin, S_pv, Double.valueOf(calParam.getScale())); + double U = CZNLPG.calculateU(res[0], res[1], res[2], P_βmin, Double.valueOf(CarryingCapacityEnum.K.getValue()), Q_βmin, S_pv, Double.valueOf(scaleValue)); uList.add(U); } //取uList最大值 @@ -429,7 +548,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { carryCapacityDResultVO.setPfTLevel(pfTLevel); Integer bTLevel = CZNLPG.evaluateEquivalentLoadRateLevel(PF_T_Max); - carryCapacityDResultVO.setPfTLevel(bTLevel); + carryCapacityDResultVO.setBTLevel(bTLevel); //谐波电流幅值判断 //获取限值 Overlimit overlimit = lineFeignClient.getOverLimitData(calParam.getLineId()).getData(); @@ -439,7 +558,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { int i_count1=0,i_count2=0,i_count3=0; for (int i = 0; i < calParam.getI_βmax().size(); i++) { double I_TM = CZNLPG.calculateITm(calParam.getI_βmax().get(i), Double.valueOf(CarryingCapacityEnum.K.getValue()), - Double.valueOf(calParam.getScale()), S_pv, Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + (i + 2))), + Double.valueOf(scaleValue), S_pv, Double.valueOf(CarryingCapacityEnum.getValueByCode("K_H_" + (i + 2))), Double.valueOf(CarryingCapacityEnum.getValueByCode("I_INV_" + (i + 2)))); double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", i + 2); if (I_TMtemp==3) .count(); warn_count1 =(int) list.stream() - .filter(temp ->temp==1) + .filter(temp ->temp==4) .count(); List carryCapacityStrategyVOList = carryCapacityStrategyPOService.queyDetail(); + carryCapacityDResultVO.setReslutLevel(5); //1-安全,2-III级预警,3-II级预警,4-I 级预警,依次执行策略看是否符合 for (int i = 1; i < 5; i++) { int finalI = i; @@ -493,6 +613,24 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { break; } } + CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO(); + + carryCapacityResultPO.setLineId(calParam.getLineId()); + carryCapacityResultPO.setUserId(calParam.getUserId()); + // + CarryCapacityUserPO carryCapacityUserPO = carryCapacityUserPOService.queyDetailUserById(calParam.getUserId()); + carryCapacityResultPO.setEvaluateType(carryCapacityUserPO.getUserType()); + + carryCapacityResultPO.setStartTime(calParam.getStartTime()); + carryCapacityResultPO.setEndTime(calParam.getEndTime()); + carryCapacityResultPO.setUTLevel(carryCapacityDResultVO.getUTLevel()); + carryCapacityResultPO.setPfTLevel(carryCapacityDResultVO.getPfTLevel()); + carryCapacityResultPO.setBTLevel(carryCapacityDResultVO.getBTLevel()); + carryCapacityResultPO.setILevel(carryCapacityDResultVO.getILevel()); + carryCapacityResultPO.setReslutLevel(carryCapacityDResultVO.getReslutLevel()); + carryCapacityResultPO.setEvaluateDate(LocalDate.now()); + carryCapacityResultPO.setStatus(1); + carryCapacityResultPOService.save(carryCapacityResultPO); return carryCapacityDResultVO; } @@ -520,6 +658,467 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { return data; } + @SneakyThrows + @Override + public boolean uploadExcel(ExcelDataParam excelDataParam) { + + String lineId = excelDataParam.getLineId(); +// LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); +// //时间间隔 +// Integer timeInterval = data.getTimeInterval(); + Integer timeInterval =10; + //根据时间间隔算出最低数据量 7天*6小时*60分钟*3项*90%/时间间隔 +// int minDataNum = 7*6*60*3*90/(100*timeInterval); + int minDataNum =0; + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate startDate = LocalDate.parse(excelDataParam.getStartTime(), formatter); + LocalDate endDate = LocalDate.parse(excelDataParam.getEndTime(), formatter); + //前2周的时间 + LocalDate startDate2 = startDate.plusWeeks(-1); + LocalDate endDate2 = endDate.plusWeeks(-1); + + + + //前一周的数据 + ExcelDataDTO excelDataDTO = ParsingFile(startDate, endDate, excelDataParam.getFile()); + List dataHarmPowerPList =excelDataDTO.getDataHarmPowerPList(); + List dataHarmPowerQList =excelDataDTO.getDataHarmPowerQList(); + List dataIList =excelDataDTO.getDataIList(); + ////前2周的数据 + List dataHarmPowerP2List =excelDataDTO.getDataHarmPowerP2List(); + List dataHarmPowerQ2List =excelDataDTO.getDataHarmPowerQ2List(); + List dataHarmPowerUList =excelDataDTO.getDataHarmPowerU2List(); + + //数据校验 + //数据校验 + if(CollectionUtil.isEmpty(dataHarmPowerPList)){ + throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); + }else { + //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 + List tempList = dataHarmPowerPList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (tempList.size() tempList = dataHarmPowerP2List.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (tempList.size() tempList = dataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (tempList.size() tempList = dataHarmPowerQ2List.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (tempList.size() tempList = dataHarmPowerUList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (tempList.size() tempList = dataIList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getI2()!=DEFAULTVALUE&&Objects.nonNull(temp.getI2())) + .map(DataI::getI2) + .collect(Collectors.toList()); + if (tempList.size() dataHarmPowerP2List = new ArrayList<>(); + List dataHarmPowerQ2List = new ArrayList<>(); + List dataHarmPowerU2List = new ArrayList<>(); + + String lineId = queryParam.getLineId(); +// LineDetailDataVO data = lineFeignClient.getLineDetailData(lineId).getData(); +// //时间间隔 +// Integer timeInterval = data.getTimeInterval(); + Integer timeInterval =10; + //根据时间间隔算出最低数据量 7天*6小时*60分钟*3项*90%/时间间隔 +// int minDataNum = 7*6*60*3*90/(100*timeInterval); + int minDataNum = 0; + LocalDate startDate = queryParam.getStartTime(); + LocalDate endDate = queryParam.getEndTime(); + //前2周的时间 + LocalDate startDate2 = startDate.plusWeeks(-1); + LocalDate endDate2 = endDate.plusWeeks(-1); + + + + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00"; + String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00"; + + + CarryCapacityDataPO one = carryCapacityDataPOService.lambdaQuery().eq(CarryCapacityDataPO::getLineId, lineId) + .eq(CarryCapacityDataPO::getStartTime, startTime) + .eq(CarryCapacityDataPO::getEndTime, endTime).one(); + if(Objects.nonNull(one)){ + //todo 调用查询文件 + + }else { + + //前2周的数据用于计算首端电流模型参数 + String forwardStartTime = LocalDateTimeUtil.format(queryParam.getStartTime() +// .plusWeeks(-1) + , formatter) + " 00:00:00"; + String forwardEndTime = LocalDateTimeUtil.format(queryParam.getEndTime() +// .plusWeeks(-1) + , formatter) + " 23:59:00"; + + String SqlP2 = "select mean(p)*1000 as value from data_harmpower_p where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ + "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerP2List = dataHarmPowerPMapper.getSqlResult(SqlP2); + //数据校验 + if(CollectionUtil.isEmpty(dataHarmPowerP2List)){ + throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); + }else { + //数据清洗取近一周的配变每日9时~15时段的负载率数据中概率95%小值所对应时刻的有功功率和无功功率值 + List listP = dataHarmPowerP2List.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + .filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue())) + .map(CarryCapcityData::getValue) + .collect(Collectors.toList()); + if (listP.size()= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerQ2List = dataHarmPowerQMapper.getSqlResult(SqlQ2); + //数据校验 + //数据缺失填补 + linearInterpolation(dataHarmPowerQ2List); + //电压 + String SqlU2 = "select mean(rms)*1000 as value from data_v where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+ + "' and time >= '" + forwardStartTime + "'and time <= '" +forwardEndTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE; + dataHarmPowerU2List = dataVMapper.getSqlResult(SqlU2); + //数据校验 + + //数据缺失填补 + linearInterpolation(dataHarmPowerU2List); + + } + + //用前2周的数据计算C,a,b + Map stringMap = calUParam(dataHarmPowerP2List, dataHarmPowerQ2List, dataHarmPowerU2List); + carryCapacityDataVO.setStringMap(stringMap); + + return carryCapacityDataVO; + } + + @Override + public CarryCapacityDResultVO carryCapacityEvaluate(CarryCapacityEvaluateParam calParam) { + CarryCapacityDResultVO vo = new CarryCapacityDResultVO(); + //用户协议容量 + double sumCapacity = 0.00; + if (CollectionUtil.isEmpty(calParam.getUserList())){ + + throw new BusinessException(AdvanceResponseEnum.USER_LOST); + + }else { + sumCapacity = calParam.getUserList().stream().mapToDouble(CarryCapacityUserVO::getProtocolCapacity).sum(); + + } + double rate = sumCapacity / calParam.getShortCapacity(); + vo.setFirstResult(rate*100); + if(rate>0.001){ + return vo; + } + + /*二次评估充电桩、电气化铁路如果经过变压器并网的是需要的,像电弧炉他是要经过一个电弧炉专用变压器并网的 + 正常如果是专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核, + 当变压器连接方式为YNyn零序电流可以流通计算变压器高压侧的谐波电流(零序电流次数为3、6、9、12、)否则为0 + */ + //设备电压等级单位KV + String sacaleValue = dicDataFeignClient.getDicDataById(calParam.getScale()).getData().getValue(); + + //用户电压等级 + DictData data = dicDataFeignClient.getDicDataById(calParam.getUserList().get(0).getVoltage()).getData(); + + float userSacaleValue = Float.valueOf(data.getValue())* (data.getCode().contains("k")?1000:1); + //用户模式专变用户,公变用户 + String userMode = dicDataFeignClient.getDicDataById(calParam.getUserMode()).getData().getCode(); + //变压器连接方式接线方式 + String connectionMode = dicDataFeignClient.getDicDataById(calParam.getConnectionMode()).getData().getCode(); + + List integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20).collect(Collectors.toList()); + //基波电流I_1:设备容量(转成KVA*1000)*K(功率因数)(转成kW)/更号3*电压等级(转成Kv) + Double I_1 = calParam.getDeviceCapacity()*1000*calParam.getK()/(Math.sqrt(3)*Double.valueOf(sacaleValue)); + + Overlimit overlimit = new Overlimit(); + COverlimitUtil.iHarm(overlimit,Float.valueOf(sacaleValue),(float) sumCapacity,calParam.getDeviceCapacity(),calParam.getShortCapacity()); + + String userType = calParam.getUserList().get(0).getUserType(); + String code = dicDataFeignClient.getDicDataById(userType).getData().getCode(); + List carryCapacityIResultList = new ArrayList<>(); + if(DicDataEnum.Charging_Station_Users.getCode().equals(code)){ + + integerList.stream().forEach(temp->{ + CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult(); + //低压侧 + Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("CP_I_" + temp)))/100; + if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){ + I_h =0.00; + }else { + //专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核 + if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) { + I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue); + } + } + carryCapacityIResultVO.setTime(temp); + carryCapacityIResultVO.setI(I_h); + double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp); + carryCapacityIResultVO.setI_limit(getUharm); + carryCapacityIResultList.add(carryCapacityIResultVO); + }); + + } else if (DicDataEnum.Electric_Heating_Load_Users.getCode().equals(code)) { + + integerList.stream().forEach(temp->{ + CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult(); + //低压侧 + Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("EAF_I_" + temp)))/100; + if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){ + I_h =0.00; + }else { + //专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核 + if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) { + I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue); + } + } + carryCapacityIResultVO.setTime(temp); + carryCapacityIResultVO.setI(I_h); + double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp); + carryCapacityIResultVO.setI_limit(getUharm); + carryCapacityIResultList.add(carryCapacityIResultVO); + }); + + } + else if (DicDataEnum.Electrified_Rail_Users.getCode().equals(code)) { + integerList.stream().forEach(temp->{ + if(temp%2==0){ + return; + } + CarryCapacityDResultVO.CarryCapacityIResult carryCapacityIResultVO = new CarryCapacityDResultVO.CarryCapacityIResult(); + //低压侧 + Double I_h = I_1*(Double.valueOf(CarryingCapacityEnum.getValueByCode("ER_I_" + temp)))/100; + if(!DicDataEnum.YNyn.getCode().equals(connectionMode)&&temp%3==0){ + I_h =0.00; + }else { + //专变用户的话是经过变压器的高压侧进行考核,公变用户的正常是在低压侧进行考核 + if (DicDataEnum.SPECIAL_USER.getCode().equals(userMode)) { + I_h = I_h / (Double.valueOf(sacaleValue) * 1000 / userSacaleValue); + } + } + carryCapacityIResultVO.setTime(temp); + carryCapacityIResultVO.setI(I_h); + double getUharm = PubUtils.getValueByMethod(overlimit, "getIharm", temp); + carryCapacityIResultVO.setI_limit(getUharm); + carryCapacityIResultList.add(carryCapacityIResultVO); + }); + } + vo.setIResultList(carryCapacityIResultList); + + CarryCapacityResultPO carryCapacityResultPO = new CarryCapacityResultPO(); + carryCapacityResultPO.setFirstResult(rate*100); + carryCapacityResultPO.setIResultList(JSONUtil.toJsonStr(carryCapacityIResultList)); + carryCapacityResultPO.setEvaluateDate(LocalDate.now()); + carryCapacityResultPO.setEvaluateType(userType); + List list = JSONUtil.toList(JSONUtil.toJsonStr(carryCapacityIResultList), CarryCapacityDResultVO.CarryCapacityIResult.class); + + carryCapacityResultPO.setStatus(1); + carryCapacityResultPOService.save(carryCapacityResultPO); + + return vo; + } + + + public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, MultipartFile file) throws Exception{ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + List dataHarmPowerPList = new ArrayList<>(); + List dataHarmPowerQList= new ArrayList<>(); + List dataIList= new ArrayList<>(); + + //前2周的时间 + LocalDate startDate2 = startDate.plusWeeks(-1); + LocalDate endDate2 = endDate.plusWeeks(-1); + + //前一周的数据 + List dataHarmPowerP2List = new ArrayList<>(); + List dataHarmPowerQ2List = new ArrayList<>(); + List dataHarmPowerU2List= new ArrayList<>(); + + try { + // 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页 + Workbook workbook = new XSSFWorkbook(file.getInputStream()); + StringBuilder sb=new StringBuilder(); + ImportParams params = new ImportParams(); + // 循环工作表Sheet + for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { + // 表头在第几行 + params.setTitleRows(0); + // 距离表头中间有几行不要的数据 + params.setStartRows(0); + // 第几个sheet页 + params.setStartSheetIndex(numSheet); + // 验证数据 + params.setNeedVerify(true); + if(numSheet==0){ + ExcelImportResult result =ExcelImportUtil.importExcelMore(file.getInputStream(), + CarryCapcityDataIEexcel.class, params); + + List successList = result.getList(); + List collect = successList.stream().map(CarryCapcityDataIEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList()); + dataIList = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate, endDate) + ).collect(Collectors.toList()); + + + }else if(numSheet==1){ + ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), + CarryCapcityDataVEexcel.class, params); + + // 校验合格的数据 + List successList = result.getList(); + List collect = successList.stream().map(CarryCapcityDataVEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList()); + // 业务逻辑 + dataHarmPowerU2List = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2) + ).collect(Collectors.toList()); + } + else if(numSheet==2){ + ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), + CarryCapcityDataPEexcel.class, params); + + // 校验合格的数据 + List successList = result.getList(); + List collect = successList.stream().map(CarryCapcityDataPEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList()); + dataHarmPowerPList = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate, endDate) + ).collect(Collectors.toList()); + dataHarmPowerP2List = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2) + ).collect(Collectors.toList()); + + // 业务逻辑 + } + else if(numSheet==3){ + ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), + CarryCapcityDataQEexcel.class, params); + + // 校验合格的数据 + List successList = result.getList(); + List collect = successList.stream().map(CarryCapcityDataQEexcel::excelToPO).flatMap(Collection::stream).collect(Collectors.toList()); + dataHarmPowerQList = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate, endDate) + ).collect(Collectors.toList()); + dataHarmPowerQ2List = collect.stream().filter( + item -> Utils.isTimeInRange(item.getTime(), startDate2, endDate2) + ).collect(Collectors.toList()); + // 业务逻辑 + } + + } + } catch (Exception e) { + throw new BusinessException(AdvanceResponseEnum.DOCUMENT_FORMAT_ERROR); + } + ExcelDataDTO dto = new ExcelDataDTO(); + dto.setDataHarmPowerPList(dataHarmPowerPList); + dto.setDataHarmPowerQList(dataHarmPowerQList); + dto.setDataIList(dataIList); + dto.setDataHarmPowerP2List(dataHarmPowerP2List); + dto.setDataHarmPowerQ2List(dataHarmPowerQ2List); + dto.setDataHarmPowerU2List(dataHarmPowerU2List); + + return dto; + } + /** * @Description: 首先,找到缺失值的前一个和后一个非缺失值。 * 计算两个非缺失值之间的差值。 @@ -532,13 +1131,13 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { public static void linearInterpolation(List data) { for (int i = 0; i < data.size(); i++) { - if (data.get(i).getValue() == DEFAULTVALUE ) { + if (data.get(i).getValue() == DEFAULTVALUE ||Objects.isNull(data.get(i).getValue())) { int prevIndex = i - 1; int nextIndex = i + 1; - while (prevIndex >= 0 && data.get(prevIndex).getValue() == DEFAULTVALUE) { + while (prevIndex >= 0 && (data.get(prevIndex).getValue() == DEFAULTVALUE|| Objects.isNull(data.get(prevIndex).getValue()))) { prevIndex--; } - while (nextIndex < data.size() && data.get(nextIndex).getValue() == DEFAULTVALUE) { + while (nextIndex < data.size() && (data.get(nextIndex).getValue() == DEFAULTVALUE|| Objects.isNull(data.get(nextIndex).getValue()))) { nextIndex++; } if (prevIndex >= 0 && nextIndex < data.size()) { @@ -559,74 +1158,74 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { * @Date: 2024/2/28 */ public static void linearInterpolationI(List data) { - for (int k= 2; k <=25 ; k++) { - for (int i = 0; i < data.size(); i++) { - if (data.get(i).getI2() == DEFAULTVALUE) { - int prevIndex = i - 1; - int nextIndex = i + 1; - while (prevIndex >= 0 && data.get(prevIndex).getI2() == DEFAULTVALUE) { - prevIndex--; - } - while (nextIndex < data.size() && data.get(nextIndex).getI2() == DEFAULTVALUE) { - nextIndex++; - } - if (prevIndex >= 0 && nextIndex < data.size()) { - double slope = (data.get(nextIndex).getI2() - data.get(prevIndex).getI2()) / (nextIndex - prevIndex); - data.get(i).setI2(data.get(prevIndex).getI2() + slope * (i - prevIndex)); - data.get(i).setI3(data.get(prevIndex).getI3() + slope * (i - prevIndex)); - data.get(i).setI4(data.get(prevIndex).getI4() + slope * (i - prevIndex)); - data.get(i).setI5(data.get(prevIndex).getI5() + slope * (i - prevIndex)); - data.get(i).setI6(data.get(prevIndex).getI6() + slope * (i - prevIndex)); - data.get(i).setI7(data.get(prevIndex).getI7() + slope * (i - prevIndex)); - data.get(i).setI8(data.get(prevIndex).getI8() + slope * (i - prevIndex)); - data.get(i).setI9(data.get(prevIndex).getI9() + slope * (i - prevIndex)); - data.get(i).setI10(data.get(prevIndex).getI10() + slope * (i - prevIndex)); - data.get(i).setI11(data.get(prevIndex).getI11() + slope * (i - prevIndex)); - data.get(i).setI12(data.get(prevIndex).getI12() + slope * (i - prevIndex)); - data.get(i).setI13(data.get(prevIndex).getI13() + slope * (i - prevIndex)); - data.get(i).setI14(data.get(prevIndex).getI14() + slope * (i - prevIndex)); - data.get(i).setI15(data.get(prevIndex).getI15() + slope * (i - prevIndex)); - data.get(i).setI16(data.get(prevIndex).getI16() + slope * (i - prevIndex)); - data.get(i).setI17(data.get(prevIndex).getI17() + slope * (i - prevIndex)); - data.get(i).setI18(data.get(prevIndex).getI18() + slope * (i - prevIndex)); - data.get(i).setI19(data.get(prevIndex).getI19() + slope * (i - prevIndex)); - data.get(i).setI20(data.get(prevIndex).getI20() + slope * (i - prevIndex)); - data.get(i).setI21(data.get(prevIndex).getI21() + slope * (i - prevIndex)); - data.get(i).setI22(data.get(prevIndex).getI22() + slope * (i - prevIndex)); - data.get(i).setI23(data.get(prevIndex).getI23() + slope * (i - prevIndex)); - data.get(i).setI24(data.get(prevIndex).getI24() + slope * (i - prevIndex)); - data.get(i).setI25(data.get(prevIndex).getI25() + slope * (i - prevIndex)); - } else { - data.get(i).setI2(DEFAULTVALUE); - data.get(i).setI3(DEFAULTVALUE); - data.get(i).setI4(DEFAULTVALUE); - data.get(i).setI5(DEFAULTVALUE); - data.get(i).setI6(DEFAULTVALUE); - data.get(i).setI7(DEFAULTVALUE); - data.get(i).setI8(DEFAULTVALUE); - data.get(i).setI9(DEFAULTVALUE); - data.get(i).setI10(DEFAULTVALUE); - data.get(i).setI11(DEFAULTVALUE); - data.get(i).setI12(DEFAULTVALUE); - data.get(i).setI13(DEFAULTVALUE); - data.get(i).setI14(DEFAULTVALUE); - data.get(i).setI15(DEFAULTVALUE); - data.get(i).setI16(DEFAULTVALUE); - data.get(i).setI17(DEFAULTVALUE); - data.get(i).setI18(DEFAULTVALUE); - data.get(i).setI19(DEFAULTVALUE); - data.get(i).setI20(DEFAULTVALUE); - data.get(i).setI21(DEFAULTVALUE); - data.get(i).setI22(DEFAULTVALUE); - data.get(i).setI23(DEFAULTVALUE); - data.get(i).setI24(DEFAULTVALUE); - data.get(i).setI25(DEFAULTVALUE); + for (int i = 0; i < data.size(); i++) { + if (data.get(i).getI2() == DEFAULTVALUE||Objects.isNull(data.get(i).getI2())) { + int prevIndex = i - 1; + int nextIndex = i + 1; + while (prevIndex >= 0 && (data.get(prevIndex).getI2() == DEFAULTVALUE||Objects.isNull(data.get(prevIndex).getI2()))) { + prevIndex--; + } + while (nextIndex < data.size() && (data.get(nextIndex).getI2() == DEFAULTVALUE||Objects.isNull(data.get(nextIndex).getI2()))) { + nextIndex++; + } + if (prevIndex >= 0 && nextIndex < data.size()) { + double slope = (data.get(nextIndex).getI2() - data.get(prevIndex).getI2()) / (nextIndex - prevIndex); + data.get(i).setI2(data.get(prevIndex).getI2() + slope * (i - prevIndex)); + data.get(i).setI3(data.get(prevIndex).getI3() + slope * (i - prevIndex)); + data.get(i).setI4(data.get(prevIndex).getI4() + slope * (i - prevIndex)); + data.get(i).setI5(data.get(prevIndex).getI5() + slope * (i - prevIndex)); + data.get(i).setI6(data.get(prevIndex).getI6() + slope * (i - prevIndex)); + data.get(i).setI7(data.get(prevIndex).getI7() + slope * (i - prevIndex)); + data.get(i).setI8(data.get(prevIndex).getI8() + slope * (i - prevIndex)); + data.get(i).setI9(data.get(prevIndex).getI9() + slope * (i - prevIndex)); + data.get(i).setI10(data.get(prevIndex).getI10() + slope * (i - prevIndex)); + data.get(i).setI11(data.get(prevIndex).getI11() + slope * (i - prevIndex)); + data.get(i).setI12(data.get(prevIndex).getI12() + slope * (i - prevIndex)); + data.get(i).setI13(data.get(prevIndex).getI13() + slope * (i - prevIndex)); + data.get(i).setI14(data.get(prevIndex).getI14() + slope * (i - prevIndex)); + data.get(i).setI15(data.get(prevIndex).getI15() + slope * (i - prevIndex)); + data.get(i).setI16(data.get(prevIndex).getI16() + slope * (i - prevIndex)); + data.get(i).setI17(data.get(prevIndex).getI17() + slope * (i - prevIndex)); + data.get(i).setI18(data.get(prevIndex).getI18() + slope * (i - prevIndex)); + data.get(i).setI19(data.get(prevIndex).getI19() + slope * (i - prevIndex)); + data.get(i).setI20(data.get(prevIndex).getI20() + slope * (i - prevIndex)); + data.get(i).setI21(data.get(prevIndex).getI21() + slope * (i - prevIndex)); + data.get(i).setI22(data.get(prevIndex).getI22() + slope * (i - prevIndex)); + data.get(i).setI23(data.get(prevIndex).getI23() + slope * (i - prevIndex)); + data.get(i).setI24(data.get(prevIndex).getI24() + slope * (i - prevIndex)); + data.get(i).setI25(data.get(prevIndex).getI25() + slope * (i - prevIndex)); + + } else { + data.get(i).setI2(DEFAULTVALUE); + data.get(i).setI3(DEFAULTVALUE); + data.get(i).setI4(DEFAULTVALUE); + data.get(i).setI5(DEFAULTVALUE); + data.get(i).setI6(DEFAULTVALUE); + data.get(i).setI7(DEFAULTVALUE); + data.get(i).setI8(DEFAULTVALUE); + data.get(i).setI9(DEFAULTVALUE); + data.get(i).setI10(DEFAULTVALUE); + data.get(i).setI11(DEFAULTVALUE); + data.get(i).setI12(DEFAULTVALUE); + data.get(i).setI13(DEFAULTVALUE); + data.get(i).setI14(DEFAULTVALUE); + data.get(i).setI15(DEFAULTVALUE); + data.get(i).setI16(DEFAULTVALUE); + data.get(i).setI17(DEFAULTVALUE); + data.get(i).setI18(DEFAULTVALUE); + data.get(i).setI19(DEFAULTVALUE); + data.get(i).setI20(DEFAULTVALUE); + data.get(i).setI21(DEFAULTVALUE); + data.get(i).setI22(DEFAULTVALUE); + data.get(i).setI23(DEFAULTVALUE); + data.get(i).setI24(DEFAULTVALUE); + data.get(i).setI25(DEFAULTVALUE); - } } } } + } /** * @Description: calUParam 首端电压模型训练获取A,B,C三项C,a,b参数 @@ -656,7 +1255,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { .filter(temp -> temp.getPhaseType().equals(phase)) .map(CarryCapcityData::getValue) .collect(Collectors.toList()); - //todo 抽取5000条数据(抽取方式待确定) + //todo 抽取5000条数据(抽取方式待确定) Double[] res = new Double[3]; CZNLPG.cznlpgDataTrain(listV2, listP2, listQ2, listV2.size(), res); results.put(phase, res); diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/Utils.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/Utils.java index a48715b61..1cff32182 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/Utils.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/Utils.java @@ -11,8 +11,8 @@ package com.njcn.advance.utils; import cn.hutool.core.collection.CollectionUtil; import java.lang.reflect.Field; -import java.time.Instant; -import java.time.LocalTime; +import java.time.*; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; @@ -102,12 +102,27 @@ public class Utils { } return result; } + // 辅助方法:检查时间是否在指定范围内 public static boolean isTimeInRange(Instant instant, LocalTime startTime, LocalTime endTime) { LocalTime localTime = instant.atZone(Instant.now().atZone(java.time.ZoneId.systemDefault()).getZone()).toLocalTime(); return !localTime.isBefore(startTime) && !localTime.isAfter(endTime); } + //辅助方法:检查时间是否在指定范围内startTime,endTime + public static boolean isTimeInRange(Instant instant, LocalDate startTime, LocalDate endTime) { + // 将Instant对象转换为LocalDateTime对象 + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + + // 检查LocalDateTime对象是否在startTime和endTime之间 + boolean isInRange = !localDateTime.toLocalDate().isBefore(startTime) && !localDateTime.toLocalDate().isAfter(endTime.plus(1, ChronoUnit.DAYS)); + + // 返回结果 + return isInRange; + } + + + public static List getAttributeValueByPropertyName(List list, String propertyName) { List resultList = new ArrayList<>(); for (T item : list) { @@ -121,15 +136,16 @@ public class Utils { } return resultList; } + public static Double getAttributeValueByPropertyName(T item, String propertyName) { Double result = null; - try { - Field field = item.getClass().getDeclaredField(propertyName); - field.setAccessible(true); - result=(Double) field.get(item); - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } + try { + Field field = item.getClass().getDeclaredField(propertyName); + field.setAccessible(true); + result=(Double) field.get(item); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } return result; } } diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java index be113f28b..9507d26df 100644 --- a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java +++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/OssPath.java @@ -102,6 +102,10 @@ public interface OssPath { * 高级算法责任量化用采数据保存地址 */ String RESPONSIBILITY_USER_DATA="advance/responsibility/userData/"; + /*** + * 高级算法承载能力评估数据保存地址 + */ + String CARRY_CAPCITY_DATA="advance/carryCapcity/Data/"; /*** * 高级算法责任量化结果数据保存地址 diff --git a/pqs-common/common-redis/pom.xml b/pqs-common/common-redis/pom.xml index 4e5365753..543f2de83 100644 --- a/pqs-common/common-redis/pom.xml +++ b/pqs-common/common-redis/pom.xml @@ -37,6 +37,12 @@ org.apache.commons commons-pool2 + + com.njcn + influxdb-springboot-starter + 1.0.0 + compile + diff --git a/pqs-common/common-redis/src/main/java/com/njcn/redis/config/RedisConfig.java b/pqs-common/common-redis/src/main/java/com/njcn/redis/config/RedisConfig.java index b97a30925..8398a6a42 100644 --- a/pqs-common/common-redis/src/main/java/com/njcn/redis/config/RedisConfig.java +++ b/pqs-common/common-redis/src/main/java/com/njcn/redis/config/RedisConfig.java @@ -2,8 +2,12 @@ package com.njcn.redis.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.njcn.influx.utils.InstantDateDeserializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; @@ -11,6 +15,8 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import java.time.Instant; + /** * @author hongawen * @version 1.0.0 @@ -32,6 +38,11 @@ public class RedisConfig { Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); // 指定要序列化的域(field,get,set),访问修饰符(public,private,protected) + //解决Java 8 date/time type `java.time.Instant` not supported + objectMapper.registerModule(new JavaTimeModule()); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + objectMapper.registerModule(new SimpleModule().addDeserializer(Instant.class, new InstantDateDeserializer())); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java index 3085132aa..8e4d6b3fe 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java @@ -552,12 +552,30 @@ public enum DicDataEnum { Imp_Users("重要敏感用户","Imp_Users"), Station_Other("其他","Other"), + /*承载能力评估用户类型*/ + Power_Station_Users("光伏电站用户","Power_Station_Users"), + Charging_Station_Users("充电站用户","Charging_Station_Users"), + Electric_Heating_Load_Users("电加热负荷用户","Electric_Heating_Load_Users"), + Electrified_Rail_Users("电气化铁路用户","Electrified_Rail_Users"), + + //变压器连接方式 + YNd11("YNd11","YNd11"), + YNy0("YNy0","YNy0"), + Yy0("Yy0","Yy0"), + Yyn0("Yyn0","Yyn0"), + Yd11("Yd11","Yd11"), + Y_yn("Y/yn","Y_yn"), + Y_d("Y/d","Y_d"), + D_y("D/y","D_y"), + YNyn("YNyn","YNyn"), + + //用户模式 + SPECIAL_USER("专变用户","special_user"),//专变用户 + PUBLIC_USER("公变用户","public_user"),// ,公变用户 - - - /**pms******************************end*/ + /**pms******************************end*/ ; private final String name; diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java index 97dfc06ae..64df5691e 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java @@ -120,10 +120,12 @@ public enum DicDataTypeEnum { INDUSTRY_TYPE("行业分类","industry_type"), PLAN_STATUS("计划状态","plan_status"), APP_EVENT("APP暂态事件类型","app_event"), - DEVICE_TYPE("治理装置类型编码","Device_Type") - + DEVICE_TYPE("治理装置类型编码","Device_Type"), + CARRY_CAPCITY_USER_TYPE("承载能力评估用户类型","carry_capcity_user_type"), + CARRY_CAPCITY_CONNECTION_MODE("变压器连接方式","carry_capcity_connection_mode"), + CARRY_CAPCITYUSER_MODE("用户模式","carry_capcity_user_mode"), ;