diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/THDistortionDetailVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/THDistortionDetailVO.java new file mode 100644 index 000000000..f3b3628be --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/THDistortionDetailVO.java @@ -0,0 +1,47 @@ +package com.njcn.harmonic.pojo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class THDistortionDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("地市") + private String city; + + @ApiModelProperty("供电公司") + private String company; + + @ApiModelProperty("变电站") + private String subStation; + + @ApiModelProperty("终端ID") + private String deviceId; + + @ApiModelProperty("终端名称") + private String deviceName; + + @ApiModelProperty("终端厂家") + private String manufacturer; + + @ApiModelProperty("终端IP") + private String ip; + + /** + * 监测点名称 + */ + @ApiModelProperty("监测点名称") + private String lineName; + + + /** + * 总畸变率 + */ + @ApiModelProperty("总畸变率") + private Double distortion = 3.14159; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyDetailVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyDetailVO.java new file mode 100644 index 000000000..84aeec272 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyDetailVO.java @@ -0,0 +1,97 @@ +package com.njcn.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author: hongawen + */ +@Data +public class SteadyQualifyDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("地市") + private String city; + + @ApiModelProperty("供电公司") + private String company; + + @ApiModelProperty("变电站") + private String subStation; + + @ApiModelProperty("终端ID") + private String deviceId; + + @ApiModelProperty("终端名称") + private String deviceName; + + @ApiModelProperty("终端厂家") + private String manufacturer; + + @ApiModelProperty("终端IP") + private String ip; + /** + * 监测点名称 + */ + @ApiModelProperty("监测点名称") + private String lineName; + +// @ApiModelProperty("终端运行状态(0:运行;1:检修;2:停运;3:调试;4:退运)") +// private String runFlag; +// +// @ApiModelProperty("终端通讯状态(0:中断;1:正常)") +// private String comFlag; +// +// @ApiModelProperty("最新数据时间") +// private LocalDateTime timeID; + + /** + * 谐波电压 + */ + @ApiModelProperty("谐波电压") + private Double harmonicVoltage =3.14159; + /** + * 电压偏差 + */ + @ApiModelProperty("电压偏差") + private Double voltageOffset =3.14159; + /** + * 相电压不平衡度 + */ + @ApiModelProperty("相电压不平衡度") + private Double voltageUnbalance =3.14159; + /** + * 间谐波电压含有率 + */ + @ApiModelProperty("间谐波电压含有率") + private Double interHarmonic =3.14159; + /** + * 谐波电流 + */ + @ApiModelProperty("谐波电流") + private Double harmonicCurrent =3.14159; + /** + * 负序电流 + */ + @ApiModelProperty("负序电流") + private Double negativeCurrent =3.14159; + /** + * 频率偏差 + */ + @ApiModelProperty("频率偏差") + private Double freqOffset =3.14159; + /** + * 闪变 + */ + @ApiModelProperty("闪变") + private Double flicker =3.14159; + + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyQualifyController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyQualifyController.java index 0dea8dbd8..0d71abf1f 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyQualifyController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/SteadyQualifyController.java @@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.harmonic.pojo.vo.SteadyQualifyCensusVO; +import com.njcn.harmonic.pojo.vo.SteadyQualifyDetailVO; import com.njcn.harmonic.pojo.vo.SteadyQualifyVO; import com.njcn.harmonic.service.SteadyQualifyService; import com.njcn.web.controller.BaseController; @@ -69,4 +70,14 @@ public class SteadyQualifyController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getSteadyQualifyTableData") + @ApiOperation("稳态合格率列表(曲靖)") + @ApiImplicitParam(name = "steadyParam", value = "稳态列表参数", required = true) + public HttpResult> getSteadyQualifyTableData(@RequestBody @Validated DeviceInfoParam.BusinessParam steadyParam){ + String methodDescribe = getMethodDescribe("getSteadyQualifyTableData"); + List list = steadyQualifyService.getSteadyQualifyTableData(steadyParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java index fa26412b6..496dca214 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/THDController.java @@ -7,7 +7,9 @@ import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.pojo.THDistortionDetailVO; import com.njcn.harmonic.pojo.vo.RMpVThdVO; +import com.njcn.harmonic.pojo.vo.SteadyQualifyDetailVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; import com.njcn.harmonic.service.THDistortionService; @@ -48,6 +50,18 @@ public class THDController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getTHDistortionTableData") + @ApiOperation("谐波总畸变率列表(曲靖)") + @ApiImplicitParam(name = "steadyParam", value = "稳态列表参数", required = true) + public HttpResult> getTHDistortionTableData(@RequestBody @Validated DeviceInfoParam.BusinessParam steadyParam){ + String methodDescribe = getMethodDescribe("getTHDistortionTableData"); + List list = thDistortionService.getTHDistortionTableData(steadyParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getNodeTHDistortionData") @ApiOperation("谐波总畸变率节点图") diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyQualifyService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyQualifyService.java index c1ed7f433..4ea62461d 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyQualifyService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/SteadyQualifyService.java @@ -2,6 +2,7 @@ package com.njcn.harmonic.service; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.harmonic.pojo.vo.SteadyQualifyCensusVO; +import com.njcn.harmonic.pojo.vo.SteadyQualifyDetailVO; import com.njcn.harmonic.pojo.vo.SteadyQualifyVO; import java.util.List; @@ -36,4 +37,10 @@ public interface SteadyQualifyService { * @date 2022/03/20 20:34 */ List getEnterpriseSteadyQualify(DeviceInfoParam.BusinessParam steadyParam); + + /** + * 稳态合格率查询表格数据,注:非树表 + * @param steadyParam 查询参数 + */ + List getSteadyQualifyTableData(DeviceInfoParam.BusinessParam steadyParam); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java index 5f304db64..c672589f4 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/THDistortionService.java @@ -2,6 +2,7 @@ package com.njcn.harmonic.service; import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.harmonic.pojo.THDistortionDetailVO; import com.njcn.harmonic.pojo.vo.RMpVThdVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; @@ -40,4 +41,10 @@ public interface THDistortionService { * @Date: 2022/11/7 */ List getTHDTopTenData(StatisticsBizBaseParam statisticsBizBaseParam, Integer topNum); + + /** + * 获取畸变率的数据表格展示 + * @param steadyParam 查询参数 + */ + List getTHDistortionTableData(DeviceInfoParam.BusinessParam steadyParam); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java index cb7350e7f..e9403bdbc 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java @@ -8,12 +8,15 @@ import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.vo.LineDetailVO; import com.njcn.harmonic.mapper.SteadyQualifyMapper; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.vo.SteadyQualifyCensusVO; +import com.njcn.harmonic.pojo.vo.SteadyQualifyDetailVO; import com.njcn.harmonic.pojo.vo.SteadyQualifyVO; import com.njcn.harmonic.rstatlimitrate.service.IRStatLimitRateDService; import com.njcn.harmonic.service.SteadyQualifyService; @@ -46,6 +49,8 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { private final UserLedgerFeignClient userLedgerFeignClient; + private final LineFeignClient lineFeignClient; + @Override public List getSteadyQualifyData(DeviceInfoParam.BusinessParam steadyParam) { List steadyQualifyList = new ArrayList<>(); @@ -190,6 +195,73 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { return steadyQualifyList; } + @Override + public List getSteadyQualifyTableData(DeviceInfoParam.BusinessParam steadyParam) { + List steadyQualifyDetailVOList = new ArrayList<>(); + //获取终端台账类信息 + List deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData(); + + //收集所有lineIndexes并去重 + List lineIdList = deviceDataList.stream() + .filter(generalDeviceDTO -> CollectionUtil.isNotEmpty(generalDeviceDTO.getLineIndexes())) + .flatMap(generalDeviceDTO -> generalDeviceDTO.getLineIndexes().stream()) + .distinct() + .collect(Collectors.toList()); + + if (CollectionUtil.isEmpty(lineIdList)) { + return steadyQualifyDetailVOList; + } + + //获取稳态合格率数据 + List qualifiesRate = getQualifiesRate(lineIdList, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); + + //获取监测点集合 + List monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIdList); + + //获取所有监测点信息信息 + List lineInfoByIds = lineFeignClient.getLineDetailByIds(lineIdList).getData(); + Map lineDetailMap = lineInfoByIds.stream() + .collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity())); + + //组装列表数据 + for (SteadyQualifyVO monitor : monitorList) { + SteadyQualifyDetailVO detailVO = new SteadyQualifyDetailVO(); + + //填充监测点详细信息 + LineDetailVO.Detail lineDetail = lineDetailMap.get(monitor.getId()); + if (lineDetail != null) { + detailVO.setCity(lineDetail.getDeptName()); + detailVO.setCompany(lineDetail.getGdName()); + detailVO.setSubStation(lineDetail.getSubName()); + detailVO.setDeviceId(lineDetail.getDevId()); + detailVO.setDeviceName(lineDetail.getDevName()); + detailVO.setManufacturer(lineDetail.getManufacturer()); + detailVO.setIp(lineDetail.getIp()); + detailVO.setLineName(lineDetail.getLineName()); + } + + //计算单个监测点的合格率 + SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, monitor.getId()); + detailVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker())); + detailVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset())); + detailVO.setVoltageOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getVoltageOffset())); + detailVO.setVoltageUnbalance(PubUtils.dataLimits(dataSingleMonitorMoreDay.getVoltageUnbalance())); + detailVO.setNegativeCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getNegativeCurrent())); + detailVO.setHarmonicVoltage(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicVoltage())); + detailVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent())); + detailVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); + + steadyQualifyDetailVOList.add(detailVO); + } + + //先按变电站排序,再按地市排序 + steadyQualifyDetailVOList.sort(Comparator + .comparing(SteadyQualifyDetailVO::getSubStation, Comparator.nullsLast(String::compareTo)) + .thenComparing(SteadyQualifyDetailVO::getCity, Comparator.nullsLast(String::compareTo))); + + return steadyQualifyDetailVOList; + } + /** * 获取父级每层数据 */ diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java index 3e6080d3f..1fbd59c5e 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/THDistortionServiceImpl.java @@ -17,10 +17,10 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.vo.LineDetailVO; import com.njcn.harmonic.mapper.RMpVThdMapper; import com.njcn.harmonic.mapper.THDistortionMapper; +import com.njcn.harmonic.pojo.THDistortionDetailVO; import com.njcn.harmonic.pojo.dto.PublicDTO; import com.njcn.harmonic.pojo.po.RMpVThd; import com.njcn.harmonic.pojo.vo.RMpVThdVO; -import com.njcn.harmonic.pojo.vo.SteadyQualifyVO; import com.njcn.harmonic.pojo.vo.THDistortionCensusVO; import com.njcn.harmonic.pojo.vo.THDistortionVO; import com.njcn.harmonic.service.THDistortionService; @@ -188,6 +188,69 @@ public class THDistortionServiceImpl implements THDistortionService { return rMpVThdVOList; } + @Override + public List getTHDistortionTableData(DeviceInfoParam.BusinessParam steadyParam) { + List thDistortionDetailVOList = new ArrayList<>(); + //获取终端台账类信息 + List deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData(); + + //收集所有lineIndexes并去重 + List lineIdList = deviceDataList.stream() + .filter(generalDeviceDTO -> CollectionUtil.isNotEmpty(generalDeviceDTO.getLineIndexes())) + .flatMap(generalDeviceDTO -> generalDeviceDTO.getLineIndexes().stream()) + .distinct() + .collect(Collectors.toList()); + + if (CollectionUtil.isEmpty(lineIdList)) { + return thDistortionDetailVOList; + } + + //获取畸变率数据 + List distortionData = getCondition(lineIdList, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); + Map distortionMap = distortionData.stream() + .collect(Collectors.toMap(PublicDTO::getId, Function.identity())); + + //获取监测点集合 + List monitorList = thDistortionMapper.getLineData(lineIdList); + + //获取所有监测点信息信息 + List lineInfoByIds = lineFeignClient.getLineDetailByIds(lineIdList).getData(); + Map lineDetailMap = lineInfoByIds.stream() + .collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity())); + + //组装列表数据 + for (THDistortionVO monitor : monitorList) { + THDistortionDetailVO detailVO = new THDistortionDetailVO(); + + //填充监测点详细信息 + LineDetailVO.Detail lineDetail = lineDetailMap.get(monitor.getId()); + if (lineDetail != null) { + detailVO.setCity(lineDetail.getDeptName()); + detailVO.setCompany(lineDetail.getGdName()); + detailVO.setSubStation(lineDetail.getSubName()); + detailVO.setDeviceId(lineDetail.getDevId()); + detailVO.setDeviceName(lineDetail.getDevName()); + detailVO.setManufacturer(lineDetail.getManufacturer()); + detailVO.setIp(lineDetail.getIp()); + detailVO.setLineName(lineDetail.getLineName()); + } + + //填充畸变率数据 + if (distortionMap.containsKey(monitor.getId())) { + detailVO.setDistortion(distortionMap.get(monitor.getId()).getData()); + } + + thDistortionDetailVOList.add(detailVO); + } + + //先按变电站排序,再按地市排序 + thDistortionDetailVOList.sort(Comparator + .comparing(THDistortionDetailVO::getSubStation, Comparator.nullsLast(String::compareTo)) + .thenComparing(THDistortionDetailVO::getCity, Comparator.nullsLast(String::compareTo))); + + return thDistortionDetailVOList; + } + /** * 计算父级畸变率