Browse Source

定时任务

master
kami 1 year ago
parent
commit
e65a69e8ce
  1. 76
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  2. 81
      src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java
  3. 2
      src/main/java/com/biutag/supervisiondata/task/TaskService.java

76
src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

@ -416,7 +416,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
Map<String, RiskPersonal> idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val));
Map<String, RiskPersonal> mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val));
Map<String, List<String>> personJqList = new WeakHashMap<>(); Map<String, List<GBaseJJD>> personJqList = new WeakHashMap<>();
int count = gBaseJJDRepository.getBaseMapper().selectWarningInstanceCount(startTime); int count = gBaseJJDRepository.getBaseMapper().selectWarningInstanceCount(startTime);
RiskTask task = taskRepository.create(count, 64); RiskTask task = taskRepository.create(count, 64);
@ -437,7 +437,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
riskPerson = mobileMap.get(jjd.getBjdh()); riskPerson = mobileMap.get(jjd.getBjdh());
} }
if (riskPerson != null) { 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) { for (String s : str) {
riskPerson = idCodelMap.get(s); riskPerson = idCodelMap.get(s);
if (riskPerson == null) continue; 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) { for (String s : str) {
riskPerson = mobileMap.get(s); riskPerson = mobileMap.get(s);
if (riskPerson == null) continue; 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("开始统计每个人的警情"); log.info("开始统计每个人的警情");
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIds = new ArrayList<>();
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<GBaseJJD> list;
for (Map.Entry<String, List<GBaseJJD>> 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<String> list;
for (Map.Entry<String, List<String>> entry : personJqList.entrySet()) {
list = entry.getValue().stream().distinct().toList();
RiskPersonal person = idCodelMap.get(entry.getKey()); RiskPersonal person = idCodelMap.get(entry.getKey());
StringBuilder sb = new StringBuilder("该人员近一年来有" + list.size() + "起平台涉警事件,接警单编号为:"); StringBuilder sb = new StringBuilder("该人员近一年来有" + list.size() + "起平台涉警事件,接警单编号为:");
for (int i = 0, length = Math.min(3, list.size()); i < length; i++) { 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() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of(list.size() + "起平台涉警事件")) .tags(List.of(list.size() + "起平台涉警事件"))
.sourceData(sb.substring(0, sb.length() - 1)) .sourceData(desc)
.eventTime(LocalDateTime.now()) .eventTime(maxTime)
.personId(person.getId()) .personId(person.getId())
.score(Math.min(5, list.size())) .score(Math.min(5, list.size()))
.build(); .build();
toInsert.add(DataUtil.createClueData(task, data)); toInsert.add(DataUtil.createClueData(task, data));
} }
for (Map.Entry<String, RiskModelTaskClue> 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()) { if (!toInsert.isEmpty()) {
log.info("保存平台涉警事件数据:{}", toInsert.size()); log.info("保存平台涉警事件数据:{}", toInsert.size());
clueService.saveClues(toInsert, "B28平台涉警事件"); 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 @Override

81
src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java

@ -281,51 +281,68 @@ public class PetitionServiceImpl implements PetitionService {
CompletableFuture.allOf( CompletableFuture.allOf(
// CompletableFutureUtil.runSyncObject(() -> dataList1.addAll(dataCaseVerifRepository.getBaseMapper().selectRiskPerson(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))), // 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(() -> 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(); ).join();
Map<String, RiskPersonal> idCodeMan = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); Map<String, RiskPersonal> idCodeMan = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue));
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, RiskModelTaskClue> oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val));
// List<RiskModelTaskClue> toInsert1 = new ArrayList<>(createClues(dataList1, oldMap, idCodeMan, task, Default.PETITION_CASE_TAG));
List<RiskModelTaskClue> toInsert2 = new ArrayList<>(createClues(dataList2, oldMap, idCodeMan, task, "存在上访"));
List<RiskModelTaskClue> toInsert3 = new ArrayList<>(createClues(dataList3, oldMap, idCodeMan, task, "存在上访"));
toInsert2.addAll(toInsert3);
Map<String, List<RiskModelTaskClue>> map = toInsert2.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (Map.Entry<String, List<RiskModelTaskClue>> entry : map.entrySet()) { List<RiskModelTaskClue> toDelete = new ArrayList<>();
toInsert.add(entry.getValue().getFirst()); List<RiskModelTaskClue> toUpdate = new ArrayList<>();
} List<String> toDeleteIds = new ArrayList<>();
if (!toInsert.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert, "B20是否上访");
}
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
List<RiskModelTaskClue> createClues(List<PetitionData> dataList, Map<String, RiskModelTaskClue> oldMap, Map<String, RiskPersonal> idCodeMan, RiskTask task, String tag) { Map<String, List<PetitionData>> map = dataList2.stream().collect(Collectors.groupingBy(PetitionData::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (PetitionData data : dataList) { for (Map.Entry<String, List<PetitionData>> entry : map.entrySet()) {
if (oldMap.get(BhUtil.petBh(data.getId())) != null) { RiskPersonal person = idCodeMan.get(entry.getKey());
continue; 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);
} }
RiskPersonal person = idCodeMan.get(data.getIdCode());
if (person == null) {
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of(tag)) .tags(List.of("存在上访"))
.sourceData("该人员存在上访行为") .sourceData("该人员存在上访行为")
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.eventTime(null) .eventTime(maxTime)
.build())); .build()));
} }
return toInsert; for (Map.Entry<String, RiskModelTaskClue> 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<GBaseSYRKXX> infos, String name) { GBaseSYRKXX compare(List<GBaseSYRKXX> infos, String name) {
@ -349,13 +366,9 @@ public class PetitionServiceImpl implements PetitionService {
} }
personal.setAge(age); personal.setAge(age);
if (personal.getGender() == null) { if (personal.getGender() == null) {
try { String gender = IdCodeUtil.idCard2Gender(personal.getIdCode());
int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); if (gender == null) return null;
// 结果0男1女 余数偶女奇男 personal.setGender(gender);
personal.setGender(gender % 2 == 0 ? "2" : "1");
} catch (Exception e) {
return null;
}
} }
return personal; return personal;
} }

2
src/main/java/com/biutag/supervisiondata/task/TaskService.java

@ -113,6 +113,7 @@ public class TaskService {
marriageService.marriageModelTask(initDomain(List.of(39,51))); marriageService.marriageModelTask(initDomain(List.of(39,51)));
// 五年内酒、赌博、嫖娼案件,一年内酒案件 // 五年内酒、赌博、嫖娼案件,一年内酒案件
habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62))); habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62)));
petitionService.petitionModelTask(initDomain(List.of(40)));
pointService.syncCarUser(initDomain(List.of(53))); pointService.syncCarUser(initDomain(List.of(53)));
pointService.syncScore(initDomain(List.of(43))); pointService.syncScore(initDomain(List.of(43)));
pointService.syncViolence(initDomain(List.of(44))); pointService.syncViolence(initDomain(List.of(44)));
@ -121,6 +122,7 @@ public class TaskService {
pointService.syncOilBuy(initDomain(List.of(52))); pointService.syncOilBuy(initDomain(List.of(52)));
jsbryService.syncPys(initDomain(List.of(59))); jsbryService.syncPys(initDomain(List.of(59)));
gBaseSHRWFRService.combatCrime(initDomain(List.of(63))); gBaseSHRWFRService.combatCrime(initDomain(List.of(63)));
gBaseJJDService.warningInstance(initDomain(List.of(64)));
pointService.syncPointType(initDomain(List.of(67))); pointService.syncPointType(initDomain(List.of(67)));
gBaseJJDService.syncOtherContradict(initDomain(List.of(75))); gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
gBaseSHRWFRService.crimeName(initDomain(List.of(76))); gBaseSHRWFRService.crimeName(initDomain(List.of(76)));

Loading…
Cancel
Save