From e65a69e8cefc21eea12e2303f7f5f92b513fc41e Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Mon, 6 Jan 2025 14:38:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GBaseJJDServiceImpl.java | 76 ++++++++++++++--- .../service/impl/PetitionServiceImpl.java | 83 +++++++++++-------- .../supervisiondata/task/TaskService.java | 2 + 3 files changed, 115 insertions(+), 46 deletions(-) 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 363859e..44c9d04 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -416,7 +416,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { Map idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); Map mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val)); - Map> personJqList = new WeakHashMap<>(); + Map> personJqList = new WeakHashMap<>(); int count = gBaseJJDRepository.getBaseMapper().selectWarningInstanceCount(startTime); RiskTask task = taskRepository.create(count, 64); @@ -437,7 +437,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { riskPerson = mobileMap.get(jjd.getBjdh()); } if (riskPerson != null) { - personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd); } // 一个都不放过 @@ -450,7 +450,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { for (String s : str) { riskPerson = idCodelMap.get(s); if (riskPerson == null) continue; - personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd); } } @@ -463,39 +463,93 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { for (String s : str) { riskPerson = mobileMap.get(s); if (riskPerson == null) continue; - personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd); } } } log.info("开始统计每个人的警情"); List toInsert = new ArrayList<>(); + List toUpdate = new ArrayList<>(); + List toDelete = new ArrayList<>(); + List deleteIds = new ArrayList<>(); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + + List list; + for (Map.Entry> entry : personJqList.entrySet()) { + list = entry.getValue().stream().distinct().sorted().toList(); + + LocalDateTime maxTime = null; + for (GBaseJJD gBaseJJD : list) { + LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(gBaseJJD.getBjsj()); + if(maxTime == null) { + maxTime = tmp; + continue; + } + if(tmp.isAfter(maxTime)) { + maxTime = tmp; + } + } + if(maxTime == null) { + maxTime = LocalDateTime.now(); + } - List list; - for (Map.Entry> entry : personJqList.entrySet()) { - list = entry.getValue().stream().distinct().toList(); RiskPersonal person = idCodelMap.get(entry.getKey()); StringBuilder sb = new StringBuilder("该人员近一年来有" + list.size() + "起平台涉警事件,接警单编号为:"); for (int i = 0, length = Math.min(3, list.size()); i < length; i++) { - sb.append(list.get(i)).append(","); + sb.append(list.get(i).getJjdbh()).append(","); + } + String desc = sb.substring(0, sb.length() - 1); + if(list.size() > 3) { + desc += "等"; + } + RiskModelTaskClue old = oldMap.get(entry.getKey()); + if(old != null) { + oldMap.remove(entry.getKey()); + if(!desc.equals(desc)) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(old.getId()); + update.setTags(List.of(list.size() + "起平台涉警事件")); + update.setData(desc); + update.setEventTime(maxTime); + toUpdate.add(update); + } + continue; } ClueData data = ClueData.builder() .name(person.getName()) .idCode(person.getIdCode()) .tags(List.of(list.size() + "起平台涉警事件")) - .sourceData(sb.substring(0, sb.length() - 1)) - .eventTime(LocalDateTime.now()) + .sourceData(desc) + .eventTime(maxTime) .personId(person.getId()) .score(Math.min(5, list.size())) .build(); toInsert.add(DataUtil.createClueData(task, data)); } + for (Map.Entry entry : oldMap.entrySet()) { + RiskModelTaskClue delete = new RiskModelTaskClue(); + delete.setId(entry.getValue().getId()); + delete.setDel(1); + toDelete.add(delete); + deleteIds.add(entry.getKey()); + } + if (!toInsert.isEmpty()) { log.info("保存平台涉警事件数据:{}", toInsert.size()); clueService.saveClues(toInsert, "B28平台涉警事件"); } - taskRepository.updateTask(task.getId(), toInsert.size(), 0); + if (!toUpdate.isEmpty()) { + log.info("修改平台涉警事件数据:{}", toUpdate.size()); + clueService.updateClues(toUpdate, task.getModelId()); + } + if (!toDelete.isEmpty()) { + log.info("删除平台涉警事件数据:{}", toDelete.size()); + clueService.deleteCluesAndDeleteTag(toDelete, deleteIds, task.getModelId()); + } + taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()+toUpdate.size()); } @Override diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java index 7d93ad1..bbdb925 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java @@ -281,51 +281,68 @@ public class PetitionServiceImpl implements PetitionService { CompletableFuture.allOf( // CompletableFutureUtil.runSyncObject(() -> dataList1.addAll(dataCaseVerifRepository.getBaseMapper().selectRiskPerson(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))), CompletableFutureUtil.runSyncObject(() -> dataList2.addAll(complaintRepository.getBaseMapper().selectRiskPerson(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))), - CompletableFutureUtil.runSyncObject(() -> dataList3.addAll(petition12337Repository.getBaseMapper().selectRiskPerson(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))) + CompletableFutureUtil.runSyncObject(() -> dataList2.addAll(petition12337Repository.getBaseMapper().selectRiskPerson(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))) ).join(); Map idCodeMan = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); - List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); - Map oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); + Map oldMap = domain.getOldMap(task.getModelId(), true); -// List toInsert1 = new ArrayList<>(createClues(dataList1, oldMap, idCodeMan, task, Default.PETITION_CASE_TAG)); - List toInsert2 = new ArrayList<>(createClues(dataList2, oldMap, idCodeMan, task, "存在上访")); - List toInsert3 = new ArrayList<>(createClues(dataList3, oldMap, idCodeMan, task, "存在上访")); - toInsert2.addAll(toInsert3); - - Map> map = toInsert2.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); List toInsert = new ArrayList<>(); - for (Map.Entry> entry : map.entrySet()) { - toInsert.add(entry.getValue().getFirst()); - } - if (!toInsert.isEmpty()) { - riskModelTaskClueService.saveClues(toInsert, "B20是否上访"); - } - riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0); - } + List toDelete = new ArrayList<>(); + List toUpdate = new ArrayList<>(); + List toDeleteIds = new ArrayList<>(); - List createClues(List dataList, Map oldMap, Map idCodeMan, RiskTask task, String tag) { - List toInsert = new ArrayList<>(); - for (PetitionData data : dataList) { - if (oldMap.get(BhUtil.petBh(data.getId())) != null) { - continue; - } - RiskPersonal person = idCodeMan.get(data.getIdCode()); - if (person == null) { + Map> map = dataList2.stream().collect(Collectors.groupingBy(PetitionData::getIdCode)); + + for (Map.Entry> entry : map.entrySet()) { + RiskPersonal person = idCodeMan.get(entry.getKey()); + if (person == null) continue; + + LocalDateTime maxTime = entry.getValue().stream() + .filter(it -> it.getEventTime() != null) + .max(Comparator.comparing(PetitionData::getEventTime)).get().getEventTime(); + RiskModelTaskClue old = oldMap.get(entry.getKey()); + if (old != null) { + oldMap.remove(entry.getKey()); + if (maxTime.isAfter(old.getEventTime())) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(old.getId()); + update.setEventTime(maxTime); + toUpdate.add(update); + } continue; } toInsert.add(DataUtil.createClueData(task, ClueData.builder() .score(5) .personId(person.getId()) - .tags(List.of(tag)) + .tags(List.of("存在上访")) .sourceData("该人员存在上访行为") .name(person.getName()) .idCode(person.getIdCode()) - .eventTime(null) + .eventTime(maxTime) .build())); } - return toInsert; + for (Map.Entry entry : oldMap.entrySet()) { + RiskModelTaskClue delete = new RiskModelTaskClue(); + delete.setId(entry.getValue().getId()); + delete.setDel(1); + toDelete.add(delete); + toDeleteIds.add(entry.getKey()); + } + if (!toInsert.isEmpty()) { + log.info("新增是否上访{}条", toInsert.size()); + riskModelTaskClueService.saveClues(toInsert, "B20是否上访"); + } + if (!toUpdate.isEmpty()) { + log.info("修改是否上访{}条", toUpdate.size()); + riskModelTaskClueService.updateClues(toUpdate, task.getModelId()); + } + if (!toDelete.isEmpty()) { + log.info("删除是否上访{}条", toDelete.size()); + riskModelTaskClueService.deleteCluesAndDeleteTag(toDelete, toDeleteIds, task.getModelId()); + } + riskTaskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()+toUpdate.size()); } GBaseSYRKXX compare(List infos, String name) { @@ -349,13 +366,9 @@ public class PetitionServiceImpl implements PetitionService { } personal.setAge(age); if (personal.getGender() == null) { - try { - int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); - // 结果0男1女 余数偶女奇男 - personal.setGender(gender % 2 == 0 ? "2" : "1"); - } catch (Exception e) { - return null; - } + String gender = IdCodeUtil.idCard2Gender(personal.getIdCode()); + if (gender == null) return null; + personal.setGender(gender); } return personal; } diff --git a/src/main/java/com/biutag/supervisiondata/task/TaskService.java b/src/main/java/com/biutag/supervisiondata/task/TaskService.java index e80f82c..9369b40 100644 --- a/src/main/java/com/biutag/supervisiondata/task/TaskService.java +++ b/src/main/java/com/biutag/supervisiondata/task/TaskService.java @@ -113,6 +113,7 @@ public class TaskService { marriageService.marriageModelTask(initDomain(List.of(39,51))); // 五年内酒、赌博、嫖娼案件,一年内酒案件 habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62))); + petitionService.petitionModelTask(initDomain(List.of(40))); pointService.syncCarUser(initDomain(List.of(53))); pointService.syncScore(initDomain(List.of(43))); pointService.syncViolence(initDomain(List.of(44))); @@ -121,6 +122,7 @@ public class TaskService { pointService.syncOilBuy(initDomain(List.of(52))); jsbryService.syncPys(initDomain(List.of(59))); gBaseSHRWFRService.combatCrime(initDomain(List.of(63))); + gBaseJJDService.warningInstance(initDomain(List.of(64))); pointService.syncPointType(initDomain(List.of(67))); gBaseJJDService.syncOtherContradict(initDomain(List.of(75))); gBaseSHRWFRService.crimeName(initDomain(List.of(76)));