From 6be37ac12d78c8b3b7e90cfe3664f5c957ccd6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cguozhaojun=E2=80=9D?= <“guozhaojun@tangshan.com”> Date: Sun, 13 Aug 2023 16:46:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=9B=91=E6=B5=8B=E9=A2=91=E6=AC=A1?= =?UTF-8?q?=E5=90=88=E8=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../audit/ExecuteReportAuditService.java | 4 + .../MonitorFrequencyomplianceService.java | 202 ++++++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/ExecuteReportAuditService.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/ExecuteReportAuditService.java index 1d33861..581c5c6 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/ExecuteReportAuditService.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/ExecuteReportAuditService.java @@ -20,6 +20,8 @@ public class ExecuteReportAuditService { final FugitiveExhaustPollutantsService fugitiveExhaustPollutantsService; //序号 64 非正常工况/特殊时段有组织废气污染物监测数据统计表 final NotNormalOrgGasPollutantsService notNormalOrgGasPollutantsService; + //序号 65 监测频次合规 + final MonitorFrequencyomplianceService monitorFrequencyomplianceService; //序号 67 超标排放信息 final ExcessiveEmissionsService excessiveEmissionsService; //序号 68 附图附件-自行监测布点图 @@ -54,6 +56,8 @@ public class ExecuteReportAuditService { fugitiveExhaustPollutantsService.execute(reportIds); //比较耗时 //序号 64 非正常工况/特殊时段有组织废气污染物监测数据统计表 notNormalOrgGasPollutantsService.execute(reportIds); //比较耗时; + //监测频次合规 + monitorFrequencyomplianceService.execute(reportIds); //序号 67 超标排放信息 excessiveEmissionsService.execute(reportIds); //比较耗时 //序号 66 差异占比 diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java new file mode 100644 index 0000000..265fc49 --- /dev/null +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java @@ -0,0 +1,202 @@ +package cn.cecep.talroad.data.analyse.task.execute.report.specifications.audit; + +import cn.cecep.talroad.domain.BMainActionReports; +import cn.cecep.talroad.domain.BMainPollDisSelfMon; +import cn.cecep.talroad.domain.BStatTableZxbgGasEmission; +import cn.cecep.talroad.domain.analysis.SRaActionReportsAuditRecord; +import cn.cecep.talroad.domain.analysis.SRaActionReportsAuditResult; +import cn.cecep.talroad.enums.EmlTypeEnums; +import cn.cecep.talroad.mapper.*; +import cn.cecep.talroad.mapper.analysis.SRaActionReportsAuditRecordMapper; +import cn.cecep.talroad.mapper.analysis.SRaActionReportsAuditResultMapper; +import cn.cecep.talroad.service.ISEnvWaterMonDayService; +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MonitorFrequencyomplianceService { + + @Autowired + private PcOutletMapper pcOutletMapper; + + @Autowired + private SEnvGasMonHourMapper sEnvGasMonHourMapper; + + @Autowired + private ISEnvWaterMonDayService isEnvWaterMonDayService; + + @Autowired + private BStatTableZxbgGasEmissionMapper bStatTableZxbgGasEmissionMapper; + + @Autowired + private BMainActionReportsMapper actionReportsMapper; + + @Autowired + private SRaActionReportsAuditRecordMapper recordMapper; + + @Autowired + private SRaActionReportsAuditResultMapper auditResultMapper; + + @Autowired + private BMainPollDisSelfMonMapper pollDisSelfMonMapper; + + + public void execute(List reportIds) { + LambdaQueryWrapper reportQueryWrapper = new QueryWrapper().lambda() + .in(BMainActionReports::getId, reportIds); + List bMainActionReports = actionReportsMapper.selectList(reportQueryWrapper); + List updateList = new ArrayList<>(); + Map reportRecordMap = getReportRecordMap(reportIds); + //执行报告循环 + for (BMainActionReports bMainActionReport : bMainActionReports) { + + //获取执行报告对应的有组织废气污染物排放浓度监测数据统计表的数据 + LambdaQueryWrapper bStatTableZxbgGasEmissionLambdaQueryWrapper = new QueryWrapper().lambda() + .eq(BStatTableZxbgGasEmission::getFactoryId, bMainActionReport.getFactoryId()) + .eq(BStatTableZxbgGasEmission::getZxbgPeriod, bMainActionReport.getReportsTime()) + .eq(BStatTableZxbgGasEmission::getZxbgType, bMainActionReport.getReportsType()) + .notLike(BStatTableZxbgGasEmission::getRemark, "停产"); + List bStatTableZxbgGasEmissions = bStatTableZxbgGasEmissionMapper.selectList(bStatTableZxbgGasEmissionLambdaQueryWrapper); + //分为 手工和自动 bStatTableZxbgGasEmissions 获取 monitoringFacilities + if (CollectionUtil.isNotEmpty(bStatTableZxbgGasEmissions)) { + Map> emissionMap = bStatTableZxbgGasEmissions.stream().collect(Collectors.groupingBy(BStatTableZxbgGasEmission::getMonitoringFacilities)); + //effectivelyHour 监测数量小时值 + List statTableZxbgGasEmissions = emissionMap.get("手工"); + if (CollectionUtil.isNotEmpty(statTableZxbgGasEmissions)){ + List outletCode = statTableZxbgGasEmissions.stream().map(BStatTableZxbgGasEmission::getOutletCode).collect(Collectors.toList()); + LambdaQueryWrapper pollQueryWrapper = new QueryWrapper().lambda() + .eq(BMainPollDisSelfMon::getFactoryId, bMainActionReport.getFactoryId()) + .in(BMainPollDisSelfMon::getOutletCode, outletCode); + List bMainPollDisSelfMons = pollDisSelfMonMapper.selectList(pollQueryWrapper); + } + emissionMap.forEach((k, v) -> { + if (k.equals("手工")) { + + } else { + + } + }); + } + +// //根据企业查询到所有频次 然后根据 报告类型判断 生产设施/无组织排放编号要用许可系统的无组织编号全部查一下 以排污许可自行监测为主表进行判断 +// LambdaQueryWrapper pollQueryWrapper = new QueryWrapper().lambda() +// .select(BMainPollDisSelfMon::getFactoryId, BMainPollDisSelfMon::getOutletCode, BMainPollDisSelfMon::getPollutantType) +// .eq(BMainPollDisSelfMon::getFactoryId, factoryId); +// List bMainPollDisSelfMons = pollDisSelfMonMapper.selectList(pollQueryWrapper); +// if (CollectionUtil.isEmpty(bMainPollDisSelfMons)){ +// log.warn("bMainActionReport:{} 无自行监测频率数据!", JSON.toJSONString(bMainActionReport)); +// continue; +// } +// Map shouldDatCountMap = new HashMap<>(); +// //需要建立一个 排放口编号-污染物种类:检测频率 的映射 +// for (BMainPollDisSelfMon bMainPollDisSelfMon : bMainPollDisSelfMons) { +// String monitoringManualFrequency = bMainPollDisSelfMon.getMonitoringManualFrequency(); +// //如果是年报则判断 手工检测频次1年1次 或者1季度1次*4 或者1月一次*12 就是 需要填报数据的总次数 +// int count = getCount(monitoringManualFrequency, reportsType); +// //此处能获取到排口-污染物:报表对应需要检测的次数 +// shouldDatCountMap.put(buildKey(bMainPollDisSelfMon.getOutletCode(),bMainPollDisSelfMon.getPollutantType()),count); +// } + } + + } + + public Map getReportRecordMap(List reportIds) { + LambdaQueryWrapper recordQueryWrapper = new QueryWrapper() + .lambda() + .select(SRaActionReportsAuditRecord::getId, SRaActionReportsAuditRecord::getReportId) + .in(SRaActionReportsAuditRecord::getReportId, reportIds); + List sRaActionReportsAuditRecords = recordMapper.selectList(recordQueryWrapper); + if (CollectionUtil.isEmpty(sRaActionReportsAuditRecords)) { + log.warn("执行报告审核记录不存在!"); + return null; + } + List recordIds = sRaActionReportsAuditRecords.stream().map(SRaActionReportsAuditRecord::getId).collect(Collectors.toList()); + Map recordReportIdMap = sRaActionReportsAuditRecords.stream().collect(Collectors.toMap(SRaActionReportsAuditRecord::getId, SRaActionReportsAuditRecord::getReportId)); + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda().in(SRaActionReportsAuditResult::getRecordId, recordIds); + List sRaActionReportsAuditResults = auditResultMapper.selectList(queryWrapper); + if (CollectionUtil.isEmpty(sRaActionReportsAuditResults)) { + log.warn("执行报告规范性审核结果记录不存在!"); + return null; + } + return sRaActionReportsAuditResults.stream().collect(Collectors.toMap(data -> recordReportIdMap.get(data.getRecordId()), Function.identity())); + } + + public int getCount(String monitoringManualFrequency, String reportsType) { + if (EmlTypeEnums.YEAR.getCode().equals(reportsType)) { + return getYearCount(monitoringManualFrequency); + } else if (EmlTypeEnums.QUARTER.getCode().equals(reportsType)) { + //直接拿年的所有频次去除季度 + int yearCount = getYearCount(monitoringManualFrequency); + //小于12 代表 获取到的是 季度以上的单位 + if (yearCount < 4) { + return 0; + } + return yearCount / 4; + } else if (EmlTypeEnums.MONTH.getCode().equals(reportsType)) { + //直接拿年的所有频次去除月 + int yearCount = getYearCount(monitoringManualFrequency); + //小于12 代表 获取到的是月度以上的单位 + if (yearCount < 12) { + return 0; + } + return yearCount / 12; + } + return 0; + } + + public int getYearCount(String monitoringManualFrequency) { + //返回各种频次对应的 一整年需要多少次 此处周按照一年52周 每月5个星期算 + if (monitoringManualFrequency.contains("周")) { + //直接返回52周 + return 52; + } + if (monitoringManualFrequency.contains("月")) { + //每年有12个月 + return 12; + } + if (monitoringManualFrequency.contains("季")) { + //每年有4个季度 + return 4; + } + if (monitoringManualFrequency.contains("半年")) { + //每年有两个半年 + return 2; + } + if (monitoringManualFrequency.contains("年")) { + //每年一次 + return 1; + } + return 0; + } + + public String buildKey(String outletCode, String pollutantType) { + return outletCode + "-" + pollutantType; + } + + public String getOutletCodeByKey(String key) { + if (StringUtils.isBlank(key)) { + return null; + } + return key.split("-")[0]; + } + + public String getPollutantTypeByKey(String key) { + if (StringUtils.isBlank(key)) { + return null; + } + return key.split("-")[1]; + } +} From b873ef231f4c48e167ea786edac7a4803a21d7c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cguozhaojun=E2=80=9D?= <“guozhaojun@tangshan.com”> Date: Sun, 13 Aug 2023 18:13:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=9B=91=E6=B5=8B=E9=A2=91=E6=AC=A1?= =?UTF-8?q?=E5=90=88=E8=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/enums/monitoringFacilitiesEnum.java | 16 ++ .../MonitorFrequencyomplianceService.java | 169 +++++++++++------- 2 files changed, 124 insertions(+), 61 deletions(-) create mode 100644 szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/enums/monitoringFacilitiesEnum.java diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/enums/monitoringFacilitiesEnum.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/enums/monitoringFacilitiesEnum.java new file mode 100644 index 0000000..98a5b07 --- /dev/null +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/enums/monitoringFacilitiesEnum.java @@ -0,0 +1,16 @@ +package cn.cecep.talroad.data.analyse.task.enums; + +public enum monitoringFacilitiesEnum { + HANDIWORK("手工"), + AUTOMATIC("自动"), + ; + private final String name; + + monitoringFacilitiesEnum(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java index 265fc49..ea2b97a 100644 --- a/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java +++ b/szhpt-fixed-task/src/main/java/cn/cecep/talroad/data/analyse/task/execute/report/specifications/audit/MonitorFrequencyomplianceService.java @@ -1,8 +1,7 @@ package cn.cecep.talroad.data.analyse.task.execute.report.specifications.audit; -import cn.cecep.talroad.domain.BMainActionReports; -import cn.cecep.talroad.domain.BMainPollDisSelfMon; -import cn.cecep.talroad.domain.BStatTableZxbgGasEmission; +import cn.cecep.talroad.data.analyse.task.enums.monitoringFacilitiesEnum; +import cn.cecep.talroad.domain.*; import cn.cecep.talroad.domain.analysis.SRaActionReportsAuditRecord; import cn.cecep.talroad.domain.analysis.SRaActionReportsAuditResult; import cn.cecep.talroad.enums.EmlTypeEnums; @@ -10,8 +9,8 @@ import cn.cecep.talroad.mapper.*; import cn.cecep.talroad.mapper.analysis.SRaActionReportsAuditRecordMapper; import cn.cecep.talroad.mapper.analysis.SRaActionReportsAuditResultMapper; import cn.cecep.talroad.service.ISEnvWaterMonDayService; +import cn.cecep.talroad.util.DateUtil; import cn.hutool.core.collection.CollectionUtil; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -19,9 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -53,16 +50,39 @@ public class MonitorFrequencyomplianceService { @Autowired private BMainPollDisSelfMonMapper pollDisSelfMonMapper; + @Autowired + private BStatTableZxbgPflAirMapper bStatTableZxbgPflAirMapper; + public void execute(List reportIds) { - LambdaQueryWrapper reportQueryWrapper = new QueryWrapper().lambda() - .in(BMainActionReports::getId, reportIds); - List bMainActionReports = actionReportsMapper.selectList(reportQueryWrapper); + List bMainActionReports = actionReportsMapper.selectList(new QueryWrapper().lambda().in(BMainActionReports::getId, reportIds)); List updateList = new ArrayList<>(); Map reportRecordMap = getReportRecordMap(reportIds); - //执行报告循环 for (BMainActionReports bMainActionReport : bMainActionReports) { - + String reportsType = bMainActionReport.getReportsType(); + String factoryId = bMainActionReport.getFactoryId(); + Calendar startCalendar = Calendar.getInstance(); + Calendar endCalendar = Calendar.getInstance(); + if (EmlTypeEnums.YEAR.getCode().equals(reportsType)) { + //去年 开始的数据 到今年的数据 + startCalendar.setTime(DateUtil.parseTime(startCalendar.get(Calendar.YEAR) - 1 + "-01-01 00:00:00")); + endCalendar.setTime(DateUtil.parseTime(endCalendar.get(Calendar.YEAR) + "-01-01 00:00:00")); + } else if (EmlTypeEnums.QUARTER.getCode().equals(reportsType)) { + //获取上季度的数据 此处获取到当前季度开始的日期 手动去-3月 上季度结束日期 就是本季度开始 + startCalendar.setTime(DateUtil.getQuarterStart(new Date())); + startCalendar.set(Calendar.MONTH, startCalendar.get(Calendar.MONTH) - 3); + endCalendar.setTime(DateUtil.getQuarterStart(new Date())); + } else if (EmlTypeEnums.MONTH.getCode().equals(reportsType)) { + //上月开始 到 这月结束的数据 + startCalendar.set(Calendar.DAY_OF_MONTH, 0); + DateUtil.setTimeZero(startCalendar); + endCalendar.set(Calendar.DAY_OF_MONTH, 1); + DateUtil.setTimeZero(endCalendar); + startCalendar.set(Calendar.MONTH, startCalendar.get(Calendar.MONTH) - 1); + } + Date endTime = endCalendar.getTime(); + Date startTime = startCalendar.getTime(); + StringBuilder message = new StringBuilder(); //获取执行报告对应的有组织废气污染物排放浓度监测数据统计表的数据 LambdaQueryWrapper bStatTableZxbgGasEmissionLambdaQueryWrapper = new QueryWrapper().lambda() .eq(BStatTableZxbgGasEmission::getFactoryId, bMainActionReport.getFactoryId()) @@ -71,46 +91,90 @@ public class MonitorFrequencyomplianceService { .notLike(BStatTableZxbgGasEmission::getRemark, "停产"); List bStatTableZxbgGasEmissions = bStatTableZxbgGasEmissionMapper.selectList(bStatTableZxbgGasEmissionLambdaQueryWrapper); //分为 手工和自动 bStatTableZxbgGasEmissions 获取 monitoringFacilities + if (CollectionUtil.isNotEmpty(bStatTableZxbgGasEmissions)) { - Map> emissionMap = bStatTableZxbgGasEmissions.stream().collect(Collectors.groupingBy(BStatTableZxbgGasEmission::getMonitoringFacilities)); - //effectivelyHour 监测数量小时值 - List statTableZxbgGasEmissions = emissionMap.get("手工"); - if (CollectionUtil.isNotEmpty(statTableZxbgGasEmissions)){ - List outletCode = statTableZxbgGasEmissions.stream().map(BStatTableZxbgGasEmission::getOutletCode).collect(Collectors.toList()); - LambdaQueryWrapper pollQueryWrapper = new QueryWrapper().lambda() - .eq(BMainPollDisSelfMon::getFactoryId, bMainActionReport.getFactoryId()) - .in(BMainPollDisSelfMon::getOutletCode, outletCode); - List bMainPollDisSelfMons = pollDisSelfMonMapper.selectList(pollQueryWrapper); - } - emissionMap.forEach((k, v) -> { - if (k.equals("手工")) { + Map> emissionMap = bStatTableZxbgGasEmissions.stream() + .collect(Collectors.groupingBy(BStatTableZxbgGasEmission::getMonitoringFacilities)); - } else { + emissionMap.forEach((monitoringFacilities, statTableZxbgGasEmissions) -> { + if (CollectionUtil.isNotEmpty(statTableZxbgGasEmissions)) { + List outletCode = statTableZxbgGasEmissions.stream() + .map(BStatTableZxbgGasEmission::getOutletCode) + .collect(Collectors.toList()); + if (monitoringFacilitiesEnum.HANDIWORK.getName().equals(monitoringFacilities)) { + LambdaQueryWrapper pollQueryWrapper = new QueryWrapper().lambda() + .eq(BMainPollDisSelfMon::getFactoryId, bMainActionReport.getFactoryId()) + .in(BMainPollDisSelfMon::getOutletCode, outletCode); + List bMainPollDisSelfMons = pollDisSelfMonMapper.selectList(pollQueryWrapper); + Map bMainPollDisSelfMonMap = bMainPollDisSelfMons.stream().collect(Collectors.toMap(BMainPollDisSelfMon::getOutletCode, Function.identity())); + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : statTableZxbgGasEmissions) { + BMainPollDisSelfMon bMainPollDisSelfMon = bMainPollDisSelfMonMap.get(statTableZxbgGasEmission.getOutletCode()); + String effectivelyHour = statTableZxbgGasEmission.getEffectivelyHour(); + int count = getCount(bMainPollDisSelfMon.getMonitoringManualFrequency(), reportsType); + int parseInt = 0; + try { + parseInt = Integer.parseInt(effectivelyHour); + } catch (Exception e) { + message.append("排口编号" + outletCode + "污染物种类" + statTableZxbgGasEmission.getPollutantName() + "有效监测数据数量应为整数,企业填报数量为" + effectivelyHour + ",不符合规范要求。"); + } + if (parseInt < count) { + message.append("排口编号" + outletCode + "污染物种类" + statTableZxbgGasEmission.getPollutantName() + "为手工监测,监测频次为:" + + bMainPollDisSelfMon.getMonitoringManualFrequency() + ",有效监测数据数量应不低于" + count + "企业填报数量为" + parseInt + ",不满足年度监测频次。"); + } + } + } else { + LambdaQueryWrapper outletLambdaQueryWrapper = new QueryWrapper().lambda().in(PcOutlet::getOutletCode, outletCode); + List pcOutlets = pcOutletMapper.selectList(outletLambdaQueryWrapper); + List pcOutletIds = pcOutlets.stream().map(PcOutlet::getId).collect(Collectors.toList()); + + LambdaQueryWrapper sEnvWaterMonDayLambdaQueryWrapper = new QueryWrapper().lambda() + .eq(SEnvGasMonHour::getFactoryId, factoryId) + .in(SEnvGasMonHour::getOutletId, pcOutletIds) + .ge(SEnvGasMonHour::getCreateTime, startTime) + .le(SEnvGasMonHour::getCreateTime, endTime); + + List sEnvGasMonHours = sEnvGasMonHourMapper.selectList(sEnvWaterMonDayLambdaQueryWrapper); + Map> hourMap = sEnvGasMonHours.stream() + .collect(Collectors.groupingBy(SEnvGasMonHour::getOutletId)); + + for (BStatTableZxbgGasEmission statTableZxbgGasEmission : statTableZxbgGasEmissions) { + PcOutlet desiredOutlet = pcOutlets.stream() + .filter(outlet -> outlet.getOutletCode().equals(statTableZxbgGasEmission.getOutletCode())) + .findFirst() + .orElse(null); + + int size = hourMap.getOrDefault(desiredOutlet.getId(), Collections.emptyList()).size(); + String effectivelyHour = statTableZxbgGasEmission.getEffectivelyHour(); + int parseInt = 0; + + try { + parseInt = Integer.parseInt(effectivelyHour); + } catch (Exception e) { + message.append("排口编号" + outletCode + "污染物种类" + statTableZxbgGasEmission.getPollutantName() + "有效监测数据数量应为整数,企业填报数量为" + effectivelyHour + ",不符合规范要求。"); + } + + if (parseInt < size) { + message.append("排口编号" + outletCode + "污染物种类" + statTableZxbgGasEmission.getPollutantName() + "为自动监测,系统根据在线监测系统核算有效监测数据数量为:" + + size + "企业填报数量为" + parseInt + ",不满足年度监测频次。"); + } + } + } } }); } - -// //根据企业查询到所有频次 然后根据 报告类型判断 生产设施/无组织排放编号要用许可系统的无组织编号全部查一下 以排污许可自行监测为主表进行判断 -// LambdaQueryWrapper pollQueryWrapper = new QueryWrapper().lambda() -// .select(BMainPollDisSelfMon::getFactoryId, BMainPollDisSelfMon::getOutletCode, BMainPollDisSelfMon::getPollutantType) -// .eq(BMainPollDisSelfMon::getFactoryId, factoryId); -// List bMainPollDisSelfMons = pollDisSelfMonMapper.selectList(pollQueryWrapper); -// if (CollectionUtil.isEmpty(bMainPollDisSelfMons)){ -// log.warn("bMainActionReport:{} 无自行监测频率数据!", JSON.toJSONString(bMainActionReport)); -// continue; -// } -// Map shouldDatCountMap = new HashMap<>(); -// //需要建立一个 排放口编号-污染物种类:检测频率 的映射 -// for (BMainPollDisSelfMon bMainPollDisSelfMon : bMainPollDisSelfMons) { -// String monitoringManualFrequency = bMainPollDisSelfMon.getMonitoringManualFrequency(); -// //如果是年报则判断 手工检测频次1年1次 或者1季度1次*4 或者1月一次*12 就是 需要填报数据的总次数 -// int count = getCount(monitoringManualFrequency, reportsType); -// //此处能获取到排口-污染物:报表对应需要检测的次数 -// shouldDatCountMap.put(buildKey(bMainPollDisSelfMon.getOutletCode(),bMainPollDisSelfMon.getPollutantType()),count); -// } + if (StringUtils.isNotBlank(message)) { + SRaActionReportsAuditResult sRaActionReportsAuditResult = reportRecordMap.get(bMainActionReport.getId()); + if (sRaActionReportsAuditResult != null) { + sRaActionReportsAuditResult.setMonitoringFrequency(message.toString()); + updateList.add(sRaActionReportsAuditResult); + } + } } + if (CollectionUtil.isNotEmpty(updateList)) { + auditResultMapper.batchUpdate(updateList); + } } public Map getReportRecordMap(List reportIds) { @@ -182,21 +246,4 @@ public class MonitorFrequencyomplianceService { return 0; } - public String buildKey(String outletCode, String pollutantType) { - return outletCode + "-" + pollutantType; - } - - public String getOutletCodeByKey(String key) { - if (StringUtils.isBlank(key)) { - return null; - } - return key.split("-")[0]; - } - - public String getPollutantTypeByKey(String key) { - if (StringUtils.isBlank(key)) { - return null; - } - return key.split("-")[1]; - } }