diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java index d71d33a..834fa53 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java @@ -15,4 +15,7 @@ public interface RiskModelTaskClueMapper extends BaseMapper { @Select(" select * from risk_model_task_clue where id_code in (select id_code from risk_model_task_clue where model_id = 43 and risk_reason = '特定人员' group by id_code having count(1) > 1) and model_id = 43 and risk_reason = '特定人员' ") List selectToKill(); + + @Select(" select distinct id_code from risk_model_task_clue where model_id in (65,66,69,70,72,73,123)") + List selectContradictModelIdCode(); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java index d0f5178..d507819 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -1006,39 +1006,85 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { taskRepository.updateTask(task.getId(), toInsert.size(), 0); } + private final RiskModelTaskClueRepository taskClueRepository; + @Override public void syncOtherContradict(TaskParamDomain domain) { String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); List result = gBaseJJDRepository.getBaseMapper().selectAllContradict(startTime); + List idCodes = taskClueRepository.getBaseMapper().selectContradictModelIdCode(); + RiskTask task = taskRepository.create(result.size(), 75); - Map> jjdMap = new HashMap<>(); - Map> jjdMMap = new HashMap<>(); -// for (GBaseJJD item : result) { -// if (item.getBjrzjhm() != null) { -// jjdMap.computeIfAbsent(item.getBjrzjhm(), k -> new ArrayList<>()).add(item); -// continue; -// } -// String idCards = PatternUtil.takeIdCard(item.getCjqk()); -// if (!idCards.isEmpty()) { -// person.setIdCode(idCards); -// String[] strs = idCards.split(","); -// for (String s : strs) { -// jjdMap.computeIfAbsent(item.getBjrzjhm(), k -> new ArrayList<>()).add(item); -// } -// } else if (item.getBjrlxdh() == null) { -// continue; -// } else { -// mobiles1.add(item.getBjrlxdh()); -// jjdMMap.computeIfAbsent(item.getBjrzjhm(), k -> new ArrayList<>()).add(item); -// } -// personals.add(person); -// } + Map> idCodesMap = new WeakHashMap<>(); + Map> mobilesMap = new WeakHashMap<>(); + + for (GBaseJJD gBaseJJD : result) { + String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk()); + if (idCard.isEmpty()) { + idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr()); + } + boolean mobileContinue = false; + if (!idCard.isEmpty()) { + List tmp = Arrays.stream(idCard.split(",")).toList(); + switch (tmp.size()) { + case 0 -> mobileContinue = true; + case 1 -> idCodesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); + default -> { + for (int i = 1; i < tmp.size(); i++) { + idCodesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD); + } + } + } + if (!mobileContinue) { + continue; + } + } + String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk()); + if (mobile.isEmpty()) { + mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr()); + } + if (mobile.isEmpty()) { + continue; + } + List tmp = Arrays.stream(mobile.split(",")).toList(); + switch (tmp.size()) { + case 0 -> { + } + case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); + default -> { + for (int i = 1; i < tmp.size(); i++) { + mobilesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD); + } + } + } + } + + Map manMap = new WeakHashMap<>(); + idCodes.forEach(item -> manMap.put(item, new Byte[0])); + + List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + Map> oldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + + List toInsert = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + if(manMap.get(person.getIdCode()) != null) { + // 非其他纠纷 + continue; + } + toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, oldMap, task, "其他纠纷")); + } + + if (!toInsert.isEmpty()) { + log.info("其他纠纷:{} ", toInsert.size()); + clueService.saveClues(toInsert, Default.HOME_VIOLENCE); + } + taskRepository.updateTask(task.getId(), toInsert.size(), 0); } /** * 遍历接警单 * - * @param modelId 模型id + * @param task 任务 * @param tag 标签 * @param result 接警单数据 * @param domain domain