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 new file mode 100644 index 0000000..9f5458b --- /dev/null +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessImpl.java @@ -0,0 +1,402 @@ +package cn.cecep.talroad.data.analyse.task.execute.report.specifications.month; + +import cn.cecep.talroad.domain.BStatTableZxbgGasEmission; +import cn.cecep.talroad.domain.SEnvGasMonHour; +import cn.cecep.talroad.domain.SEnvWaterMonDay; +import cn.cecep.talroad.domain.analysis.SRaActionReportsAuditResult; +import cn.cecep.talroad.mapper.BStatTableZxbgGasEmissionMapper; +import cn.cecep.talroad.mapper.SEnvGasMonHourMapper; +import cn.cecep.talroad.mapper.SEnvGasMonRealMapper; +import cn.cecep.talroad.mapper.SEnvWaterMonDayMapper; +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.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.common.collect.Maps; +import io.seata.common.util.StringUtils; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.compress.utils.Lists; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +@Slf4j +public class ExhaustExceedingProcessImpl implements ExhaustExceedingProcessService { + + private final BStatTableZxbgGasEmissionMapper statTableZxbgGasEmissionMapper; + + private final SRaActionReportsAuditResultMapper sRaActionReportsAuditResultMapper; + private final SEnvGasMonHourMapper sEnvGasMonHourMapper; + + private final SEnvWaterMonDayMapper sEnvWaterMonDayMapper; + + private final SEnvGasMonRealMapper sEnvGasMonRealMapper; + + @Override + public void exceededRateProcess() { + List queryActionReportsAuditResults = getAuditResultData(); + List resultList = Lists.newArrayList(); + resultList.addAll(exhaustGasExceededRateProcess(queryActionReportsAuditResults)); + resultList.addAll(exhaustWaterExceededRateProcess(queryActionReportsAuditResults)); + auditResultChange(resultList); + + + } + + @Override + public void exhaustGasEmissionProcess() { + List queryActionReportsAuditResults = getAuditResultData(); + auditResultChange(gasEmissionProcess(queryActionReportsAuditResults)); + } + + private List gasEmissionProcess(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 = sEnvGasMonRealMapper.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(SEnvGasMonRealVo.EmissionAvgAndMax::getOutletId, o -> o)); + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + checkMaxAndAvg(emissionAvgAndMaxMap, dataList, resultList, queryActionReportsAuditResult); + } + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + Map emissionDataMap = getGasEmissionDataMap(factoryIdList, dataList); + checkExceededData(dataList, resultList, queryActionReportsAuditResult, emissionDataMap); + } + + return resultList; + } + + private void checkExceededData(List dataList, List resultList, + SRaActionReportsAuditResult queryActionReportsAuditResult, Map emissionDataMap) { + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : dataList) { + String pollutantName = statTableZxbgGasEmission.getPollutantName(); + String exceededData = statTableZxbgGasEmission.getExceededData(); + String key = statTableZxbgGasEmission.getFactoryId() + pollutantName; + BigDecimal exceededNumber = emissionDataMap.get(key); + BigDecimal computeExceededRateNumber = NumberUtils.getBigDecimalDefaultNull(exceededData).divide(exceededNumber).multiply(new BigDecimal("100")); + BigDecimal multiply = computeExceededRateNumber.multiply(exceededNumber); + if (new BigDecimal(exceededData).compareTo(multiply) != 0) { + SRaActionReportsAuditResult sRaActionReportsAuditResult = new SRaActionReportsAuditResult(); + sRaActionReportsAuditResult.setId(queryActionReportsAuditResult.getId()); + sRaActionReportsAuditResult.setOrganizedGasMonitoringData("根据有组织废气污染物超标时段小时均值报表中填报的数据," + statTableZxbgGasEmission.getOutletCode() + + pollutantName + "超标数据数量应为" + multiply + ",企业填报数据为" + exceededData + "数据不符。"); + resultList.add(sRaActionReportsAuditResult); + } + } + + + } + + + private void checkMaxAndAvg(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)) { + SEnvGasMonRealVo.EmissionAvgAndMax emissionAvgAndMax = emissionAvgAndMaxMap.get(outletCode); + if (Objects.nonNull(emissionAvgAndMax)) { + StringBuilder allMessage = new StringBuilder(); + BigDecimal gasEmissionMax = getGasEmissionMax(pollutantName, emissionAvgAndMax); + BigDecimal gasEmissionAvg = getGasEmissionAvg(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 List waterEmissionProcess(List queryActionReportsAuditResults) { + + return null; + } + + @Override + public void exhaustWaterEmissionProcess() { + List queryActionReportsAuditResults = getAuditResultData(); + auditResultChange(waterEmissionProcess(queryActionReportsAuditResults)); + } + + private List getAuditResultData() { + String period = LocalDate.now().toString().substring(0, 4); + SRaActionReportsAuditResult queryResult = new SRaActionReportsAuditResult(); + queryResult.setReportTime(period); + return sRaActionReportsAuditResultMapper.selectSRaActionReportsAuditResultList(queryResult); + } + + private void auditResultChange(List resultList) { + if (CollUtil.isNotEmpty(resultList)) { + List> partition = ListUtils.partition(resultList, 10); + for (List sRaActionReportsAuditResultList : partition) { + sRaActionReportsAuditResultMapper.batchUpdate(sRaActionReportsAuditResultList); + } + } + } + + private List exhaustWaterExceededRateProcess(List queryActionReportsAuditResults) { + List factoryIdList = queryActionReportsAuditResults.stream().map(SRaActionReportsAuditResult::getFactoryId).collect(Collectors.toList()); + List dataList = getDataList(factoryIdList); + Map emissionDataMap = getWaterEmissionDataMap(factoryIdList, dataList); + List resultList = Lists.newArrayList(); + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + fifterExceedingData(queryActionReportsAuditResult, dataList, resultList, emissionDataMap); + } + return resultList; + } + + private List exhaustGasExceededRateProcess(List queryActionReportsAuditResults) { + List factoryIdList = queryActionReportsAuditResults.stream().map(SRaActionReportsAuditResult::getFactoryId).collect(Collectors.toList()); + List dataList = getDataList(factoryIdList); + Map emissionDataMap = getGasEmissionDataMap(factoryIdList, dataList); + List resultList = Lists.newArrayList(); + for (SRaActionReportsAuditResult queryActionReportsAuditResult : queryActionReportsAuditResults) { + fifterExceedingData(queryActionReportsAuditResult, dataList, resultList, emissionDataMap); + } + return resultList; + } + + private Map getGasEmissionDataMap(List factoryIdList, List dataList) { + List outletCodes = dataList.stream().map(BStatTableZxbgGasEmission::getOutletCode).filter(StringUtils::isNotEmpty).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(). + eq(SEnvGasMonHour::getDataType, "h") + .in(SEnvGasMonHour::getFactoryId, factoryIdList) + .in(SEnvGasMonHour::getOutletId, outletCodes) + .ge(SEnvGasMonHour::getMonitoringTime, DateUtil.format(DateUtil.getFirstDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss")) + .le(SEnvGasMonHour::getMonitoringTime, DateUtil.format(DateUtil.getLastDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss")); + List sEnvGasMonHours = sEnvGasMonHourMapper.selectList(queryWrapper); + HashMap dataMap = Maps.newHashMap(); + if (CollUtil.isNotEmpty(sEnvGasMonHours)) { + for (SEnvGasMonHour sEnvGasMonHour : sEnvGasMonHours) { + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : dataList) { + String pollutantName = statTableZxbgGasEmission.getPollutantName(); + String emission = getGasEmission(pollutantName, sEnvGasMonHour); + String key = sEnvGasMonHour.getFactoryId() + pollutantName; + dataMap.put(key, NumberUtils.getBigDecimalDefaultNull(emission)); + } + } + } + return dataMap; + } + + private Map getWaterEmissionDataMap(List factoryIdList, List dataList) { + List outletCodes = dataList.stream().map(BStatTableZxbgGasEmission::getOutletCode).filter(StringUtils::isNotEmpty).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(). + eq(SEnvWaterMonDay::getDataType, "d") + .in(SEnvWaterMonDay::getFactoryId, factoryIdList) + .in(SEnvWaterMonDay::getOutletId, outletCodes) + .ge(SEnvWaterMonDay::getMonitoringTime, DateUtil.format(DateUtil.getFirstDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss")) + .le(SEnvWaterMonDay::getMonitoringTime, DateUtil.format(DateUtil.getLastDayOfMonth(-1), "yyyy-MM-dd HH:mm:ss")); + List sEnvWaterMonDays = sEnvWaterMonDayMapper.selectList(queryWrapper); + HashMap dataMap = Maps.newHashMap(); + if (CollUtil.isNotEmpty(sEnvWaterMonDays)) { + for (SEnvWaterMonDay sEnvWaterMonDay : sEnvWaterMonDays) { + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : dataList) { + String pollutantName = statTableZxbgGasEmission.getPollutantName(); + String emission = getWaterEmission(pollutantName, sEnvWaterMonDay); + String key = sEnvWaterMonDay.getFactoryId() + pollutantName; + dataMap.put(key, NumberUtils.getBigDecimalDefaultNull(emission)); + } + } + } + return dataMap; + } + + + private void fifterExceedingData(SRaActionReportsAuditResult queryActionReportsAuditResult, List dataList, + List resultList, Map emissionDataMap) { + String factoryId = queryActionReportsAuditResult.getFactoryId(); + List filteredList = dataList.stream() + .filter(item -> item.getFactoryId().equals(factoryId)) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(filteredList)) return; + for (BStatTableZxbgGasEmission bStatTableZxbgGasEmission : filteredList) { + + String exceededData = bStatTableZxbgGasEmission.getExceededData(); //企业填报超标数据个数 + String fillExceededRate = bStatTableZxbgGasEmission.getExceededRate(); //企业填报超标率 + String key = bStatTableZxbgGasEmission.getFactoryId() + bStatTableZxbgGasEmission.getPollutantName(); + BigDecimal exceededNumber = emissionDataMap.get(key); + BigDecimal computeExceededRateNumber = NumberUtils.getBigDecimalDefaultNull(exceededData).divide(exceededNumber).multiply(new BigDecimal("100")); + if (computeExceededRateNumber.compareTo(new BigDecimal(fillExceededRate)) != 0) { + SRaActionReportsAuditResult sRaActionReportsAuditResult = new SRaActionReportsAuditResult(); + sRaActionReportsAuditResult.setId(queryActionReportsAuditResult.getId()); + sRaActionReportsAuditResult.setExceedingRate(buildMessage(bStatTableZxbgGasEmission, computeExceededRateNumber)); + resultList.add(sRaActionReportsAuditResult); + } + } + + } + + private String buildMessage(BStatTableZxbgGasEmission bStatTableZxbgGasEmission, BigDecimal computeExceededRateNumber) { + + log.info("企业ID:{},提示语句:{}", bStatTableZxbgGasEmission.getFactoryId(), String.format("根据企业填报数值%s %s ,超标率计算应为%s,实际填报为%s,计算不正确。", + bStatTableZxbgGasEmission.getOutletCode(), + bStatTableZxbgGasEmission.getPollutantName(), + computeExceededRateNumber.toString(), + bStatTableZxbgGasEmission.getExceededRate())); + //根据企业填报数值,“排口编号”“污染物种类”“超标率”计算应为“xxx",实际填报为"xxx”,计算不正确。 + return String.format("根据企业填报数值%s %s ,超标率计算应为%s,实际填报为%s,计算不正确。", + bStatTableZxbgGasEmission.getOutletCode(), + bStatTableZxbgGasEmission.getPollutantName(), + computeExceededRateNumber, + bStatTableZxbgGasEmission.getExceededRate() + ); + } + + + private List getDataList(List factoryIdList) { + //TODO 执行周期暂定为月 + String period = LocalDate.now().minusMonths(1).toString().substring(0, 7); + LambdaQueryWrapper queryWrapper = + new QueryWrapper().lambda() + .in(BStatTableZxbgGasEmission::getFactoryId, factoryIdList) + .eq(BStatTableZxbgGasEmission::getZxbgType, 0) + .eq(BStatTableZxbgGasEmission::getZxbgPeriod, period); + List dataList = statTableZxbgGasEmissionMapper.selectList(queryWrapper); + log.info("ExhaustGasExceedingProcessService->getDataList:{}", JSON.toJSONString(dataList)); + return dataList; + } + + + private BigDecimal getGasEmissionMax(String pollutantName, SEnvGasMonRealVo.EmissionAvgAndMax emissionAvgAndMax) { + if ("二氧化硫".equals(pollutantName)) { + return emissionAvgAndMax.getS02EmissionMax(); + } + if ("氮氧化物".equals(pollutantName)) { + return emissionAvgAndMax.getNoxEmissionMax(); + } + if ("一氧化氮".equals(pollutantName)) { + return emissionAvgAndMax.getNoEmissionMax(); + } + if ("二氧化氮".equals(pollutantName)) { + return emissionAvgAndMax.getNo2EmissionMax(); + } + if ("烟尘".equals(pollutantName)) { + return emissionAvgAndMax.getSmokeDustEmissionMax(); + } + if ("颗粒物实测".equals(pollutantName)) { + return emissionAvgAndMax.getPmEmissionMax(); + } + if ("vocs实测".equals(pollutantName)) { + return emissionAvgAndMax.getVocsEmissionMax(); + } + if ("废气".equals(pollutantName)) { + return emissionAvgAndMax.getOxygenEmissionMax(); + } + return BigDecimal.ZERO; + } + + private BigDecimal getGasEmissionAvg(String pollutantName, SEnvGasMonRealVo.EmissionAvgAndMax emissionAvgAndMax) { + if ("二氧化硫".equals(pollutantName)) { + return emissionAvgAndMax.getS02EmissionAvg(); + } + if ("氮氧化物".equals(pollutantName)) { + return emissionAvgAndMax.getNoxEmissionAvg(); + } + if ("一氧化氮".equals(pollutantName)) { + return emissionAvgAndMax.getNoEmissionAvg(); + } + if ("二氧化氮".equals(pollutantName)) { + return emissionAvgAndMax.getNo2EmissionAvg(); + } + if ("烟尘".equals(pollutantName)) { + return emissionAvgAndMax.getSmokeDustEmissionAvg(); + } + if ("颗粒物实测".equals(pollutantName)) { + return emissionAvgAndMax.getPmEmissionAvg(); + } + if ("vocs实测".equals(pollutantName)) { + return emissionAvgAndMax.getVocsEmissionAvg(); + } + if ("废气".equals(pollutantName)) { + return emissionAvgAndMax.getOxygenEmissionAvg(); + } + return BigDecimal.ZERO; + } + + private String getWaterEmission(String pollutantName, SEnvWaterMonDay sEnvWaterMonDay) { + if ("污水".equals(pollutantName)) { + return sEnvWaterMonDay.getSewageEmission(); + } + if ("化学需氧量".equals(pollutantName)) { + return sEnvWaterMonDay.getCodEmission(); + } + if ("氨氮".equals(pollutantName)) { + return sEnvWaterMonDay.getAmmoniaNitrogenEmission(); + } + if ("总氮浓度".equals(pollutantName)) { + return sEnvWaterMonDay.getNitrogenConcentrationEmission(); + } + if ("总磷浓度".equals(pollutantName)) { + return sEnvWaterMonDay.getPhosphorusConcentrationEmission(); + } + return ""; + } + + private String getGasEmission(String pollutantName, SEnvGasMonHour sEnvGasMonHour) { + if ("二氧化硫".equals(pollutantName)) { + return sEnvGasMonHour.getSo2Emission(); + } + if ("氮氧化物".equals(pollutantName)) { + return sEnvGasMonHour.getNoxEmission(); + } + if ("一氧化氮".equals(pollutantName)) { + return sEnvGasMonHour.getNoEmission(); + } + if ("二氧化氮".equals(pollutantName)) { + return sEnvGasMonHour.getNo2Emission(); + } + if ("烟尘".equals(pollutantName)) { + return sEnvGasMonHour.getSmokeDustEmission(); + } + if ("颗粒物实测".equals(pollutantName)) { + return sEnvGasMonHour.getPmEmission(); + } + if ("vocs实测".equals(pollutantName)) { + return sEnvGasMonHour.getVocsEmission(); + } + if ("废气".equals(pollutantName)) { + return sEnvGasMonHour.getOxygenEmission(); + } + return ""; + } + + +} \ No newline at end of file diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessService.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessService.java new file mode 100644 index 0000000..2d48f3a --- /dev/null +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/month/ExhaustExceedingProcessService.java @@ -0,0 +1,10 @@ +package cn.cecep.talroad.data.analyse.task.execute.report.specifications.month; + +public interface ExhaustExceedingProcessService { + + void exceededRateProcess(); + + void exhaustGasEmissionProcess(); + + void exhaustWaterEmissionProcess(); +} diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvGasMonRealMapper.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvGasMonRealMapper.java index 8e74ffc..b634e5d 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvGasMonRealMapper.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/mapper/SEnvGasMonRealMapper.java @@ -61,4 +61,6 @@ public interface SEnvGasMonRealMapper extends BaseMapper BigDecimal selectByOutLetId(@Param("factoryId") String factoryId, @Param("outLetId") String id, @Param("startTime") Date startTime, @Param("endTime") Date endTime); List selectLastDayData(@Param("lastDayBegin") DateTime queryBeginTime, @Param("lastDayEnd") DateTime queryEndTime); + + 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/task/ExecuteReportController.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/task/ExecuteReportController.java index afee6b4..e3b69e2 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/task/ExecuteReportController.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/task/ExecuteReportController.java @@ -3,6 +3,7 @@ package cn.cecep.talroad.task; import cn.cecep.talroad.common.core.web.domain.AjaxResults; import cn.cecep.talroad.data.analyse.task.execute.report.PollutionDischargeProcessService; import cn.cecep.talroad.data.analyse.task.execute.report.specifications.month.AnomalyAnalysisService; +import cn.cecep.talroad.data.analyse.task.execute.report.specifications.month.ExhaustExceedingProcessService; import cn.cecep.talroad.data.analyse.task.label.ExecuteReportTaskService; import cn.cecep.talroad.enums.EmlTypeEnums; import io.swagger.annotations.Api; @@ -31,6 +32,10 @@ public class ExecuteReportController { private final AnomalyAnalysisService anomalyAnalysisService; + private final ExhaustExceedingProcessService exhaustExceedingProcessService; + + + /** * 定时更新 执行报告-排污单位基本信息表-审核 */ @@ -99,5 +104,46 @@ public class ExecuteReportController { return AjaxResults.error(); } } + /** + * 定时更新 执行报告-废气超标率 + */ + @GetMapping("/exhaust/exceeded/rate/process") + public AjaxResults exhaustExceededRateProcess() { + try { + exhaustExceedingProcessService.exceededRateProcess(); + return AjaxResults.success(); + } catch (Exception e) { + log.error("定时执行执行报告-废气超标率任务失败. 原因:{}", e.getMessage(), e); + return AjaxResults.error(); + } + } + + /** + * 定时更新 执行报告-有组织废气污染物排放浓度监测数据统计表 + */ + @GetMapping("/exhaust/gas/emission/process") + public AjaxResults exhaustGasEmissionProcess() { + try { + exhaustExceedingProcessService.exhaustGasEmissionProcess(); + return AjaxResults.success(); + } catch (Exception e) { + log.error("定时执行执行报告-有组织废气污染物排放浓度监测数据统计表任务失败. 原因:{}", e.getMessage(), e); + return AjaxResults.error(); + } + } + /** + * 定时更新 执行报告-废水污染物排放浓度监测数据统计表 + */ + @GetMapping("/exhaust/water/emission/process") + public AjaxResults exhaustWaterEmissionProcess() { + try { + exhaustExceedingProcessService.exhaustWaterEmissionProcess(); + return AjaxResults.success(); + } catch (Exception e) { + log.error("定时执行废水污染物排放浓度监测数据统计表任务失败. 原因:{}", e.getMessage(), e); + return AjaxResults.error(); + } + } + } diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/SEnvGasMonRealVo.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/SEnvGasMonRealVo.java index da54c91..4f601b0 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/SEnvGasMonRealVo.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/vo/SEnvGasMonRealVo.java @@ -223,4 +223,59 @@ public class SEnvGasMonRealVo private BigDecimal oxygenEmissionAvg; } + @Data + public static class EmissionAvgAndMax { + @ApiModelProperty(value = "企业id") + private String factoryId; + @ApiModelProperty(value = "排口id") + private String outletId; + + @ApiModelProperty(value = "SO2排放量平均值") + private BigDecimal s02EmissionAvg; + + @ApiModelProperty(value = "SO2排放量最大值") + private BigDecimal s02EmissionMax; + + @ApiModelProperty(value = "NOx排放量平均值") + private BigDecimal noxEmissionAvg; + + @ApiModelProperty(value = "NOx排放量最大值") + private BigDecimal noxEmissionMax; + + @ApiModelProperty(value = "一氧化氮排放量平均值") + private BigDecimal noEmissionAvg; + + @ApiModelProperty(value = "一氧化氮排放量最大值") + private BigDecimal noEmissionMax; + + @ApiModelProperty(value = "二氧化氮排放量平均值") + private BigDecimal no2EmissionAvg; + + @ApiModelProperty(value = "二氧化氮排放量最大值") + private BigDecimal no2EmissionMax; + + @ApiModelProperty(value = "烟尘排放量平均值") + private BigDecimal smokeDustEmissionAvg; + + @ApiModelProperty(value = "烟尘排放量最大值") + private BigDecimal smokeDustEmissionMax; + + @ApiModelProperty(value = "颗粒物排放量平均值") + private BigDecimal pmEmissionAvg; + + @ApiModelProperty(value = "颗粒物排放量最大值") + private BigDecimal pmEmissionMax; + + @ApiModelProperty(value = "VOCs排放量平均值") + private BigDecimal vocsEmissionAvg; + + @ApiModelProperty(value = "VOCs排放量最大值") + private BigDecimal vocsEmissionMax; + + @ApiModelProperty(value = "废气排放量平均值") + private BigDecimal oxygenEmissionAvg; + + @ApiModelProperty(value = "废气排放量最大值") + private BigDecimal oxygenEmissionMax; + } } diff --git a/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvGasMonRealMapper.xml b/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvGasMonRealMapper.xml index 7f471a5..78e2e95 100644 --- a/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvGasMonRealMapper.xml +++ b/szhpt-fixed-task/src/main/resources/mapper/talroad/SEnvGasMonRealMapper.xml @@ -548,4 +548,70 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and po.monitoring_point_name not like '%入口%' and po.monitoring_point_name not like '%进口%' + +