diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 831e202..1309089 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -161,6 +161,7 @@ public class ApplicationEvent { pointService.syncPetitionContent(initDomain(List.of(124))); pointService.syncMedicalPressure(initDomain(List.of(125))); pointService.syncSeriousIllness(initDomain(List.of(126))); + pointService.syncFamilySeriousIllness(initDomain(List.of(127))); // *********暂时不要********** // riskTaskService.caseModelTask(initDomain(List.of(35))); 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 c5dd944..b4557fb 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java @@ -95,4 +95,19 @@ public interface GBaseCSCZRKMapper extends BaseMapper { + " ) c GROUP BY c.gmsfhm" + "") List selectChildNo(List idNos); + + // 家人患严重疾病 + @Select("") + List selectFamilySeriousIllness(List part); } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java index 30d6e3a..c170eac 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -136,4 +136,6 @@ public class Default { public static final String SERIOUSILLNESS = "本人患严重疾病"; + public static final String FAMILYSERIOUSILLNESS = "家人患严重疾病"; + } diff --git a/src/main/java/com/biutag/supervisiondata/service/PointService.java b/src/main/java/com/biutag/supervisiondata/service/PointService.java index 4125484..64482f5 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PointService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PointService.java @@ -113,4 +113,7 @@ public interface PointService { // 本人患严重疾病 void syncSeriousIllness(TaskParamDomain domain); + + // 家人患严重疾病 + void syncFamilySeriousIllness(TaskParamDomain domain); } 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 9e1d27c..03db776 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -575,6 +575,59 @@ public class PointServiceImpl implements PointService { taskRepository.updateById(updateTask); } + @Override + public void syncFamilySeriousIllness(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 127); + taskRepository.save(task); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + Map idCode = new HashMap<>(); + log.info("模型127开始查询"); + List wdpcJZJLBList = jZJLBRepository.getBaseMapper().selectSeriousIllness(); + // 切割 每次查10000条 + List> wdpcJZJLBParts = IntStream.range(0, (wdpcJZJLBList.size() + 9999) / 10000) + .mapToObj(i -> wdpcJZJLBList.subList(i * 10000, Math.min((i + 1) * 10000, wdpcJZJLBList.size()))) + .toList(); + + List list = new ArrayList<>(); + for (List wdpcJZJLBPart : wdpcJZJLBParts) { + List ids = wdpcJZJLBPart.stream().map(WdpcJZJLB::getIdCode).toList(); + list.addAll(cSCZRKRepository.getBaseMapper().selectFamilySeriousIllness(ids)); + } + + log.info("模型127查询结果数:{}", 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()); + if (personal == null) continue; + if (idCode.get(domicileType.getGmsfhm()) != null) continue; + if (oldMap.get(domicileType.getGmsfhm()) != null) continue; + + idCode.put(domicileType.getGmsfhm(), 1); + ClueData data = ClueData.builder() + .name(personal.getName()) + .id(personal.getId().toString()) + .idCode(personal.getIdCode()) + .tag("家人患严重疾病") + .eventTime(LocalDateTime.now()) + .personId(personal.getId()) + .sourceData("发现该人员的家人有重大疾病,增加风险分5分") + .build(); + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + if (!toInsert.isEmpty()) { + modelTaskClueService.saveClues(toInsert, Default.FAMILYSERIOUSILLNESS); + } + 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); + } + @Override public void syncSeriousIllness(TaskParamDomain domain) { RiskTask task = createTask(domain.getPersons().size(), 126);