From fe501983a5b8f0ccc2c015da6b9a2c037976baa7 Mon Sep 17 00:00:00 2001 From: sjh Date: Mon, 16 Dec 2024 11:39:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biutag/supervisiondata/event/ApplicationEvent.java | 2 +- .../supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java | 10 ++++++++++ .../supervisiondata/pojo/entity/dwd/GBaseCSCZRK.java | 3 +++ .../supervisiondata/pojo/entity/dwd/GBaseJJD.java | 2 ++ .../supervisiondata/pojo/entity/dwd/GBaseJszxxb.java | 3 +++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 2c066bf..fb193d9 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -146,7 +146,7 @@ public class ApplicationEvent { // pointService.syncAdministrativePunishment(initDomain(List.of(116))); // pointService.syncParentsDivorce(initDomain(List.of(117))); // pointService.syncFamilyDie(initDomain(List.of(118))); -// pointService.syncFatherDie(initDomain(List.of(119))); + pointService.syncFatherDie(initDomain(List.of(119))); pointService.syncMotherDie(initDomain(List.of(120))); pointService.syncChildNo(initDomain(List.of(121))); pointService.syncXIDU(initDomain(List.of(122))); 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 d18ed2f..5969d40 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java @@ -48,6 +48,16 @@ public interface GBaseCSCZRKMapper extends BaseMapper { + "") List selectFamilyDiePeople(List part); + @Select("select distinct a.gmsfhm, c.gmsfhm family_id from dwd_ry_kxgxzyk_csczrk a inner join csga_wdpcdb.wdpc_person b on a.gmsfhm = b.id_code " + + "inner join dwd_ry_kxgxzyk_csczrk c ON a.hh = c.hh " + + "where a.gmsfhm != c.gmsfhm and (" + + "( a.mqgmsfzhm IS NULL AND a.fqgmsfzhm IS NULL ) " + + "OR ( a.mqgmsfzhm IS NULL AND a.fqgmsfzhm != c.gmsfhm ) " + + "OR ( a.fqgmsfzhm IS NULL AND a.mqgmsfzhm != c.gmsfhm ) " + + "OR (a.fqgmsfzhm IS NOT NULL AND a.mqgmsfzhm IS NOT NULL AND a.fqgmsfzhm != c.gmsfhm AND a.mqgmsfzhm != c.gmsfhm) " + + ")") + List selectFamilyPeople(); + // 父亲是否健在 @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())