From 3313ab253e55b4b1da363a6ce583f7bb2381efb3 Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Mon, 9 Dec 2024 17:59:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=81=8B=E7=88=B1=E5=88=9B=E4=BC=A4=E3=80=81?= =?UTF-8?q?=E5=A9=9A=E5=A7=BB=E7=BA=A0=E7=BA=B7=E3=80=81=E9=82=BB=E9=87=8C?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E5=92=8C=E5=90=8C=E4=BA=8B=E7=9F=9B=E7=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/GBaseJJDService.java | 5 + .../service/impl/GBaseJJDServiceImpl.java | 112 ++++++++++++++++++ 2 files changed, 117 insertions(+) diff --git a/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java b/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java index 90b5fe9..d8926a9 100644 --- a/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java +++ b/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java @@ -55,4 +55,9 @@ public interface GBaseJJDService { * @param domain domain */ void syncNeighborAndColleagueDispute(TaskParamDomain domain); + /** + * 欺凌 + * @param domain domain + */ + void syncBullying(TaskParamDomain domain); } 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 99dd075..7e26baf 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -842,6 +842,118 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); } + @Override + public void syncBullying(TaskParamDomain domain) { + String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime limit = LocalDateTime.now().minusYears(1); + + List result = gBaseJJDRepository.getBaseMapper().selectBullying(startTime); + // 恋爱创伤 + RiskTask task = taskRepository.create(result.size(), 74); + + Map> idCodesMap = new WeakHashMap<>(); + List mobiles = new ArrayList<>(); + LocalDate today = LocalDate.now(); + + List others = new ArrayList<>(); + for (GBaseJJD gBaseJJD : result) { + String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk()); + if (idCard.isEmpty()) { + idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr()); + } + if(!idCard.isEmpty()) { + List tmp = Arrays.stream(idCard.split(",")).toList(); + // 年龄22岁以下才算 + for (String s : tmp) { + Integer age = IdCodeUtil.idCard2Age(s, today); + if(age != null && age <= 22) { + idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(gBaseJJD); + } + } + continue; + } + String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk()); + if (idCard.isEmpty()) { + mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr()); + } + if(idCard.isEmpty()) { + continue; + } + mobiles.addAll(Arrays.stream(mobile.split(",")).toList()); + others.add(gBaseJJD); + } + + List xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles)); + Map> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); + // 第二轮通过手机号找身份证 + for (GBaseJJD other : others) { + String mobile = PatternUtil.takeMobile(other.getCjqk()); + if (mobile.isEmpty()) { + mobile = PatternUtil.takeMobile(other.getBjnr()); + } + List tmp = Arrays.stream(mobile.split(",")).toList(); + List idCard = new ArrayList<>(); + for (String s : tmp) { + List arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>()); + idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).filter(item -> { + Integer age = IdCodeUtil.idCard2Age(item, today); + return age != null && age <= 22; + }).toList()); + } + if(idCard.isEmpty()) { + continue; + } + for (String s : idCard) { + idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(other); + } + } + List oldList = domain.getMap().get(task.getModelId()); + Map> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + List toInsert = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + List jjdList = idCodesMap.get(person.getIdCode()); + jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); + if(jjdList == null) { + continue; + } + List olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>()); + Map oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); + for (GBaseJJD jjd : jjdList) { + if(oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) { + continue; + } + ClueData data = ClueData.builder() + .name(person.getName()) + .id(BhUtil.jjdBh(jjd.getJjdbh())) + .idCode(person.getIdCode()) + .tag("存在被欺凌警情") + .personId(person.getId()) + .build(); + StringBuilder sb = new StringBuilder("存在被欺凌警情,接警单编号:" + jjd.getJjdbh()); + if (jjd.getBjnr() != null && !jjd.getBjnr().isEmpty()) { + sb.append(",报警内容;" + jjd.getBjnr()); + } + if (jjd.getCjqk() != null && !jjd.getCjqk().isEmpty()) { + sb.append(",处警情况;" + jjd.getCjqk()); + } + sb.append(",增加风险分5分"); + data.setSourceData(sb.toString()); + try { + data.setEventTime(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception ignored) { + data.setEventTime(LocalDateTime.now()); + } + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + } + log.info("欺凌:{}", toInsert.size()); + if (!toInsert.isEmpty()) { + clueService.saveClues(toInsert, Default.HOME_VIOLENCE); + } + taskRepository.updateTask(task.getId(), toInsert.size(), 0); + } + Map> findTargetJJD(List jjdList) { Map> fatherIdCodeMap = new WeakHashMap<>();