|
|
|
@ -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; |
|
|
|
@ -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); |
|
|
|
@ -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); |
|
|
|
@ -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); |
|
|
|
@ -882,6 +933,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
others.add(gBaseJJD); |
|
|
|
others.add(gBaseJJD); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!mobiles.isEmpty()) { |
|
|
|
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)); |
|
|
|
Map<String, List<GBaseSYRKXX>> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); |
|
|
|
Map<String, List<GBaseSYRKXX>> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); |
|
|
|
@ -907,11 +959,12 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
idCodesMap.computeIfAbsent(s, k -> new ArrayList<>()).add(other); |
|
|
|
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; |
|
|
|
@ -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<>(); |
|
|
|
@ -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)); |
|
|
|
@ -1044,11 +1164,11 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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; |
|
|
|
@ -1107,6 +1227,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 手机要搜索的clue数据 |
|
|
|
* 手机要搜索的clue数据 |
|
|
|
|
|
|
|
* |
|
|
|
* @param idCode 身份证Map |
|
|
|
* @param idCode 身份证Map |
|
|
|
* @param mobile 手机号map |
|
|
|
* @param mobile 手机号map |
|
|
|
* @param personal 人员 |
|
|
|
* @param personal 人员 |
|
|
|
|