diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailDataVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailDataVO.java index d2af66e06..cd2ff7faf 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailDataVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineDetailDataVO.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDate; + /** * @author denghuajun * @date 2022/2/23 @@ -107,4 +109,7 @@ public class LineDetailDataVO { @ApiModelProperty(name = "ptPhaseType",value = "监测点接线相别(0,单相,1,三相,默认三相)") private Integer ptPhaseType; + @ApiModelProperty(name = "投运日期") + private LocalDate loginTime; + } 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 c20a5924e..236e046f3 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 @@ -137,6 +137,7 @@ public class LineServiceImpl extends ServiceImpl implements Li lineDetailDataVO.setComFlag(PubUtils.comFlag(device.getComFlag())); lineDetailDataVO.setRunFlag(PubUtils.runFlag(device.getRunFlag())); lineDetailDataVO.setIp(device.getIp()); + lineDetailDataVO.setLoginTime(device.getLoginTime()); lineDetailDataVO.setBusinessType(dicDataFeignClient.getDicDataById(lineDetail.getBusinessType()).getData().getName()); lineDetailDataVO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName()); lineDetailDataVO.setObjName(lineDetail.getObjName()); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/hebeinorth/GridController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/hebeinorth/GridController.java index 7b62d1d58..9b5b40e79 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/hebeinorth/GridController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/hebeinorth/GridController.java @@ -12,16 +12,11 @@ import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationLevelVo; import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationVo; import com.njcn.harmonic.service.hebeinorth.IGridService; import com.njcn.web.controller.BaseController; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -72,6 +67,20 @@ public class GridController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getLineAssess") + @ApiOperation("监测点评估") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineId", value = "监测点id"), + @ApiImplicitParam(name = "startTime", value = "开始时间"), + @ApiImplicitParam(name = "endTime", value = "结束时间") + }) + public HttpResult getLineAssess(@RequestParam(value = "lineId") String lineId, @RequestParam(value = "startTime") String startTime, @RequestParam(value = "endTime") String endTime){ + String methodDescribe = getMethodDescribe("getLineAssess"); + AssessDetailVo vo = gridService.getLineAssess(lineId,startTime,endTime); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getEvaluationOverview") @ApiOperation("稳态电能质量水平评价概览数据") @@ -121,4 +130,18 @@ public class GridController extends BaseController { List result = gridService.getQualifiedDetail(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/lineQualifiedDetail") + @ApiOperation("监测点稳态指标合格率详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineId", value = "监测点id"), + @ApiImplicitParam(name = "startTime", value = "开始时间"), + @ApiImplicitParam(name = "endTime", value = "结束时间") + }) + public HttpResult getLineQualifiedDetail(@RequestParam(value = "lineId") String lineId, @RequestParam(value = "startTime") String startTime, @RequestParam(value = "endTime") String endTime){ + String methodDescribe = getMethodDescribe("getLineQualifiedDetail"); + EvaluationLevelVo.QualifiedDetail result = gridService.getLineQualifiedDetail(lineId,startTime,endTime); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java index 923aea34d..aa50f841a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java @@ -44,6 +44,12 @@ public interface IGridService { * 综合评估趋势数据(当前时间统计前三个月时间) */ List getAssessTrend(AssessParam param); + + /** + * 监测点综合评估和各指标评估得分 + */ + AssessDetailVo getLineAssess(String lineId, String startTime, String endTime); + /** * 查询稳态电能质量水平评价 * @param param @@ -79,4 +85,10 @@ public interface IGridService { */ List getQualifiedDetail(AssessParam param); + /** + * 监测点稳态指标超标合格率详情 + * @return + */ + EvaluationLevelVo.QualifiedDetail getLineQualifiedDetail(String lineId, String startTime, String endTime); + } 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 a81920bba..8d9f7c541 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 @@ -2,6 +2,7 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; import com.njcn.common.utils.PubUtils; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; @@ -35,6 +36,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.YearMonth; import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.function.Function; import java.util.function.Predicate; @@ -212,6 +214,27 @@ public class GridServiceImpl implements IGridService { return result; } + @Override + public AssessDetailVo getLineAssess(String lineId, String startTime, String endTime) { + AssessDetailVo vo = new AssessDetailVo(); + vo.setDeptId(lineId); + List lineList = Collections.singletonList(lineId); + //获取监测点r_stat_asses_d数据 各指标评估 + List list1 = rStatAssesDMapper.getData(startTime,endTime,lineList); + //获取监测点r_stat_comasses_d数据 综合评估 + List list2 = rStatComassesDMapper.getAvgCount(lineList,startTime,endTime); + if (CollUtil.isNotEmpty(list1)) { + this.chanelTargetAssess(list1,vo); + } + if (CollUtil.isNotEmpty(list2)) { + List communicateList = BeanUtil.copyToList(list2,PqsComasses.class); + float synData = comAssesUtil.getAllComAss(communicateList); + vo.setAssessData(PubUtils.floatRound(2,synData)); + vo.setAssessLevel(getLevel(synData)); + } + return vo; + } + @Override public EvaluationVo getEvaluationOverview(AssessParam param) { EvaluationVo result = new EvaluationVo(); @@ -483,11 +506,15 @@ public class GridServiceImpl implements IGridService { if (map.containsKey(item.getId())) { RStatLimitRateDPO item2 = map.get(item.getId()); if (!Objects.isNull(item2) && 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.getVoltageDevOvertime()*100.0/item2.getAllTime()))); - qualifiedDetail.setPlt(PubUtils.doubleRound(2,100.0-(item2.getFlickerOvertime()*100.0/item2.getAllTime()))); - qualifiedDetail.setUbalance(PubUtils.doubleRound(2,100.0-(item2.getUbalanceOvertime()*100.0/item2.getAllTime()))); + 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.getVoltageDevOvertime()*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()))); + } } } result.add(qualifiedDetail); @@ -500,6 +527,26 @@ public class GridServiceImpl implements IGridService { return result; } + @Override + public EvaluationLevelVo.QualifiedDetail getLineQualifiedDetail(String lineId, String startTime, String endTime) { + EvaluationLevelVo.QualifiedDetail detail = new EvaluationLevelVo.QualifiedDetail(); + List lineList = Collections.singletonList(lineId); + 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.getVoltageDevOvertime()*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()))); + } + } + return detail; + } + /** * 获取监测点频率偏差 T相最大值\获取监测点三相电压不平衡度 T相最大值 */ @@ -598,36 +645,7 @@ public class GridServiceImpl implements IGridService { if (CollUtil.isNotEmpty(list1)){ List list11 = list1.stream().filter(it->lineList.contains(it.getLineId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(list11)) { - double vuDev = list11.stream() - .mapToDouble(RStatAssesDPO::getVuDev) - .average() - .orElse(0.0); - comAssess.setVDevAssessData(PubUtils.doubleRound(2,vuDev)); - comAssess.setVDevAssessLevel(getLevel(vuDev,0f,2.5f,5f,7.5f,10f,12.5f,15f,17.5f)); - double freqDev = list11.stream() - .mapToDouble(RStatAssesDPO::getFreqDev) - .average() - .orElse(0.0); - comAssess.setFreqAssessData(PubUtils.doubleRound(2,freqDev)); - comAssess.setFreqAssessLevel(getLevel(freqDev,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f)); - double dataPlt = list11.stream() - .mapToDouble(RStatAssesDPO::getDataPlt) - .average() - .orElse(0.0); - comAssess.setFlickerAssessData(PubUtils.doubleRound(2,dataPlt)); - comAssess.setFlickerAssessLevel(getLevel(dataPlt,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f)); - double vUnbalanceCp95 = list11.stream() - .mapToDouble(RStatAssesDPO::getVUnbalanceCp95) - .average() - .orElse(0.0); - comAssess.setUnbalanceAssessData(PubUtils.doubleRound(2,vUnbalanceCp95)); - comAssess.setUnbalanceAssessLevel(getLevel(vUnbalanceCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); - double vThdCp95 = list11.stream() - .mapToDouble(RStatAssesDPO::getVThdCp95) - .average() - .orElse(0.0); - comAssess.setHarmAssessData(PubUtils.doubleRound(2,vThdCp95)); - comAssess.setHarmAssessLevel(getLevel(vThdCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); + this.chanelTargetAssess(list11,comAssess); } } //处理区域综合稳态评估 @@ -679,6 +697,40 @@ public class GridServiceImpl implements IGridService { return comAssess; } + public void chanelTargetAssess(List list, AssessDetailVo comAssess) { + double vuDev = list.stream() + .mapToDouble(RStatAssesDPO::getVuDev) + .average() + .orElse(0.0); + comAssess.setVDevAssessData(PubUtils.doubleRound(2,vuDev)); + comAssess.setVDevAssessLevel(getLevel(vuDev,0f,2.5f,5f,7.5f,10f,12.5f,15f,17.5f)); + double freqDev = list.stream() + .mapToDouble(RStatAssesDPO::getFreqDev) + .average() + .orElse(0.0); + comAssess.setFreqAssessData(PubUtils.doubleRound(2,freqDev)); + comAssess.setFreqAssessLevel(getLevel(freqDev,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f)); + double dataPlt = list.stream() + .mapToDouble(RStatAssesDPO::getDataPlt) + .average() + .orElse(0.0); + comAssess.setFlickerAssessData(PubUtils.doubleRound(2,dataPlt)); + comAssess.setFlickerAssessLevel(getLevel(dataPlt,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f)); + double vUnbalanceCp95 = list.stream() + .mapToDouble(RStatAssesDPO::getVUnbalanceCp95) + .average() + .orElse(0.0); + comAssess.setUnbalanceAssessData(PubUtils.doubleRound(2,vUnbalanceCp95)); + comAssess.setUnbalanceAssessLevel(getLevel(vUnbalanceCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); + double vThdCp95 = list.stream() + .mapToDouble(RStatAssesDPO::getVThdCp95) + .average() + .orElse(0.0); + comAssess.setHarmAssessData(PubUtils.doubleRound(2,vThdCp95)); + comAssess.setHarmAssessLevel(getLevel(vThdCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); + } + + /** * 获取综合评估等级 */