From b7bd8c4d5d87eff4cdb4cd74b1052185f602e793 Mon Sep 17 00:00:00 2001 From: sjh Date: Mon, 16 Dec 2024 15:05:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96118=E3=80=81119=E3=80=81120?= =?UTF-8?q?=E5=8F=B7=E6=A8=A1=E5=9E=8B=E8=BF=90=E8=A1=8C=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/dwd/GBaseCSCZRKMapper.java | 6 + .../mapper/wdpc2/WdpcHZCRYXXMapper.java | 8 ++ .../pojo/entity/dwd/GBaseCSCZRK.java | 6 + .../service/impl/PointServiceImpl.java | 108 +++++++++++------- 4 files changed, 89 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java index 5969d40..f14dd8f 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java @@ -58,6 +58,12 @@ public interface GBaseCSCZRKMapper extends BaseMapper { + ")") List selectFamilyPeople(); + @Select("select distinct a.gmsfhm, a.fqgmsfzhm father_id from dwd_ry_kxgxzyk_csczrk a INNER JOIN csga_wdpcdb.wdpc_person b ON a.gmsfhm = b.id_code where a.fqgmsfzhm is not null;") + List selectFather(); + + @Select("select distinct a.gmsfhm, a.mqgmsfzhm mother_id from dwd_ry_kxgxzyk_csczrk a INNER JOIN csga_wdpcdb.wdpc_person b ON a.gmsfhm = b.id_code where a.mqgmsfzhm is not null;") + List selectMother(); + // 父亲是否健在 @Select("") + List selectHZCPeople(List idNos); } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseCSCZRK.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseCSCZRK.java index e37d9d9..d73cdae 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseCSCZRK.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseCSCZRK.java @@ -91,4 +91,10 @@ public class GBaseCSCZRK implements Serializable { @TableField(exist = false, value = "family_id") String familyId; + + @TableField(exist = false, value = "father_id") + String fatherId; + + @TableField(exist = false, value = "mother_id") + String motherId; } 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 713703e..c4d1cc4 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -473,28 +473,38 @@ public class PointServiceImpl implements PointService { Map oldMap = domain.getOldMap(task.getModelId(), true); Map idCode = new HashMap<>(); - List list = new ArrayList<>(); + List list = new ArrayList<>(); log.info("模型119开始查询"); - List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + List father = cSCZRKRepository.getBaseMapper().selectFather(); + log.info("模型119查询father结果数:{}", father.size()); + Map> fatherMap = father.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getFatherId, Collectors.toList()))); + List fatherList = father.stream().map(GBaseCSCZRK::getFatherId).toList(); // 切割 每次查10000条 - List> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) - .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + List> fatherListParts = IntStream.range(0, (fatherList.size() + 9999) / 10000) + .mapToObj(i -> fatherList.subList(i * 10000, Math.min((i + 1) * 10000, fatherList.size()))) .toList(); - - for (List wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { - List ids = wdpcHZCRYXXSPart.stream().map(WdpcHZCRYXX::getIdCode).toList(); - list.addAll(cSCZRKRepository.getBaseMapper().selectFatherDiePeople(ids)); + for (List fatherListPart : fatherListParts) { + list.addAll(hZCRYXXRepository.getBaseMapper().selectHZCPeople(fatherListPart)); } log.info("模型119查询结果数:{}", list.size()); Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); List toInsert = new ArrayList<>(); - for (GBaseCSCZRK domicileType : list) { - RiskPersonal personal = personalMap.get(domicileType.getGmsfhm()); + for (Map.Entry> entry : fatherMap.entrySet()) { + boolean contains = false; + for (String fatherId : entry.getValue()) { + if (list.contains(fatherId)) { + contains = true; + break; + } + } + if (!contains) continue; + RiskPersonal personal = personalMap.get(entry.getKey()); if (personal == null) continue; - if (idCode.get(domicileType.getGmsfhm()) != null) continue; - if (oldMap.get(domicileType.getGmsfhm()) != null) continue; + if (idCode.get(entry.getKey()) != null) continue; + if (oldMap.get(entry.getKey()) != null) continue; - idCode.put(domicileType.getGmsfhm(), 1); + idCode.put(entry.getKey(), 1); ClueData data = ClueData.builder() .name(personal.getName()) .id(personal.getId().toString()) @@ -525,28 +535,38 @@ public class PointServiceImpl implements PointService { Map oldMap = domain.getOldMap(task.getModelId(), true); Map idCode = new HashMap<>(); - List list = new ArrayList<>(); + List list = new ArrayList<>(); log.info("模型120开始查询"); - List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + List mother = cSCZRKRepository.getBaseMapper().selectMother(); + log.info("模型120查询mother结果数:{}", mother.size()); + Map> motherMap = mother.stream().collect(Collectors.groupingBy(GBaseCSCZRK::getGmsfhm, + Collectors.mapping(GBaseCSCZRK::getMotherId, Collectors.toList()))); + List motherList = mother.stream().map(GBaseCSCZRK::getMotherId).toList(); // 切割 每次查10000条 - List> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) - .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + List> motherListParts = IntStream.range(0, (motherList.size() + 9999) / 10000) + .mapToObj(i -> motherList.subList(i * 10000, Math.min((i + 1) * 10000, motherList.size()))) .toList(); - - for (List wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { - List ids = wdpcHZCRYXXSPart.stream().map(WdpcHZCRYXX::getIdCode).toList(); - list.addAll(cSCZRKRepository.getBaseMapper().selectMotherDiePeople(ids)); + for (List motherListPart : motherListParts) { + list.addAll(hZCRYXXRepository.getBaseMapper().selectHZCPeople(motherListPart)); } log.info("模型120查询结果数:{}", list.size()); Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); List toInsert = new ArrayList<>(); - for (GBaseCSCZRK domicileType : list) { - RiskPersonal personal = personalMap.get(domicileType.getGmsfhm()); + for (Map.Entry> entry : motherMap.entrySet()) { + boolean contains = false; + for (String motherId : entry.getValue()) { + if (list.contains(motherId)) { + contains = true; + break; + } + } + if (!contains) continue; + RiskPersonal personal = personalMap.get(entry.getKey()); if (personal == null) continue; - if (idCode.get(domicileType.getGmsfhm()) != null) continue; - if (oldMap.get(domicileType.getGmsfhm()) != null) continue; + if (idCode.get(entry.getKey()) != null) continue; + if (oldMap.get(entry.getKey()) != null) continue; - idCode.put(domicileType.getGmsfhm(), 1); + idCode.put(entry.getKey(), 1); ClueData data = ClueData.builder() .name(personal.getName()) .id(personal.getId().toString()) @@ -1347,28 +1367,38 @@ public class PointServiceImpl implements PointService { Map oldMap = domain.getOldMap(task.getModelId(), true); Map idCode = new HashMap<>(); - List list = new ArrayList<>(); + List list = new ArrayList<>(); log.info("模型118开始查询"); - List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + List familyPeople = cSCZRKRepository.getBaseMapper().selectFamilyPeople(); + 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> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) - .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + 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 wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { - List ids = wdpcHZCRYXXSPart.stream().map(WdpcHZCRYXX::getIdCode).toList(); - list.addAll(cSCZRKRepository.getBaseMapper().selectFamilyDiePeople(ids)); + for (List familyListPart : familyListParts) { + list.addAll(hZCRYXXRepository.getBaseMapper().selectHZCPeople(familyListPart)); } log.info("模型118查询结果数:{}", list.size()); Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); List toInsert = new ArrayList<>(); - for (GBaseCSCZRK domicileType : list) { - RiskPersonal personal = personalMap.get(domicileType.getGmsfhm()); + for (Map.Entry> entry : familyMap.entrySet()) { + boolean contains = false; + for (String familyId : entry.getValue()) { + if (list.contains(familyId)) { + contains = true; + break; + } + } + if (!contains) continue; + RiskPersonal personal = personalMap.get(entry.getKey()); if (personal == null) continue; - if (idCode.get(domicileType.getGmsfhm()) != null) continue; - if (oldMap.get(domicileType.getGmsfhm()) != null) continue; + if (idCode.get(entry.getKey()) != null) continue; + if (oldMap.get(entry.getKey()) != null) continue; - idCode.put(domicileType.getGmsfhm(), 1); + idCode.put(entry.getKey(), 1); ClueData data = ClueData.builder() .name(personal.getName()) .id(personal.getId().toString())