Browse Source

定时任务

master
kami 1 year ago
parent
commit
e65a69e8ce
  1. 76
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  2. 83
      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> 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);
RiskTask task = taskRepository.create(count, 64);
@ -437,7 +437,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
riskPerson = mobileMap.get(jjd.getBjdh());
}
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) {
riskPerson = idCodelMap.get(s);
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) {
riskPerson = mobileMap.get(s);
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("开始统计每个人的警情");
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());
StringBuilder sb = new StringBuilder("该人员近一年来有" + list.size() + "起平台涉警事件,接警单编号为:");
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()
.name(person.getName())
.idCode(person.getIdCode())
.tags(List.of(list.size() + "起平台涉警事件"))
.sourceData(sb.substring(0, sb.length() - 1))
.eventTime(LocalDateTime.now())
.sourceData(desc)
.eventTime(maxTime)
.personId(person.getId())
.score(Math.min(5, list.size()))
.build();
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()) {
log.info("保存平台涉警事件数据:{}", toInsert.size());
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

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

@ -281,51 +281,68 @@ public class PetitionServiceImpl implements PetitionService {
CompletableFuture.allOf(
// 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(() -> 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();
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 = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
// 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<>();
for (Map.Entry<String, List<RiskModelTaskClue>> entry : map.entrySet()) {
toInsert.add(entry.getValue().getFirst());
}
if (!toInsert.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert, "B20是否上访");
}
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> toDeleteIds = new ArrayList<>();
List<RiskModelTaskClue> createClues(List<PetitionData> dataList, Map<String, RiskModelTaskClue> oldMap, Map<String, RiskPersonal> idCodeMan, RiskTask task, String tag) {
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (PetitionData data : dataList) {
if (oldMap.get(BhUtil.petBh(data.getId())) != null) {
continue;
}
RiskPersonal person = idCodeMan.get(data.getIdCode());
if (person == null) {
Map<String, List<PetitionData>> map = dataList2.stream().collect(Collectors.groupingBy(PetitionData::getIdCode));
for (Map.Entry<String, List<PetitionData>> entry : map.entrySet()) {
RiskPersonal person = idCodeMan.get(entry.getKey());
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);
}
continue;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.score(5)
.personId(person.getId())
.tags(List.of(tag))
.tags(List.of("存在上访"))
.sourceData("该人员存在上访行为")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.eventTime(maxTime)
.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) {
@ -349,13 +366,9 @@ public class PetitionServiceImpl implements PetitionService {
}
personal.setAge(age);
if (personal.getGender() == null) {
try {
int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15));
// 结果0男1女 余数偶女奇男
personal.setGender(gender % 2 == 0 ? "2" : "1");
} catch (Exception e) {
return null;
}
String gender = IdCodeUtil.idCard2Gender(personal.getIdCode());
if (gender == null) return null;
personal.setGender(gender);
}
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)));
// 五年内酒、赌博、嫖娼案件,一年内酒案件
habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62)));
petitionService.petitionModelTask(initDomain(List.of(40)));
pointService.syncCarUser(initDomain(List.of(53)));
pointService.syncScore(initDomain(List.of(43)));
pointService.syncViolence(initDomain(List.of(44)));
@ -121,6 +122,7 @@ public class TaskService {
pointService.syncOilBuy(initDomain(List.of(52)));
jsbryService.syncPys(initDomain(List.of(59)));
gBaseSHRWFRService.combatCrime(initDomain(List.of(63)));
gBaseJJDService.warningInstance(initDomain(List.of(64)));
pointService.syncPointType(initDomain(List.of(67)));
gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
gBaseSHRWFRService.crimeName(initDomain(List.of(76)));

Loading…
Cancel
Save