From dc360a5a1f9c8d56cf3ae7fbafa4de95ed532c25 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Mon, 24 Apr 2023 11:09:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=90=E6=B3=A2=E7=9B=91=E6=B5=8B-=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E5=88=86=E6=9E=90=EF=BC=9A=E8=B0=90=E6=B3=A2=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AnalyzeController.java | 1 - .../mapper/RStatLimitTargetDMapper.java | 30 ++ .../mapping/RStatLimitTargetDMapper.xml | 100 +++++ .../service/IRStatLimitTargetDService.java | 16 + .../service/impl/HarmonicServiceImpl.java | 414 ++++++++++++------ .../impl/RStatLimitTargetDServiceImpl.java | 20 + 6 files changed, 441 insertions(+), 140 deletions(-) create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/AnalyzeController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/AnalyzeController.java index febc5dc01..4798875f4 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/AnalyzeController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/AnalyzeController.java @@ -9,7 +9,6 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.LogUtil; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; -import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.harmonic.pojo.param.HarmonicPublicParam; import com.njcn.harmonic.pojo.vo.*; import com.njcn.harmonic.service.IAnalyzeService; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java new file mode 100644 index 000000000..67d604a52 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java @@ -0,0 +1,30 @@ +package com.njcn.harmonic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 合格率统计日表(是否越限) Mapper 接口 + *

+ * + * @author wr + * @since 2023-04-23 + */ +public interface RStatLimitTargetDMapper extends BaseMapper { + + /** + * 谐波查询 + * @return + */ + List getSumV(@Param("ids") List list, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + + List getSumI(@Param("ids") List list, + @Param("startTime") String startTime, + @Param("endTime") String endTime); +} 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 new file mode 100644 index 000000000..eb23fcac1 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml @@ -0,0 +1,100 @@ + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java new file mode 100644 index 000000000..14874668f --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java @@ -0,0 +1,16 @@ +package com.njcn.harmonic.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; + +/** + *

+ * 合格率统计日表(是否越限) 服务类 + *

+ * + * @author wr + * @since 2023-04-23 + */ +public interface IRStatLimitTargetDService extends IService { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicServiceImpl.java index 69e4f97cf..e0ebc9e89 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicServiceImpl.java @@ -1,6 +1,11 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.njcn.common.config.GeneralInfo; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.LineFeignClient; @@ -9,21 +14,20 @@ import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.vo.LineDeviceStateVO; import com.njcn.harmonic.constant.Param; +import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; import com.njcn.harmonic.pojo.dto.AreaDTO; import com.njcn.harmonic.pojo.param.HarmonicPublicParam; import com.njcn.harmonic.pojo.po.LimitTarget; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.HarmonicDeptVO; import com.njcn.harmonic.pojo.vo.HarmonicLineVO; import com.njcn.harmonic.pojo.vo.HarmonicSubstationVO; import com.njcn.harmonic.pojo.vo.PollutionVO; import com.njcn.harmonic.service.IHarmonicService; -import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.enums.DicDataEnum; import com.njcn.web.utils.RequestUtil; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; -import org.influxdb.dto.QueryResult; -import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -47,12 +51,11 @@ public class HarmonicServiceImpl implements IHarmonicService { private final GeneralDeviceInfoClient generalDeviceInfoClient; - private final InfluxDbUtils influxDbUtils; - private final GeneralInfo generalInfo; private final LineFeignClient lineFeignClient; + private final RStatLimitTargetDMapper targetDMapper; @Override public List getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) { harmonicPublicParam.setServerName(generalInfo.getMicroServiceName()); @@ -72,6 +75,18 @@ public class HarmonicServiceImpl implements IHarmonicService { lineInfo = lineFeignClient.getLineInfo(paramDTO).getData(); } Map> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId)); + //获取所有的数据信息 + List limitTargetNew = getLimitTargetNew(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime()); + //聚合查询 + List allData = new ArrayList<>(); + if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())){ + allData = getAllDataV(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime()); + } else if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())){ + allData = getAllDataI(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime()); + + } + + List finalAllData = allData; deptList.forEach(dept->{ List childrenList = new ArrayList<>(); PollutionVO pollutionVO = new PollutionVO(); @@ -84,7 +99,13 @@ public class HarmonicServiceImpl implements IHarmonicService { children.setId(sub); children.setPid(dept.getIndex()); children.setName(l1.get(0).getSubstation()); - children.setData(handleData(getLimitTarget(l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList()), harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()),harmonicPublicParam.getStatisticalType().getCode(),l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList()), harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()).getRatio()); + //监测点id + List lineIds = l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList()); + List collect = limitTargetNew.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList()); + + List sumList = finalAllData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList()); + + children.setData(handleDataNew(collect,sumList,harmonicPublicParam.getStatisticalType().getCode(),l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList()), harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()).getRatio()); childrenList.add(children); }); } @@ -92,7 +113,8 @@ public class HarmonicServiceImpl implements IHarmonicService { pollutionVO.setChildren(childrenList.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed().thenComparing(PollutionVO::getName)).collect(Collectors.toList())); } if (!CollectionUtils.isEmpty(dept.getLineIndexes())){ - pollutionVO.setData(handleData(getLimitTarget(lineList, harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()),harmonicPublicParam.getStatisticalType().getCode(),lineList, harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()).getRatio()); +// pollutionVO.setData(handleData(getLimitTarget(lineList, harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()),harmonicPublicParam.getStatisticalType().getCode(),lineList, harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime()).getRatio()); + pollutionVO.setData(NumberUtil.round(childrenList.stream().mapToDouble(PollutionVO::getData).average().orElse(3.14159),2).doubleValue()); } list.add(pollutionVO); }); @@ -110,20 +132,20 @@ public class HarmonicServiceImpl implements IHarmonicService { deptList.forEach(item->{ List lineList = item.getLineIndexes(); HarmonicDeptVO harmonicDeptVO = new HarmonicDeptVO(); - if (!CollectionUtils.isEmpty(lineList)){ - List limitTargetList = getLimitTarget(lineList,param.getSearchBeginTime(),param.getSearchEndTime()); - AreaDTO areaDTO = handleData(limitTargetList,param.getStatisticalType().getCode(),lineList,param.getSearchBeginTime(),param.getSearchEndTime()); - BeanUtil.copyProperties(areaDTO,harmonicDeptVO); - } - harmonicDeptVO.setId(item.getIndex()); - harmonicDeptVO.setName(item.getName()); - list.add(harmonicDeptVO); - }); - if (!CollectionUtils.isEmpty(list)){ - return list.stream().sorted(Comparator.comparing(HarmonicDeptVO::getRatio).reversed().thenComparing(HarmonicDeptVO::getOnlineCount).thenComparing(HarmonicDeptVO::getOverLineCount)).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(lineList)){ + List limitTargetList = getLimitTarget(lineList,param.getSearchBeginTime(),param.getSearchEndTime()); + AreaDTO areaDTO = handleData(limitTargetList,param.getStatisticalType().getCode(),lineList,param.getSearchBeginTime(),param.getSearchEndTime()); + BeanUtil.copyProperties(areaDTO,harmonicDeptVO); } - return list; + harmonicDeptVO.setId(item.getIndex()); + harmonicDeptVO.setName(item.getName()); + list.add(harmonicDeptVO); + }); + if (!CollectionUtils.isEmpty(list)){ + return list.stream().sorted(Comparator.comparing(HarmonicDeptVO::getRatio).reversed().thenComparing(HarmonicDeptVO::getOnlineCount).thenComparing(HarmonicDeptVO::getOverLineCount)).collect(Collectors.toList()); } + return list; +} @Override public List getSubstationInfoById(HarmonicPublicParam param) { @@ -235,6 +257,14 @@ public class HarmonicServiceImpl implements IHarmonicService { return list; } + public List getLimitTargetNew(List lineList, String startTime, String endTime){ + List limitRates = targetDMapper.selectList(new LambdaQueryWrapper() + .in(RStatLimitTargetDPO::getLineId, lineList) + .ge(StrUtil.isNotBlank(startTime), RStatLimitTargetDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(startTime))) + .le(StrUtil.isNotBlank(endTime), RStatLimitTargetDPO::getTime, DateUtil.endOfDay(DateUtil.parse(endTime))) + ); + return limitRates; + } /** * 功能描述: 获取limitTarget数据 * @param lineList 部门列表 @@ -245,23 +275,141 @@ public class HarmonicServiceImpl implements IHarmonicService { * @date 2022/2/25 15:05 */ public List getLimitTarget(List lineList, String startTime, String endTime){ - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and ("); - for (int i=0;i listInfo = new ArrayList<>(); + List limitRates = targetDMapper.selectList(new LambdaQueryWrapper() + .in(RStatLimitTargetDPO::getLineId, lineList) + .ge(StrUtil.isNotBlank(startTime), RStatLimitTargetDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(startTime))) + .le(StrUtil.isNotBlank(endTime), RStatLimitTargetDPO::getTime, DateUtil.endOfDay(DateUtil.parse(endTime))) + ); + if(CollUtil.isNotEmpty(limitRates)){ + limitRates.forEach(list ->{ + LimitTarget limitRatePO = BeanUtil.copyProperties(list,LimitTarget.class); + limitRatePO.setTime(list.getTime().toInstant()); + limitRatePO.setLineId(list.getLineId()); + limitRatePO.setPhasicType(list.getPhasicType()); + limitRatePO.setAllTime(list.getAllTime()); + limitRatePO.setFlickerAllTime(list.getFlickerAllTime()); + limitRatePO.setFlickerOverTime(list.getFlickerOvertime()); + limitRatePO.setFreqDevOverTime(list.getFreqDevOvertime()); + limitRatePO.setIHarm2OverTime(list.getIharm2Overtime()); + limitRatePO.setIHarm3OverTime(list.getIharm3Overtime()); + limitRatePO.setIHarm4OverTime(list.getIharm4Overtime()); + limitRatePO.setIHarm5OverTime(list.getIharm5Overtime()); + limitRatePO.setIHarm6OverTime(list.getIharm6Overtime()); + limitRatePO.setIHarm7OverTime(list.getIharm7Overtime()); + limitRatePO.setIHarm8OverTime(list.getIharm8Overtime()); + limitRatePO.setIHarm9OverTime(list.getIharm9Overtime()); + limitRatePO.setIHarm10OverTime(list.getIharm10Overtime()); + limitRatePO.setIHarm11OverTime(list.getIharm11Overtime()); + limitRatePO.setIHarm12OverTime(list.getIharm12Overtime()); + limitRatePO.setIHarm13OverTime(list.getIharm13Overtime()); + limitRatePO.setIHarm14OverTime(list.getIharm14Overtime()); + limitRatePO.setIHarm15OverTime(list.getIharm15Overtime()); + limitRatePO.setIHarm16OverTime(list.getIharm16Overtime()); + limitRatePO.setIHarm17OverTime(list.getIharm17Overtime()); + limitRatePO.setIHarm18OverTime(list.getIharm18Overtime()); + limitRatePO.setIHarm19OverTime(list.getIharm19Overtime()); + limitRatePO.setIHarm20OverTime(list.getIharm20Overtime()); + limitRatePO.setIHarm21OverTime(list.getIharm21Overtime()); + limitRatePO.setIHarm22OverTime(list.getIharm22Overtime()); + limitRatePO.setIHarm23OverTime(list.getIharm23Overtime()); + limitRatePO.setIHarm24OverTime(list.getIharm24Overtime()); + limitRatePO.setIHarm25OverTime(list.getIharm25Overtime()); + limitRatePO.setINegOverTime(list.getINegOvertime()); + limitRatePO.setUAberranceOverTime(list.getUaberranceOvertime()); + limitRatePO.setUBalanceOverTime(list.getUbalanceOvertime()); + limitRatePO.setUHarm2OverTime(list.getUharm2Overtime()); + limitRatePO.setUHarm3OverTime(list.getUharm3Overtime()); + limitRatePO.setUHarm4OverTime(list.getUharm4Overtime()); + limitRatePO.setUHarm5OverTime(list.getUharm5Overtime()); + limitRatePO.setUHarm6OverTime(list.getUharm6Overtime()); + limitRatePO.setUHarm7OverTime(list.getUharm7Overtime()); + limitRatePO.setUHarm8OverTime(list.getUharm8Overtime()); + limitRatePO.setUHarm9OverTime(list.getUharm9Overtime()); + limitRatePO.setUHarm10OverTime(list.getUharm10Overtime()); + limitRatePO.setUHarm11OverTime(list.getUharm11Overtime()); + limitRatePO.setUHarm12OverTime(list.getUharm12Overtime()); + limitRatePO.setUHarm13OverTime(list.getUharm13Overtime()); + limitRatePO.setUHarm14OverTime(list.getUharm14Overtime()); + limitRatePO.setUHarm15OverTime(list.getUharm15Overtime()); + limitRatePO.setUHarm16OverTime(list.getUharm16Overtime()); + limitRatePO.setUHarm17OverTime(list.getUharm17Overtime()); + limitRatePO.setUHarm18OverTime(list.getUharm18Overtime()); + limitRatePO.setUHarm19OverTime(list.getUharm19Overtime()); + limitRatePO.setUHarm20OverTime(list.getUharm20Overtime()); + limitRatePO.setUHarm21OverTime(list.getUharm21Overtime()); + limitRatePO.setUHarm22OverTime(list.getUharm22Overtime()); + limitRatePO.setUHarm23OverTime(list.getUharm23Overtime()); + limitRatePO.setUHarm24OverTime(list.getUharm24Overtime()); + limitRatePO.setUHarm25OverTime(list.getUharm25Overtime()); + limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime()); + listInfo.add(limitRatePO); + }); } - stringBuilder.append(" tz('Asia/Shanghai')"); - String sql = "select * from limit_target where " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query(sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); - return resultMapper.toPOJO(sqlResult,LimitTarget.class); + return listInfo; + } - /** + public AreaDTO handleDataNew(List list, List sumList,String type,List lineList,String startTime,String endTime) { + int onlineCount = 0,overLineCount = 0,overCountByDay = 0; + double avgOverDay = 0.0,ratio = 0.0; + AreaDTO areaDTO = new AreaDTO(); + if (!CollectionUtils.isEmpty(list)){ + List data=sumList; + if (!CollectionUtils.isEmpty(sumList)) { + onlineCount = data.size(); + //在线监测点个数 + areaDTO.setOnlineCount(onlineCount); + //超标监测点数 + for (RStatLimitTargetDPO pojo : data) { + if (pojo.getAllTime()>0){ + overLineCount = overLineCount + 1; + } + } + } + } + Map> map = list.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getTime)); + for (Date key : map.keySet()) { + int overDay = 0; + List l = map.get(key); + for (RStatLimitTargetDPO pojo : l) { + if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){ + if (pojo.getUaberranceOvertime()>0 || pojo.getUharm20Overtime()>0 || pojo.getUharm3Overtime()>0 || pojo.getUharm4Overtime()>0 || pojo.getUharm5Overtime()>0 || pojo.getUharm6Overtime()>0 || pojo.getUharm7Overtime()>0 || pojo.getUharm8Overtime()>0 || pojo.getUharm9Overtime()>0 || pojo.getUharm10Overtime()>0 || pojo.getUharm11Overtime()>0 || pojo.getUharm12Overtime()>0 || pojo.getUharm13Overtime()>0 || pojo.getUharm14Overtime()>0 || pojo.getUharm15Overtime()>0 || pojo.getUharm16Overtime()>0 || pojo.getUharm17Overtime()>0 || pojo.getUharm18Overtime()>0 || pojo.getUharm19Overtime()>0 || pojo.getUharm20Overtime()>0 || pojo.getUharm21Overtime()>0 || pojo.getUharm22Overtime()>0 || pojo.getUharm23Overtime()>0 || pojo.getUharm24Overtime()>0 || pojo.getUharm25Overtime()>0){ + overCountByDay = overCountByDay + 1; + overDay = overDay + 1; + } + } else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){ + if (pojo.getIharm2Overtime()>0 || pojo.getIharm3Overtime()>0 || pojo.getIharm4Overtime()>0 || pojo.getIharm5Overtime()>0 || pojo.getIharm6Overtime()>0 || pojo.getIharm7Overtime()>0 || pojo.getIharm8Overtime()>0 || pojo.getIharm9Overtime()>0 || pojo.getIharm10Overtime()>0 || pojo.getIharm11Overtime()>0 || pojo.getIharm12Overtime()>0 || pojo.getIharm13Overtime()>0 || pojo.getIharm14Overtime()>0 || pojo.getIharm15Overtime()>0 || pojo.getIharm16Overtime()>0 || pojo.getIharm17Overtime()>0 || pojo.getIharm18Overtime()>0 || pojo.getIharm19Overtime()>0 || pojo.getIharm20Overtime()>0 || pojo.getIharm21Overtime()>0 || pojo.getIharm22Overtime()>0 || pojo.getIharm23Overtime()>0 || pojo.getIharm24Overtime()>0 || pojo.getIharm25Overtime()>0){ + overCountByDay = overCountByDay + 1; + overDay = overDay + 1; + } + } + } + ratio = ratio + overDay*1.0/l.size(); + } + //平均超标天数 + if (CollectionUtils.isEmpty(list)){ + avgOverDay = -1.0; + } else { + avgOverDay = overLineCount == 0?0.0:BigDecimal.valueOf(overCountByDay*1.0/overLineCount).setScale(2, RoundingMode.HALF_UP).doubleValue(); + } + //月监测点超标占比 + ratio = map.size() == 0?-1.0:BigDecimal.valueOf(ratio*100/map.size()).setScale(2, RoundingMode.HALF_UP).doubleValue(); + areaDTO.setOnlineCount(onlineCount); + areaDTO.setOverLineCount(overLineCount); + //平均超标天数 + areaDTO.setAverageOverDay(avgOverDay); + areaDTO.setRatio(Math.min(ratio,100.0)); + return areaDTO; + } + + + + + + + + /** todo * 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比 * @param list 集合 * type 类型 @@ -274,19 +422,24 @@ public class HarmonicServiceImpl implements IHarmonicService { double avgOverDay = 0.0,ratio = 0.0; AreaDTO areaDTO = new AreaDTO(); if (!CollectionUtils.isEmpty(list)){ - List data = getAllData(lineList,startTime,endTime); + List data = new ArrayList<>(); + if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){ + data = getAllDataV(lineList,startTime,endTime); + } else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){ + data = getAllDataI(lineList,startTime,endTime); + } if (!CollectionUtils.isEmpty(data)) { onlineCount = data.size(); //在线监测点个数 areaDTO.setOnlineCount(onlineCount); //超标监测点数 - for (LimitTarget pojo : data) { + for (RStatLimitTargetDPO pojo : data) { if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){ - if (pojo.getUHarm2OverTime()>0){ + if (pojo.getAllTime()>0){ overLineCount = overLineCount + 1; } } else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){ - if (pojo.getIHarm2OverTime()>0){ + if (pojo.getAllTime()>0){ overLineCount = overLineCount + 1; } } @@ -334,37 +487,11 @@ public class HarmonicServiceImpl implements IHarmonicService { * @author xy * @date 2022/2/25 15:05 */ - private List getAllData(List list, String startTime, String endTime){ - StringBuilder stringBuilder = new StringBuilder(); - StringBuilder stringBuilder1 = new StringBuilder(); - stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and ("); - for (int i=0;i getAllDataV(List list, String startTime, String endTime){ + return targetDMapper.getSumV(list,startTime,endTime); + } + private List getAllDataI(List list, String startTime, String endTime){ + return targetDMapper.getSumI(list,startTime,endTime); } @@ -379,51 +506,21 @@ public class HarmonicServiceImpl implements IHarmonicService { * @return */ private Integer getWarningInfo(List lineList, String startTime, String endTime, String type) { - int result = 0; - StringBuilder stringBuilder = new StringBuilder(); - StringBuilder stringBuilder1 = new StringBuilder(); - stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and ("); - for (int i=0;i sum=new ArrayList<>(); if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){ - stringBuilder1.append("sum(uaberrance_overtime)+"); - for (int i = 2; i <= 25; i++) { - if (i==25){ - stringBuilder1.append("sum(uharm_").append(i).append("_overtime)");; - } else { - stringBuilder1.append("sum(uharm_").append(i).append("_overtime)+"); - } - } + sum = targetDMapper.getSumV(lineList, startTime, endTime); + } else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){ - for (int i = 2; i <= 25; i++) { - if (i==25){ - stringBuilder1.append("sum(iharm_").append(i).append("_overtime)");; - } else { - stringBuilder1.append("sum(iharm_").append(i).append("_overtime)+"); - } - } + sum = targetDMapper.getSumV(lineList, startTime, endTime); + } - String sql = "select "+stringBuilder1+" from limit_rate where " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query(sql); - List list = sqlResult.getResults().get(0).getSeries(); - if (!CollectionUtils.isEmpty(list)) { - for (QueryResult.Series series : list) { - List> valueList = series.getValues(); - if (!CollectionUtils.isEmpty(valueList)) { - for (List value : valueList) { - result = (int)Double.parseDouble(value.get(1).toString()); - } - } - } - } else { - result = -1; + int result = 0; + if(CollUtil.isNotEmpty(sum)){ + result=sum.get(0).getUharm2Overtime(); + }else{ + result=-1; } + return result; } @@ -440,39 +537,78 @@ public class HarmonicServiceImpl implements IHarmonicService { * @return */ private List getLineOverDays(List lineList, String startTime, String endTime, String type) { - StringBuilder stringBuilder = new StringBuilder(); - StringBuilder stringBuilder1 = new StringBuilder(); - stringBuilder.append(Param.TIME + " >= '").append(startTime).append("' and ").append(Param.TIME).append(" <= '").append(endTime).append("' and ("); - for (int i=0;i listInfo=new ArrayList<>(); + List sum=new ArrayList<>(); if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){ - stringBuilder1.append("sum(uaberrance_overtime) AS uaberrance_overtime,"); - for (int i = 2; i <= 25; i++) { - if (i==25){ - stringBuilder1.append("sum(uharm_").append(i).append("_overtime) AS ").append("uharm_").append(i).append("_overtime ");; - } else { - stringBuilder1.append("sum(uharm_").append(i).append("_overtime) AS ").append("uharm_").append(i).append("_overtime,"); - } - } + sum = targetDMapper.getSumV(lineList, startTime, endTime); + } else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){ - for (int i = 2; i <= 25; i++) { - if (i==25){ - stringBuilder1.append("sum(iharm_").append(i).append("_overtime) AS ").append("iharm_").append(i).append("_overtime ");; - } else { - stringBuilder1.append("sum(iharm_").append(i).append("_overtime) AS ").append("iharm_").append(i).append("_overtime,"); - } - } + sum = targetDMapper.getSumV(lineList, startTime, endTime); + } - String sql = "select "+stringBuilder1+" from limit_target where " + stringBuilder; - QueryResult sqlResult = influxDbUtils.query(sql); - InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); - return resultMapper.toPOJO(sqlResult,LimitTarget.class); + if(CollUtil.isNotEmpty(sum)){ + sum.forEach(list ->{ + LimitTarget limitRatePO = BeanUtil.copyProperties(list,LimitTarget.class); + limitRatePO.setLineId(list.getLineId()); + limitRatePO.setFlickerAllTime(list.getFlickerAllTime()); + limitRatePO.setFlickerOverTime(list.getFlickerOvertime()); + limitRatePO.setFreqDevOverTime(list.getFreqDevOvertime()); + limitRatePO.setIHarm2OverTime(list.getIharm2Overtime()); + limitRatePO.setIHarm3OverTime(list.getIharm3Overtime()); + limitRatePO.setIHarm4OverTime(list.getIharm4Overtime()); + limitRatePO.setIHarm5OverTime(list.getIharm5Overtime()); + limitRatePO.setIHarm6OverTime(list.getIharm6Overtime()); + limitRatePO.setIHarm7OverTime(list.getIharm7Overtime()); + limitRatePO.setIHarm8OverTime(list.getIharm8Overtime()); + limitRatePO.setIHarm9OverTime(list.getIharm9Overtime()); + limitRatePO.setIHarm10OverTime(list.getIharm10Overtime()); + limitRatePO.setIHarm11OverTime(list.getIharm11Overtime()); + limitRatePO.setIHarm12OverTime(list.getIharm12Overtime()); + limitRatePO.setIHarm13OverTime(list.getIharm13Overtime()); + limitRatePO.setIHarm14OverTime(list.getIharm14Overtime()); + limitRatePO.setIHarm15OverTime(list.getIharm15Overtime()); + limitRatePO.setIHarm16OverTime(list.getIharm16Overtime()); + limitRatePO.setIHarm17OverTime(list.getIharm17Overtime()); + limitRatePO.setIHarm18OverTime(list.getIharm18Overtime()); + limitRatePO.setIHarm19OverTime(list.getIharm19Overtime()); + limitRatePO.setIHarm20OverTime(list.getIharm20Overtime()); + limitRatePO.setIHarm21OverTime(list.getIharm21Overtime()); + limitRatePO.setIHarm22OverTime(list.getIharm22Overtime()); + limitRatePO.setIHarm23OverTime(list.getIharm23Overtime()); + limitRatePO.setIHarm24OverTime(list.getIharm24Overtime()); + limitRatePO.setIHarm25OverTime(list.getIharm25Overtime()); + limitRatePO.setINegOverTime(list.getINegOvertime()); + limitRatePO.setUAberranceOverTime(list.getUaberranceOvertime()); + limitRatePO.setUBalanceOverTime(list.getUbalanceOvertime()); + limitRatePO.setUHarm2OverTime(list.getUharm2Overtime()); + limitRatePO.setUHarm3OverTime(list.getUharm3Overtime()); + limitRatePO.setUHarm4OverTime(list.getUharm4Overtime()); + limitRatePO.setUHarm5OverTime(list.getUharm5Overtime()); + limitRatePO.setUHarm6OverTime(list.getUharm6Overtime()); + limitRatePO.setUHarm7OverTime(list.getUharm7Overtime()); + limitRatePO.setUHarm8OverTime(list.getUharm8Overtime()); + limitRatePO.setUHarm9OverTime(list.getUharm9Overtime()); + limitRatePO.setUHarm10OverTime(list.getUharm10Overtime()); + limitRatePO.setUHarm11OverTime(list.getUharm11Overtime()); + limitRatePO.setUHarm12OverTime(list.getUharm12Overtime()); + limitRatePO.setUHarm13OverTime(list.getUharm13Overtime()); + limitRatePO.setUHarm14OverTime(list.getUharm14Overtime()); + limitRatePO.setUHarm15OverTime(list.getUharm15Overtime()); + limitRatePO.setUHarm16OverTime(list.getUharm16Overtime()); + limitRatePO.setUHarm17OverTime(list.getUharm17Overtime()); + limitRatePO.setUHarm18OverTime(list.getUharm18Overtime()); + limitRatePO.setUHarm19OverTime(list.getUharm19Overtime()); + limitRatePO.setUHarm20OverTime(list.getUharm20Overtime()); + limitRatePO.setUHarm21OverTime(list.getUharm21Overtime()); + limitRatePO.setUHarm22OverTime(list.getUharm22Overtime()); + limitRatePO.setUHarm23OverTime(list.getUharm23Overtime()); + limitRatePO.setUHarm24OverTime(list.getUharm24Overtime()); + limitRatePO.setUHarm25OverTime(list.getUharm25Overtime()); + limitRatePO.setVoltageDevOverTime(list.getVoltageDevOvertime()); + listInfo.add(limitRatePO); + }); + } + return listInfo; } /** diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java new file mode 100644 index 000000000..d4a10a044 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java @@ -0,0 +1,20 @@ +package com.njcn.harmonic.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.service.IRStatLimitTargetDService; +import org.springframework.stereotype.Service; + +/** + *

+ * 合格率统计日表(是否越限) 服务实现类 + *

+ * + * @author wr + * @since 2023-04-23 + */ +@Service +public class RStatLimitTargetDServiceImpl extends ServiceImpl implements IRStatLimitTargetDService { + +}