From 1af8fcc72f105a3682ff094920f237b90267a2fb Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Tue, 9 Jul 2024 10:15:23 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=9C=A8=E7=BA=BF=E7=9B=91=E6=B5=8B=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=8E=A5=E5=8F=A3=202.=E5=9C=A8=E7=BA=BF=E7=9B=91?= =?UTF-8?q?=E6=B5=8B=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/device/pq/pojo/vo/DevDetail.java | 1 + .../device/pq/pojo/vo/ReportLineInfoVo.java | 3 + .../device/pq/mapper/mapping/LineMapper.xml | 3 +- .../harmonic/api/RStatLimitRateDClient.java | 10 + ...tLimitRateDFeignClientFallbackFactory.java | 6 + .../majornetwork/RStatLimitController.java | 22 +- .../majornetwork/RStatLimitService.java | 3 + .../impl/RStatLimitServiceImpl.java | 95 +++- .../pojo/po/device/CheckDevice.java | 12 +- .../pojo/vo/device/LineLimitDetailVo.java | 27 ++ pqs-supervision/supervision-boot/pom.xml | 2 +- .../device/LineWarningController.java | 8 +- .../service/device/ILineWarningService.java | 4 +- .../device/impl/CheckDeviceServiceImpl.java | 4 - .../device/impl/LineWarningServiceImpl.java | 441 +++++++++++++++++- 15 files changed, 599 insertions(+), 42 deletions(-) create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/device/LineLimitDetailVo.java diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DevDetail.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DevDetail.java index db7acee0b..50d6c4c58 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DevDetail.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DevDetail.java @@ -41,6 +41,7 @@ public class DevDetail { private Integer comFlag; @ApiModelProperty("定检时间") + @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate nextTimeCheck; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ReportLineInfoVo.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ReportLineInfoVo.java index d308e659f..eeebc937a 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ReportLineInfoVo.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/ReportLineInfoVo.java @@ -50,4 +50,7 @@ public class ReportLineInfoVo implements Serializable { @ApiModelProperty("超标天数") private Integer overDays; + + @ApiModelProperty("电网标志(0-电网侧;1-非电网侧)") + private Integer powerFlag; } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index eede459e7..e60c36171 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -1701,7 +1701,8 @@ pd.IP ip, pld.Short_Capacity shortCapacity, pld.Dev_Capacity devCapacity, - pld.Deal_Capacity dealCapacity + pld.Deal_Capacity dealCapacity, + pld.Power_Flag powerFlag from pq_line pl left join pq_line_detail pld on pl.Id = pld.Id diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java index eaffac459..7bb56bb4f 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java @@ -1,7 +1,11 @@ package com.njcn.harmonic.api; +import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.ServerInfo; +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.harmonic.api.fallback.HarmDataFeignClientFallbackFactory; import com.njcn.harmonic.api.fallback.RStatLimitRateDFeignClientFallbackFactory; import com.njcn.harmonic.pojo.param.HistoryHarmParam; @@ -11,9 +15,13 @@ import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.influx.pojo.dto.HarmHistoryDataDTO; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -35,4 +43,6 @@ public interface RStatLimitRateDClient { @PostMapping("/monitorOverLimitDays") HttpResult> monitorOverLimitDays(@RequestBody RStatLimitQueryParam rStatLimitQueryParam); + @PostMapping("/getOverData") + HttpResult> getOverData(@RequestParam("lineId") String lineId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestParam("type") Integer type); } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java index 363fc62f8..c3e930917 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/fallback/RStatLimitRateDFeignClientFallbackFactory.java @@ -56,6 +56,12 @@ public class RStatLimitRateDFeignClientFallbackFactory implements FallbackFactor log.error("{}异常,降级处理,异常为:{}", "按日期查询监测点各指标越限天数", throwable.toString()); return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage()); } + + @Override + public HttpResult> getOverData(String lineId, String startTime, String endTime, Integer type) { + log.error("{}异常,降级处理,异常为:{}", "查询单监测点超标数据", throwable.toString()); + return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage()); + } }; } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java index 8c60fe0f8..f849be6f2 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java @@ -12,12 +12,11 @@ import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -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; @@ -64,4 +63,19 @@ public class RStatLimitController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @PostMapping("/getOverData") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("查询单监测点超标数据") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineId", value = "监测点id"), + @ApiImplicitParam(name = "startTime", value = "开始时间"), + @ApiImplicitParam(name = "endTime", value = "结束时间"), + @ApiImplicitParam(name = "type", value = "指标"), + }) + public HttpResult> getOverData(@RequestParam("lineId") String lineId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestParam("type") Integer type) { + String methodDescribe = getMethodDescribe("getOverData"); + List result = rStatLimitService.getOverData(lineId,startTime,endTime,type); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java index afe5d5a10..5649ca79f 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java @@ -5,6 +5,7 @@ import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -43,4 +44,6 @@ public interface RStatLimitService { * @return */ List getGridDiagramRunData(DeviceInfoParam.BusinessParam param); + + List getOverData(String lineId, String startTime, String endTime, Integer type); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java index 34f7788a2..0bd414450 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java @@ -2,10 +2,12 @@ package com.njcn.harmonic.service.majornetwork.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.func.Func; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; @@ -21,6 +23,7 @@ import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; import com.njcn.harmonic.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; +import com.njcn.harmonic.pojo.po.RMpVThd; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; @@ -133,7 +136,7 @@ public class RStatLimitServiceImpl implements RStatLimitService { for (GeneralDeviceDTO dto : topList) { lineData=new GridDiagramVO.LineData(); lineData.setOrgId(dto.getIndex()); - lineData.setOrgName(dto.getName()+"\n("+dto.getLineIndexes().size()+")"); + lineData.setOrgName(dto.getName()+"("+dto.getLineIndexes().size()+")"); onLineAndIntegrity(dto.getLineIndexes(), integrityList, dto.getDeviceIndexes(), onlineRateList,limitTargetList, lineData); info.add(lineData); } @@ -142,7 +145,7 @@ public class RStatLimitServiceImpl implements RStatLimitService { List otherLineIds = otherList.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList()); lineData=new GridDiagramVO.LineData(); lineData.setOrgId("123456"); - lineData.setOrgName("其他\n("+otherLineIds.size()+")"); + lineData.setOrgName("其他("+otherLineIds.size()+")"); onLineAndIntegrity(otherLineIds, integrityList, otherDevIds, onlineRateList,limitTargetList, lineData); info.add(lineData); } @@ -308,6 +311,94 @@ public class RStatLimitServiceImpl implements RStatLimitService { return info; } + @Override + public List getOverData(String lineId, String startTime, String endTime, Integer type) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda() + .eq(RStatLimitRateDPO::getLineId,lineId) + .between(RStatLimitRateDPO::getTime,startTime,endTime) + .groupBy(RStatLimitRateDPO::getTime); + //频率偏差 + if (type == 1) { + queryWrapper.select("time_id time,max(freq_dev_overtime) freq_dev_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getFreqDevOvertime,0); + } + //电压偏差 + else if (type == 2) { + queryWrapper.select("time_id time,max(voltage_dev_overtime) voltage_dev_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getVoltageDevOvertime,0); + } + //长时闪变 + else if (type == 3) { + queryWrapper.select("time_id time,max(flicker_overtime) flicker_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getFlickerOvertime,0); + } + //电压总谐波畸变率 + else if (type == 4) { + queryWrapper.select("time_id time,max(uaberrance_overtime) uaberrance_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getUaberranceOvertime,0); + } + //负序电压不平衡度 + else if (type == 5) { + queryWrapper.select("time_id time,max(ubalance_overtime) ubalance_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getUbalanceOvertime,0); + } + //负序电流 + else if (type == 6) { + queryWrapper.select("time_id time,max(i_neg_overtime) i_neg_overtime"); + queryWrapper.lambda().gt(RStatLimitRateDPO::getINegOvertime,0); + } + //谐波电压含有率 + else if (type == 7) { + StringBuilder selectSql = new StringBuilder(); + StringBuilder havingSql = new StringBuilder(); + for (int i = 2; i <=25 ; i++) { + selectSql.append("max(uharm_").append(i).append("_overtime) uharm_").append(i).append("_overtime,"); + if (i == 25) { + havingSql.append("uharm_").append(i).append("_overtime"); + } else { + havingSql.append("uharm_").append(i).append("_overtime + "); + } + } + selectSql.append("time_id time"); + havingSql = new StringBuilder("sum(" + havingSql + ")"); + queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0); + } + //谐波电流 + else if (type == 8) { + StringBuilder selectSql = new StringBuilder(); + StringBuilder havingSql = new StringBuilder(); + for (int i = 2; i <=25 ; i++) { + selectSql.append("max(iharm_").append(i).append("_overtime) iharm_").append(i).append("_overtime,"); + if (i == 25) { + havingSql.append("iharm_").append(i).append("_overtime"); + } else { + havingSql.append("iharm_").append(i).append("_overtime + "); + } + } + selectSql.append("time_id time"); + havingSql = new StringBuilder("sum(" + havingSql + ")"); + queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0); + } + //间谐波电压 + else if (type == 9) { + StringBuilder selectSql = new StringBuilder(); + StringBuilder havingSql = new StringBuilder(); + for (int i = 1; i <=16 ; i++) { + selectSql.append("max(inuharm_").append(i).append("_overtime) inuharm_").append(i).append("_overtime,"); + if (i == 16) { + havingSql.append("inuharm_").append(i).append("_overtime"); + } else { + havingSql.append("inuharm_").append(i).append("_overtime + "); + } + } + selectSql.append("time_id time"); + havingSql = new StringBuilder("sum(" + havingSql + ")"); + queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0); + } + return rStatLimitRateDMapper.selectList(queryWrapper); + } + private void onLineAndIntegrity(List lineIds, List onIntegrityByIds, List devIds, List onlineRateByDevIds,List limitTargetList, GridDiagramVO.LineData lineData) { //监测完整率 List integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList()); diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/device/CheckDevice.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/device/CheckDevice.java index 65cbb29fe..c317e675e 100644 --- a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/device/CheckDevice.java +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/po/device/CheckDevice.java @@ -3,12 +3,12 @@ package com.njcn.supervision.pojo.po.device; 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.LocalDate; -import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.time.LocalDate; + /** *

* 终端周期检测表 @@ -32,13 +32,13 @@ public class CheckDevice extends BaseEntity implements Serializable { /** * 装置id */ - @MppMultiId("device_id") + @MppMultiId(value = "device_id") private String deviceId; /** * 原来定检时间 */ - @MppMultiId("check_time") + @MppMultiId(value = "check_time") private LocalDate checkTime; /** @@ -74,7 +74,7 @@ public class CheckDevice extends BaseEntity implements Serializable { /** * 状态 0:未处理 1:已处理 */ - @MppMultiId("state") + @MppMultiId(value = "state") private Integer state; /** diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/device/LineLimitDetailVo.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/device/LineLimitDetailVo.java new file mode 100644 index 000000000..26aeb3108 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/vo/device/LineLimitDetailVo.java @@ -0,0 +1,27 @@ +package com.njcn.supervision.pojo.vo.device; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDate; + +/** + *

+ * 在线监测监测点越限详情 + *

+ * + * @author xy + * @since 2024-07-05 + */ +@Data +public class LineLimitDetailVo implements Serializable { + + @ApiModelProperty("日期") + @JsonFormat(pattern="yyyy-MM-dd") + private LocalDate time; + + @ApiModelProperty("越限详情") + private String overLimitInfo; +} diff --git a/pqs-supervision/supervision-boot/pom.xml b/pqs-supervision/supervision-boot/pom.xml index d8c06b59b..0b4ac62fd 100644 --- a/pqs-supervision/supervision-boot/pom.xml +++ b/pqs-supervision/supervision-boot/pom.xml @@ -60,7 +60,7 @@ - supervision-boot + supervisionboot org.apache.maven.plugins diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/LineWarningController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/LineWarningController.java index 67ca82f2a..4eabf962d 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/LineWarningController.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/device/LineWarningController.java @@ -8,6 +8,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.supervision.pojo.param.device.OnlineParam; +import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo; import com.njcn.supervision.pojo.vo.device.OnlineVo; import com.njcn.supervision.service.device.ILineWarningService; import com.njcn.web.controller.BaseController; @@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -87,10 +89,10 @@ public class LineWarningController extends BaseController { @PostMapping("/overLimitDetail") @ApiOperation("查看越限详情") @ApiImplicitParam(name = "param", value = "参数", required = true) - public HttpResult getOverLimitDetail(@RequestBody @Validated OnlineParam.DetailParam param) { + public HttpResult> getOverLimitDetail(@RequestBody @Validated OnlineParam.DetailParam param) { String methodDescribe = getMethodDescribe("getOverLimitDetail"); - lineWarningService.getOverLimitDetail(param); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe); + List result = lineWarningService.getOverLimitDetail(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/ILineWarningService.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/ILineWarningService.java index 018e505ce..5e4972b97 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/ILineWarningService.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/ILineWarningService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.supervision.pojo.param.device.OnlineParam; import com.njcn.supervision.pojo.po.device.LineWarning; +import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo; import com.njcn.supervision.pojo.vo.device.OnlineVo; import javax.servlet.http.HttpServletResponse; +import java.util.List; /** *

@@ -47,6 +49,6 @@ public interface ILineWarningService extends IService { * @param param * @return */ - void getOverLimitDetail(OnlineParam.DetailParam param); + List getOverLimitDetail(OnlineParam.DetailParam param); } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/CheckDeviceServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/CheckDeviceServiceImpl.java index 70a13645e..29a9fb9f0 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/CheckDeviceServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/CheckDeviceServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.bpm.api.BpmProcessFeignClient; @@ -27,9 +26,6 @@ import com.njcn.supervision.enums.SupervisionKeyEnum; import com.njcn.supervision.mapper.device.CheckDeviceMapper; import com.njcn.supervision.pojo.param.device.CheckDeviceParam; import com.njcn.supervision.pojo.po.device.CheckDevice; -import com.njcn.supervision.pojo.po.device.QuitRunningDevice; -import com.njcn.supervision.pojo.po.survey.SurveyTest; -import com.njcn.supervision.pojo.po.user.UserReportNormalPO; import com.njcn.supervision.pojo.vo.device.CheckDeviceVo; import com.njcn.supervision.service.device.ICheckDeviceService; import com.njcn.supervision.utils.InstanceUtil; diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/LineWarningServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/LineWarningServiceImpl.java index 77baecc4c..39f1ea11d 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/LineWarningServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/device/impl/LineWarningServiceImpl.java @@ -10,10 +10,13 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.common.pojo.enums.common.ServerEnum; +import com.njcn.common.utils.HarmonicTimesUtil; +import com.njcn.common.utils.PubUtils; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; 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.biz.pojo.po.Overlimit; import com.njcn.device.pq.api.DeptLineFeignClient; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.po.DeptLine; @@ -21,15 +24,21 @@ import com.njcn.device.pq.pojo.vo.LineDetailVO; import com.njcn.device.pq.pojo.vo.ReportLineInfoVo; import com.njcn.harmonic.api.RStatLimitRateDClient; import com.njcn.harmonic.pojo.param.RStatLimitQueryParam; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.utils.WordUtil2; +import com.njcn.influx.constant.InfluxDbSqlConstant; +import com.njcn.influx.imapper.*; +import com.njcn.influx.pojo.po.*; +import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; import com.njcn.supervision.enums.ProblemTypeEnum; import com.njcn.supervision.mapper.device.LineWarningMapper; import com.njcn.supervision.pojo.param.device.OnlineParam; import com.njcn.supervision.pojo.po.device.LineWarning; +import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo; import com.njcn.supervision.pojo.vo.device.OnlineVo; import com.njcn.supervision.service.device.ILineWarningService; import com.njcn.supervision.service.leaflet.IWarningLeafletService; @@ -76,6 +85,12 @@ public class LineWarningServiceImpl extends MppServiceImpl result = new ArrayList<>(); - //获取指标集合(8个指标) - List dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDICATOR_TYPE.getCode()).getData(); + //获取指标集合(10个指标) + List dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData(); Map targetMap = dataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity())); //获取监测点和部门表关系 List deptLines = deptLineFeignClient.getAllData().getData(); @@ -152,22 +167,26 @@ public class LineWarningServiceImpl extends MppServiceImpl{ String deptId = Objects.isNull(deptLineMap.get(item.getLineId()))?null:deptLineMap.get(item.getLineId()).get(0).getId(); //频率偏差 - LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PLPC_ENUM.getCode()).getId(),item.getFreqDevOvertime()); + LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FREQUENCY_DEV.getCode()).getId(),item.getFreqDevOvertime()); //电压偏差 - LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.DYPC_ENUM.getCode()).getId(),item.getVoltageDevOvertime()); + LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.VOLTAGE_DEV.getCode()).getId(),item.getVoltageDevOvertime()); //长时闪变 - LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.CSSB_ENUM.getCode()).getId(),item.getFlickerOvertime()); + LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FLICKER.getCode()).getId(),item.getFlickerOvertime()); //谐波电压 - LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDY_ENUM.getCode()).getId(),item.getUharmOvertime()); + LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId(),item.getUharmOvertime()); //谐波电流 - LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDL_ENUM.getCode()).getId(),item.getIharmOvertime()); + LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId(),item.getIharmOvertime()); //间谐波电压 - LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.JXBDY_ENUM.getCode()).getId(),item.getInuharmOvertime()); + LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.INTERHARMONIC_VOLTAGE.getCode()).getId(),item.getInuharmOvertime()); //负序电压不平衡度 - LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.SXDYBPHD_ENUM.getCode()).getId(),item.getUbalanceOvertime()); + LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId(),item.getUbalanceOvertime()); //负序电流 - LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FXDL_ENUM.getCode()).getId(),item.getINegOvertime()); - result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8)); + LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId(),item.getINegOvertime()); + //电压总谐波畸变率 + LineWarning l9 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.THD_V.getCode()).getId(),item.getUaberranceOvertime()); + //总稳态指标 + LineWarning l10 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.TOTAL_INDICATOR.getCode()).getId(),item.getAllOvertime()); + result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8,l9,l10)); }); } //将装置无数据的统计入库 按运维要求,判断装置的最新数据不是当天,则认为装置无数据 @@ -196,9 +215,9 @@ public class LineWarningServiceImpl extends MppServiceImpl list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); List lineList = list.stream() - .flatMap(dto -> dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId)) - .distinct() - .collect(Collectors.toList()); + .flatMap(dto -> dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId)) + .distinct() + .collect(Collectors.toList()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("A.alarm_time", param.getSearchBeginTime(),param.getSearchEndTime()); //监测点id @@ -238,10 +257,10 @@ public class LineWarningServiceImpl extends MppServiceImpl list1 = getReportLineInfo(true,param.getIdList(),null,param.getSearchBeginTime(),param.getSearchEndTime(),param.getDeptId(),allLineWarnings); //获取谐波电压超标监测点集合 - String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDY_ENUM.getCode()).getData().getId(); + String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getData().getId(); List list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings); //获取谐波电流超标监测点集合 - String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDL_ENUM.getCode()).getData().getId(); + String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_CURRENT.getCode()).getData().getId(); List list3 = getReportLineInfo(false,param.getIdList(),iCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings); try { Map dataMap = new HashMap(); @@ -250,7 +269,6 @@ public class LineWarningServiceImpl extends MppServiceImpl dataList1 = new ArrayList(),dataList2 = new ArrayList(),dataList3 = new ArrayList(); if (CollUtil.isNotEmpty(list1)) { list1.forEach(item->{ - dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()}); + if (Objects.isNull(param.getLineType()) || Objects.equals("",param.getLineType())) { + dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()}); + } else if (Integer.parseInt(param.getLineType()) == item.getPowerFlag()) { + dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()}); + } }); + dataMap.put("${noData}", CollUtil.isEmpty(dataList1)?"0":String.valueOf(dataList1.size())); } if (CollUtil.isNotEmpty(list2)) { list2.forEach(item->{ @@ -272,6 +295,7 @@ public class LineWarningServiceImpl extends MppServiceImpl> tableList = Arrays.asList(dataList1,dataList2,dataList3); InputStream inputStream = wordUtil2.getReportFile(inputUrl,dataMap,tableList); //上传文件服务器 @@ -311,12 +335,252 @@ public class LineWarningServiceImpl extends MppServiceImpl getOverLimitDetail(OnlineParam.DetailParam param) { + String targetCode = dicDataFeignClient.getDicDataById(param.getTargetId()).getData().getCode(); + //获取监测点统计间隔 + Integer timeInterval = commTerminalGeneralClient.getMonitorDetail(param.getLineId()).getData().getInterval(); + //获取限值 + Overlimit overlimit = commTerminalGeneralClient.getOverLimitData(param.getLineId()).getData(); + //处理数据 + return chanelTarget(param,overlimit,timeInterval,targetCode); + } + //指标数据处理 + public List chanelTarget(OnlineParam.DetailParam param, Overlimit overlimit, Integer timeInterval, String targetCode) { + List result = new ArrayList<>(),finalList = new ArrayList<>(); + //频率偏差 + if (Objects.equals(targetCode,DicDataEnum.FREQUENCY_DEV.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),1).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getFreqDev(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getFreqDev(); + channelEachData(item,maxData>0?overlimit.getFreqDev():-overlimit.getFreqDev(),"getFreqDev",result,DicDataEnum.FREQUENCY_DEV.getName(),timeInterval,maxData); + }); + } + } + //电压偏差 + if (Objects.equals(targetCode,DicDataEnum.VOLTAGE_DEV.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),2).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + Float overLimit; + Double maxData; + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + List voltageList = getVoltageDev(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ); + List voltage = voltageList.stream().map(DataV::getVuDev).collect(Collectors.toList()); + if (Math.abs(voltage.get(0)) >= Math.abs(voltage.get(1))){ + overLimit = overlimit.getUvoltageDev(); + maxData = voltage.get(0); + } else { + overLimit = overlimit.getVoltageDev(); + maxData = voltage.get(1); + } + channelEachData(item,overLimit,"getVoltageDev",result,DicDataEnum.VOLTAGE_DEV.getName(),timeInterval,maxData); + }); + } + } + //长时闪变 + if (Objects.equals(targetCode,DicDataEnum.FLICKER.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),3).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getFlicker(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getPlt(); + channelEachData(item,overlimit.getFlicker(),"getFlicker",result,DicDataEnum.FLICKER.getName(),timeInterval,maxData); + }); + } + } + //电压总谐波畸变率 + if (Objects.equals(targetCode,DicDataEnum.THD_V.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),4).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getVThd(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getVThd(); + channelEachData(item,overlimit.getUaberrance(),"getUaberrance",result,DicDataEnum.THD_V.getName(),timeInterval,maxData); + }); + } + } + //谐波电压 + if (Objects.equals(targetCode,DicDataEnum.HARMONIC_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + //电压总谐波畸变率 + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),4).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getVThd(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getVThd(); + channelEachData(item,overlimit.getUaberrance(),"getUaberrance",result,DicDataEnum.THD_V.getName(),timeInterval,maxData); + }); + } + //谐波电压含有率2~25次 + List list2 = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),7).getData(); + if (CollUtil.isNotEmpty(list2)) { + list2.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + DataHarmRateV dataHarmRateV = getDataHarmRateV(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59").get(0); + channelHarmonicData(dataHarmRateV,null,null,item,overlimit,result,"getUharm",DicDataEnum.HARMONIC_VOLTAGE.getName(),timeInterval,2,25); + }); + } + } + //谐波电流 + if (Objects.equals(targetCode,DicDataEnum.HARMONIC_CURRENT.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),8).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + DataI dataI = getDataI(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59").get(0); + channelHarmonicData(null,dataI,null,item,overlimit,result,"getIharm",DicDataEnum.HARMONIC_CURRENT.getName(),timeInterval,2,25); + }); + } + } + //间谐波电压 + if (Objects.equals(targetCode,DicDataEnum.INTERHARMONIC_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),9).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + DataInHarmV dataInHarmV = getDataInHarmV(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59").get(0); + channelHarmonicData(null,null,dataInHarmV,item,overlimit,result,"getInuharm",DicDataEnum.INTERHARMONIC_VOLTAGE.getName(),timeInterval,1,16); + }); + } + } + //负序电压不平衡度 + if (Objects.equals(targetCode,DicDataEnum.PHASE_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),5).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getUnbalance(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getVUnbalance(); + channelEachData(item,overlimit.getUbalance(),"getUbalance",result,DicDataEnum.PHASE_VOLTAGE.getName(),timeInterval,maxData); + }); + } + } + //负序电流 + if (Objects.equals(targetCode,DicDataEnum.NEG_CURRENT.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) { + List list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),6).getData(); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + double maxData = getINeg(param.getLineId() + , time + " 00:00:00" + , time + " 23:59:59" + ).get(0).getINeg(); + channelEachData(item,overlimit.getINeg(),"getINeg",result,DicDataEnum.NEG_CURRENT.getName(),timeInterval,maxData); + }); + } + } + if (CollUtil.isNotEmpty(result)) { + Map> map = result.stream().collect(Collectors.groupingBy(LineLimitDetailVo::getTime,LinkedHashMap::new,Collectors.toList())); + map.forEach((k,v)->{ + StringBuilder describe = new StringBuilder(); + LineLimitDetailVo lineLimitDetailVo = new LineLimitDetailVo(); + lineLimitDetailVo.setTime(k); + v.forEach(item->{ + describe.append(item.getOverLimitInfo()); + }); + lineLimitDetailVo.setOverLimitInfo(describe.toString()); + finalList.add(lineLimitDetailVo); + }); + } + return finalList; + } + //处理单指标 + public void channelEachData(RStatLimitRateDPO dpo, float limit, String getColum, List result, String targetName, Integer timeInterval, double maxData) { + try { + Class clazz = dpo.getClass(); + String methodName = getColum + "Overtime"; + Method method; + method = clazz.getMethod(methodName); + int value = (int) method.invoke(dpo); + LineLimitDetailVo vo = new LineLimitDetailVo(); + vo.setTime(dpo.getTime()); + vo.setOverLimitInfo(targetName + "最大幅值:" + PubUtils.doubleRound(2,maxData) + ",限值:" + limit + ",超标时间:" + value * timeInterval + "分钟;"); + result.add(vo); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + //处理谐波数据 谐波电压、谐波电流、间谐波电压 + public void channelHarmonicData(DataHarmRateV dataHarmRateV, DataI dataI, DataInHarmV dataInHarmV, RStatLimitRateDPO dpo, Overlimit overlimit, List result, String getColum, String targetName, Integer timeInterval, Integer startTimes, Integer endTimes) { + LinkedHashMap overMap = new LinkedHashMap<>(); + StringBuilder describe = new StringBuilder(); + LineLimitDetailVo vo = new LineLimitDetailVo(); + vo.setTime(dpo.getTime()); + //查看具体哪几次超标 + Class clazz = dpo.getClass(); + for (int i = startTimes; i <= endTimes; i++) { + String methodName = getColum + i + "Overtime"; + try { + Method method = clazz.getMethod(methodName); + int value = (int) method.invoke(dpo); + if (value > 0) { + overMap.put(i,value); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + Class clazz2 = null; + String targetName2 = null; + double value2 = 0.0; + if (Objects.nonNull(dataHarmRateV)) { + clazz2 = dataHarmRateV.getClass(); + targetName2 = "getV"; + } else if (Objects.nonNull(dataI)) { + clazz2 = dataI.getClass(); + targetName2 = "getI"; + } else if (Objects.nonNull(dataInHarmV)) { + clazz2 = dataInHarmV.getClass(); + targetName2 = "getV"; + } + for(Integer key:overMap.keySet()){ + int value = overMap.get(key); + String methodName = targetName2 + key; + Method method; + try { + method = clazz2.getMethod(methodName); + if (Objects.nonNull(dataHarmRateV)) { + value2 = (double) method.invoke(dataHarmRateV); + } else if (Objects.nonNull(dataI)) { + value2 = (double) method.invoke(dataI); + } else if (Objects.nonNull(dataInHarmV)) { + value2 = (double) method.invoke(dataInHarmV); + } + describe.append(key).append("次").append(targetName).append("CP95值最大幅值:").append(PubUtils.doubleRound(2,value2)).append("%,限值:").append(getOverLimitData(overlimit, getColum, key)).append("%,超标时间:").append(value * timeInterval).append("分钟;"); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + vo.setOverLimitInfo(describe.toString().trim()); + result.add(vo); } public List getReportLineInfo(boolean type, List idList, String codeId, String startTime, String endTime, String deptId,List allLineWarnings) { @@ -501,4 +765,141 @@ public class LineWarningServiceImpl extends MppServiceImpl clazz = overlimit.getClass(); + String methodName = targetName + times; + try { + Method method = clazz.getMethod(methodName); + result = (float) method.invoke(overlimit); + } catch (Exception e) { + throw new RuntimeException(e); + } + return result; + } + + /** + * 获取频率偏差-日最大值-最大值 + */ + public List getFreqDev(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper2 = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper2.eq(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MAX) + .eq(DataV::getPhasicType,"T") + .max(DataV::getFreqDev) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper2); + } + + /** + * 获取电压偏差-日最大值&&日最小值 日最大值的最大值 日最小值的最小值 + */ + public List getVoltageDev(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.eq(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MIN) + .regular(DataV::getPhasicType,Arrays.asList("A","B","C")) + .min(DataV::getVuDev) + .between(DataV::getTime, startTime, endTime); + List result = new ArrayList<>(dataVMapper.getStatisticsByWraper(influxQueryWrapper)); + InfluxQueryWrapper influxQueryWrapper2 = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper2.eq(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MAX) + .regular(DataV::getPhasicType,Arrays.asList("A","B","C")) + .max(DataV::getVuDev) + .between(DataV::getTime, startTime, endTime); + result.addAll(dataVMapper.getStatisticsByWraper(influxQueryWrapper2)); + return result; + } + + /** + * 获取长时闪变-日最大值-最大值 + */ + public List getFlicker(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class); + influxQueryWrapper.eq(DataPlt::getLineId, lineIndex) + .regular(DataPlt::getPhaseType,Arrays.asList("A","B","C")) + .max(DataPlt::getPlt) + .between(DataPlt::getTime, startTime, endTime); + return dataPltMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取电压总谐波畸变率-日CP95-最大值 + */ + public List getVThd(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.eq(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.CP95) + .regular(DataV::getPhasicType,Arrays.asList("A","B","C")) + .max(DataV::getVThd) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取负序电压不平衡度-日最大值-最大值 + */ + public List getUnbalance(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.eq(DataV::getLineId, lineIndex) + .eq(DataV::getValueType, InfluxDbSqlConstant.MAX) + .eq(DataV::getPhasicType,"T") + .max(DataV::getVUnbalance) + .between(DataV::getTime, startTime, endTime); + return dataVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取负序电流-日最大值-最大值 + */ + public List getINeg(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class); + influxQueryWrapper.eq(DataI::getLineId, lineIndex) + .eq(DataI::getValueType, InfluxDbSqlConstant.MAX) + .eq(DataI::getPhaseType,"T") + .max(DataI::getINeg) + .between(DataI::getTime, startTime, endTime); + return dataIMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取谐波电压含有率 2~25次数据 + */ + public List getDataHarmRateV(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmRateV.class); + influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.V,"", HarmonicTimesUtil.harmonicTimesList(2,25,1)); + influxQueryWrapper.eq(DataHarmRateV::getLineId, lineIndex) + .eq(DataHarmRateV::getValueType, InfluxDbSqlConstant.CP95) + .regular(DataHarmRateV::getPhaseType,Arrays.asList("A","B","C")) + .between(DataHarmRateV::getTime, startTime, endTime); + return dataHarmRateVMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取谐波电流含有率 2~25次数据 + */ + public List getDataI(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class); + influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.I,"", HarmonicTimesUtil.harmonicTimesList(2,25,1)); + influxQueryWrapper.eq(DataI::getLineId, lineIndex) + .eq(DataI::getValueType, InfluxDbSqlConstant.CP95) + .regular(DataI::getPhaseType,Arrays.asList("A","B","C")) + .between(DataI::getTime, startTime, endTime); + return dataIMapper.getStatisticsByWraper(influxQueryWrapper); + } + + /** + * 获取间谐波电压含有率 2~25次数据 + */ + public List getDataInHarmV(String lineIndex, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInHarmV.class); + influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.V,"", HarmonicTimesUtil.harmonicTimesList(1,16,1)); + influxQueryWrapper.eq(DataInHarmV::getLineId, lineIndex) + .eq(DataInHarmV::getValueType, InfluxDbSqlConstant.CP95) + .regular(DataInHarmV::getPhaseType,Arrays.asList("A","B","C")) + .between(DataInHarmV::getTime, startTime, endTime); + return dataInHarmVMapper.getStatisticsByWraper(influxQueryWrapper); + } }