diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 7db705b..0f10b6a 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -146,8 +146,9 @@ public class ApplicationEvent { // pointService.syncCriminalPunishment(initDomain(List.of(115))); // pointService.syncAdministrativePunishment(initDomain(List.of(116))); // pointService.syncParentsDivorce(initDomain(List.of(117))); - pointService.syncFamilyDie(initDomain(List.of(118))); // 未完成 - + pointService.syncFamilyDie(initDomain(List.of(118))); + pointService.syncFatherDie(initDomain(List.of(119))); + pointService.syncMotherDie(initDomain(List.of(120))); // *********暂时不要********** // riskTaskService.heightFight(initDomain(List.of(42))); 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 9a4e116..9c030c6 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseCSCZRKMapper.java @@ -2,6 +2,7 @@ package com.biutag.supervisiondata.mapper.dwd; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseCSCZRK; +import com.biutag.supervisiondata.pojo.entity.wdpc2.WdpcHZCRYXX; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -37,4 +38,45 @@ public interface GBaseCSCZRKMapper extends BaseMapper { + "" + "") List selectParentsDivorce(List idNos); + + // 亲近家人死亡 + @Select("") + List selectFamilyDiePeople(List part); + + // 父亲是否健在 + @Select("") + List selectFatherDiePeople(List part); + + // 母亲是否健在 + @Select("") + List selectMotherDiePeople(List part); } diff --git a/src/main/java/com/biutag/supervisiondata/mapper/wdpc2/WdpcHZCRYXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/wdpc2/WdpcHZCRYXXMapper.java new file mode 100644 index 0000000..df9ab31 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/wdpc2/WdpcHZCRYXXMapper.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.mapper.wdpc2; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.wdpc2.WdpcHZCRYXX; + +/** + * @author kami on 2024-12-06 10:23:13 + * @version 0.0.1 + * @since 1.8 + */ +public interface WdpcHZCRYXXMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc2/WdpcHZCRYXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc2/WdpcHZCRYXX.java new file mode 100644 index 0000000..fd30d14 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc2/WdpcHZCRYXX.java @@ -0,0 +1,30 @@ +package com.biutag.supervisiondata.pojo.entity.wdpc2; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 火葬场人员信息 + * @author kami on 2024-12-06 10:20:42 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("`wdpc_grjd_hzcryxx`") +public class WdpcHZCRYXX implements Serializable { + + /** + * 名称 + */ + @TableField("`name`") + String name; + /** + * 身份证号码 + */ + @TableField("`id_code`") + String idCode; + +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/WdpcHZCRYXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/WdpcHZCRYXXRepository.java new file mode 100644 index 0000000..b7aab37 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/WdpcHZCRYXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.wdpc2.WdpcHZCRYXXMapper; +import com.biutag.supervisiondata.pojo.entity.wdpc2.WdpcHZCRYXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-12-04 16:18:26 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class WdpcHZCRYXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PointService.java b/src/main/java/com/biutag/supervisiondata/service/PointService.java index 82227b3..bdc8f2e 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PointService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PointService.java @@ -66,4 +66,10 @@ public interface PointService { // 亲近家人死亡 void syncFamilyDie(TaskParamDomain domain); + + // 父亲是否健在 + void syncFatherDie(TaskParamDomain domain); + + // 母亲是否健在 + void syncMotherDie(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 ef5d894..4acd738 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -14,12 +14,13 @@ import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.entity.dwd.*; import com.biutag.supervisiondata.pojo.entity.mine.*; import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdXfsj; +import com.biutag.supervisiondata.pojo.entity.wdpc2.WdpcHZCRYXX; import com.biutag.supervisiondata.repository.*; import com.biutag.supervisiondata.service.PointService; import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskPersonalService; -import com.biutag.supervisiondata.util.IdCodeUtil; import com.biutag.supervisiondata.util.BhUtil; +import com.biutag.supervisiondata.util.IdCodeUtil; import com.biutag.supervisiondata.util.PatternUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -30,10 +31,10 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; -import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * @author kami on 2024-11-15 18:04:18 @@ -65,6 +66,8 @@ public class PointServiceImpl implements PointService { private final GBaseGAXZCFJDSRepository gAXZCFJDSRepository; + private final WdpcHZCRYXXRepository hZCRYXXRepository; + @Override public void personPullAndSave(LocalDateTime start, LocalDateTime end) { riskPersonalService.formatAndSave(getPersons(), Default.POINT_POEPLE); @@ -365,9 +368,108 @@ public class PointServiceImpl implements PointService { taskRepository.updateById(updateTask); } + @Override + public void syncFatherDie(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 119); + taskRepository.save(task); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + Map idCode = new HashMap<>(); + List list = new ArrayList<>(); + log.info("模型119开始查询"); + List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + // 切割 每次查10000条 + List> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) + .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + .toList(); + + for (List wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { + list.addAll(cSCZRKRepository.getBaseMapper().selectFatherDiePeople(wdpcHZCRYXXSPart)); + } + 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()); + 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("父亲是否健在") + .personId(personal.getId()) + .sourceData("发现该人员父亲死亡,增加风险分5分") + .build(); + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + 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); + } + + @Override + public void syncMotherDie(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 120); + taskRepository.save(task); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + Map idCode = new HashMap<>(); + List list = new ArrayList<>(); + log.info("模型120开始查询"); + List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + // 切割 每次查10000条 + List> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) + .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + .toList(); + + for (List wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { + list.addAll(cSCZRKRepository.getBaseMapper().selectMotherDiePeople(wdpcHZCRYXXSPart)); + } + 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()); + 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("母亲是否健在") + .personId(personal.getId()) + .sourceData("发现该人员母亲死亡,增加风险分5分") + .build(); + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + 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); + } + @Override public void syncFamilyDie(TaskParamDomain domain) { - /* RiskTask task = createTask(domain.getPersons().size(), 118); taskRepository.save(task); @@ -375,8 +477,14 @@ public class PointServiceImpl implements PointService { Map idCode = new HashMap<>(); List list = new ArrayList<>(); log.info("模型118开始查询"); - for (List idCard : domain.getIdCards()) { -// list.addAll(cSCZRKRepository.getBaseMapper().selectDomicileType(idCard)); + List wdpcHZCRYXXS = hZCRYXXRepository.list(new LambdaQueryWrapper().select(WdpcHZCRYXX::getIdCode)); + // 切割 每次查10000条 + List> wdpcHZCRYXXSParts = IntStream.range(0, (wdpcHZCRYXXS.size() + 9999) / 10000) + .mapToObj(i -> wdpcHZCRYXXS.subList(i * 10000, Math.min((i + 1) * 10000, wdpcHZCRYXXS.size()))) + .toList(); + + for (List wdpcHZCRYXXSPart : wdpcHZCRYXXSParts) { + list.addAll(cSCZRKRepository.getBaseMapper().selectFamilyDiePeople(wdpcHZCRYXXSPart)); } log.info("模型118查询结果数:{}", list.size()); Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); @@ -408,7 +516,7 @@ public class PointServiceImpl implements PointService { updateTask.setState(1); updateTask.setEndTime(LocalDateTime.now()); taskRepository.updateById(updateTask); - */ + } @Override