|
|
|
@ -303,16 +303,64 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void pullPoliceInstance(LocalDateTime start, LocalDateTime end) { |
|
|
|
public void pullPoliceInstance(LocalDateTime start, LocalDateTime end, TaskParamDomain domain) { |
|
|
|
String startTime = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
|
|
|
String startTime = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
|
|
|
String endTime = end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
|
|
|
String endTime = end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<RiskModelTaskClue> list1 = new ArrayList<>(); |
|
|
|
|
|
|
|
List<RiskModelTaskClue> list2 = new ArrayList<>(); |
|
|
|
|
|
|
|
List<RiskModelTaskClue> list3 = new ArrayList<>(); |
|
|
|
|
|
|
|
List<RiskModelTaskClue> list4 = new ArrayList<>(); |
|
|
|
|
|
|
|
List<Integer> tasks = new ArrayList<>(4); |
|
|
|
CompletableFuture.allOf( |
|
|
|
CompletableFuture.allOf( |
|
|
|
CompletableFutureUtil.runSyncObject(() -> toRedisCache(gBaseJJDRepository.getBaseMapper().selectRevenge(startTime, endTime), RedisKey.REVENGE)), |
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
CompletableFutureUtil.runSyncObject(() -> toRedisCache(gBaseJJDRepository.getBaseMapper().selectHater(startTime, endTime), RedisKey.HATER)), |
|
|
|
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectRevenge(startTime, endTime); |
|
|
|
CompletableFutureUtil.runSyncObject(() -> toRedisCache(gBaseJJDRepository.getBaseMapper().selectInjustice(startTime, endTime), RedisKey.INJUSTICE)), |
|
|
|
RiskTask task = taskRepository.create(jjdList.size(), 58); |
|
|
|
CompletableFutureUtil.runSyncObject(() -> toRedisCache(gBaseJJDRepository.getBaseMapper().selectSuicide(startTime, endTime), RedisKey.SUICIDE)) |
|
|
|
list1.addAll(collectJJD(task, "表达报复社会", jjdList, domain)); |
|
|
|
|
|
|
|
tasks.set(0, task.getId()); |
|
|
|
|
|
|
|
}), |
|
|
|
|
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
|
|
|
|
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectHater(startTime, endTime); |
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(jjdList.size(), 55); |
|
|
|
|
|
|
|
list2.addAll(collectJJD(task, "表达厌世情绪", gBaseJJDRepository.getBaseMapper().selectHater(startTime, endTime), domain)); |
|
|
|
|
|
|
|
tasks.set(1, task.getId()); |
|
|
|
|
|
|
|
}), |
|
|
|
|
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
|
|
|
|
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectInjustice(startTime, endTime); |
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(jjdList.size(), 57); |
|
|
|
|
|
|
|
list3.addAll(collectJJD(task, "表达遭受不公", gBaseJJDRepository.getBaseMapper().selectInjustice(startTime, endTime), domain)); |
|
|
|
|
|
|
|
tasks.set(2, task.getId()); |
|
|
|
|
|
|
|
}), |
|
|
|
|
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
|
|
|
|
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectSuicide(startTime, endTime); |
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(jjdList.size(), 56); |
|
|
|
|
|
|
|
list4.addAll(collectJJD(task, "尝试自杀", gBaseJJDRepository.getBaseMapper().selectSuicide(startTime, endTime), domain)); |
|
|
|
|
|
|
|
tasks.set(3, task.getId()); |
|
|
|
|
|
|
|
}) |
|
|
|
).join(); |
|
|
|
).join(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!list1.isEmpty()) { |
|
|
|
|
|
|
|
log.info("保存复仇者联盟:{}", list1.size()); |
|
|
|
|
|
|
|
clueService.saveClues(list1, "表达报复社会"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!list2.isEmpty()) { |
|
|
|
|
|
|
|
log.info("厌世强者:{}", list2.size()); |
|
|
|
|
|
|
|
clueService.saveClues(list2, "表达厌世情绪"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!list3.isEmpty()) { |
|
|
|
|
|
|
|
log.info("我命由我不由天:{}", list3.size()); |
|
|
|
|
|
|
|
clueService.saveClues(list3, "表达遭受不公"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!list4.isEmpty()) { |
|
|
|
|
|
|
|
log.info("毁灭吧:{}", list4.size()); |
|
|
|
|
|
|
|
clueService.saveClues(list4, "尝试自杀"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
taskRepository.updateTask(tasks.get(0), list1.size(), 0); |
|
|
|
|
|
|
|
taskRepository.updateTask(tasks.get(1), list2.size(), 0); |
|
|
|
|
|
|
|
taskRepository.updateTask(tasks.get(2), list3.size(), 0); |
|
|
|
|
|
|
|
taskRepository.updateTask(tasks.get(3), list4.size(), 0); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private final RiskTaskRepository taskRepository; |
|
|
|
private final RiskTaskRepository taskRepository; |
|
|
|
@ -500,15 +548,15 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
List<RiskModelTaskClue> toInsert2 = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toInsert2 = new ArrayList<>(); |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
// 被家暴
|
|
|
|
// 被家暴
|
|
|
|
toInsert.addAll(collectionClue(shIdCodeMap,shMobileMap, person, personOldMap, task, "被家暴")); |
|
|
|
toInsert.addAll(collectionClue(shIdCodeMap, shMobileMap, person, personOldMap, task, "被家暴")); |
|
|
|
toInsert2.addAll(collectionClue(wfIdCodeMap,wfMobileMap, person, personOldMap2, task2, "家暴")); |
|
|
|
toInsert2.addAll(collectionClue(wfIdCodeMap, wfMobileMap, person, personOldMap2, task2, "家暴")); |
|
|
|
} |
|
|
|
} |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate2 = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate2 = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards2 = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards2 = new ArrayList<>(); |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
if (clue.getEventTime().isBefore(limit)) { |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setDel(1); |
|
|
|
update.setDel(1); |
|
|
|
@ -518,7 +566,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (RiskModelTaskClue clue : oldList2) { |
|
|
|
for (RiskModelTaskClue clue : oldList2) { |
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
if (clue.getEventTime().isBefore(limit)) { |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setDel(1); |
|
|
|
update.setDel(1); |
|
|
|
@ -566,11 +614,11 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
|
|
|
|
|
|
|
|
List<RiskModelTaskClue> toInsert2 = eachClue2Save(domain, task2, motherIdCodeMap, "母亲"); |
|
|
|
List<RiskModelTaskClue> toInsert2 = eachClue2Save(domain, task2, motherIdCodeMap, "母亲"); |
|
|
|
|
|
|
|
|
|
|
|
if(!toInsert.isEmpty()) { |
|
|
|
if (!toInsert.isEmpty()) { |
|
|
|
log.info("父亲矛盾增加 {}", toInsert.size()); |
|
|
|
log.info("父亲矛盾增加 {}", toInsert.size()); |
|
|
|
clueService.saveClues(toInsert, "家庭、人际、两性关系"); |
|
|
|
clueService.saveClues(toInsert, "家庭、人际、两性关系"); |
|
|
|
} |
|
|
|
} |
|
|
|
if(!toInsert2.isEmpty()) { |
|
|
|
if (!toInsert2.isEmpty()) { |
|
|
|
log.info("母亲矛盾增加 {}", toInsert2.size()); |
|
|
|
log.info("母亲矛盾增加 {}", toInsert2.size()); |
|
|
|
clueService.saveClues(toInsert2, "家庭、人际、两性关系"); |
|
|
|
clueService.saveClues(toInsert2, "家庭、人际、两性关系"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -611,7 +659,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(!mobileContinue) { |
|
|
|
if (!mobileContinue) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -624,7 +672,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
switch (tmp.size()) { |
|
|
|
switch (tmp.size()) { |
|
|
|
case 0 -> {} |
|
|
|
case 0 -> { |
|
|
|
|
|
|
|
} |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 2 -> { |
|
|
|
case 2 -> { |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
@ -648,7 +697,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
if (clue.getEventTime().isBefore(limit)) { |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setDel(1); |
|
|
|
update.setDel(1); |
|
|
|
@ -699,7 +748,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(!mobileContinue) { |
|
|
|
if (!mobileContinue) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -712,7 +761,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
switch (tmp.size()) { |
|
|
|
switch (tmp.size()) { |
|
|
|
case 0 -> {} |
|
|
|
case 0 -> { |
|
|
|
|
|
|
|
} |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 2 -> { |
|
|
|
case 2 -> { |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
@ -736,7 +786,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
if (clue.getEventTime().isBefore(limit)) { |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setDel(1); |
|
|
|
update.setDel(1); |
|
|
|
@ -787,7 +837,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(!mobileContinue) { |
|
|
|
if (!mobileContinue) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -800,7 +850,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
switch (tmp.size()) { |
|
|
|
switch (tmp.size()) { |
|
|
|
case 0 -> {} |
|
|
|
case 0 -> { |
|
|
|
|
|
|
|
} |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 2 -> { |
|
|
|
case 2 -> { |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
@ -824,7 +875,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
if (clue.getEventTime().isBefore(limit)) { |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setId(update.getId()); |
|
|
|
update.setDel(1); |
|
|
|
update.setDel(1); |
|
|
|
@ -860,12 +911,12 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr()); |
|
|
|
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(!idCard.isEmpty()) { |
|
|
|
if (!idCard.isEmpty()) { |
|
|
|
List<String> tmp = Arrays.stream(idCard.split(",")).toList(); |
|
|
|
List<String> tmp = Arrays.stream(idCard.split(",")).toList(); |
|
|
|
// 年龄22岁以下才算
|
|
|
|
// 年龄22岁以下才算
|
|
|
|
for (String s : tmp) { |
|
|
|
for (String s : tmp) { |
|
|
|
Integer age = IdCodeUtil.idCard2Age(s, today); |
|
|
|
Integer age = IdCodeUtil.idCard2Age(s, today); |
|
|
|
if(age != null && age <= 22) { |
|
|
|
if (age != null && age <= 22) { |
|
|
|
idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -875,51 +926,53 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr()); |
|
|
|
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(idCard.isEmpty()) { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
mobiles.addAll(Arrays.stream(mobile.split(",")).toList()); |
|
|
|
mobiles.addAll(Arrays.stream(mobile.split(",")).toList()); |
|
|
|
others.add(gBaseJJD); |
|
|
|
others.add(gBaseJJD); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<GBaseSYRKXX> xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>() |
|
|
|
if (!mobiles.isEmpty()) { |
|
|
|
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles)); |
|
|
|
List<GBaseSYRKXX> xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>() |
|
|
|
Map<String, List<GBaseSYRKXX>> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); |
|
|
|
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles)); |
|
|
|
// 第二轮通过手机号找身份证
|
|
|
|
Map<String, List<GBaseSYRKXX>> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); |
|
|
|
for (GBaseJJD other : others) { |
|
|
|
// 第二轮通过手机号找身份证
|
|
|
|
String mobile = PatternUtil.takeMobile(other.getCjqk()); |
|
|
|
for (GBaseJJD other : others) { |
|
|
|
if (mobile.isEmpty()) { |
|
|
|
String mobile = PatternUtil.takeMobile(other.getCjqk()); |
|
|
|
mobile = PatternUtil.takeMobile(other.getBjnr()); |
|
|
|
if (mobile.isEmpty()) { |
|
|
|
} |
|
|
|
mobile = PatternUtil.takeMobile(other.getBjnr()); |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
} |
|
|
|
List<String> idCard = new ArrayList<>(); |
|
|
|
List<String> tmp = Arrays.stream(mobile.split(",")).toList(); |
|
|
|
for (String s : tmp) { |
|
|
|
List<String> idCard = new ArrayList<>(); |
|
|
|
List<GBaseSYRKXX> arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>()); |
|
|
|
for (String s : tmp) { |
|
|
|
idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).filter(item -> { |
|
|
|
List<GBaseSYRKXX> arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>()); |
|
|
|
Integer age = IdCodeUtil.idCard2Age(item, today); |
|
|
|
idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).filter(item -> { |
|
|
|
return age != null && age <= 22; |
|
|
|
Integer age = IdCodeUtil.idCard2Age(item, today); |
|
|
|
}).toList()); |
|
|
|
return age != null && age <= 22; |
|
|
|
} |
|
|
|
}).toList()); |
|
|
|
if(idCard.isEmpty()) { |
|
|
|
} |
|
|
|
continue; |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
} |
|
|
|
continue; |
|
|
|
for (String s : idCard) { |
|
|
|
} |
|
|
|
idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(other); |
|
|
|
for (String s : idCard) { |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(other); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
List<RiskModelTaskClue> oldList = domain.getMap().get(task.getModelId()); |
|
|
|
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); |
|
|
|
Map<String, List<RiskModelTaskClue>> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); |
|
|
|
Map<String, List<RiskModelTaskClue>> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); |
|
|
|
List<RiskModelTaskClue> toInsert = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toInsert = new ArrayList<>(); |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
List<GBaseJJD> jjdList = idCodesMap.get(person.getIdCode()); |
|
|
|
List<GBaseJJD> jjdList = Optional.ofNullable(idCodesMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); |
|
|
|
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); |
|
|
|
if(jjdList == null) { |
|
|
|
if (jjdList == null) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
List<RiskModelTaskClue> olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
List<RiskModelTaskClue> olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); |
|
|
|
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); |
|
|
|
for (GBaseJJD jjd : jjdList) { |
|
|
|
for (GBaseJJD jjd : jjdList) { |
|
|
|
if(oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) { |
|
|
|
if (oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
ClueData data = ClueData.builder() |
|
|
|
ClueData data = ClueData.builder() |
|
|
|
@ -982,6 +1035,70 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
// }
|
|
|
|
// }
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 遍历接警单 |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @param modelId 模型id |
|
|
|
|
|
|
|
* @param tag 标签 |
|
|
|
|
|
|
|
* @param result 接警单数据 |
|
|
|
|
|
|
|
* @param domain domain |
|
|
|
|
|
|
|
* @return 要新增的结果 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
List<RiskModelTaskClue> collectJJD(RiskTask task, String tag, List<GBaseJJD> result, TaskParamDomain domain) { |
|
|
|
|
|
|
|
Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>(); |
|
|
|
|
|
|
|
Map<String, List<GBaseJJD>> 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<String> 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<String> 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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); |
|
|
|
|
|
|
|
// 按人分
|
|
|
|
|
|
|
|
Map<String, List<RiskModelTaskClue>> personOldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<RiskModelTaskClue> toInsert = new ArrayList<>(); |
|
|
|
|
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
|
|
|
|
toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, personOldMap, task, tag)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return toInsert; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) { |
|
|
|
Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) { |
|
|
|
|
|
|
|
|
|
|
|
Map<String, List<GBaseJJD>> fatherIdCodeMap = new WeakHashMap<>(); |
|
|
|
Map<String, List<GBaseJJD>> fatherIdCodeMap = new WeakHashMap<>(); |
|
|
|
@ -1003,7 +1120,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
case 1 -> fatherIdCodeMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
case 1 -> fatherIdCodeMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
default -> fatherIdCodeMap.computeIfAbsent(findSmallOne(tmp), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
default -> fatherIdCodeMap.computeIfAbsent(findSmallOne(tmp), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
} |
|
|
|
} |
|
|
|
if(!continueMobile) { |
|
|
|
if (!continueMobile) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1019,6 +1136,9 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
others.add(gBaseJJD); |
|
|
|
others.add(gBaseJJD); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (mobiles.isEmpty()) { |
|
|
|
|
|
|
|
return fatherIdCodeMap; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<GBaseSYRKXX> xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>() |
|
|
|
List<GBaseSYRKXX> xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>() |
|
|
|
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles)); |
|
|
|
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles)); |
|
|
|
@ -1035,7 +1155,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
List<GBaseSYRKXX> arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>()); |
|
|
|
List<GBaseSYRKXX> arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>()); |
|
|
|
idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).toList()); |
|
|
|
idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).toList()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(idCard.isEmpty()) { |
|
|
|
if (idCard.isEmpty()) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
fatherIdCodeMap.computeIfAbsent(findSmallOne(idCard), k -> new ArrayList<>()).add(other); |
|
|
|
fatherIdCodeMap.computeIfAbsent(findSmallOne(idCard), k -> new ArrayList<>()).add(other); |
|
|
|
@ -1043,30 +1163,30 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
return fatherIdCodeMap; |
|
|
|
return fatherIdCodeMap; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<RiskModelTaskClue> eachClue2Save(TaskParamDomain domain, RiskTask task,Map<String, List<GBaseJJD>> fatherIdCodeMap, String tag) { |
|
|
|
List<RiskModelTaskClue> eachClue2Save(TaskParamDomain domain, RiskTask task, Map<String, List<GBaseJJD>> fatherIdCodeMap, String tag) { |
|
|
|
List<RiskModelTaskClue> oldList = domain.getMap().get(task.getModelId()); |
|
|
|
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); |
|
|
|
Map<String, List<RiskModelTaskClue>> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); |
|
|
|
Map<String, List<RiskModelTaskClue>> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); |
|
|
|
List<RiskModelTaskClue> toInsert = new ArrayList<>(); |
|
|
|
List<RiskModelTaskClue> toInsert = new ArrayList<>(); |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
for (RiskPersonal person : domain.getPersons()) { |
|
|
|
List<GBaseJJD> jjdList = fatherIdCodeMap.get(person.getIdCode()); |
|
|
|
List<GBaseJJD> jjdList = Optional.ofNullable(fatherIdCodeMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); |
|
|
|
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); |
|
|
|
if(jjdList == null) { |
|
|
|
if (jjdList == null) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
List<RiskModelTaskClue> olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
List<RiskModelTaskClue> olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); |
|
|
|
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); |
|
|
|
for (GBaseJJD jjd : jjdList) { |
|
|
|
for (GBaseJJD jjd : jjdList) { |
|
|
|
if(oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) { |
|
|
|
if (oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
ClueData data = ClueData.builder() |
|
|
|
ClueData data = ClueData.builder() |
|
|
|
.name(person.getName()) |
|
|
|
.name(person.getName()) |
|
|
|
.id(BhUtil.jjdBh(jjd.getJjdbh())) |
|
|
|
.id(BhUtil.jjdBh(jjd.getJjdbh())) |
|
|
|
.idCode(person.getIdCode()) |
|
|
|
.idCode(person.getIdCode()) |
|
|
|
.tag("与"+tag+"存在矛盾") |
|
|
|
.tag("与" + tag + "存在矛盾") |
|
|
|
.personId(person.getId()) |
|
|
|
.personId(person.getId()) |
|
|
|
.build(); |
|
|
|
.build(); |
|
|
|
StringBuilder sb = new StringBuilder("该人员与"+tag+"存在矛盾,接警单编号:" + jjd.getJjdbh()); |
|
|
|
StringBuilder sb = new StringBuilder("该人员与" + tag + "存在矛盾,接警单编号:" + jjd.getJjdbh()); |
|
|
|
if (jjd.getBjnr() != null && !jjd.getBjnr().isEmpty()) { |
|
|
|
if (jjd.getBjnr() != null && !jjd.getBjnr().isEmpty()) { |
|
|
|
sb.append(",报警内容;" + jjd.getBjnr()); |
|
|
|
sb.append(",报警内容;" + jjd.getBjnr()); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1091,13 +1211,13 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
String idCode = null; |
|
|
|
String idCode = null; |
|
|
|
int age = 0; |
|
|
|
int age = 0; |
|
|
|
for (String s : list) { |
|
|
|
for (String s : list) { |
|
|
|
if(idCode == null){ |
|
|
|
if (idCode == null) { |
|
|
|
idCode = s; |
|
|
|
idCode = s; |
|
|
|
age = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0); |
|
|
|
age = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0); |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
int tmp = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0); |
|
|
|
int tmp = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0); |
|
|
|
if(tmp < age) { |
|
|
|
if (tmp < age) { |
|
|
|
age = tmp; |
|
|
|
age = tmp; |
|
|
|
idCode = s; |
|
|
|
idCode = s; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1107,15 +1227,16 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 手机要搜索的clue数据 |
|
|
|
* 手机要搜索的clue数据 |
|
|
|
* @param idCode 身份证Map |
|
|
|
* |
|
|
|
* @param mobile 手机号map |
|
|
|
* @param idCode 身份证Map |
|
|
|
* @param personal 人员 |
|
|
|
* @param mobile 手机号map |
|
|
|
|
|
|
|
* @param personal 人员 |
|
|
|
* @param personOldMap 人员的旧clue |
|
|
|
* @param personOldMap 人员的旧clue |
|
|
|
* @param task 任务 |
|
|
|
* @param task 任务 |
|
|
|
* @param tag 标签 |
|
|
|
* @param tag 标签 |
|
|
|
* @return 要新增的clue |
|
|
|
* @return 要新增的clue |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
List<RiskModelTaskClue> collectionClue(Map<String, List<GBaseJJD>> idCode, Map<String, List<GBaseJJD>> mobile,RiskPersonal personal,Map<String, List<RiskModelTaskClue>> personOldMap, RiskTask task, String tag) { |
|
|
|
List<RiskModelTaskClue> collectionClue(Map<String, List<GBaseJJD>> idCode, Map<String, List<GBaseJJD>> mobile, RiskPersonal personal, Map<String, List<RiskModelTaskClue>> personOldMap, RiskTask task, String tag) { |
|
|
|
List<GBaseJJD> jjdList = Optional.ofNullable(idCode.get(personal.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
List<GBaseJJD> jjdList = Optional.ofNullable(idCode.get(personal.getIdCode())).orElse(new ArrayList<>()); |
|
|
|
jjdList.addAll(Optional.ofNullable(mobile.get(personal.getMobileNumber())).orElse(new ArrayList<>())); |
|
|
|
jjdList.addAll(Optional.ofNullable(mobile.get(personal.getMobileNumber())).orElse(new ArrayList<>())); |
|
|
|
if (jjdList.isEmpty()) { |
|
|
|
if (jjdList.isEmpty()) { |
|
|
|
@ -1136,7 +1257,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
.tag(tag) |
|
|
|
.tag(tag) |
|
|
|
.personId(personal.getId()) |
|
|
|
.personId(personal.getId()) |
|
|
|
.build(); |
|
|
|
.build(); |
|
|
|
StringBuilder sb = new StringBuilder("该人员存在"+tag+"警情,接警单编号:" + gBaseJJD.getJjdbh()); |
|
|
|
StringBuilder sb = new StringBuilder("该人员存在" + tag + "警情,接警单编号:" + gBaseJJD.getJjdbh()); |
|
|
|
if (gBaseJJD.getBjnr() != null && !gBaseJJD.getBjnr().isEmpty()) { |
|
|
|
if (gBaseJJD.getBjnr() != null && !gBaseJJD.getBjnr().isEmpty()) { |
|
|
|
sb.append(",报警内容;" + gBaseJJD.getBjnr()); |
|
|
|
sb.append(",报警内容;" + gBaseJJD.getBjnr()); |
|
|
|
} |
|
|
|
} |
|
|
|
|