From 52aa0cfd6f7f09a56f59be51c0979eba4ab4468a Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Wed, 11 Oct 2023 14:01:42 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=95=B0=E6=8D=AE=E8=B4=A8=E9=87=8F=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=B3=95->=E5=8F=B0=E8=B4=A6=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E7=BB=9F=E8=AE=A1=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/biz/pojo/dto/DeptGetBusBarDTO.java | 3 + .../biz/pojo/dto/DeptGetSubStationDTO.java | 3 + .../device/biz/pojo/dto/TerminalGetBase.java | 2 + .../pms/pojo/po/RQualityParameterPO.java | 6 +- .../pms/pojo/vo/RQualityParameterVO.java | 8 +- .../majornetwork/PmsGeneratrixWireMapper.java | 9 ++ .../mapping/PmsGeneratrixWireMapper.xml | 12 +- .../impl/PwDataQualityStatServiceImpl.java | 2 +- .../impl/CommTerminalServiceImpl.java | 21 +++ .../impl/ROperatingIndexMServiceImpl.java | 9 +- .../pq/mapper/mapping/DeptLineMapper.xml | 7 +- .../device/pq/service/DeptLineService.java | 3 +- .../service/impl/CommTerminalServiceImpl.java | 16 +- .../pq/service/impl/DeptLineServiceImpl.java | 4 +- .../pojo/mysql/RQualityParameterM.java | 68 +++++++++ .../RQualityParameterMController.java | 61 ++++++++ .../RQualityParameterMMapper.java | 16 ++ .../mapping/RQualityParameterMMapper.xml | 5 + .../RQualityParameterMService.java | 25 ++++ .../impl/RQualityParameterMServiceImpl.java | 141 ++++++++++++++++++ 20 files changed, 398 insertions(+), 23 deletions(-) create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RQualityParameterM.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RQualityParameterMController.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RQualityParameterMMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RQualityParameterMMapper.xml create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RQualityParameterMService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetBusBarDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetBusBarDTO.java index 1ce57cc02..08e83748a 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetBusBarDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetBusBarDTO.java @@ -21,4 +21,7 @@ public class DeptGetBusBarDTO extends DeptGetBase { @ApiModelProperty(name = "pwBusBarIds",value = "配网母线/线路信息") private List pwBusBarIds; + + @ApiModelProperty(name = "busBarIds",value = "线路/监测点id信息") + private List busBarAndMonitorIDs; } diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetSubStationDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetSubStationDTO.java index 99536d9d9..3f672a941 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetSubStationDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/DeptGetSubStationDTO.java @@ -21,4 +21,7 @@ public class DeptGetSubStationDTO extends DeptGetBase { @ApiModelProperty(name = "pwStationIds",value = "配网电站信息") private List pwStationIds; + + @ApiModelProperty(name = "stationIds",value = "变电站/监测点信息") + private List stationAndMonitorIDs; } diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/TerminalGetBase.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/TerminalGetBase.java index 1a90a0a46..e744ef46c 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/TerminalGetBase.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/TerminalGetBase.java @@ -20,4 +20,6 @@ public class TerminalGetBase { * 台账(监测点,母线,装置,电站,供电公司)id */ private String ledgerId; + + private String lineId; } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/RQualityParameterPO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/RQualityParameterPO.java index 447e03b0b..b8888bad5 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/RQualityParameterPO.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/RQualityParameterPO.java @@ -44,17 +44,17 @@ public class RQualityParameterPO implements Serializable { * 监测点-母线-变电站匹配个数 */ @ApiModelProperty(name = "matchingCount",value = "监测点-母线-变电站匹配个数") - private String matchingCount; + private Integer matchingCount; /** * 监测点-母线-变电站匹配个率 */ @ApiModelProperty(name = "matchingRate",value = "监测点-母线-变电站匹配个率") - private String matchingRate; + private Float matchingRate; /** * 监测点台账完整率 */ @ApiModelProperty(name = "monitoringIntegrityRate",value = "监测点台账完整率") - private String monitoringIntegrityRate; + private Float monitoringIntegrityRate; /** * 数据类型,字典表(01:主网测点 02:配网测点) */ diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/RQualityParameterVO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/RQualityParameterVO.java index 4d38fc39e..97fec65c2 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/RQualityParameterVO.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/RQualityParameterVO.java @@ -40,25 +40,25 @@ public class RQualityParameterVO implements Serializable { * 监测点数量 */ @ApiModelProperty(name = "measurementCount",value = "监测点数量") - private String measurementCount; + private Integer measurementCount; /** * 监测点-母线-变电站匹配个数 */ @ApiModelProperty(name = "matchingCount",value = "监测点-母线-变电站匹配个数") - private String matchingCount; + private Integer matchingCount; /** * 监测点-母线-变电站匹配个率 */ @ApiModelProperty(name = "matchingRate",value = "监测点-母线-变电站匹配个率") - private String matchingRate; + private Float matchingRate; /** * 监测点台账完整率 */ @ApiModelProperty(name = "monitoringIntegrityRate",value = "监测点台账完整率") - private String monitoringIntegrityRate; + private Float monitoringIntegrityRate; /** * 数据类型,字典表(01:主网测点 02:配网测点) diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsGeneratrixWireMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsGeneratrixWireMapper.java index a0293a2ff..f3270cb01 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsGeneratrixWireMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/PmsGeneratrixWireMapper.java @@ -55,4 +55,13 @@ public interface PmsGeneratrixWireMapper extends MppBaseMapper { * @date 2023/5/11 */ List getGeneratrixWireList(); + + /** + * @Description: 监测点和线路关系 + * @param + * @return: java.util.List + * @Author: wr + * @Date: 2023/10/11 13:57 + */ + List getWireAndMonitor(); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/PmsGeneratrixWireMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/PmsGeneratrixWireMapper.xml index f1054bfc6..14385ded1 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/PmsGeneratrixWireMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/PmsGeneratrixWireMapper.xml @@ -125,7 +125,17 @@ on pms_generatrix_wire.Station_Id = pms_statation_stat.Power_Id where pms_generatrix_wire.status = 1 - + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/distribution/impl/PwDataQualityStatServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/distribution/impl/PwDataQualityStatServiceImpl.java index c0736e1f2..8c45596ac 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/distribution/impl/PwDataQualityStatServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/distribution/impl/PwDataQualityStatServiceImpl.java @@ -92,7 +92,7 @@ public class PwDataQualityStatServiceImpl implements PwDataQualityStatService { BeanUtils.copyProperties(po, vo); vo.setOrgName(deptDTOMap.get(vo.getOrgNo()).getName()); vo.setMeasurementCompleteQuantity(Double.toString( - Integer.parseInt(po.getMeasurementCount()) * Double.parseDouble(po.getMonitoringIntegrityRate()) + Integer.parseInt(po.getMeasurementCount()) * po.getMonitoringIntegrityRate() )); return vo; }).collect(Collectors.toList()); diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java index 647ce87db..6dca3bfe5 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java @@ -17,6 +17,8 @@ import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.utils.COverlimitUtil; import com.njcn.device.pms.mapper.majornetwork.*; import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; +import com.njcn.device.pms.pojo.dto.PmsStatationStatInfoDTO; +import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam; import com.njcn.device.pms.pojo.po.*; import com.njcn.device.pms.service.ledgerManger.DeptLineService; import com.njcn.device.pms.service.ledgerManger.CommTerminalService; @@ -174,6 +176,10 @@ public class CommTerminalServiceImpl implements CommTerminalService { List statationStatList = statationStatMapper.selectList(new LambdaQueryWrapper().eq(StatationStat::getStatus, 1)); Map> map = statationStatList.stream().collect(Collectors.groupingBy(StatationStat::getOrgId)); + //获取监测点信息 + List statationStatInfo = statationStatMapper.getStatationStatInfo(new PmsStatationStatInfoParam()); + Map> statationAndMonitorMap = statationStatInfo.stream().collect(Collectors.groupingBy(PmsStatationStatInfoDTO::getOrgId)); + //List pmsMonitorBaseDTOList = distributionMonitorMapper.getDisMonitorAllList(null, 0); //Map> mapPms = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getOrgId)); @@ -187,15 +193,21 @@ public class CommTerminalServiceImpl implements CommTerminalService { if (CollectionUtil.isNotEmpty(deptIds)) { List lineList = new ArrayList<>(); List lineListPw = new ArrayList<>(); + List statationList = new ArrayList<>(); deptIds.forEach(i -> { if (map.containsKey(i)) { lineList.addAll(map.get(i).stream().map(StatationStat::getPowerId).distinct().collect(Collectors.toList())); + + } + if(statationAndMonitorMap.containsKey(i)){ + statationList.addAll(statationAndMonitorMap.get(i).stream().filter(x->x.getPowerId()!=null).map(PmsStatationStatInfoDTO::getMonitorId).collect(Collectors.toList())); } /*if (mapPms.containsKey(i)) { lineListPw.addAll(mapPms.get(i).stream().map(PmsMonitorBaseDTO::getPowerrId).distinct().collect(Collectors.toList())); }*/ }); deptGetSubStationDTO.setStationIds(lineList.stream().distinct().collect(Collectors.toList())); + deptGetSubStationDTO.setStationAndMonitorIDs(statationList.stream().distinct().collect(Collectors.toList())); deptGetSubStationDTO.setPwStationIds(lineListPw.stream().distinct().collect(Collectors.toList())); } @@ -212,6 +224,10 @@ public class CommTerminalServiceImpl implements CommTerminalService { List generatrixWireList = pmsGeneratrixWireMapper.getGeneratrixWireList(); Map> map = generatrixWireList.stream().collect(Collectors.groupingBy(GeneratrixWire::getOrgId)); + //获取主网,线路和监测点关系个数 + List wireAndMonitor = pmsGeneratrixWireMapper.getWireAndMonitor(); + Map> wireAndMonitorMap = wireAndMonitor.stream().collect(Collectors.groupingBy(GeneratrixWire::getOrgId)); + /*List pmsMonitorBaseDTOList = distributionMonitorMapper.getDisMonitorAllList(null, 0); Map> mapPms = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getOrgId)); */ @@ -225,15 +241,20 @@ public class CommTerminalServiceImpl implements CommTerminalService { if (CollectionUtil.isNotEmpty(deptIds)) { List lineList = new ArrayList<>(); List lineListPw = new ArrayList<>(); + List wireAndMonitorList = new ArrayList<>(); deptIds.forEach(i -> { if (map.containsKey(i)) { lineList.addAll(map.get(i).stream().map(GeneratrixWire::getId).collect(Collectors.toList())); } + if(wireAndMonitorMap.containsKey(i)){ + wireAndMonitorList.addAll(wireAndMonitorMap.get(i).stream().map(GeneratrixWire::getId).collect(Collectors.toList())); + } /* if (mapPms.containsKey(i)) { lineListPw.addAll(mapPms.get(i).stream().map(PmsMonitorBaseDTO::getLineId).collect(Collectors.toList())); }*/ }); deptGetBusBarDTO.setBusBarIds(lineList); + deptGetBusBarDTO.setBusBarAndMonitorIDs(wireAndMonitorList); deptGetBusBarDTO.setPwBusBarIds(lineListPw); } result.add(deptGetBusBarDTO); diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/ROperatingIndexMServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/ROperatingIndexMServiceImpl.java index f708bd053..0f0b0750d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/ROperatingIndexMServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/ROperatingIndexMServiceImpl.java @@ -72,9 +72,12 @@ public class ROperatingIndexMServiceImpl extends ServiceImpl @@ -73,7 +73,8 @@ select DISTINCT pq_dept_line.id unitId, - substation.id ledgerId + substation.id ledgerId, + point.id lineId from pq_dept_line pq_dept_line inner join pq_line point on pq_dept_line.line_id = point.id inner join pq_line_detail lineDetail on point.id = lineDetail.id diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java index a65146067..ddee3e50c 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java @@ -2,6 +2,7 @@ package com.njcn.device.pq.service; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; +import com.njcn.device.biz.pojo.dto.TerminalGetBase; import com.njcn.device.pq.pojo.po.DeptLine; import com.njcn.web.pojo.param.DeptLineParam; @@ -89,7 +90,7 @@ public interface DeptLineService extends IService { * @author cdf * @date 2023/5/10 */ - Map> orgSubStationGet(List devType); + Map> orgSubStationGet(List devType); /** diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java index edcb2a2da..df26743ba 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java @@ -115,7 +115,7 @@ public class CommTerminalServiceImpl implements CommTerminalService { public List deptSubStation(DeptGetLineParam deptGetLineParam) { List result = new ArrayList<>(); List temDept = getDeptChildrenByParent(deptGetLineParam); - Map> map = deptLineService.orgSubStationGet(filterDataTypeNew(deptGetLineParam.getServerName())); + Map> map = deptLineService.orgSubStationGet(filterDataTypeNew(deptGetLineParam.getServerName())); temDept.forEach(item -> { DeptGetSubStationDTO deptGetSubStationDTO = new DeptGetSubStationDTO(); deptGetSubStationDTO.setUnitId(item.getUnitId()); @@ -123,13 +123,16 @@ public class CommTerminalServiceImpl implements CommTerminalService { deptGetSubStationDTO.setUnitChildrenList(item.getUnitChildrenList()); List deptIds = item.getUnitChildrenList(); if (CollectionUtil.isNotEmpty(deptIds)) { + List subList = new ArrayList<>(); List lineList = new ArrayList<>(); deptIds.forEach(i -> { if (map.containsKey(i)) { - lineList.addAll(map.get(i)); + subList.addAll(map.get(i).stream().map(TerminalGetBase::getLedgerId).collect(Collectors.toList())); + lineList.addAll(map.get(i).stream().map(TerminalGetBase::getLineId).collect(Collectors.toList())); } }); - deptGetSubStationDTO.setStationIds(lineList); + deptGetSubStationDTO.setStationIds(subList); + deptGetSubStationDTO.setStationAndMonitorIDs(lineList); } result.add(deptGetSubStationDTO); }); @@ -148,13 +151,16 @@ public class CommTerminalServiceImpl implements CommTerminalService { deptGetBusBarDTO.setUnitChildrenList(item.getUnitChildrenList()); List deptIds = item.getUnitChildrenList(); if (CollectionUtil.isNotEmpty(deptIds)) { + List busBarList = new ArrayList<>(); List lineList = new ArrayList<>(); deptIds.forEach(i -> { if (map.containsKey(i)) { - lineList.addAll(map.get(i).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList())); + busBarList.addAll(map.get(i).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList())); + lineList.addAll(map.get(i).stream().map(LineDevGetDTO::getDevId).collect(Collectors.toList())); } }); - deptGetBusBarDTO.setBusBarIds(lineList); + deptGetBusBarDTO.setBusBarIds(busBarList); + deptGetBusBarDTO.setBusBarAndMonitorIDs(lineList); } result.add(deptGetBusBarDTO); }); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java index 8093cfbe0..88ce54751 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java @@ -99,9 +99,9 @@ public class DeptLineServiceImpl extends ServiceImpl i } @Override - public Map> orgSubStationGet(List devDataType) { + public Map> orgSubStationGet(List devDataType) { List deptLines = deptLineMapper.orgSubStationGet(devDataType); - return deptLines.stream ().collect (Collectors.groupingBy (TerminalGetBase::getUnitId, Collectors.mapping (TerminalGetBase::getLedgerId,Collectors.toList ()))); + return deptLines.stream ().collect (Collectors.groupingBy (TerminalGetBase::getUnitId)); } @Override diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RQualityParameterM.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RQualityParameterM.java new file mode 100644 index 000000000..590614c7e --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RQualityParameterM.java @@ -0,0 +1,68 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 监测指标数据质量问题汇总统计-月表 + *

+ * + * @author wr + * @since 2023-10-09 + */ +@Getter +@Setter +@TableName("r_quality_parameter_m") +@ApiModel(value = "RQualityParameterM对象", description = "监测指标数据质量问题汇总统计-月表") +public class RQualityParameterM { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("单位ID") + @MppMultiId("org_no") + private String orgNo; + + @ApiModelProperty("时间") + @MppMultiId("data_date") + private LocalDateTime dataDate; + + @ApiModelProperty("监测点数量") + @TableField("measurement_count") + private Integer measurementCount; + + @ApiModelProperty("有效接入监测点数量") + @TableField("effective_access_measurement_count") + private Integer effectiveAccessMeasurementCount; + + @ApiModelProperty("存在数据质量问题监测点") + @TableField("problem") + private Integer problem; + + @ApiModelProperty("监测点-母线-变电站匹配个数") + @TableField("matching_count") + private Integer matchingCount; + + @ApiModelProperty("监测点-母线-变电站匹配个率") + @TableField("matching_rate") + private Float matchingRate; + + @ApiModelProperty("监测点台账完整率") + @TableField("monitoring_integrity_rate") + private Float monitoringIntegrityRate; + + @ApiModelProperty("数据类型,字典表(01:主网测点 02:配网测点)") + @MppMultiId("data_type") + private String dataType; + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RQualityParameterMController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RQualityParameterMController.java new file mode 100644 index 000000000..5970e3e5e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RQualityParameterMController.java @@ -0,0 +1,61 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.BizParamConstant; +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.common.utils.NjcnDateUtils; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RQualityParameterMService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import com.njcn.web.controller.BaseController; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 监测指标数据质量问题汇总统计-月表 前端控制器 + *

+ * + * @author wr + * @since 2023-10-09 + */ + +@Slf4j +@RestController +@RequestMapping("/rQualityParameterM") +@Api(tags = "监测指标数据质量问题汇总统计") +@RequiredArgsConstructor +public class RQualityParameterMController extends BaseController { + + private final RQualityParameterMService rQualityParameterMService; + + + @ApiOperation("监测指标数据质量问题汇总统计(r_quality_parameter_m表数据)") + @ApiImplicitParam(value = "jobParam", name = "jobParam", required = true) + @PostMapping("rQualityParameterMHandler") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult rQualityParameterMHandler(@RequestBody LineParam jobParam) { + log.info(LocalDateTime.now() + "rQualityParameterMHandler开始执行"); + String methodDescribe = getMethodDescribe("rQualityParameterMHandler"); + rQualityParameterMService.rQualityParameterMHandler(jobParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + + } +} + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RQualityParameterMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RQualityParameterMMapper.java new file mode 100644 index 000000000..f9e1cead3 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RQualityParameterMMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.RQualityParameterM; + +/** + *

+ * 监测指标数据质量问题汇总统计-月表 Mapper 接口 + *

+ * + * @author wr + * @since 2023-10-09 + */ +public interface RQualityParameterMMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RQualityParameterMMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RQualityParameterMMapper.xml new file mode 100644 index 000000000..402d5980b --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RQualityParameterMMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RQualityParameterMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RQualityParameterMService.java new file mode 100644 index 000000000..cb5c5134e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RQualityParameterMService.java @@ -0,0 +1,25 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.mysql.RQualityParameterM; +import com.njcn.prepare.harmonic.pojo.param.LineParam; + +/** + *

+ * 监测指标数据质量问题汇总统计-月表 服务类 + *

+ * + * @author wr + * @since 2023-10-09 + */ +public interface RQualityParameterMService extends IMppService { + + /** + * @Description: 监测指标数据质量问题汇总统计算法 + * @param jobParam + * @Author: wr + * @Date: 2023/10/9 10:21 + */ + void rQualityParameterMHandler(LineParam jobParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java new file mode 100644 index 000000000..bdd157a54 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java @@ -0,0 +1,141 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.utils.PubUtils; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.*; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.harmonic.pojo.po.ROperatingIndexMPO; +import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RQualityParameterMMapper; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; +import com.njcn.prepare.harmonic.pojo.mysql.RQualityParameterM; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexMPOService; +import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RQualityParameterMService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + + +/** + *

+ * 监测指标数据质量问题汇总统计-月表 服务实现类 + *

+ * + * @author wr + * @since 2023-10-09 + */ +@Service +@RequiredArgsConstructor +public class RQualityParameterMServiceImpl extends MppServiceImpl implements RQualityParameterMService { + + private final ROperatingIndexMPOService rOperatingIndexMPOService; + private final CommTerminalGeneralClient commTerminalGeneralClient; + private final DeptFeignClient deptFeignClient; + private final DicDataFeignClient dicDataFeignClient; + private final ROperatingMonitorService rOperatingMonitorDService; + @Override + @Async("asyncExecutor") + @Transactional(rollbackFor = {Exception.class}) + public void rQualityParameterMHandler(LineParam jobParam) { + //获取主网id + DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.MAINNET_POINT.getCode()).getData(); + + List info = new ArrayList(); + Dept dept = deptFeignClient.getRootDept().getData(); + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + deptGetLineParam.setDeptId(dept.getId()); + List deptGetBaseList = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); + //获取线路信息 + List busBarList = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); + Map> busBarMap = busBarList.stream().collect(Collectors.toMap(DeptGetBusBarDTO::getUnitId, DeptGetBusBarDTO::getBusBarAndMonitorIDs)); + + //获取线路信息 + List subStationList = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData(); + Map> subStationMap = subStationList.stream().collect(Collectors.toMap(DeptGetSubStationDTO::getUnitId, DeptGetSubStationDTO::getStationAndMonitorIDs)); + + + //获取监测点数量和在运监测点 + List list = rOperatingIndexMPOService.list(new LambdaQueryWrapper() + .ge(ROperatingIndexMPO::getDataDate, jobParam.getBeginTime()) + .le(ROperatingIndexMPO::getDataDate, jobParam.getEndTime()) + ); + + + Map orgMonitorNumMap = list.stream().collect(Collectors.toMap(ROperatingIndexMPO::getOrgNo, Function.identity())); + RQualityParameterM rQualityParameterM; + for (DeptGetChildrenMoreDTO deptGetBase : deptGetBaseList) { + rQualityParameterM = new RQualityParameterM(); + if (orgMonitorNumMap.containsKey(deptGetBase.getUnitId())) { + ROperatingIndexMPO rOperatingIndexMPO = orgMonitorNumMap.get(deptGetBase.getUnitId()); + rQualityParameterM.setMeasurementCount(rOperatingIndexMPO.getMeasurementRunPoints()); + rQualityParameterM.setEffectiveAccessMeasurementCount(rOperatingIndexMPO.getEffectiveAccessMeasurementCount()); + //查询数据异常的监测点 + if(CollUtil.isNotEmpty(deptGetBase.getLineBaseList())){ + List lineIds = deptGetBase.getLineBaseList().stream().map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList()); + int num = rOperatingMonitorDService.count(new LambdaQueryWrapper() + .in(ROperatingMonitorDPO::getMeasurementPointId, lineIds) + .eq(ROperatingMonitorDPO::getIsUnusual, 0) + .ge(ROperatingMonitorDPO::getDataDate, jobParam.getBeginTime()) + .le(ROperatingMonitorDPO::getDataDate, jobParam.getEndTime()) + ); + rQualityParameterM.setProblem(num); + }else{ + rQualityParameterM.setProblem(0); + } + if(busBarMap.containsKey(deptGetBase.getUnitId())&&subStationMap.containsKey(deptGetBase.getUnitId())){ + List ids1 = busBarMap.get(deptGetBase.getUnitId()); + List ids2 = subStationMap.get(deptGetBase.getUnitId()); + Integer sum = ids1.stream().filter(ids2::contains).collect(Collectors.toList()).size(); + rQualityParameterM.setMatchingCount(sum); + Integer matchingCount = rQualityParameterM.getMatchingCount(); + if(matchingCount!=null&&matchingCount!=0){ + BigDecimal round = NumberUtil.round(sum / matchingCount * 1.0, 2); + rQualityParameterM.setMatchingRate(round.floatValue()*100); + }else{ + rQualityParameterM.setMatchingCount(0); + rQualityParameterM.setMatchingRate(0.0f); + } + }else{ + rQualityParameterM.setMatchingCount(0); + rQualityParameterM.setMatchingRate(0.0f); + } + } else { + rQualityParameterM.setMeasurementCount(0); + rQualityParameterM.setEffectiveAccessMeasurementCount(0); + rQualityParameterM.setProblem(0); + rQualityParameterM.setMatchingCount(0); + rQualityParameterM.setMatchingRate(0.0F); + } + rQualityParameterM.setMonitoringIntegrityRate(100.0F); + rQualityParameterM.setDataDate(PubUtils.localDateTimeFormat(jobParam.getDataDate() + " " + "00:00:00")); + rQualityParameterM.setOrgNo(deptGetBase.getUnitId()); + rQualityParameterM.setDataType(data.getId()); + + info.add(rQualityParameterM); + } + List collect = info.stream().filter(x -> x.getMatchingCount() > 0).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(info)) { +// this.saveOrUpdateBatchByMultiId(info, 500); + } + } +}