|
|
|
@ -578,6 +578,270 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
taskRepository.updateTask(task2.getId(), toInsert2.size(), 0); |
|
|
|
taskRepository.updateTask(task2.getId(), toInsert2.size(), 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void syncLove(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<GBaseJJD> result = gBaseJJDRepository.getBaseMapper().selectLoveDispute(startTime); |
|
|
|
|
|
|
|
// 恋爱创伤
|
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(result.size(), 71); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
default -> { |
|
|
|
|
|
|
|
for (int i = 1; i < 3; 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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(1), 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, "个人恋爱创伤")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
|
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
|
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
|
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
|
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
|
|
|
|
update.setId(update.getId()); |
|
|
|
|
|
|
|
update.setDel(1); |
|
|
|
|
|
|
|
toUpdate.add(update); |
|
|
|
|
|
|
|
deleteIdCards.add(clue.getIdCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.info("恋爱创伤:{} | {}", toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
if (!toInsert.isEmpty()) { |
|
|
|
|
|
|
|
clueService.saveClues(toInsert, "较大影响负性事件"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!toUpdate.isEmpty()) { |
|
|
|
|
|
|
|
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "个人恋爱创伤"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void syncMarryDispute(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<GBaseJJD> result = gBaseJJDRepository.getBaseMapper().selectMarryDispute(startTime); |
|
|
|
|
|
|
|
// 恋爱创伤
|
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(result.size(), 72); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
default -> { |
|
|
|
|
|
|
|
for (int i = 1; i < 3; 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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(1), 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, "与配偶关系不和")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
|
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
|
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
|
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
|
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
|
|
|
|
update.setId(update.getId()); |
|
|
|
|
|
|
|
update.setDel(1); |
|
|
|
|
|
|
|
toUpdate.add(update); |
|
|
|
|
|
|
|
deleteIdCards.add(clue.getIdCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.info("与配偶关系不和:{} | {}", toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
if (!toInsert.isEmpty()) { |
|
|
|
|
|
|
|
clueService.saveClues(toInsert, Default.HOME_VIOLENCE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!toUpdate.isEmpty()) { |
|
|
|
|
|
|
|
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与配偶关系不和"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void syncNeighborAndColleagueDispute(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<GBaseJJD> result = gBaseJJDRepository.getBaseMapper().selectNeighborAndColleagueDispute(startTime); |
|
|
|
|
|
|
|
// 恋爱创伤
|
|
|
|
|
|
|
|
RiskTask task = taskRepository.create(result.size(), 73); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
idCodesMap.computeIfAbsent(tmp.get(1), 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); |
|
|
|
|
|
|
|
case 2 -> { |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD); |
|
|
|
|
|
|
|
mobilesMap.computeIfAbsent(tmp.get(1), 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, "与邻居或同事纠纷")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); |
|
|
|
|
|
|
|
List<String> deleteIdCards = new ArrayList<>(); |
|
|
|
|
|
|
|
for (RiskModelTaskClue clue : oldList) { |
|
|
|
|
|
|
|
if(clue.getEventTime().isBefore(limit)) { |
|
|
|
|
|
|
|
RiskModelTaskClue update = new RiskModelTaskClue(); |
|
|
|
|
|
|
|
update.setId(update.getId()); |
|
|
|
|
|
|
|
update.setDel(1); |
|
|
|
|
|
|
|
toUpdate.add(update); |
|
|
|
|
|
|
|
deleteIdCards.add(clue.getIdCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.info("邻里和同事:{} | {}", toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
if (!toInsert.isEmpty()) { |
|
|
|
|
|
|
|
clueService.saveClues(toInsert, Default.HOME_VIOLENCE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!toUpdate.isEmpty()) { |
|
|
|
|
|
|
|
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与邻居或同事纠纷"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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<>(); |
|
|
|
@ -645,6 +909,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { |
|
|
|
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 = fatherIdCodeMap.get(person.getIdCode()); |
|
|
|
|
|
|
|
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); |
|
|
|
if(jjdList == null) { |
|
|
|
if(jjdList == null) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|