From f181b9bbb2121935bccfc0b2d5f86c75df701b2a Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Sun, 2 Jun 2024 17:45:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BB=88=E7=AB=AF=E5=92=8C=E4=B8=BB=E9=85=8D?= =?UTF-8?q?=E7=BD=91=E7=9B=91=E6=B5=8B=E7=82=B9=EF=BC=8C=E5=9B=BD=E7=BD=91?= =?UTF-8?q?=E4=B8=8B=E7=A9=BF=E6=8E=A5=E5=8F=A3=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/pojo/param/gw/GwStatisticalParam.java | 55 +++ .../pms/pojo/param/gw/GwTerminalParam.java | 29 ++ .../device/pms/pojo/vo/gw/Statistical.java | 90 ++++ .../gwPush/MonitorStatisticalController.java | 57 +++ .../majornetwork/RStatIntegrityDMapper.java | 15 + .../mapper/mapping/RStatIntegrityDMapper.xml | 32 ++ .../gwPush/MonitorStatisticsService.java | 22 + .../impl/MonitorStatisticsServiceImpl.java | 412 +++++++++++++++++- .../majornetwork/impl/MonitorServiceImpl.java | 5 +- .../mapping/RStatLimitTargetDMapper.xml | 71 ++- 10 files changed, 761 insertions(+), 27 deletions(-) create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwStatisticalParam.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwTerminalParam.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/Statistical.java create mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticalController.java diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwStatisticalParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwStatisticalParam.java new file mode 100644 index 000000000..d8d45fd46 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwStatisticalParam.java @@ -0,0 +1,55 @@ +package com.njcn.device.pms.pojo.param.gw; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author wr + * @description + * @date 2024/5/16 9:57 + */ +@Data +public class GwStatisticalParam { + + @ApiModelProperty("统计日期-结束") + private String endDate; + + @ApiModelProperty("导出标识:page-导出本页,all-导出全部") + private String exportFlag; + + @ApiModelProperty("01-在运,02-在线") + private String flag; + + @ApiModelProperty("组织结构id") + private String nodeId; + + @ApiModelProperty("组织结构等级") + private String nodeLevel; + + @ApiModelProperty("单位id") + private String orgId; + + @ApiModelProperty("单位名称") + private String orgLevel; + + @ApiModelProperty("统计日期-开始") + private String startDate; + + @ApiModelProperty("统计日期") + private String statDate; + + @ApiModelProperty("数据类型,01-年数据,02-月数据,03-日数据") + private String statType; + + @ApiModelProperty("01-变电站,02-换流站,03-电气化铁路,04-风电场,05-光伏电站,06-冶炼负荷,07-重要敏感用户,08-其他") + private String stationType; + + @ApiModelProperty("页码") + private Integer pageNum; + + @ApiModelProperty("每页条数") + private Integer pageSize; + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwTerminalParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwTerminalParam.java new file mode 100644 index 000000000..780d77956 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/GwTerminalParam.java @@ -0,0 +1,29 @@ +package com.njcn.device.pms.pojo.param.gw; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author wr + * @description 查询监测终端数据列表入参 + * @date 2024/5/29 15:56 + */ +@Data +public class GwTerminalParam { + + + @ApiModelProperty("设备状态:10:未投运;20:在运;30:退役;31:现场留用;33:待报废;40:报废;50:再利用;60:备品备件;70:调拨。") + private List deployState; + + @ApiModelProperty("设备类型") + private String deviceType; + + @ApiModelProperty("页码") + private Integer pageNum; + + @ApiModelProperty("每页条数") + private Integer pageSize; + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/Statistical.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/Statistical.java new file mode 100644 index 000000000..4e4c66faf --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/Statistical.java @@ -0,0 +1,90 @@ +package com.njcn.device.pms.pojo.vo.gw; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wr + * @description + * @date 2024/5/29 16:06 + */ +@Data +public class Statistical { + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("实收数") + private String actualCollectNum; + + @ApiModelProperty("监测母线id") + private String busId; + + @ApiModelProperty("母线名称") + private String busName; + + @ApiModelProperty("所属地市") + private String cityId; + + @ApiModelProperty("所属地市名称") + private String cityName; + + @ApiModelProperty("数据完整率") + private String dataFullRate; + + @ApiModelProperty("应收数") + private String expectCollectNum; + + @ApiModelProperty("运维单位") + private String maintOrg; + + @ApiModelProperty("运维单位名称") + private String maintOrgName; + + @ApiModelProperty("监测点Id") + private String monitorId; + + @ApiModelProperty("监测点名称") + private String monitorName; + + @ApiModelProperty("监测对象名称") + private String monitorObjName; + + @ApiModelProperty("监测对象大类") + private String monitorObjPre; + + @ApiModelProperty("监测对象大类名称") + private String monitorObjPreName; + + @ApiModelProperty("监测点类别") + private String monitorType; + + @ApiModelProperty("监测点类别名称") + private String monitorTypeName; + + @ApiModelProperty("在线日期") + private String onlineDate; + + @ApiModelProperty("主键") + private String psrId; + + @ApiModelProperty("所属电站id") + private String stationId; + + @ApiModelProperty("所属电站名称") + private String stationName; + + @ApiModelProperty("监测点状态") + private String status; + + @ApiModelProperty("监测点状态名称") + private String statusName; + + @ApiModelProperty("监测点电压等级") + private String voltageLevel; + + @ApiModelProperty("监测点电压等级名称") + private String voltageLevelName; + + +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticalController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticalController.java new file mode 100644 index 000000000..2029ba12e --- /dev/null +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticalController.java @@ -0,0 +1,57 @@ +package com.njcn.device.pms.controller.gwPush; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam; +import com.njcn.device.pms.pojo.param.gw.GwTerminalParam; +import com.njcn.device.pms.pojo.vo.gw.Statistical; +import com.njcn.device.pms.service.gwPush.MonitorStatisticsService; +import com.njcn.web.pojo.dto.PmsHttpResult; +import com.njcn.web.pojo.dto.PmsPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +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 java.util.Map; + + +/** + * @author wr + * @description + * @date 2024/5/16 9:22 + */ +@Slf4j +@RestController +@RequestMapping("/basicInfo") +@Api(tags = "主配网监测点统计下穿") +@RequiredArgsConstructor +public class MonitorStatisticalController { + + private final MonitorStatisticsService monitorStatisticsService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/Equipment/getMonitorTerminalData") + @ApiOperation("查询监测终端数据列表") + @ApiImplicitParam(name = "param", value = "实体参数", required = true) + public PmsHttpResult>> getMonitorTerminalData(@RequestBody GwTerminalParam param) { + PmsPage> PmsPage = monitorStatisticsService.getMonitorTerminalData(param); + return new PmsHttpResult<>(0, PmsPage); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/jcd/getMonitorStatisticalDetailList") + @ApiOperation("查询主配网监测点统计") + @ApiImplicitParam(name = "param", value = "实体参数", required = true) + public PmsHttpResult> getMonitorStatisticalDetailList(@RequestBody GwStatisticalParam param) { + PmsPage PmsPage = monitorStatisticsService.getMonitorStatisticalDetailList(param);; + return new PmsHttpResult<>(0, PmsPage); + } + +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/RStatIntegrityDMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/RStatIntegrityDMapper.java index f3041341a..491fb62be 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/RStatIntegrityDMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/RStatIntegrityDMapper.java @@ -4,6 +4,7 @@ package com.njcn.device.pms.mapper.majornetwork; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pms.pojo.dto.MonitorIntegrityDataDTO; +import com.njcn.device.pms.pojo.param.DataQualityDetailsParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.po.LineDataIntegrity; @@ -26,4 +27,18 @@ public interface RStatIntegrityDMapper extends BaseMapper { Page getMonitorIntegrityData (@Param("page") Page page,@Param("monitorIntegrityDataDTO")MonitorIntegrityDataDTO monitorIntegrityDataDTO,@Param("ids")List ids); + + /** + * @Description: 实收数大于0的,监测点数据完整率信息 + * @param monitorIds 监测点id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param type 是否判断实收数大于0 + * @Date: 2024/5/30 9:48 + */ + List getMonitorRealTimeBeZero(@Param("monitorIds") List monitorIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime, + @Param("type") Integer type + ); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/RStatIntegrityDMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/RStatIntegrityDMapper.xml index ac27a0ef4..01216e575 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/RStatIntegrityDMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/RStatIntegrityDMapper.xml @@ -21,5 +21,37 @@ + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java index 6837bd237..489196f74 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java @@ -1,8 +1,13 @@ package com.njcn.device.pms.service.gwPush; +import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam; +import com.njcn.device.pms.pojo.param.gw.GwTerminalParam; import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy; +import com.njcn.device.pms.pojo.vo.gw.Statistical; +import com.njcn.web.pojo.dto.PmsPage; import java.util.List; +import java.util.Map; /** * 国网台账类上送 @@ -22,4 +27,21 @@ public interface MonitorStatisticsService { * @Date: 2024/3/22 9:49 */ List getGwMonitorEnergy(String deptId); + + + /** + * @Description: 查询监测终端数据列表 + * @param param + * @Author: wr + * @Date: 2024/5/29 16:22 + */ + PmsPage> getMonitorTerminalData(GwTerminalParam param); + + /** + * @Description: 查询主配网监测点统计 + * @param param + * @Author: wr + * @Date: 2024/5/29 16:32 + */ + PmsPage getMonitorStatisticalDetailList(GwStatisticalParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java index 6cefccaa3..19ff6e599 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java @@ -1,21 +1,31 @@ package com.njcn.device.pms.service.gwPush.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.device.biz.pojo.dto.DeptGetBase; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.pms.mapper.majornetwork.MonitorMapper; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.device.pms.pojo.po.PmsNewEnergy; +import com.njcn.device.pms.mapper.majornetwork.PmsGeneratrixWireMapper; +import com.njcn.device.pms.mapper.majornetwork.RStatIntegrityDMapper; +import com.njcn.device.pms.mapper.majornetwork.StatationStatMapper; +import com.njcn.device.pms.pojo.param.gw.GwStatisticalParam; +import com.njcn.device.pms.pojo.param.gw.GwTerminalParam; +import com.njcn.device.pms.pojo.po.*; import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy; +import com.njcn.device.pms.pojo.vo.gw.Statistical; import com.njcn.device.pms.service.gwPush.IPmsNewEnergyService; import com.njcn.device.pms.service.gwPush.MonitorStatisticsService; import com.njcn.device.pms.service.ledgerManger.CommTerminalService; +import com.njcn.device.pms.service.majornetwork.ITerminalService; +import com.njcn.device.pms.service.majornetwork.ITractionStationService; +import com.njcn.device.pq.pojo.vo.RStatIntegrityVO; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataTypeEnum; @@ -25,10 +35,12 @@ import com.njcn.system.pojo.po.SysDicTreePO; import com.njcn.system.pojo.vo.DictTreeVO; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.pojo.dto.PmsPage; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -45,9 +57,15 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { private final CommTerminalService commTerminalService; private final DictTreeFeignClient dictTreeFeignClient; private final IPmsNewEnergyService pmsNewEnergyService; - private final MonitorMapper monitorIdList; + private final MonitorMapper monitorMapper; private final DeptFeignClient deptFeignClient; private final DicDataFeignClient dicDataFeignClient; + private final RStatIntegrityDMapper integrityDMapper; + private final PmsGeneratrixWireMapper generatrixWireMapper; + private final StatationStatMapper statationStatMapper; + private final ITractionStationService tractionStationService; + private final ITerminalService terminalService; + @Override public List> getGwMonitorStatistics(String deptId) { List> info = new ArrayList<>(); @@ -94,7 +112,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { line = new ArrayList<>(); line.add(deptMonitor.getUnitName()); List lineBaseList = deptMonitor.getLineBaseList(); - if(CollUtil.isEmpty(lineBaseList)){ + if (CollUtil.isEmpty(lineBaseList)) { continue; } List upToGridList = lineBaseList.stream().filter(item -> Objects.equals(item.getIsUpToGrid(), DataStateEnum.ENABLE.getCode())) @@ -110,7 +128,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { public List getGwMonitorEnergy(String deptId) { List data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); - List> voltage=new ArrayList<>(); + List> voltage = new ArrayList<>(); //220kv电压等级 List than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList()); //110kv电压等级 @@ -123,7 +141,7 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { voltage.add(than220kv); voltage.add(than110kv); voltage.add(lessThan110kv); - List totalVoltage=new ArrayList<>(); + List totalVoltage = new ArrayList<>(); totalVoltage.addAll(than220kv); totalVoltage.addAll(than110kv); totalVoltage.addAll(lessThan110kv); @@ -143,9 +161,9 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { dictTreeVOS.add(windFarms); for (DeptGetBase pmsGeneralDeviceDTO : deptChildrenByParent) { monitorEnergy = new MonitorEnergy(); - list=new ArrayList<>(); + list = new ArrayList<>(); monitorEnergy.setOrgName(pmsGeneralDeviceDTO.getUnitName()); - List monitors = monitorIdList.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId())); + List monitors = monitorMapper.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId())); //获取场站台账信息 List newEnergies = pmsNewEnergyService.list(new LambdaQueryWrapper() .in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId())) @@ -162,18 +180,18 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { List voltageInfos = new ArrayList<>(); for (List strings : voltage) { - MonitorEnergy.VoltageInfo info=new MonitorEnergy.VoltageInfo(); + MonitorEnergy.VoltageInfo info = new MonitorEnergy.VoltageInfo(); long monitorNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTractionId).distinct().count(); info.setMonitorNum(monitorNum); long totalNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getId).distinct().count(); info.setTotalNum(totalNum); - info.setMonitorRate(totalNum==0?0:NumberUtil.div(monitorNum*100.0, totalNum, 2)); + info.setMonitorRate(totalNum == 0 ? 0 : NumberUtil.div(monitorNum * 100.0, totalNum, 2)); long deviceNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTerminalId).distinct().count(); info.setDeviceNum(deviceNum); long SubsNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getPowerrId).distinct().count(); long SubstationsNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getPowerrName).distinct().count(); info.setSubstationsNum(SubstationsNum); - info.setSubstationsRate(SubstationsNum==0?0:NumberUtil.div(SubsNum*100.0, SubstationsNum, 2)); + info.setSubstationsRate(SubstationsNum == 0 ? 0 : NumberUtil.div(SubsNum * 100.0, SubstationsNum, 2)); voltageInfos.add(info); } @@ -186,26 +204,374 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { return monitorEnergyList; } + @Override + public PmsPage> getMonitorTerminalData(GwTerminalParam param) { + + //终端状态 + List devStatus = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_STATUS.getCode()).getData(); + List devStatusIds = devStatus.stream().filter(x -> param.getDeployState().contains(x.getValue())).map(DictData::getId).collect(Collectors.toList()); + Map mapDevStatus = devStatus.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + + + //测量信号输入形式 + List signal = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INPUT_SIGNAL.getCode()).getData(); + Map mapSignal = signal.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + + //生产厂家 + List manufacture = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData(); + Map mapManufacture = manufacture.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(Monitor::getTerminalId); + lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1); + List monitors = monitorMapper.selectList( lambdaQueryWrapper); + + List terminalIds = monitors.stream().map(Monitor::getTerminalId).collect(Collectors.toList()); + Page page = terminalService.page(new Page<>(param.getPageNum(), param.getPageSize()), + new LambdaQueryWrapper() + .in(PmsTerminal::getId, terminalIds) + .in(CollUtil.isNotEmpty(devStatusIds), PmsTerminal::getTerminalState,devStatusIds) + ); + List records = page.getRecords(); + List> info = new ArrayList<>(); + Map map; + for (PmsTerminal terminal : records) { + map = new LinkedHashMap<>(); + //电能质量监测装置 + map.put("deviceKind", ""); + //运维单位ID + map.put("maintOrg", terminal.getOperationId()); + //信号输出形式 + map.put("signalInputForm", ""); + //电站类型 + map.put("stationType", ""); + //设备增加方式名称 + map.put("source#Name", ""); + //设备增加方式 + map.put("source", ""); + //电流输出变化 + map.put("currsigInputChanqutity", ""); + //资产单位名称 + map.put("astOrg#Name", ""); + //资产单位 + map.put("astOrg", ""); + //屏柜类型 + map.put("cabinetType", ""); + //时间 + map.put("ctime", ""); + //型号 + map.put("model", ""); + //电站名称 + map.put("station#Name", ""); + //设备所有者 + map.put("equipmentOwner", ""); + //制造商编号 + map.put("manufactureNum", ""); + //Ip地址 + map.put("ipAddress", terminal.getIp()); + //设备编码 + map.put("equipCode", ""); + //子网 + map.put("subnetMask", ""); + //设备ID + map.put("astId", ""); + //mac地址 + map.put("macAddress", ""); + //信号输出形式名称 + if (mapSignal.containsKey(terminal.getInputType())) { + DictData dictData = mapSignal.get(terminal.getInputType()); + map.put("signalInputForm#Name", dictData.getName()); + } + //运维单位名称 + map.put("maintOrg#Name", terminal.getOperationName()); + //名字 + map.put("name", terminal.getName()); + //装置等级 + map.put("deviceLevel", ""); + //工程编号 + map.put("projectNum", ""); + //工程名称 + map.put("projectName", ""); + //操作日期 + map.put("operateDate", ""); + + //设备状态 + if (mapDevStatus.containsKey(terminal.getTerminalState())) { + DictData dictData = mapDevStatus.get(terminal.getTerminalState()); + //设备状态字典 + map.put("deployState", dictData.getValue()); + //设备状态字典名称 + map.put("deployState#Name", dictData.getName()); + } + + //硬盘容量 + map.put("hardDiskCapacity", ""); + //城市 + map.put("city", ""); + //时间同步 + map.put("timeSynchronization", ""); + //资产性质 + map.put("astNature", ""); + + //生产厂家 + if (mapManufacture.containsKey(terminal.getManufacture())) { + DictData dictData = mapManufacture.get(terminal.getManufacture()); + map.put("manufacturer", dictData.getName()); + } + + //设备所属名称 + map.put("astOrgName", ""); + //电压信号输入变化 + map.put("voltsigInputChanqutity", ""); + //运行编号 + map.put("runDevName", ""); + //设备电源电压 + map.put("devPowerVoltage", ""); + //变电站 + map.put("station", ""); + //制造日期 + map.put("manufactureDate", ""); + //资产性质名称 + map.put("astNature#Name", ""); + //端口编号 + map.put("portNum", ""); + //保养组名称 + map.put("maintGroup#Name", ""); + //保养组 + map.put("maintGroup", ""); + //制造商名称 + map.put("manufacturer#Name", ""); + //发现日期 + map.put("detectDate", ""); + //城市名称 + map.put("city#Name", ""); + //变电站类型名称 + map.put("stationType#Name", ""); + + //设备级别名称 + map.put("deviceLevel#Name", ""); + //储藏柜 + map.put("cabinet", ""); + //网关 + map.put("gateway", ""); + //电站电压等级名称 + map.put("stationVoltageLevelName", ""); + //终端识别码 + map.put("terminalIdentifyCode", ""); + //终端键 + map.put("terminalKey", ""); + info.add(map); + } + PmsPage pmsPage = BeanUtil.copyProperties(page, PmsPage.class); + pmsPage.setList(info); + return null; + } + + @Override + public PmsPage getMonitorStatisticalDetailList(GwStatisticalParam param) { + //在线监测点 监测点实收数量大于0,则标识这个监测点就是在线的 + List monitorRealTimeBeZero = new ArrayList<>(); + List lineIds = new ArrayList<>(); + if ("02".equals(param.getFlag())) { + monitorRealTimeBeZero.addAll(integrityDMapper.getMonitorRealTimeBeZero(null, param.getStartDate(), param.getEndDate(), 0)); + lineIds.addAll(monitorRealTimeBeZero.stream().map(RStatIntegrityVO::getLineIndex).collect(Collectors.toList())); + } + List objTypeIds = new ArrayList<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(param.getOrgId())) { + List data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData(); + lambdaQueryWrapper.in(Monitor::getOrgId, data); + } + String monitorObjPreName; + if ("08".equals(param.getStationType())) { + monitorObjPreName="其他"; + //特殊处理 + List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); + List typicDic = sysDicTreePOList.stream() + .filter(item -> Objects.equals(DicTreeEnum.Trans_Sub.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Converter.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Ele_Railways.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Wind_Farms.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Power_Station.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Smelting_Load.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Imp_Users.getCode(), item.getCode())) + .collect(Collectors.toList()); + + for (SysDicTreePO sysDicTreePO : typicDic) { + List temList = dictTreeFeignClient.query(sysDicTreePO.getId()).getData(); + List ids = temList.stream().map(DictTreeVO::getId).collect(Collectors.toList()); + objTypeIds.addAll(ids); + objTypeIds.add(sysDicTreePO.getId()); + } + lambdaQueryWrapper.notIn(Monitor::getObjType, objTypeIds); + } else { + //01-变电站,02-换流站,03-电气化铁路,04-风电场,05-光伏电站,06-冶炼负荷,07-重要敏感用户,08-其他 + String code; + switch (param.getStationType()) { + case "01": + monitorObjPreName=DicTreeEnum.Trans_Sub.getName(); + code = DicTreeEnum.Trans_Sub.getCode(); + break; + case "02": + monitorObjPreName=DicTreeEnum.Converter.getName(); + code = DicTreeEnum.Converter.getCode(); + break; + case "03": + monitorObjPreName=DicTreeEnum.Ele_Railways.getName(); + code = DicTreeEnum.Ele_Railways.getCode(); + break; + case "04": + monitorObjPreName=DicTreeEnum.Wind_Farms.getName(); + code = DicTreeEnum.Wind_Farms.getCode(); + break; + case "05": + monitorObjPreName=DicTreeEnum.Power_Station.getName(); + code = DicTreeEnum.Power_Station.getCode(); + break; + case "06": + monitorObjPreName=DicTreeEnum.Smelting_Load.getName(); + code = DicTreeEnum.Smelting_Load.getCode(); + break; + case "07": + monitorObjPreName=DicTreeEnum.Imp_Users.getName(); + code = DicTreeEnum.Imp_Users.getCode(); + break; + default: + return new PmsPage<>(param.getPageNum(), param.getPageSize()); + } + String id = dictTreeFeignClient.queryByCode(code).getData().getId(); + List objType = dictTreeFeignClient.query(id).getData(); + objTypeIds.add(id); + if (CollUtil.isNotEmpty(objType)) { + objTypeIds.addAll(objType.stream().map(DictTreeVO::getId).collect(Collectors.toList())); + } + lambdaQueryWrapper.in(Monitor::getObjType, objTypeIds); + } + + //获取监测点信息 + lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1); + lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineIds), Monitor::getId, lineIds); + Page monitorList = monitorMapper.selectPage(new Page<>(param.getPageNum(), param.getPageSize()), lambdaQueryWrapper); + + if (CollUtil.isNotEmpty(monitorList.getRecords())) { + List monitorId = monitorList.getRecords().stream().map(Monitor::getId).distinct().collect(Collectors.toList()); + monitorRealTimeBeZero.addAll(integrityDMapper.getMonitorRealTimeBeZero(monitorId, param.getStartDate(), param.getEndDate(), null)); + } + //线路变电站 + List wireIds = monitorList.getRecords().stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + List powerIds = monitorList.getRecords().stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); + List wiresList = new ArrayList<>(); + List stationStats = new ArrayList<>(); + if (CollUtil.isNotEmpty(lineIds)) { + wiresList.addAll(generatrixWireMapper.selectBatchIds(wireIds)); + } + if (CollUtil.isNotEmpty(powerIds)) { + stationStats.addAll(statationStatMapper.selectBatchIds(powerIds)); + } + Map wireMap = wiresList.stream().collect(Collectors + .toMap(GeneratrixWire::getId, Function.identity())); + Map powerMap = stationStats.stream().collect(Collectors + .toMap(StatationStat::getPowerId, Function.identity())); + //电压等级 + List voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); + Map mapVoltage = voltage.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //运行状态 + List lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + Map mapLineState = lineState.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //分类行业 + List industryType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDUSTRY_TYPE.getCode()).getData(); + Map mapIndustryType = industryType.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //获取已存在牵引站的信息 + List tractionIds = monitorList.getRecords().stream().map(Monitor::getTractionId).collect(Collectors.toList()); + List tractionStationList = new ArrayList<>(); + if (CollUtil.isNotEmpty(powerIds)) { + tractionStationList.addAll(tractionStationService.list(new LambdaQueryWrapper() + .in(TractionStation::getId, tractionIds))); + } + + + Map integrityVOMap = monitorRealTimeBeZero.stream().collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, Function.identity())); + List info = new ArrayList<>(); + Statistical statistical; + + + for (Monitor monitor : monitorList.getRecords()) { + statistical = new Statistical(); + if (integrityVOMap.containsKey(monitor.getId())) { + RStatIntegrityVO integrity = integrityVOMap.get(monitor.getId()); + statistical.setActualCollectNum(integrity.getRealTime().toString()); + statistical.setExpectCollectNum(integrity.getDueTime().toString()); + statistical.setDataFullRate(integrity.getIntegrityRate().toString()); + } else { + statistical.setActualCollectNum("0"); + statistical.setExpectCollectNum("0"); + statistical.setDataFullRate("0"); + } + //母线的电压等级 + if (wireMap.containsKey(monitor.getLineId())) { + GeneratrixWire generatrixWire = wireMap.get(monitor.getLineId()); + statistical.setBusId(generatrixWire.getMidBusId()); + statistical.setBusName(generatrixWire.getName()); + } + statistical.setCityId(monitor.getOrgId()); + statistical.setCityName(monitor.getOrgName()); + statistical.setMaintOrg(monitor.getOperationId()); + statistical.setMaintOrgName(monitor.getOperationName()); + statistical.setMonitorId(monitor.getMonitorId()); + statistical.setMonitorName(monitor.getName()); + statistical.setMonitorObjName(monitor.getMonitorObjectName()); + statistical.setOnlineDate(param.getEndDate()); + statistical.setPsrId(monitor.getId()); + + statistical.setMonitorObjPre(param.getStationType()); + statistical.setMonitorObjPreName(monitorObjPreName); +// statistical.setMonitorType(); +// statistical.setMonitorTypeName(); + //变电站 + if (powerMap.containsKey(monitor.getPowerrId())) { + StatationStat statationStat = powerMap.get(monitor.getPowerrId()); + statistical.setStationId(statationStat.getMidStationId()); + statistical.setStationName(statationStat.getPowerName()); + } + //电压等级 + if (mapVoltage.containsKey(monitor.getVoltageLevel())) { + statistical.setVoltageLevel(String.format("%02d", mapVoltage.get(monitor.getVoltageLevel()).getAlgoDescribe())); + statistical.setVoltageLevelName(mapVoltage.get(monitor.getVoltageLevel()).getName()); + } + //运行状态 + if (mapLineState.containsKey(monitor.getMonitorState())) { + statistical.setStatus(mapLineState.get(monitor.getMonitorState()).getValue()); + statistical.setStatusName(mapLineState.get(monitor.getMonitorState()).getName()); + } + info.add(statistical); + } + PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); + pmsPage.setList(info); + return pmsPage; + } + private List addmetWorkList(Map> mapSourceLoad, List upToGridList, List line) { long total = 0; for (String s : mapSourceLoad.keySet()) { List value = mapSourceLoad.get(s); - long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && - Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode()) - ).map(LineDevGetDTO::getPointId).count(); + long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && + Objects.equals(item.getMonitorUploadStatus(), DataStateEnum.ENABLE.getCode()) + ).map(LineDevGetDTO::getPointId).count(); total += monitorCount; line.add(String.valueOf(monitorCount)); } line.add(String.valueOf(total)); return line; } + private List addSourceLoadList(Map> mapSourceLoad, List upToGridList, List line) { long total = 0; for (String s : mapSourceLoad.keySet()) { List value = mapSourceLoad.get(s); - long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && - Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode()) - ).map(LineDevGetDTO::getPointId).count(); + long monitorCount = upToGridList.stream().filter(item -> value.contains(item.getObjType()) && + Objects.equals(item.getIsUploadHead(), DataStateEnum.ENABLE.getCode()) + ).map(LineDevGetDTO::getPointId).count(); total += monitorCount; line.add(String.valueOf(monitorCount)); } @@ -218,22 +584,24 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { line.add(String.valueOf(total)); return line; } + /** - * - * @param objType 监测点对象类型大类 + * @param objType 监测点对象类型大类 * @param objTypeAll 监测点所有对象类型 * @return */ - private Map> mapDicIds(List objType, List objTypeAll) { + private Map> mapDicIds(List objType, List objTypeAll) { Map> mapKey = new LinkedHashMap<>(); - for(SysDicTreePO load : objType){ + for (SysDicTreePO load : objType) { List ids = objTypeAll.stream().filter(item -> item.getPid().equals(load.getId()) || item.getId().equals(load.getId()) - ).map(SysDicTreePO::getId).collect(Collectors.toList());; + ).map(SysDicTreePO::getId).collect(Collectors.toList()); + ; mapKey.put(load.getCode(), ids); } return mapKey; } + public List getDeptChildrenByParent(String deptId) { List result = new ArrayList<>(); List deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData(); diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java index b267fa347..de375f66d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java @@ -672,7 +672,7 @@ public class MonitorServiceImpl extends ServiceImpl impl List data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData(); lambdaQueryWrapper.in(Monitor::getOrgId, data); } - if (StrUtil.isBlank(param.getStatisticsType())) { + if ("04".equals(param.getStatisticsType())) { //特殊处理 List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); List typicDic = sysDicTreePOList.stream() @@ -702,9 +702,6 @@ public class MonitorServiceImpl extends ServiceImpl impl case "03": code = DicTreeEnum.Power_Station.getCode(); break; - case "04": - code = DicTreeEnum.Imp_Users.getCode(); - break; default: return new Page<>(param.getPageNum(), param.getPageSize()); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml index 33651fc47..eb116efc5 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml @@ -237,7 +237,76 @@ from ( SELECT my_index, - sum( all_time )+sum( flicker_all_time )AS allCount + SUM( freq_dev_overtime )+ + SUM( flicker_overtime ) + + SUM( voltage_dev_overtime )+ + SUM( ubalance_overtime ) + + SUM( uaberrance_overtime ) + + SUM( i_neg_overtime ) + + sum(if((uharm_2_overtime+ + uharm_3_overtime+ + uharm_4_overtime+ + uharm_5_overtime+ + uharm_6_overtime+ + uharm_7_overtime+ + uharm_8_overtime+ + uharm_9_overtime+ + uharm_10_overtime+ + uharm_11_overtime+ + uharm_12_overtime+ + uharm_13_overtime+ + uharm_14_overtime+ + uharm_15_overtime+ + uharm_16_overtime+ + uharm_17_overtime+ + uharm_18_overtime+ + uharm_19_overtime+ + uharm_20_overtime+ + uharm_21_overtime+ + uharm_22_overtime+ + uharm_23_overtime+ + uharm_24_overtime+ + uharm_25_overtime)>0,1,0))+ + sum(if((iharm_2_overtime+ + iharm_3_overtime+ + iharm_4_overtime+ + iharm_5_overtime+ + iharm_6_overtime+ + iharm_7_overtime+ + iharm_8_overtime+ + iharm_9_overtime+ + iharm_10_overtime+ + iharm_11_overtime+ + iharm_12_overtime+ + iharm_13_overtime+ + iharm_14_overtime+ + iharm_15_overtime+ + iharm_16_overtime+ + iharm_17_overtime+ + iharm_18_overtime+ + iharm_19_overtime+ + iharm_20_overtime+ + iharm_21_overtime+ + iharm_22_overtime+ + iharm_23_overtime+ + iharm_24_overtime+ + iharm_25_overtime)>0,1,0)) + + sum(if((inuharm_1_overtime+ + inuharm_2_overtime+ + inuharm_3_overtime+ + inuharm_4_overtime+ + inuharm_5_overtime+ + inuharm_6_overtime+ + inuharm_7_overtime+ + inuharm_8_overtime+ + inuharm_9_overtime+ + inuharm_10_overtime+ + inuharm_11_overtime+ + inuharm_12_overtime+ + inuharm_13_overtime+ + inuharm_14_overtime+ + inuharm_15_overtime+ + inuharm_16_overtime)>0,1,0)) AS allCount FROM r_stat_limit_target_d