From bff8821957a7f6de65a4dbd166cb9d306d20b0ae Mon Sep 17 00:00:00 2001 From: Frank <515380148@qq.com> Date: Sun, 13 Aug 2023 15:42:07 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=9C=89=E7=BB=84=E7=BB=87=E5=BA=9F=E6=B0=94?= =?UTF-8?q?=E6=B1=A1=E6=9F=93=E7=89=A9=E6=8E=92=E6=94=BE=E6=B5=93=E5=BA=A6?= =?UTF-8?q?=E7=9B=91=E6=B5=8B=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=E8=A1=A8?= =?UTF-8?q?=202.=E5=BA=9F=E6=B0=B4=E6=B1=A1=E6=9F=93=E7=89=A9=E6=8E=92?= =?UTF-8?q?=E6=94=BE=E6=B5=93=E5=BA=A6=E7=9B=91=E6=B5=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=A1=A8=203.=EF=BC=88=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E7=9B=91=E6=B5=8B=E6=97=B6=E6=AE=B5=EF=BC=89=E8=B6=85=E6=A0=87?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../month/ExhaustExceedingProcessImpl.java | 103 +++++++++++++++++- .../talroad/mapper/SEnvWaterMonDayMapper.java | 5 +- .../vo/analysis/FactoryOutletStaticsVo.java | 20 ++++ .../mapper/talroad/SEnvWaterMonDayMapper.xml | 57 ++++++++++ 4 files changed, 180 insertions(+), 5 deletions(-) diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessImpl.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessImpl.java index 9f5458b..a821f1d 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessImpl.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessImpl.java @@ -12,6 +12,7 @@ import cn.cecep.talroad.mapper.analysis.SRaActionReportsAuditResultMapper; import cn.cecep.talroad.util.DateUtil; import cn.cecep.talroad.util.NumberUtils; import cn.cecep.talroad.vo.SEnvGasMonRealVo; +import cn.cecep.talroad.vo.analysis.FactoryOutletStaticsVo; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -43,6 +44,7 @@ public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessServi private final SEnvGasMonRealMapper sEnvGasMonRealMapper; + @Override public void exceededRateProcess() { List queryActionReportsAuditResults = getAuditResultData(); @@ -69,7 +71,7 @@ public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessServi , DateUtil.format(DateUtil.getLastDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss"), outletCodes); Map emissionAvgAndMaxMap = emissionAvgAndMaxes.stream().collect(Collectors.toMap(SEnvGasMonRealVo.EmissionAvgAndMax::getOutletId, o -> o)); for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { - checkMaxAndAvg(emissionAvgAndMaxMap, dataList, resultList, queryActionReportsAuditResult); + checkGasMaxAndAvg(emissionAvgAndMaxMap, dataList, resultList, queryActionReportsAuditResult); } for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { Map emissionDataMap = getGasEmissionDataMap(factoryIdList, dataList); @@ -101,8 +103,8 @@ public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessServi } - private void checkMaxAndAvg(Map emissionAvgAndMaxMap, List dataList, - List resultList, SRaActionReportsAuditResult queryActionReportsAuditResult) { + private void checkGasMaxAndAvg(Map emissionAvgAndMaxMap, List dataList, + List resultList, SRaActionReportsAuditResult queryActionReportsAuditResult) { for (BStatTableZxbgGasEmission statTableZxbgGasEmission : dataList) { String outletCode = statTableZxbgGasEmission.getOutletCode(); @@ -145,8 +147,82 @@ public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessServi private List waterEmissionProcess(List queryActionReportsAuditResults) { + List resultList = Lists.newArrayList(); + List factoryIdList = queryActionReportsAuditResults.stream().map(SRaActionReportsAuditResult::getFactoryId).collect(Collectors.toList()); + List dataList = getDataList(factoryIdList); + Set outletCodes = dataList.stream().map(BStatTableZxbgGasEmission::getOutletCode).collect(Collectors.toSet()); + List emissionAvgAndMaxes = sEnvWaterMonDayMapper.selectEmissionAvgAndMax(DateUtil.format(DateUtil.getFirstDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss") + , DateUtil.format(DateUtil.getLastDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss"), outletCodes); + Map emissionAvgAndMaxMap = emissionAvgAndMaxes.stream().collect(Collectors.toMap(FactoryOutletStaticsVo.EmissionAvgAndMax::getOutletId, o -> o)); + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + checkWaterMaxAndAvg(emissionAvgAndMaxMap, dataList, resultList, queryActionReportsAuditResult); + } + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + Map emissionDataMap = getGasEmissionDataMap(factoryIdList, dataList); + checkExceededData(dataList, resultList, queryActionReportsAuditResult, emissionDataMap); + } - return null; + return resultList; + } + + private void checkWaterMaxAndAvg(Map emissionAvgAndMaxMap, List dataList, List resultList, SRaActionReportsAuditResult queryActionReportsAuditResult) { + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : dataList) { + + String outletCode = statTableZxbgGasEmission.getOutletCode(); + String pollutantName = statTableZxbgGasEmission.getPollutantName(); + String detectionMaxHour = statTableZxbgGasEmission.getDetectionMaxHour(); + String detectionAvgHour = statTableZxbgGasEmission.getDetectionAvgHour(); + + if (emissionAvgAndMaxMap.containsKey(outletCode)) { + FactoryOutletStaticsVo.EmissionAvgAndMax emissionAvgAndMax = emissionAvgAndMaxMap.get(outletCode); + if (Objects.nonNull(emissionAvgAndMax)) { + StringBuilder allMessage = new StringBuilder(); + BigDecimal gasEmissionMax = getWaterEmissionMax(pollutantName, emissionAvgAndMax); + BigDecimal gasEmissionAvg = getWaterEmissionAvg(pollutantName, emissionAvgAndMax); + StringBuilder message = new StringBuilder(); + if (NumberUtils.getBigDecimalDefaultZero(detectionMaxHour).compareTo(gasEmissionMax) < 0) { + log.info("企业ID:{},提示语句:{}", queryActionReportsAuditResult.getFactoryId(), "企业填报数值不应低于平台核算数值。"); + message.append("排口编号:" + outletCode + "污染物种类:" + pollutantName + + "最大值平台根据其他系统数据核算为" + gasEmissionMax + ",企业填报数据为" + detectionMaxHour + "企业填报数值不应低于平台核算数值。"); + allMessage.append(message); + allMessage.append(";"); + } + + if (NumberUtils.getBigDecimalDefaultZero(detectionAvgHour).compareTo(new BigDecimal("0.80").multiply(gasEmissionAvg)) < 0) { + log.info("企业ID:{},提示语句:{}", queryActionReportsAuditResult.getFactoryId(), "企业填报数值低于平台核算数值的80%。"); + message.append("排口编号:" + outletCode + "污染物种类:" + pollutantName + + "平均值平台根据其他系统数据核算为" + gasEmissionAvg + ",企业填报数据为" + detectionAvgHour + "企业填报数值低于平台核算数值的80%。"); + allMessage.append(message); + allMessage.append(";"); + } + SRaActionReportsAuditResult sRaActionReportsAuditResult = new SRaActionReportsAuditResult(); + sRaActionReportsAuditResult.setId(queryActionReportsAuditResult.getId()); + sRaActionReportsAuditResult.setWaterPreventionFacilities(allMessage.toString()); + resultList.add(sRaActionReportsAuditResult); + } + } + + } + + } + + private BigDecimal getWaterEmissionAvg(String pollutantName, FactoryOutletStaticsVo.EmissionAvgAndMax emissionAvgAndMax) { + if ("污水".equals(pollutantName)) { + return emissionAvgAndMax.getSewageEmissionAvg(); + } + if ("化学需氧量".equals(pollutantName)) { + return emissionAvgAndMax.getCodEmissionAvg(); + } + if ("氨氮".equals(pollutantName)) { + return emissionAvgAndMax.getAmmoniaNitrogenEmissionAvg(); + } + if ("总氮浓度".equals(pollutantName)) { + return emissionAvgAndMax.getNitrogenConcentrationEmissionAvg(); + } + if ("总磷浓度".equals(pollutantName)) { + return emissionAvgAndMax.getPhosphorusConcentrationEmissionAvg(); + } + return BigDecimal.ZERO; } @Override @@ -323,6 +399,25 @@ public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessServi return BigDecimal.ZERO; } + private BigDecimal getWaterEmissionMax(String pollutantName, FactoryOutletStaticsVo.EmissionAvgAndMax emissionAvgAndMax) { + if ("污水".equals(pollutantName)) { + return emissionAvgAndMax.getSewageEmissionMax(); + } + if ("化学需氧量".equals(pollutantName)) { + return emissionAvgAndMax.getCodEmissionMax(); + } + if ("氨氮".equals(pollutantName)) { + return emissionAvgAndMax.getAmmoniaNitrogenEmissionMax(); + } + if ("总氮浓度".equals(pollutantName)) { + return emissionAvgAndMax.getNitrogenConcentrationEmissionMax(); + } + if ("总磷浓度".equals(pollutantName)) { + return emissionAvgAndMax.getPhosphorusConcentrationEmissionMax(); + } + return BigDecimal.ZERO; + } + private BigDecimal getGasEmissionAvg(String pollutantName, SEnvGasMonRealVo.EmissionAvgAndMax emissionAvgAndMax) { if ("二氧化硫".equals(pollutantName)) { return emissionAvgAndMax.getS02EmissionAvg(); diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvWaterMonDayMapper.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvWaterMonDayMapper.java index 532e5e1..03c3697 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvWaterMonDayMapper.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvWaterMonDayMapper.java @@ -1,7 +1,6 @@ package cn.cecep.talroad.mapper; import cn.cecep.talroad.domain.SEnvWaterMonDay; -import cn.cecep.talroad.domain.SEnvWaterMonHour; import cn.cecep.talroad.vo.analysis.FactoryOutletStaticsVo; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -9,6 +8,7 @@ import java.util.Date; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Set; /** * 废水监测数据Mapper接口 @@ -24,4 +24,7 @@ public interface SEnvWaterMonDayMapper extends BaseMapper List selectLastDayCountData(@Param("lastDayBegin") DateTime queryBeginTime, @Param("lastDayEnd") DateTime queryEndTime); List selectHourDataByTime(@Param("factoryId") String factoryId, @Param("monitorId") String monitorId, @Param("monitorTime") Date monitorTime); + + List selectEmissionAvgAndMax(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("outletIds") Set outletIds); + } diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/analysis/FactoryOutletStaticsVo.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/analysis/FactoryOutletStaticsVo.java index e5184e7..324b6b4 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/analysis/FactoryOutletStaticsVo.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/analysis/FactoryOutletStaticsVo.java @@ -1,7 +1,10 @@ package cn.cecep.talroad.vo.analysis; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + /** * @Auther: cjh * @Date: 2023-07-14 11:52 @@ -18,4 +21,21 @@ public class FactoryOutletStaticsVo { private String paramName; private Integer actualCount; + + @Data + public static class EmissionAvgAndMax { + private String factoryId; + private String outletId; + private BigDecimal sewageEmissionAvg; + private BigDecimal sewageEmissionMax; + private BigDecimal codEmissionAvg; + private BigDecimal codEmissionMax; + private BigDecimal ammoniaNitrogenEmissionAvg; + private BigDecimal ammoniaNitrogenEmissionMax; + private BigDecimal nitrogenConcentrationEmissionAvg; + private BigDecimal nitrogenConcentrationEmissionMax; + private BigDecimal phosphorusConcentrationEmissionAvg; + private BigDecimal phosphorusConcentrationEmissionMax; + } + } diff --git a/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvWaterMonDayMapper.xml b/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvWaterMonDayMapper.xml index 7e69624..219898c 100644 --- a/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvWaterMonDayMapper.xml +++ b/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvWaterMonDayMapper.xml @@ -74,4 +74,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + +