From 228b694322030975ec9524db3ba9b93268ef16e0 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Mon, 19 May 2025 09:52:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E7=AE=97=E6=B3=95=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../line/DataCleanServiceImpl.java | 63 ++++++++++++------- .../serviceimpl/line/DayDataServiceImpl.java | 5 ++ .../line/IDataCrossingServiceImpl.java | 17 +++++ .../src/main/resources/bootstrap.yml | 10 +++ .../dataProcess/util/DataCommonUtils.java | 2 +- .../config/InsertDataConfiguration.java | 48 ++++++++++++++ .../relation/PqDataVerifyServiceImpl.java | 5 +- .../impl/relation/RelationDataComAssImpl.java | 2 +- .../relation/RelationDataFlickerImpl.java | 2 +- .../impl/relation/RelationDataFlucImpl.java | 2 +- .../relation/RelationDataHarmRateIImpl.java | 2 +- .../relation/RelationDataHarmRateVImpl.java | 2 +- .../relation/RelationDataHarmphasicIImpl.java | 2 +- .../relation/RelationDataHarmphasicVImpl.java | 2 +- .../relation/RelationDataHarmpowerPImpl.java | 2 +- .../relation/RelationDataHarmpowerQImpl.java | 2 +- .../relation/RelationDataHarmpowerSImpl.java | 2 +- .../impl/relation/RelationDataIImpl.java | 2 +- .../relation/RelationDataInharmIImpl.java | 2 +- .../relation/RelationDataInharmVImpl.java | 2 +- .../relation/RelationDataIntegrityImpl.java | 2 +- .../RelationDataLimitQualifiedImpl.java | 2 +- .../RelationDataLimitRateDetailImpl.java | 2 +- .../relation/RelationDataLimitRateImpl.java | 2 +- .../relation/RelationDataLimitTargetImpl.java | 2 +- .../relation/RelationDataOnlineRateImpl.java | 2 +- .../RelationDataOrgIntegrityImpl.java | 2 +- .../impl/relation/RelationDataPltImpl.java | 2 +- .../relation/RelationDataPollutionImpl.java | 2 +- .../RelationDataPollutionOrgDImpl.java | 2 +- .../RelationDataPollutionOrgMImpl.java | 2 +- .../RelationDataPollutionOrgQImpl.java | 2 +- .../RelationDataPollutionOrgYImpl.java | 2 +- .../RelationDataPollutionSubstationDImpl.java | 2 +- .../RelationDataPollutionSubstationMImpl.java | 2 +- .../RelationDataPollutionSubstationQImpl.java | 2 +- .../RelationDataPollutionSubstationYImpl.java | 2 +- .../impl/relation/RelationDataVImpl.java | 2 +- .../RelationRActivePowerRangeServiceImpl.java | 2 +- .../relation/RelationRmpEventDetailDImpl.java | 2 +- .../relation/RelationRmpEventDetailMImpl.java | 2 +- .../relation/RelationRmpEventDetailQImpl.java | 2 +- .../relation/RelationRmpEventDetailYImpl.java | 2 +- .../src/main/resources/bootstrap.yml | 4 ++ .../src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- 46 files changed, 166 insertions(+), 64 deletions(-) create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/config/InsertDataConfiguration.java diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java index 06b1a04..0cb6738 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java @@ -72,8 +72,6 @@ public class DataCleanServiceImpl implements IDataCleanService { @Override public void dataVCleanHandler(CalculatedParam calculatedParam) { MemorySizeUtil.getNowMemory(); - - logger.info("{},dataV表异常数据算法执行=====》", LocalDateTime.now()); List result = new ArrayList<>(); //获取标准 @@ -105,6 +103,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -135,6 +134,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataIFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataI集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataI(map, lineMap.get(item.getLineId()),item); @@ -144,6 +144,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -168,6 +169,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataPltFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataPlt集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataPlt(map,item); @@ -177,6 +179,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -201,6 +204,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataInharmVFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataInHarmV集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataInHarmV(map,item); @@ -210,6 +214,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -234,6 +239,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataHarmRateVFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataHarmRateV集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataHarmRateV(map,item); @@ -243,6 +249,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -267,6 +274,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataHarmpowerPFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataHarmPowerP集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataHarmPowerP(map,item); @@ -276,6 +284,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -300,6 +309,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataHarmphasicVFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataHarmPhasicV集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataHarmPhasicV(map,item); @@ -309,6 +319,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList.clear(); }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -333,6 +344,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataFlucFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataFluc集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataFluc(map,item); @@ -342,6 +354,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -366,6 +379,7 @@ public class DataCleanServiceImpl implements IDataCleanService { lineParam.setLineId(list); List partList = dataFlickerFeignClient.getRawData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { + logger.info("{}数据清洗dataFlicker集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(), MemorySizeUtil.getObjectSize(partList)); partList.forEach(item->{ //数据清洗 List pqDataVerifies = judgeDataFlicker(map,item); @@ -375,6 +389,7 @@ public class DataCleanServiceImpl implements IDataCleanService { partList = null; }); if (CollUtil.isNotEmpty(result)) { + logger.info("本次清洗数据量为>>>>>>>>>>>>:{}", result.size()); pqDataVerifyFeignClient.insertData(result); result.clear(); } @@ -469,25 +484,25 @@ public class DataCleanServiceImpl implements IDataCleanService { } //正序电压 - pqReasonableRangeDto = map.get(DataCleanEnum.VPos.getCode()); - phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(",")); - if (phaseList.contains(dto.getPhasicType())) { - if (dto.getVPos() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())) - || dto.getVPos() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) { - //log.info("dataV-正序电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getVPos(), dto.getMinTime()); - PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId() - ,dto.getMinTime() - ,dto.getValueType() - ,dto.getPhasicType() - ,pqReasonableRangeDto.getIndexCode() - ,pqReasonableRangeDto.getIndexName() - ,pqReasonableRangeDto.getInfluxdbTableName() - ,dto.getVPos() - ,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()) - ,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())); - list.add(pqDataVerify); - } - } +// pqReasonableRangeDto = map.get(DataCleanEnum.VPos.getCode()); +// phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(",")); +// if (phaseList.contains(dto.getPhasicType())) { +// if (dto.getVPos() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())) +// || dto.getVPos() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) { +// //log.info("dataV-正序电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getVPos(), dto.getMinTime()); +// PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId() +// ,dto.getMinTime() +// ,dto.getValueType() +// ,dto.getPhasicType() +// ,pqReasonableRangeDto.getIndexCode() +// ,pqReasonableRangeDto.getIndexName() +// ,pqReasonableRangeDto.getInfluxdbTableName() +// ,dto.getVPos() +// ,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()) +// ,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())); +// list.add(pqDataVerify); +// } +// } //负序电压 pqReasonableRangeDto = map.get(DataCleanEnum.VNeg.getCode()); @@ -554,7 +569,7 @@ public class DataCleanServiceImpl implements IDataCleanService { //线电压有效值 pqReasonableRangeDto = map.get(DataCleanEnum.RmsLvr.getCode()); phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(",")); - if (phaseList.contains(dto.getPhasicType())) { + if (phaseList.contains(dto.getPhasicType()) && ObjectUtil.isNotNull(dto.getRmsLvr())) { if (dto.getRmsLvr() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())) || dto.getRmsLvr() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) { //log.info("dataV-线电压有效值数据异常,已清洗!数据值:{},数据时间:{}", dto.getRmsLvr(), dto.getMinTime()); @@ -706,11 +721,11 @@ public class DataCleanServiceImpl implements IDataCleanService { List list = new ArrayList<>(); PqReasonableRangeDto pqReasonableRangeDto; List phaseList; - //线电压有效值 + //电流有效值 pqReasonableRangeDto = map.get(DataCleanEnum.RmsI.getCode()); phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(",")); if (phaseList.contains(dto.getPhasicType())) { - if (dto.getRms() > line.getCT1()) { + if (dto.getRms() >= line.getCT1() * 1.2) { PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId() ,dto.getMinTime() ,dto.getValueType() diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java index 95fc9ec..301a7ab 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java @@ -1597,6 +1597,11 @@ public class DayDataServiceImpl implements IDayDataService { break; } } + //这里对数据进行判断,如果值过大,都超出数据库存储范围会报错,无法插入,所以这里设置门槛 上下限都为1千万 + if (Objects.nonNull(result)) { + result = Math.min(Math.max(result, -9999999.0), 9999999.0); + + } return result; } diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java index 96979f3..83669e4 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java @@ -82,6 +82,23 @@ public class IDataCrossingServiceImpl implements IDataCrossingService { @Override public void limitRateHandler(CalculatedParam calculatedParam) { MemorySizeUtil.getNowMemory(); + + Runtime runtime = Runtime.getRuntime(); + // 获取 JVM 最大可用内存(以字节为单位) + long maxMemory = runtime.maxMemory(); + // 获取 JVM 当前已分配的内存(以字节为单位) + long totalMemory = runtime.totalMemory(); + // 获取 JVM 当前空闲内存(以字节为单位) + long freeMemory = runtime.freeMemory(); + // 计算已使用的内存 + long usedMemory = totalMemory - freeMemory; + + System.out.println("最大可用内存: " + maxMemory / (1024 * 1024) + " MB"); + System.out.println("当前已分配的内存: " + totalMemory / (1024 * 1024) + " MB"); + System.out.println("当前空闲内存: " + freeMemory / (1024 * 1024) + " MB"); + System.out.println("已使用的内存: " + usedMemory / (1024 * 1024) + " MB"); + System.out.println("第一次分析结束-----------------------------------------"); + logger.info("{},limitRate表转r_stat_limit_rate_d算法开始=====》", LocalDateTime.now()); List result = new ArrayList<>(); //远程接口获取分钟数据 diff --git a/algorithm/algorithm-boot/src/main/resources/bootstrap.yml b/algorithm/algorithm-boot/src/main/resources/bootstrap.yml index 3cc3bdb..8ff5478 100644 --- a/algorithm/algorithm-boot/src/main/resources/bootstrap.yml +++ b/algorithm/algorithm-boot/src/main/resources/bootstrap.yml @@ -13,6 +13,16 @@ server: feign: sentinel: enabled: true + compression: + request: + enabled: true + # 配置压缩支持的MIME TYPE + mime-types: text/xml,application/xml,application/json + # 配置压缩数据大小的下限 + min-request-size: 1024 + response: + # 配置响应GZIP压缩 + enabled: true spring: application: name: @artifactId@ diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/DataCommonUtils.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/DataCommonUtils.java index 6b1ef76..ba6382b 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/DataCommonUtils.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/DataCommonUtils.java @@ -9,7 +9,7 @@ public class DataCommonUtils { /** * 传入字典类型的电压等级,获取可以计算的数据 - * 例如 35kV->32.0 + * 例如 35kV->35.0 * 0.38kV->0.38 */ public static Double getVoltageData(String lineVoltage) { diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/config/InsertDataConfiguration.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/config/InsertDataConfiguration.java new file mode 100644 index 0000000..c570c61 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/config/InsertDataConfiguration.java @@ -0,0 +1,48 @@ +package com.njcn.dataProcess.config; + +import com.njcn.common.config.GeneralInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年03月11日 09:32 + */ +@Data +@Order(100) +@Configuration +@EnableAsync +@AllArgsConstructor +public class InsertDataConfiguration { + + private final GeneralInfo generalInfo; + + @Bean("InsertDataConfiguration") + public Executor asyncExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + // 核心线程数:线程池创建时候初始化的线程数 + executor.setCorePoolSize(generalInfo.getCorePoolSize()); + // 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程 + executor.setMaxPoolSize(generalInfo.getMaxPoolSize()); + // 缓冲队列:用来缓冲执行任务的队列 + executor.setQueueCapacity(generalInfo.getQueueCapacity()); + // 允许线程的空闲时间60秒:当超过了核心线程之外的线程在空闲时间到达之后会被销毁 + executor.setKeepAliveSeconds(generalInfo.getKeepAliveSeconds()); + // 线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池 + executor.setThreadNamePrefix(generalInfo.getMicroServiceName()); + // 缓冲队列满了之后的拒绝策略:由调用线程处理(一般是主线程) + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + executor.initialize(); + return executor; + } + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyServiceImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyServiceImpl.java index b74477d..e673799 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyServiceImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyServiceImpl.java @@ -7,6 +7,8 @@ import com.njcn.dataProcess.dao.relation.mapper.PqDataVerifyMapper; import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.pojo.po.PqDataVerify; import com.njcn.dataProcess.service.IPqDataVerifyService; +import org.junit.jupiter.api.condition.DisabledIfSystemProperties; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,8 +28,9 @@ public class PqDataVerifyServiceImpl extends MppServiceImpl list) { - this.saveOrUpdateBatchByMultiId(list,500); + this.saveOrUpdateBatchByMultiId(list,1000); } @Override diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataComAssImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataComAssImpl.java index ce2d160..64ebeb1 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataComAssImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataComAssImpl.java @@ -31,6 +31,6 @@ public class RelationDataComAssImpl extends MppServiceImpl