From 99021d3c9cc6079574c9bd21c335fbf3fbfa2a72 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Wed, 7 Aug 2024 11:50:04 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=AF=95=E8=BF=90=E8=A1=8C=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=BE=AE=E8=B0=83=202.=E5=85=A8=E6=99=AF=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=A8=B3=E6=80=81=E8=B6=85=E6=A0=879=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E6=89=A9=E5=B1=95=203.=E6=8A=80=E6=9C=AF=E7=9B=91=E7=9D=A3?= =?UTF-8?q?=E5=8F=98=E7=94=B5=E7=AB=99=E5=8F=B0=E8=B4=A6=E8=B0=83=E6=95=B4?= =?UTF-8?q?=204.=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95=E5=90=8D=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F=E5=A2=9E=E5=8A=A0.=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/pojo/constant/PatternRegex.java | 2 +- .../njcn/device/pq/api/LineFeignClient.java | 4 +- .../LineFeignClientFallbackFactory.java | 2 +- .../device/pq/controller/LineController.java | 4 +- .../com/njcn/device/pq/mapper/LineMapper.java | 3 +- .../device/pq/mapper/mapping/LineMapper.xml | 12 +- .../njcn/device/pq/service/LineService.java | 7 +- .../impl/LineIntegrityDataServiceImpl.java | 5 +- .../pq/service/impl/LineServiceImpl.java | 9 +- .../pojo/vo/hebeinorth/EvaluationLevelVo.java | 13 + .../controller/ExportModelJBController.java | 13 +- .../harmonic/mapper/RStatDataIDMapper.java | 15 + .../mapper/RStatDataInharmVDMapper.java | 4 + .../harmonic/mapper/RStatDataVDMapper.java | 5 + .../mapper/mapping/RStatDataIDMapper.xml | 38 ++ .../mapping/RStatDataInharmVDMapper.xml | 20 +- .../mapper/mapping/RStatDataVDMapper.xml | 19 + .../service/impl/GridServiceImpl.java | 336 +++++++++++++----- .../impl/PollutionSubstationServiceImpl.java | 12 +- .../impl/RStatLimitServiceImpl.java | 4 +- .../src/main/resources/file/jxt.jpg | Bin 0 -> 8285 bytes 21 files changed, 411 insertions(+), 116 deletions(-) create mode 100644 pqs-harmonic/harmonic-boot/src/main/resources/file/jxt.jpg diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java index bf9afa3b3..1434e57b5 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java @@ -41,7 +41,7 @@ public interface PatternRegex { /** * 登录名只能输入3-16位的英文字母或数字 */ - String LOGIN_NAME_REGEX = "[a-zA-Z0-9_]{3,16}"; + String LOGIN_NAME_REGEX = "^[a-zA-Z_.]{1}[a-zA-Z0-9_.]{2,15}$"; /** * 手机号必须有11位,并且为数字,是正常的手机·号码开头 diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/LineFeignClient.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/LineFeignClient.java index 1d4a69149..89af0da78 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/LineFeignClient.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/LineFeignClient.java @@ -356,9 +356,9 @@ public interface LineFeignClient { /** * 根据监测点名称和电网侧变电站名称模糊搜索 - * @param name + * @param param * @return */ @PostMapping("/getByName") - HttpResult> getByName(@RequestParam("name") String name); + HttpResult> getByName(@RequestBody LineBaseQueryParam param); } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/LineFeignClientFallbackFactory.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/LineFeignClientFallbackFactory.java index 4f3df66f9..ef2d2dc10 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/LineFeignClientFallbackFactory.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/LineFeignClientFallbackFactory.java @@ -283,7 +283,7 @@ public class LineFeignClientFallbackFactory implements FallbackFactory> getByName(String name) { + public HttpResult> getByName(LineBaseQueryParam param) { log.error("{}异常,降级处理,异常为:{}", "根据监测点名称和电网侧变电站名称模糊搜索: ", throwable.toString()); throw new BusinessException(finalExceptionEnum); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java index 28d055054..44374b30e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/LineController.java @@ -537,9 +537,9 @@ public class LineController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @ApiOperation("根据监测点名称和电网侧变电站名称模糊搜索") @PostMapping("/getByName") - HttpResult> getByName(@RequestParam("name") String name){ + HttpResult> getByName(@RequestBody LineBaseQueryParam param){ String methodDescribe = getMethodDescribe("getByName"); - List list = lineService.getByName(name); + List list = lineService.getByName(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java index 534e74ced..9a6937b3d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java @@ -17,6 +17,7 @@ import com.njcn.device.pq.pojo.dto.OverLimitLineDTO; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.WarningSubstationDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.TerminalMainQueryParam; import com.njcn.device.pq.pojo.po.*; import com.njcn.device.pq.pojo.vo.*; @@ -558,6 +559,6 @@ public interface LineMapper extends BaseMapper { List getSubByCondition(@Param("subIds") List subIds, @Param("scale") List scale); - List selectByName(@Param("name") String name); + List selectByName(@Param("param") LineBaseQueryParam param); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index 2a5f0a1dc..05f27a045 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -1751,9 +1751,15 @@ pq_line t1 , pq_line_detail t2 - t1.id = t2.id - - AND (t1.name like CONCAT('%', #{name}, '%') or t2.Power_Substation_Name like CONCAT('%', #{name}, '%')) + t1.id = t2.id and t2.Run_Flag=0 + + AND t1.id in + + #{item} + + + + AND (t1.name like CONCAT('%', #{param.searchValue}, '%') or t2.Power_Substation_Name like CONCAT('%', #{param.searchValue}, '%')) diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java index ac71f0b75..37e349079 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java @@ -7,10 +7,7 @@ import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; -import com.njcn.device.pq.pojo.param.DataParam; -import com.njcn.device.pq.pojo.param.DeviceInfoParam; -import com.njcn.device.pq.pojo.param.PqsParam; -import com.njcn.device.pq.pojo.param.TerminalMainQueryParam; +import com.njcn.device.pq.pojo.param.*; import com.njcn.device.pq.pojo.po.Line; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.pq.pojo.po.LineDetail; @@ -226,5 +223,5 @@ public interface LineService extends IService { List getReportLineInfo(List ids); - List getByName(String name); + List getByName(LineBaseQueryParam param); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java index 7c64b37ca..fa5f380fb 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java @@ -490,7 +490,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl { + targetData.stream().peek(lineAdministrationTree -> { List data = new ArrayList<>(); List childList = new ArrayList<>(); Set pids = groupLine.keySet(); @@ -514,7 +514,8 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl x)); + BigDecimal reduce = data.stream().map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); + double avg = reduce.divide(new BigDecimal(data.size())).doubleValue(); lineAdministrationTree.setIntegrityData(DataStatisticsUtil.dataLimits(avg)); } else { lineAdministrationTree.setIntegrityData(3.14159); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java index be8891f38..dc502628f 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java @@ -26,10 +26,7 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; -import com.njcn.device.pq.pojo.param.DataParam; -import com.njcn.device.pq.pojo.param.DeviceInfoParam; -import com.njcn.device.pq.pojo.param.PqsParam; -import com.njcn.device.pq.pojo.param.TerminalMainQueryParam; +import com.njcn.device.pq.pojo.param.*; import com.njcn.device.pq.pojo.po.*; import com.njcn.device.pq.pojo.vo.*; import com.njcn.device.pq.service.DeptLineService; @@ -695,8 +692,8 @@ public class LineServiceImpl extends ServiceImpl implements Li } @Override - public List getByName(String name) { - return this.baseMapper.selectByName(name); + public List getByName(LineBaseQueryParam param) { + return this.baseMapper.selectByName(param); } @Override diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/hebeinorth/EvaluationLevelVo.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/hebeinorth/EvaluationLevelVo.java index a028a39e0..bf85ed47e 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/hebeinorth/EvaluationLevelVo.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/hebeinorth/EvaluationLevelVo.java @@ -99,6 +99,19 @@ public class EvaluationLevelVo { @ApiModelProperty("闪变合格率") private Double plt = 3.14159; + + @ApiModelProperty("谐波电压含有率") + private Double uHarm = 3.14159; + + @ApiModelProperty("谐波电流") + private Double iHarm = 3.14159; + + @ApiModelProperty("闪变合格率") + private Double inuHarm = 3.14159; + + @ApiModelProperty("负序电流") + private Double iNeg = 3.14159; + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/ExportModelJBController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/ExportModelJBController.java index 9c481f3b5..3b5afe23e 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/ExportModelJBController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/ExportModelJBController.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; @@ -30,6 +31,7 @@ import com.njcn.harmonic.pojo.po.report.ReportTarget; import com.njcn.harmonic.pojo.vo.ReportValue; import com.njcn.harmonic.service.ReportService; import com.njcn.harmonic.utils.WordUtil2; +import com.njcn.oss.utils.FileStorageUtil; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.ThemeFeignClient; import com.njcn.system.enums.DicDataEnum; @@ -87,7 +89,7 @@ public class ExportModelJBController extends BaseController { private final DeviceUnitClient deviceUnitClient; private final WordUtil2 wordUtil2; private final EventDetailFeignClient eventDetailFeignClient; - + private final FileStorageUtil fileStorageUtil; /** * @param response * @param startTime 开始时间 @@ -199,7 +201,7 @@ public class ExportModelJBController extends BaseController { } String rtfPath; - String picPath = "file/default.jpg"; + String picPath = "file/jxt.jpg"; Theme theme = themeFeignClient.getTheme().getData(); if (theme.getRemark().equals("国网")) { @@ -262,7 +264,12 @@ public class ExportModelJBController extends BaseController { InputStream inStream = null; byte[] data = null; try { - inStream = picPathResource.getInputStream(); + if(StrUtil.isNotBlank(lineDto.getWiringDiagram())){ + String wiringDiagram = lineDto.getWiringDiagram(); + inStream = fileStorageUtil.getFileStream(wiringDiagram.substring(wiringDiagram.indexOf("/"))); + }else{ + inStream = picPathResource.getInputStream(); + } data = new byte[inStream.available()]; inStream.read(data); } catch (Exception e) { diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataIDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataIDMapper.java index 9ddcf978e..8b42edf67 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataIDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataIDMapper.java @@ -1,7 +1,12 @@ package com.njcn.harmonic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.RStatDataVD; import com.njcn.harmonic.pojo.po.day.RStatDataIDPO; +import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,14 @@ import com.njcn.harmonic.pojo.po.day.RStatDataIDPO; */ public interface RStatDataIDMapper extends BaseMapper { + /** + * 获取监测点负序电流 + * @return + */ + List getINeg(@Param("list") List lineList, @Param("startTime") String startTime, @Param("endTime") String endTime); + + /** + * 谐波电流 + */ + List getI(@Param("list") List lineList, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataInharmVDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataInharmVDMapper.java index d517a1a0d..7bb5e41a3 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataInharmVDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataInharmVDMapper.java @@ -2,6 +2,9 @@ package com.njcn.harmonic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @Description: @@ -10,4 +13,5 @@ import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO; */ public interface RStatDataInharmVDMapper extends BaseMapper { + List getV(@Param("list") List lineList, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataVDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataVDMapper.java index b41788d2d..428a36e70 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataVDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataVDMapper.java @@ -2,6 +2,7 @@ package com.njcn.harmonic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.harmonic.pojo.po.RStatDataVD; +import com.njcn.harmonic.pojo.po.day.RStatDataInharmVDPO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -36,4 +37,8 @@ public interface RStatDataVDMapper extends BaseMapper { */ List getUnbalance(@Param("list") List lineList, @Param("startTime") String startTime, @Param("endTime") String endTime); + /** + * 获取谐波电压 + */ + List getV(@Param("list") List lineList, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataIDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataIDMapper.xml index 5cbe60639..59a7f0196 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataIDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataIDMapper.xml @@ -2,4 +2,42 @@ + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataInharmVDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataInharmVDMapper.xml index acb348936..f80048c80 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataInharmVDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataInharmVDMapper.xml @@ -3,5 +3,23 @@ - + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataVDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataVDMapper.xml index 2b34c5ac9..3656f4e00 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataVDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatDataVDMapper.xml @@ -82,5 +82,24 @@ group by `time`,line_id + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java index f3dae6c85..104af5f69 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java @@ -16,10 +16,7 @@ import com.njcn.harmonic.pojo.param.hebeinorth.AssessParam; import com.njcn.harmonic.pojo.po.PQSComAssesPO; import com.njcn.harmonic.pojo.po.PqsComasses; import com.njcn.harmonic.pojo.po.RStatDataVD; -import com.njcn.harmonic.pojo.po.day.RStatAssesDPO; -import com.njcn.harmonic.pojo.po.day.RStatDataPltDPO; -import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; -import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.pojo.po.day.*; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.pojo.vo.hebeinorth.AssessDetailVo; import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo; @@ -34,6 +31,7 @@ import com.njcn.user.pojo.dto.DeptDTO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.lang.reflect.Field; import java.time.LocalDate; import java.time.Year; import java.time.YearMonth; @@ -62,7 +60,9 @@ public class GridServiceImpl implements IGridService { private final ComAssesUtil comAssesUtil; private final LineFeignClient lineFeignClient; private final RStatDataVDMapper statDataVDMapper; + private final RStatDataIDMapper statDataIDMapper; private final RStatDataPltDMapper statDataPltDMapper; + private final RStatDataInharmVDMapper rStatDataInharmVDMapper; private final RStatLimitTargetDMapper rStatLimitTargetDMapper; private final GeneralDeviceInfoClient generalDeviceInfoClient; private final DeptFeignClient deptFeignClient; @@ -76,7 +76,7 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() @@ -85,22 +85,22 @@ public class GridServiceImpl implements IGridService { List comasses = new ArrayList<>(); //获取监测点详细信息 List lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); - Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); + Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); //获取综合评估 - List assesList = rStatComassesDMapper.getAvgCount(lineList,param.getStartTime(),param.getEndTime()); + List assesList = rStatComassesDMapper.getAvgCount(lineList, param.getStartTime(), param.getEndTime()); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); - deptList.forEach(item->{ + deptList.forEach(item -> { if (lineDetailMap.containsKey(item.getArea())) { AssessVo assessVo = new AssessVo(); assessVo.setName(item.getName()); assessVo.setCode(item.getCode()); List ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList()); - List deptAssessList = assesList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList()); - List communicateList = BeanUtil.copyToList(deptAssessList,PqsComasses.class); - if (CollUtil.isNotEmpty(communicateList)){ + List deptAssessList = assesList.stream().filter(it -> ll.contains(it.getLineId())).collect(Collectors.toList()); + List communicateList = BeanUtil.copyToList(deptAssessList, PqsComasses.class); + if (CollUtil.isNotEmpty(communicateList)) { float synData = comAssesUtil.getAllComAss(communicateList); - assessVo.setScore(PubUtils.floatRound(2,synData)); + assessVo.setScore(PubUtils.floatRound(2, synData)); assessVo.setLevel(getLevel(synData)); comasses.addAll(communicateList); } @@ -110,7 +110,7 @@ public class GridServiceImpl implements IGridService { //计算冀北整体 if (CollUtil.isNotEmpty(comasses)) { float synData = comAssesUtil.getAllComAss(comasses); - overview.setScore(PubUtils.floatRound(2,synData)); + overview.setScore(PubUtils.floatRound(2, synData)); overview.setLevel(getLevel(synData)); } overview.setChildren(children); @@ -127,30 +127,30 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() .collect(Collectors.toList()); - if (CollUtil.isNotEmpty(lineList)){ + if (CollUtil.isNotEmpty(lineList)) { //获取监测点详细信息 List lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); - Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); + Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); //获取所有监测点r_stat_asses_d数据 - List list1 = rStatAssesDMapper.getData(param.getStartTime(),param.getEndTime(),lineList); + List list1 = rStatAssesDMapper.getData(param.getStartTime(), param.getEndTime(), lineList); //获取所有监测点r_stat_comasses_d数据 - List list2 = rStatComassesDMapper.getAvgCount(lineList,param.getStartTime(),param.getEndTime()); + List list2 = rStatComassesDMapper.getAvgCount(lineList, param.getStartTime(), param.getEndTime()); //获取所有监测点r_stat_limit_rate_d数据 - List list3 = rStatLimitRateDMapper.getAssessTargetRate(lineList,param.getStartTime(),param.getEndTime()); + List list3 = rStatLimitRateDMapper.getAssessTargetRate(lineList, param.getStartTime(), param.getEndTime()); //数据处理 - deptList.forEach(item->{ + deptList.forEach(item -> { if (lineDetailMap.containsKey(item.getArea())) { AssessVo assessVo = new AssessVo(); assessVo.setName(item.getName()); List ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList()); - AssessDetailVo comAssess = getAssessData(item.getId(),item.getName(), ll, list1, list2, list3); + AssessDetailVo comAssess = getAssessData(item.getId(), item.getName(), ll, list1, list2, list3); result.add(comAssess); } }); @@ -161,74 +161,74 @@ public class GridServiceImpl implements IGridService { @Override public List getAssessTrend(AssessParam param) { List result = new ArrayList<>(); - LinkedHashMap> map = new LinkedHashMap<>(); + LinkedHashMap> map = new LinkedHashMap<>(); //查询部门监测点关系 DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); deptGetLineParam.setDeptId(param.getDeptIndex()); deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() .collect(Collectors.toList()); - if (CollUtil.isNotEmpty(lineList)){ + if (CollUtil.isNotEmpty(lineList)) { //获取监测点详细信息 List lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); - Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); + Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); //按月、年来展示数据 - if (Objects.equals(param.getType(),1)) { + if (Objects.equals(param.getType(), 1)) { List yearList = TimeUtil.getLastFiveYear(2); - yearList.forEach(year->{ + yearList.forEach(year -> { String firstDayOfYear = TimeUtil.getYearFirst(year); String lastDayOfYear = TimeUtil.getYearLast(year); - List comAssesList = rStatComassesDMapper.getAvgCount(lineList,firstDayOfYear,lastDayOfYear); - map.put(year.toString(),comAssesList); + List comAssesList = rStatComassesDMapper.getAvgCount(lineList, firstDayOfYear, lastDayOfYear); + map.put(year.toString(), comAssesList); }); - } else if (Objects.equals(param.getType(),3)){ + } else if (Objects.equals(param.getType(), 3)) { List monthList = TimeUtil.getLastThreeMonth(5); - monthList.forEach(month->{ + monthList.forEach(month -> { String firstDayOfMonth = month.atDay(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - List comAssesList = rStatComassesDMapper.getAvgCount(lineList,firstDayOfMonth,lastDayOfMonth); - map.put(month.toString(),comAssesList); + String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + List comAssesList = rStatComassesDMapper.getAvgCount(lineList, firstDayOfMonth, lastDayOfMonth); + map.put(month.toString(), comAssesList); }); } //数据处理 if (param.getAreaType() == 0) { - AssessVo.AssessTrendVo vo = new AssessVo.AssessTrendVo(); + AssessVo.AssessTrendVo vo = new AssessVo.AssessTrendVo(); vo.setDeptId(param.getDeptIndex()); vo.setDeptName("冀北"); List children = new ArrayList<>(); - map.forEach((k1,v1)->{ + map.forEach((k1, v1) -> { AssessVo assessVo = new AssessVo(); assessVo.setDataTime(k1); - List communicateList = BeanUtil.copyToList(v1,PqsComasses.class); + List communicateList = BeanUtil.copyToList(v1, PqsComasses.class); float synData = comAssesUtil.getAllComAss(communicateList); - assessVo.setScore(CollUtil.isEmpty(communicateList)?3.14159f:PubUtils.floatRound(2,synData)); + assessVo.setScore(CollUtil.isEmpty(communicateList) ? 3.14159f : PubUtils.floatRound(2, synData)); assessVo.setLevel(getLevel(assessVo.getScore())); children.add(assessVo); }); vo.setChildren(children); result.add(vo); } else { - deptList.forEach(item->{ + deptList.forEach(item -> { if (lineDetailMap.containsKey(item.getArea())) { - AssessVo.AssessTrendVo vo = new AssessVo.AssessTrendVo(); + AssessVo.AssessTrendVo vo = new AssessVo.AssessTrendVo(); vo.setDeptId(item.getId()); vo.setDeptName(item.getName()); List children = new ArrayList<>(); List ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList()); - map.forEach((k1,v1)->{ + map.forEach((k1, v1) -> { AssessVo assessVo = new AssessVo(); assessVo.setDataTime(k1); - List poList = v1.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList()); - List communicateList = BeanUtil.copyToList(poList,PqsComasses.class); + List poList = v1.stream().filter(it -> ll.contains(it.getLineId())).collect(Collectors.toList()); + List communicateList = BeanUtil.copyToList(poList, PqsComasses.class); float synData = comAssesUtil.getAllComAss(communicateList); - assessVo.setScore(CollUtil.isEmpty(communicateList)?3.14159f:PubUtils.floatRound(2,synData)); + assessVo.setScore(CollUtil.isEmpty(communicateList) ? 3.14159f : PubUtils.floatRound(2, synData)); assessVo.setLevel(getLevel(assessVo.getScore())); children.add(assessVo); }); @@ -247,16 +247,16 @@ public class GridServiceImpl implements IGridService { vo.setDeptId(lineId); List lineList = Collections.singletonList(lineId); //获取监测点r_stat_asses_d数据 各指标评估 - List list1 = rStatAssesDMapper.getData(startTime,endTime,lineList); + List list1 = rStatAssesDMapper.getData(startTime, endTime, lineList); //获取监测点r_stat_comasses_d数据 综合评估 - List list2 = rStatComassesDMapper.getAvgCount(lineList,startTime,endTime); + List list2 = rStatComassesDMapper.getAvgCount(lineList, startTime, endTime); if (CollUtil.isNotEmpty(list1)) { - this.chanelTargetAssess(list1,vo); + this.chanelTargetAssess(list1, vo); } if (CollUtil.isNotEmpty(list2)) { - List communicateList = BeanUtil.copyToList(list2,PqsComasses.class); + List communicateList = BeanUtil.copyToList(list2, PqsComasses.class); float synData = comAssesUtil.getAllComAss(communicateList); - vo.setAssessData(PubUtils.floatRound(2,synData)); + vo.setAssessData(PubUtils.floatRound(2, synData)); vo.setAssessLevel(getLevel(synData)); } return vo; @@ -271,26 +271,26 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() .collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)) { //获取监测点所有指标数据 - List limitRateList = rStatLimitRateDMapper.getAssessTargetRate(lineList,param.getStartTime(),param.getEndTime()); + List limitRateList = rStatLimitRateDMapper.getAssessTargetRate(lineList, param.getStartTime(), param.getEndTime()); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); - deptList.forEach(item->{ + deptList.forEach(item -> { if (lineMap.containsKey(item.getId())) { EvaluationVo.Children children = new EvaluationVo.Children(); children.setDeptId(item.getId()); children.setDeptName(item.getName()); List ll = lineMap.get(item.getId()); if (CollUtil.isNotEmpty(limitRateList)) { - List l1 = limitRateList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(l1)){ - this.getDataByTarget(param.getHarmonicType(),l1,children); + List l1 = limitRateList.stream().filter(it -> ll.contains(it.getLineId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(l1)) { + this.getDataByTarget(param.getHarmonicType(), l1, children); } } childrenList.add(children); @@ -319,7 +319,7 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), param.getVoltageLevel()); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), param.getVoltageLevel()); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() @@ -384,7 +384,7 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setLineRunFlag(0); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); List lineList = lineMap.values().stream() .flatMap(List::stream) .distinct() @@ -394,32 +394,84 @@ public class GridServiceImpl implements IGridService { // 获取当前年份 int currentYear = currentDate.getYear(); LocalDate beginDay = LocalDate.of(currentYear, 1, 1); - List monthList = TimeUtil.getMonthsBetween(beginDay,currentDate); + List monthList = TimeUtil.getMonthsBetween(beginDay, currentDate); for (YearMonth month : monthList) { String firstDayOfMonth = month.atDay(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); EvaluationLevelVo.EvaluationRatio vo = new EvaluationLevelVo.EvaluationRatio(); vo.setTime(month.toString()); - vo.setTargetList(Arrays.asList(DicDataEnum.FREQUENCY_DEV.getName(),DicDataEnum.VOLTAGE_DEV.getName(),DicDataEnum.THD_V.getName(),DicDataEnum.phase_Voltage.getName(),DicDataEnum.FLICKER.getName())); + vo.setTargetList(Arrays.asList(DicDataEnum.FREQUENCY_DEV.getName(), + DicDataEnum.VOLTAGE_DEV.getName(), + DicDataEnum.THD_V.getName(), + DicDataEnum.phase_Voltage.getName(), + DicDataEnum.FLICKER.getName(), + + DicDataEnum.HARMONIC_VOLTAGE.getName(), + DicDataEnum.HARMONIC_CURRENT.getName(), + DicDataEnum.INTERHARMONIC_VOLTAGE.getName(), + DicDataEnum.NEG_CURRENT.getName() + + )); //获取监测点越限集合 - List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,firstDayOfMonth,lastDayOfMonth); + List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList, firstDayOfMonth, lastDayOfMonth); if (CollUtil.isNotEmpty(overLimitList)) { long freqDev = overLimitList.stream().filter(obj -> obj.getFreqDevOvertime() > 0).count(); long vDev = overLimitList.stream().filter(obj -> obj.getVoltageDevOvertime() > 0).count(); long vThd = overLimitList.stream().filter(obj -> obj.getUaberranceOvertime() > 0).count(); long ubalance = overLimitList.stream().filter(obj -> obj.getUbalanceOvertime() > 0).count(); long plt = overLimitList.stream().filter(obj -> obj.getFlickerOvertime() > 0).count(); - vo.setRatioList(Arrays.asList(PubUtils.doubleRound(2,freqDev*100.0/overLimitList.size()) - ,PubUtils.doubleRound(2,vDev*100.0/overLimitList.size()) - ,PubUtils.doubleRound(2,vThd*100.0/overLimitList.size()) - ,PubUtils.doubleRound(2,ubalance*100.0/overLimitList.size()) - ,PubUtils.doubleRound(2,plt*100.0/overLimitList.size()))); + + + long uHarm = overLimitList.stream().filter(x->getLimitRateStats(x,2,26,"uharm","Overtime")).count(); + long iHarm = overLimitList.stream().filter(x->getLimitRateStats(x,2,26,"iharm","Overtime")).count(); + long inuHarm = overLimitList.stream().filter(x->getLimitRateStats(x,1,16,"inuharm","Overtime")).count(); + long iNeg = overLimitList.stream().filter(obj -> obj.getINegOvertime() > 0).count(); + vo.setRatioList(Arrays.asList(PubUtils.doubleRound(2, freqDev * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, vDev * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, vThd * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, ubalance * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, plt * 100.0 / overLimitList.size()), + + PubUtils.doubleRound(2, uHarm * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, iHarm * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, inuHarm * 100.0 / overLimitList.size()), + PubUtils.doubleRound(2, iNeg * 100.0 / overLimitList.size()))); } result.add(vo); } return result; } + /** + * + * @param limitRateDPO 对象 + * @param startNum 循环开始 + * @param endNum 循环结束 + * @param start 属性名开始 + * @param end 属性名结束 + * @return + */ + public Boolean getLimitRateStats(RStatLimitRateDPO limitRateDPO,Integer startNum,Integer endNum,String start,String end){ + try { + for (int i = startNum; i < endNum; i++) { + String fieldName = start+i+end; + Field field = limitRateDPO.getClass().getDeclaredField(fieldName); + //设置对象的访问权限,保证对private的属性的访问 + field.setAccessible(true); + int v = Integer.parseInt(field.get(field).toString()); + if(v>0){ + return true; + } + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return false; + } + + + + @Override public List getEvaluationDetail(AssessParam param) { List result = new ArrayList<>(); @@ -558,15 +610,7 @@ public class GridServiceImpl implements IGridService { if (map.containsKey(item.getId())) { RStatLimitRateDPO item2 = map.get(item.getId()); if (!Objects.isNull(item2) && item2.getAllTime() > 0) { - if (item2.getAllTime() > 0) { - qualifiedDetail.setFreqDev(PubUtils.doubleRound(2,100.0-(item2.getFreqDevOvertime()*100.0/item2.getAllTime()))); - qualifiedDetail.setVDev(PubUtils.doubleRound(2,100.0-(item2.getVoltageDevOvertime()*100.0/item2.getAllTime()))); - qualifiedDetail.setVThd(PubUtils.doubleRound(2,100.0-(item2.getUaberranceOvertime()*100.0/item2.getAllTime()))); - qualifiedDetail.setUbalance(PubUtils.doubleRound(2,100.0-(item2.getUbalanceOvertime()*100.0/item2.getAllTime()))); - } - if (item2.getFlickerAllTime() > 0) { - qualifiedDetail.setPlt(PubUtils.doubleRound(2,100.0-(item2.getFlickerOvertime()*100.0/item2.getFlickerAllTime()))); - } + addQualifiedDetail(qualifiedDetail, item2); } } result.add(qualifiedDetail); @@ -579,6 +623,7 @@ public class GridServiceImpl implements IGridService { return result; } + @Override public EvaluationLevelVo.QualifiedDetail getLineQualifiedDetail(String lineId, String startTime, String endTime) { EvaluationLevelVo.QualifiedDetail detail = new EvaluationLevelVo.QualifiedDetail(); @@ -586,19 +631,86 @@ public class GridServiceImpl implements IGridService { List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,startTime,endTime); if (CollUtil.isNotEmpty(overLimitList)) { RStatLimitRateDPO dpo = overLimitList.get(0); - if (dpo.getAllTime() > 0) { - detail.setFreqDev(PubUtils.doubleRound(2,100.0-(dpo.getFreqDevOvertime()*100.0/dpo.getAllTime()))); - detail.setVDev(PubUtils.doubleRound(2,100.0-(dpo.getVoltageDevOvertime()*100.0/dpo.getAllTime()))); - detail.setVThd(PubUtils.doubleRound(2,100.0-(dpo.getUaberranceOvertime()*100.0/dpo.getAllTime()))); - detail.setUbalance(PubUtils.doubleRound(2,100.0-(dpo.getUbalanceOvertime()*100.0/dpo.getAllTime()))); - } - if (dpo.getFlickerAllTime() > 0) { - detail.setPlt(PubUtils.doubleRound(2,100.0-(dpo.getFlickerOvertime()*100.0/dpo.getFlickerAllTime()))); - } + addQualifiedDetail(detail, dpo); } return detail; } + private void addQualifiedDetail(EvaluationLevelVo.QualifiedDetail qualifiedDetail, RStatLimitRateDPO item2) { + if (item2.getAllTime() > 0) { + qualifiedDetail.setFreqDev(PubUtils.doubleRound(2, 100.0 - (item2.getFreqDevOvertime() * 100.0 / item2.getAllTime()))); + qualifiedDetail.setVDev(PubUtils.doubleRound(2, 100.0 - (item2.getVoltageDevOvertime() * 100.0 / item2.getAllTime()))); + qualifiedDetail.setVThd(PubUtils.doubleRound(2, 100.0 - (item2.getUaberranceOvertime() * 100.0 / item2.getAllTime()))); + qualifiedDetail.setUbalance(PubUtils.doubleRound(2, 100.0 - (item2.getUbalanceOvertime() * 100.0 / item2.getAllTime()))); + qualifiedDetail.setUHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getUharm2Overtime() + + item2.getUharm3Overtime() + + item2.getUharm4Overtime() + + item2.getUharm5Overtime() + + item2.getUharm6Overtime() + + item2.getUharm7Overtime() + + item2.getUharm8Overtime() + + item2.getUharm9Overtime() + + item2.getUharm10Overtime() + + item2.getUharm11Overtime() + + item2.getUharm12Overtime() + + item2.getUharm13Overtime() + + item2.getUharm14Overtime() + + item2.getUharm15Overtime() + + item2.getUharm16Overtime() + + item2.getUharm17Overtime() + + item2.getUharm18Overtime() + + item2.getUharm19Overtime() + + item2.getUharm20Overtime() + + item2.getUharm21Overtime() + + item2.getUharm22Overtime() + + item2.getUharm23Overtime() + + item2.getUharm24Overtime() + + item2.getUharm25Overtime()) * 100.0 / item2.getAllTime()))); + qualifiedDetail.setIHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getIharm2Overtime() + + item2.getIharm4Overtime() + + item2.getIharm5Overtime() + + item2.getIharm6Overtime() + + item2.getIharm7Overtime() + + item2.getIharm8Overtime() + + item2.getIharm9Overtime() + + item2.getIharm10Overtime() + + item2.getIharm11Overtime() + + item2.getIharm12Overtime() + + item2.getIharm13Overtime() + + item2.getIharm14Overtime() + + item2.getIharm15Overtime() + + item2.getIharm16Overtime() + + item2.getIharm17Overtime() + + item2.getIharm18Overtime() + + item2.getIharm19Overtime() + + item2.getIharm20Overtime() + + item2.getIharm21Overtime() + + item2.getIharm22Overtime() + + item2.getIharm23Overtime() + + item2.getIharm24Overtime() + + item2.getIharm25Overtime()) * 100.0 / item2.getAllTime()))); + qualifiedDetail.setInuHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getInuharm1Overtime() + + item2.getInuharm2Overtime() + + item2.getInuharm3Overtime() + + item2.getInuharm4Overtime() + + item2.getInuharm5Overtime() + + item2.getInuharm6Overtime() + + item2.getInuharm7Overtime() + + item2.getInuharm8Overtime() + + item2.getInuharm9Overtime() + + item2.getInuharm10Overtime() + + item2.getInuharm11Overtime() + + item2.getInuharm12Overtime() + + item2.getInuharm13Overtime() + + item2.getInuharm14Overtime() + + item2.getInuharm15Overtime() + + item2.getInuharm16Overtime()) * 100.0 / item2.getAllTime()))); + qualifiedDetail.setINeg(PubUtils.doubleRound(2, 100.0 - (item2.getINegOvertime() * 100.0 / item2.getAllTime()))); + } + if (item2.getFlickerAllTime() > 0) { + qualifiedDetail.setPlt(PubUtils.doubleRound(2, 100.0 - (item2.getFlickerOvertime() * 100.0 / item2.getFlickerAllTime()))); + } + } /** * 获取监测点频率偏差 T相最大值 */ @@ -634,6 +746,34 @@ public class GridServiceImpl implements IGridService { return statDataVDMapper.getUnbalance(lineList,startTime,endTime); } + /** + * 谐波电压含有率 A、B、C三相最大值的平均值 + */ + private List getList6(List lineList, String startTime, String endTime) { + return statDataVDMapper.getV(lineList,startTime,endTime); + } + + /** + * 谐波电流 A、B、C三相最大值的平均值 + */ + private List getList7(List lineList, String startTime, String endTime) { + return statDataIDMapper.getI(lineList,startTime,endTime); + } + + /** + * 间谐波电压含有率 A、B、C三相最大值的平均值 + */ + private List getList8(List lineList, String startTime, String endTime) { + return rStatDataInharmVDMapper.getV(lineList,startTime,endTime); + } + + /** + * 获取监测点负序电流 A、B、C三相最大值的平均值 + */ + public List getList9(List lineList, String startTime, String endTime) { + return statDataIDMapper.getINeg(lineList,startTime,endTime); + } + /** * 计算标准差 */ @@ -691,6 +831,34 @@ public class GridServiceImpl implements IGridService { .collect(Collectors.toList()); children.setRatio(PubUtils.doubleRound(2,filteredList5.size()*100.0/limitRateList.size())); break; + //谐波电压 + case 6: + List filteredList6 = limitRateList.stream() + .filter(x->getLimitRateStats(x,2,26,"uharm","Overtime")) + .collect(Collectors.toList()); + children.setRatio(PubUtils.doubleRound(2,filteredList6.size()*100.0/limitRateList.size())); + break; + //谐波电流 + case 7: + List filteredList7 = limitRateList.stream() + .filter(x->getLimitRateStats(x,2,26,"iharm","Overtime")) + .collect(Collectors.toList()); + children.setRatio(PubUtils.doubleRound(2,filteredList7.size()*100.0/limitRateList.size())); + break; + //间谐波电压 + case 8: + List filteredList8 = limitRateList.stream() + .filter(x->getLimitRateStats(x,1,16,"inuharm","Overtime")) + .collect(Collectors.toList()); + children.setRatio(PubUtils.doubleRound(2,filteredList8.size()*100.0/limitRateList.size())); + break; + //负序电流 + case 9: + List filteredList9 = limitRateList.stream() + .filter(data -> data.getINegOvertime() > 0) + .collect(Collectors.toList()); + children.setRatio(PubUtils.doubleRound(2,filteredList9.size()*100.0/limitRateList.size())); + break; default: break; } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java index b301cf66f..12796271b 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java @@ -33,6 +33,7 @@ import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.SubstationFeignClient; import com.njcn.device.pq.pojo.dto.*; import com.njcn.device.pq.pojo.param.GridDiagramParam; +import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.po.LineDetail; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.harmonic.constant.Param; @@ -825,7 +826,10 @@ public class PollutionSubstationServiceImpl extends ServiceImpl lineOrgName = lineNameList.stream().collect(Collectors.toMap(LineDevGetDTO::getPointId, LineDevGetDTO::getUnitName)); //获取监测点集合 - List data = lineFeignClient.getByName(searchValue).getData(); + LineBaseQueryParam param=new LineBaseQueryParam(); + param.setLineIds(new ArrayList<>(lineOrgName.keySet())); + param.setSearchValue(searchValue); + List data = lineFeignClient.getByName(param).getData(); List lineList = data.stream().map(LineDetail::getId).distinct().collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)) { //获取监测点的超标数据 @@ -862,9 +866,11 @@ public class PollutionSubstationServiceImpl extends ServiceImpl value.contains(x.getLineId())).mapToDouble(RMpPollutionDPO::getValue).max(); + //监测点id集合 + List ids = value.stream().map(LineDetail::getId).collect(Collectors.toList()); + OptionalDouble maxV = harmonicV.stream().filter(x -> ids.contains(x.getLineId())).mapToDouble(RMpPollutionDPO::getValue).max(); vo.setVPollutionData(maxV.isPresent() ? maxV.getAsDouble() : 0.0D); - OptionalDouble maxI = harmonicI.stream().filter(x -> value.contains(x.getLineId())).mapToDouble(RMpPollutionDPO::getValue).max(); + OptionalDouble maxI = harmonicI.stream().filter(x -> ids.contains(x.getLineId())).mapToDouble(RMpPollutionDPO::getValue).max(); vo.setIPollutionData(maxI.isPresent() ? maxV.getAsDouble() : 0.0D); result.add(vo); }); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java index 5b8d9803e..be6739e95 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java @@ -292,7 +292,7 @@ public class RStatLimitServiceImpl implements RStatLimitService { //数据完整性≥90% - <90% GridDiagramVO.RunData integrityData=new GridDiagramVO.RunData(); List integrityDS90 = integrityDS.stream().filter(x -> 0.9 <= x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList()); - List integrity = line.stream().filter(x -> !integrityDS90.contains(x)).distinct().collect(Collectors.toList()); + List integrity = online.stream().filter(x -> !integrityDS90.contains(x)).distinct().collect(Collectors.toList()); integrityData.setLineNumOne(integrityDS90.size()); integrityData.setLineListOne(integrityDS90); integrityData.setLineNumTwo(integrity.size()); @@ -302,7 +302,7 @@ public class RStatLimitServiceImpl implements RStatLimitService { //电能质量指标未超标-超标 GridDiagramVO.RunData targetData=new GridDiagramVO.RunData(); - List integrityS = line.stream().filter(x -> !linesTarget.contains(x)).distinct().collect(Collectors.toList()); + List integrityS = online.stream().filter(x -> !linesTarget.contains(x)).distinct().collect(Collectors.toList()); targetData.setLineNumOne(integrityS.size()); targetData.setLineListOne(integrityS); targetData.setLineNumTwo(linesTarget.size()); diff --git a/pqs-harmonic/harmonic-boot/src/main/resources/file/jxt.jpg b/pqs-harmonic/harmonic-boot/src/main/resources/file/jxt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d15f954d71378aa891848eaf61296393bb6c05b7 GIT binary patch literal 8285 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 XQ#<4Z{OkX&!M{21pXUHhIQ2gO$eN;S literal 0 HcmV?d00001