diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionServiceImpl.java index 2cd0526..5a9e733 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionServiceImpl.java @@ -104,12 +104,12 @@ public class PollutionServiceImpl implements IPollutionService { List pollutionList = processPollutionList(local, idList, dictData, harmonicVoltageList, harmonicCurrentList, frequencyDeviationList, voltageDeviationList, threePhaseVoltageList, negativeSequenceList, interHarmonicVoltageList, voltageFlickerList); - //TODO 插入数据库 if (CollUtil.isNotEmpty(pollutionList)) { dataPollutionFeignClient.batchInsertion(pollutionList); } }); + System.gc(); } @@ -143,6 +143,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionOrgD(info); } + System.gc(); } @Override @@ -174,6 +175,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionOrgM(info); } + System.gc(); } @Override @@ -202,6 +204,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionOrgQ(info); } + System.gc(); } @Override @@ -230,6 +233,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionOrgY(info); } + System.gc(); } @Override @@ -242,26 +246,39 @@ public class PollutionServiceImpl implements IPollutionService { LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate()); for (String substationId : calculatedParam.getIdList()) { LineDevGetBandDTO data = commTerminalGeneralClient.substationGetLine(substationId).getData(); - Collection union = CollectionUtils.union(Optional.ofNullable(data.getPwList()).orElse(new ArrayList<>()), + Collection union = CollectionUtils.union(Optional.ofNullable(data.getPwList()) + .orElse(new ArrayList<>()), Optional.ofNullable(data.getZwList()).orElse(new ArrayList<>())); - List lindIds = union.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(lindIds)) { - lineParam.setLineId(lindIds); - List pollutionDS = dataPollutionFeignClient.getRawData(lineParam).getData(); - Map> pollutionMap = pollutionDS.stream().collect(Collectors.groupingBy(DataPollutionD::getPollutionType)); - pollutionMap.forEach((key, value) -> { - DataPollutionSubstationD orgD = new DataPollutionSubstationD(); - orgD.setSubstationId(substationId); - orgD.setDataDate(localDate); - orgD.setPollutionType(key); - orgD.setValue(value.stream().max(Comparator.comparing(DataPollutionD::getValue)).get().getValue()); - info.add(orgD); + if(CollUtil.isNotEmpty(union)){ + List lineIds = union.stream().filter(x -> StrUtil.isBlank(x.getObjId())).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(lineIds)) { + setPollution(info, lineParam, localDate, substationId, lineIds); + } + Map> newEnergyMap = union.stream().filter(x -> StrUtil.isNotBlank(x.getObjId())) + .collect(Collectors.groupingBy(LineDevGetDTO::getObjId, Collectors.mapping(LineDevGetDTO::getPointId, Collectors.toList()))); + newEnergyMap.forEach((subId,line)->{ + setPollution(info, lineParam, localDate, subId, line); }); } } if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionSubstationD(info); } + System.gc(); + } + + private void setPollution(List info, LineCountEvaluateParam lineParam, LocalDate localDate, String substationId, List lineIds) { + lineParam.setLineId(lineIds); + List pollutionDS = dataPollutionFeignClient.getRawData(lineParam).getData(); + Map> pollutionMap = pollutionDS.stream().collect(Collectors.groupingBy(DataPollutionD::getPollutionType)); + pollutionMap.forEach((key, value) -> { + DataPollutionSubstationD orgD = new DataPollutionSubstationD(); + orgD.setSubstationId(substationId); + orgD.setDataDate(localDate); + orgD.setPollutionType(key); + orgD.setValue(value.stream().max(Comparator.comparing(DataPollutionD::getValue)).get().getValue()); + info.add(orgD); + }); } @Override @@ -290,6 +307,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionSubstationM(info); } + System.gc(); } @Override @@ -318,6 +336,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionSubstationQ(info); } + System.gc(); } @Override @@ -346,6 +365,7 @@ public class PollutionServiceImpl implements IPollutionService { if (CollUtil.isNotEmpty(info)) { dataPollutionFeignClient.batchInsertionSubstationY(info); } + System.gc(); } /**