diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 620dadd..ef895cb 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -159,7 +159,7 @@ public class ApplicationEvent { // pointService.syncFamilySeriousIllness(initDomain(List.of(127))); // pointService.syncPetitionDissatisfied(initDomain(List.of(128))); // pointService.syncIsSpecialPeople(initDomain(List.of(129))); -// pointService.syncSpecialPeopleType(initDomain(List.of(130))); + pointService.syncSpecialPeopleType(initDomain(List.of(130))); // pointService.syncParentsRelationship(initDomain(List.of(131))); // pointService.syncMentalDiseaseDriver(initDomain(List.of(132))); // pointService.syncXIDUDriver(initDomain(List.of(133))); diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java index c243428..cf92db1 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -27,6 +27,7 @@ import com.biutag.supervisiondata.util.IdCodeUtil; import com.biutag.supervisiondata.util.PatternUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; @@ -1397,8 +1398,6 @@ public class PointServiceImpl implements PointService { Map oldMap = domain.getOldMap(task.getModelId(), true); Map idCode = new HashMap<>(); - List list = new ArrayList<>(); - List familyPeople = new ArrayList<>(); log.info("模型118开始查询"); int pageSize = 100000; int pageNumber1 = 1; @@ -1406,49 +1405,100 @@ public class PointServiceImpl implements PointService { do { int offset = (pageNumber1 - 1) * pageSize; currentPageResults1 = cSCZRKRepository.getBaseMapper().selectFamilyPeople1(offset, pageSize); - log.info("模型118第一部分查询完毕"); - familyPeople.addAll(currentPageResults1); + log.info("模型118第一部分查询size:{}", currentPageResults1.size()); + if (currentPageResults1.isEmpty()) break; + List familyPeople = new ArrayList<>(currentPageResults1); + Map> familyMap = familyPeople.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getFamilyId, Collectors.toList()))); + List familyList = familyPeople.stream().map(GBaseCSCZRK::getFamilyId).toList(); + List list = new ArrayList<>(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyList)); + log.info("模型118第一部分查询list:{}", list.size()); + List toInsert = getRiskModelTaskClues(domain, familyMap, list, idCode, oldMap, task); + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); pageNumber1++; } while (!currentPageResults1.isEmpty()); - log.info("模型118查询familyPeople1结果数:{}", familyPeople.size()); + log.info("模型118查询familyPeople1完成"); int pageNumber2 = 1; List currentPageResults2; do { int offset = (pageNumber2 - 1) * pageSize; currentPageResults2 = cSCZRKRepository.getBaseMapper().selectFamilyPeople2(offset, pageSize); - familyPeople.addAll(currentPageResults2); + log.info("模型118第二部分查询size:{}", currentPageResults2.size()); + if (currentPageResults2.isEmpty()) break; + List familyPeople = new ArrayList<>(currentPageResults2); + Map> familyMap = familyPeople.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getFamilyId, Collectors.toList()))); + List familyList = familyPeople.stream().map(GBaseCSCZRK::getFamilyId).toList(); + List list = new ArrayList<>(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyList)); + log.info("模型118第二部分查询list:{}", list.size()); + List toInsert = getRiskModelTaskClues(domain, familyMap, list, idCode, oldMap, task); + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); pageNumber2++; } while (!currentPageResults2.isEmpty()); - log.info("模型118查询familyPeople2结果数:{}", familyPeople.size()); + log.info("模型118查询familyPeople2完成"); int pageNumber3 = 1; List currentPageResults3; do { int offset = (pageNumber3 - 1) * pageSize; currentPageResults3 = cSCZRKRepository.getBaseMapper().selectFamilyPeople3(offset, pageSize); - familyPeople.addAll(currentPageResults3); + log.info("模型118第三部分查询size:{}", currentPageResults3.size()); + if (currentPageResults3.isEmpty()) break; + List familyPeople = new ArrayList<>(currentPageResults3); + Map> familyMap = familyPeople.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getFamilyId, Collectors.toList()))); + List familyList = familyPeople.stream().map(GBaseCSCZRK::getFamilyId).toList(); + List list = new ArrayList<>(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyList)); + log.info("模型118第三部分查询list:{}", list.size()); + List toInsert = getRiskModelTaskClues(domain, familyMap, list, idCode, oldMap, task); + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); pageNumber3++; } while (!currentPageResults3.isEmpty()); - log.info("模型118查询familyPeople3结果数:{}", familyPeople.size()); + log.info("模型118查询familyPeople3完成"); int pageNumber4 = 1; List currentPageResults4; do { int offset = (pageNumber4 - 1) * pageSize; - currentPageResults4 = cSCZRKRepository.getBaseMapper().selectFamilyPeople4(offset, pageSize); - familyPeople.addAll(currentPageResults4); + currentPageResults4 = cSCZRKRepository.getBaseMapper().selectFamilyPeople3(offset, pageSize); + log.info("模型118第四部分查询size:{}", currentPageResults4.size()); + if (currentPageResults4.isEmpty()) break; + List familyPeople = new ArrayList<>(currentPageResults4); + Map> familyMap = familyPeople.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getFamilyId, Collectors.toList()))); + List familyList = familyPeople.stream().map(GBaseCSCZRK::getFamilyId).toList(); + List list = new ArrayList<>(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyList)); + log.info("模型118第四部分查询list:{}", list.size()); + List toInsert = getRiskModelTaskClues(domain, familyMap, list, idCode, oldMap, task); + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); pageNumber4++; } while (!currentPageResults4.isEmpty()); - log.info("模型118查询familyPeople结果数:{}", familyPeople.size()); - Map> familyMap = familyPeople.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, - Collectors.mapping(GBaseCSCZRK::getFamilyId, Collectors.toList()))); - List familyList = familyPeople.stream().map(GBaseCSCZRK::getFamilyId).toList(); - // 切割 每次查10000条 - List> familyListParts = IntStream.range(0, (familyList.size() + 9999) / 10000) - .mapToObj(i -> familyList.subList(i * 10000, Math.min((i + 1) * 10000, familyList.size()))) - .toList(); - for (List familyListPart : familyListParts) { - list.addAll(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyListPart)); - } - log.info("模型118查询结果数:{}", list.size()); + log.info("模型118查询familyPeople4完成"); + } + + private @NotNull List getRiskModelTaskClues(TaskParamDomain domain, Map> familyMap, List list, Map idCode, Map oldMap, RiskTask task) { Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); List toInsert = new ArrayList<>(); for (Map.Entry> entry : familyMap.entrySet()) { @@ -1481,13 +1531,7 @@ public class PointServiceImpl implements PointService { if (!toInsert.isEmpty()) { modelTaskClueService.saveClues(toInsert, Default.FAMILYDIE); } - RiskTask updateTask = new RiskTask(); - updateTask.setId(task.getId()); - updateTask.setInsertSize(toInsert.size()); - updateTask.setUpdateSize(0); - updateTask.setState(1); - updateTask.setEndTime(LocalDateTime.now()); - taskRepository.updateById(updateTask); + return toInsert; } @Override