Browse Source

定时任务

master
kami 1 year ago
parent
commit
48ccc6bfe7
  1. 2
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 31
      src/main/java/com/biutag/supervisiondata/pojo/domain/DBData.java
  3. 8
      src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java
  4. 630
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  5. 1
      src/main/java/com/biutag/supervisiondata/task/TaskService.java
  6. 9
      src/main/java/com/biutag/supervisiondata/util/DateTimeUtil.java

2
src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java

@ -124,7 +124,7 @@ public class ApplicationEvent {
// //
// pointService.syncControlNoPower(initDomain(List.of(48))); // pointService.syncControlNoPower(initDomain(List.of(48)));
// pointService.syncOilBuy(initDomain(List.of(52))); // pointService.syncOilBuy(initDomain(List.of(52)));
// gBaseJJDService.pullPoliceInstance(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end, initDomain(List.of(55,56,57,58))); // gBaseJJDService.pullPoliceInstance(initDomain(List.of(55,56,57,58)));
// 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))); // gBaseJJDService.warningInstance(initDomain(List.of(64)));

31
src/main/java/com/biutag/supervisiondata/pojo/domain/DBData.java

@ -0,0 +1,31 @@
package com.biutag.supervisiondata.pojo.domain;
import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* DBData
*
* @author kami on 2025/1/7 9:33
* @version 1.0.0
* @since 21
*/
@Data
public class DBData implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
}

8
src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java

@ -16,14 +16,8 @@ public interface GBaseJJDService {
* @param end 接警结束范围 * @param end 接警结束范围
*/ */
void pullAndSave(LocalDateTime start, LocalDateTime end); void pullAndSave(LocalDateTime start, LocalDateTime end);
/**
* 同步警情 厌世报复自杀遭遇不公
* @param start 接警开始范围
* @param end 接警结束范围
*/
void pullDataAndSaveRedis(LocalDateTime start, LocalDateTime end);
void pullPoliceInstance(LocalDateTime start, LocalDateTime end,TaskParamDomain domain); void pullPoliceInstance(TaskParamDomain domain);
/** /**
* 攻击警察 * 攻击警察
* @param domain domain * @param domain domain

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

@ -1,14 +1,12 @@
package com.biutag.supervisiondata.service.impl; package com.biutag.supervisiondata.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil;
import com.biutag.supervisiondata.common.utils.StreamUtil; import com.biutag.supervisiondata.common.utils.StreamUtil;
import com.biutag.supervisiondata.config.cache.RedisDao;
import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.domain.Contradict; import com.biutag.supervisiondata.pojo.domain.Contradict;
import com.biutag.supervisiondata.pojo.domain.DBData;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD;
@ -137,9 +135,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} else { } else {
info = compare(xxxInfo, personal.getName()); info = compare(xxxInfo, personal.getName());
} }
if (info == null) {
personal.setErrorMsg(personal.getIdCode());
}
} }
if (personal.getMobileNumber() != null && info == null) { if (personal.getMobileNumber() != null && info == null) {
xxxInfo = mobileMap.get(personal.getMobileNumber()); xxxInfo = mobileMap.get(personal.getMobileNumber());
@ -175,7 +170,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
if (personal.getControlDepartType() != null && personal.getControlDepartType() >= DepartType.HUMAN.getType()) { if (personal.getControlDepartType() != null && personal.getControlDepartType() >= DepartType.HUMAN.getType()) {
continue; continue;
} }
List<GBaseJJD> jjds = jjdMap.get(personal.getIdCode()); List<GBaseJJD> jjds = jjdMap.get(personal.getIdCode());
if (jjds == null) { if (jjds == null) {
jjds = jjdMMap.get(Optional.ofNullable(personal.getMobileNumber()).orElse("")); jjds = jjdMMap.get(Optional.ofNullable(personal.getMobileNumber()).orElse(""));
@ -186,9 +180,10 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
GBaseJJD tmp = jjds.getFirst(); GBaseJJD tmp = jjds.getFirst();
jjds.removeFirst(); jjds.removeFirst();
for (GBaseJJD jjd : jjds) { for (GBaseJJD jjd : jjds) {
LocalDateTime time = DateTimeUtil.date2LocalDateTime(jjd.getBjsj());
LocalDateTime last = DateTimeUtil.date2LocalDateTime(tmp.getBjsj());
try { try {
LocalDateTime time = jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); if (time.isAfter(last)) {
if (time.isAfter(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) {
tmp = jjd; tmp = jjd;
} }
} catch (Exception ignored) { } catch (Exception ignored) {
@ -224,93 +219,30 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
@Override @Override
public void pullDataAndSaveRedis(LocalDateTime start, LocalDateTime end) { public void pullPoliceInstance(TaskParamDomain domain) {
RedisDao.getInstance().removeListAll("jjd"); String endTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
RedisDao.getInstance().opsForHashDelAll("jjd_cache"); String startTime = LocalDateTime.now().minusYears(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
List<GBaseJJD> result = gBaseJJDRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")),
end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
for (GBaseJJD gBaseJJD : result) {
String bjnr = Optional.ofNullable(gBaseJJD.getBjnr()).orElse("");
String cjqk = Optional.ofNullable(gBaseJJD.getCjqk()).orElse("");
if (bjnr.length() <= 2 && cjqk.length() <= 2) {
continue;
}
JSONObject ob = new JSONObject();
ob.put("id", gBaseJJD.getJjdbh());
ob.put("name", gBaseJJD.getBjrxm());
ob.put("mobile", gBaseJJD.getBjdh());
ob.put("idCode", Optional.ofNullable(gBaseJJD.getBjrzjhm()).orElse("暂无"));
ob.put("bjnr", bjnr);
ob.put("cjqk", cjqk);
String str1 = PatternUtil.takeIdCard(ob.getString("bjnr"));
String str2 = PatternUtil.takeIdCard(ob.getString("cjqk"));
String str3 = PatternUtil.takeMobile(ob.getString("bjnr"));
String str4 = PatternUtil.takeMobile(ob.getString("cjqk"));
List<String> idCodes = new ArrayList<>();
List<String> mobiles = new ArrayList<>();
idCodes.addAll(Arrays.stream(str1.split(",")).filter(item -> item.length() > 2).toList());
idCodes.addAll(Arrays.stream(str2.split(",")).filter(item -> item.length() > 2).toList());
mobiles.addAll(Arrays.stream(str3.split(",")).filter(item -> item.length() > 2).toList());
mobiles.addAll(Arrays.stream(str4.split(",")).filter(item -> item.length() > 2).toList());
mobiles.add(ob.getString("mobile"));
idCodes = idCodes.stream().distinct().toList();
mobiles = mobiles.stream().distinct().toList();
ob.put("idCodes", idCodes);
ob.put("mobiles", mobiles);
RedisDao.getInstance().rightPush("jjd", ob.toJSONString());
RedisDao.getInstance().opsForHashSave("jjd_cache", gBaseJJD.getJjdbh(), JSON.toJSONString(gBaseJJD));
}
log.info("完成缓存");
}
@Override
public void pullPoliceInstance(LocalDateTime start, LocalDateTime end, TaskParamDomain domain) {
String startTime = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String endTime = end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
CompletableFuture.allOf( CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> { CompletableFutureUtil.runSyncObject(() -> {
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectRevenge(startTime, endTime); List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectRevenge(startTime, endTime);
RiskTask task = taskRepository.create(jjdList.size(), 58); RiskTask task = taskRepository.create(jjdList.size(), 58);
List<RiskModelTaskClue> list = collectJJD(task, "表达报复社会", jjdList, domain); collectJJD(task, "表达报复社会", jjdList, domain, "B83表达报复社会");
if (!list.isEmpty()) {
log.info("保存复仇者联盟:{}", list.size());
clueService.saveClues(list, "B83表达报复社会");
}
taskRepository.updateTask(task.getId(), list.size(), 0);
}), }),
CompletableFutureUtil.runSyncObject(() -> { CompletableFutureUtil.runSyncObject(() -> {
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectHater(startTime, endTime); List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectHater(startTime, endTime);
RiskTask task = taskRepository.create(jjdList.size(), 55); RiskTask task = taskRepository.create(jjdList.size(), 55);
List<RiskModelTaskClue> list = collectJJD(task, "表达厌世情绪", jjdList, domain); collectJJD(task, "表达厌世情绪", jjdList, domain, "B80表达厌世情绪");
if (!list.isEmpty()) {
log.info("厌世强者:{}", list.size());
clueService.saveClues(list, "B80表达厌世情绪");
}
taskRepository.updateTask(task.getId(), list.size(), 0);
}), }),
CompletableFutureUtil.runSyncObject(() -> { CompletableFutureUtil.runSyncObject(() -> {
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectInjustice(startTime, endTime); List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectInjustice(startTime, endTime);
RiskTask task = taskRepository.create(jjdList.size(), 57); RiskTask task = taskRepository.create(jjdList.size(), 57);
List<RiskModelTaskClue> list = collectJJD(task, "表达遭受不公", jjdList, domain); collectJJD(task, "表达遭受不公", jjdList, domain, "B82表达遭受不公");
if (!list.isEmpty()) {
log.info("我命由我不由天:{}", list.size());
clueService.saveClues(list, "B82表达遭受不公");
}
taskRepository.updateTask(task.getId(), list.size(), 0);
}), }),
CompletableFutureUtil.runSyncObject(() -> { CompletableFutureUtil.runSyncObject(() -> {
List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectSuicide(startTime, endTime); List<GBaseJJD> jjdList = gBaseJJDRepository.getBaseMapper().selectSuicide(startTime, endTime);
RiskTask task = taskRepository.create(jjdList.size(), 56); RiskTask task = taskRepository.create(jjdList.size(), 56);
List<RiskModelTaskClue> list = collectJJD(task, "尝试自杀", jjdList, domain); collectJJD(task, "尝试自杀", jjdList, domain, "B81尝试自杀");
if (!list.isEmpty()) {
log.info("毁灭吧:{}", list.size());
clueService.saveClues(list, "B81尝试自杀");
}
taskRepository.updateTask(task.getId(), list.size(), 0);
}) })
).join(); ).join();
} }
@ -468,17 +400,12 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
} }
log.info("开始统计每个人的警情"); log.info("开始统计每个人的警情");
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIds = new ArrayList<>();
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<GBaseJJD> list; List<GBaseJJD> list;
for (Map.Entry<String, List<GBaseJJD>> entry : personJqList.entrySet()) { for (Map.Entry<String, List<GBaseJJD>> entry : personJqList.entrySet()) {
list = entry.getValue().stream().distinct().sorted().toList(); list = entry.getValue().stream().distinct().sorted().toList();
LocalDateTime maxTime = null; LocalDateTime maxTime = null;
for (GBaseJJD gBaseJJD : list) { for (GBaseJJD gBaseJJD : list) {
LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(gBaseJJD.getBjsj()); LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(gBaseJJD.getBjsj());
@ -512,12 +439,11 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
update.setTags(List.of(list.size() + "起平台涉警事件")); update.setTags(List.of(list.size() + "起平台涉警事件"));
update.setData(desc); update.setData(desc);
update.setEventTime(maxTime); update.setEventTime(maxTime);
toUpdate.add(update); data.getToUpdate().add(update);
} }
continue; continue;
} }
data.getToInsert().add(DataUtil.createClueData(task, 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() + "起平台涉警事件"))
@ -525,31 +451,10 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
.eventTime(maxTime) .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));
}
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平台涉警事件");
}
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()); data = eachToDelete(data, oldMap);
toDb(data, "平台涉警事件", "B28平台涉警事件", task);
} }
@Override @Override
@ -624,10 +529,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
Map<String, RiskModelTaskClue> personOldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> personOldMap = domain.getOldMap(task.getModelId(), true);
Map<String, RiskModelTaskClue> personOldMap2 = domain.getOldMap(task2.getModelId(), true); Map<String, RiskModelTaskClue> personOldMap2 = domain.getOldMap(task2.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); DBData data2 = new DBData();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
List<RiskModelTaskClue> toUpdate2 = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
// 被家暴 // 被家暴
RiskModelTaskClue clue1 = collectionClue(shIdCodeMap, shMobileMap, person, task, "被家暴"); RiskModelTaskClue clue1 = collectionClue(shIdCodeMap, shMobileMap, person, task, "被家暴");
@ -637,10 +540,10 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
personOldMap.remove(person.getIdCode()); personOldMap.remove(person.getIdCode());
if (!old1.getData().equals(clue1.getData())) { if (!old1.getData().equals(clue1.getData())) {
clue1.setId(old1.getId()); clue1.setId(old1.getId());
toUpdate.add(clue1); data.getToUpdate().add(clue1);
} }
} else { } else {
toInsert.add(clue1); data.getToInsert().add(clue1);
} }
} }
// 家暴 // 家暴
@ -648,56 +551,20 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
if (clue2 == null) continue; if (clue2 == null) continue;
RiskModelTaskClue old2 = personOldMap2.get(person.getIdCode()); RiskModelTaskClue old2 = personOldMap2.get(person.getIdCode());
if (old2 == null) { if (old2 == null) {
toInsert2.add(clue2); data2.getToInsert().add(clue2);
continue; continue;
} }
personOldMap2.remove(person.getIdCode()); personOldMap2.remove(person.getIdCode());
if (!old2.getData().equals(clue2.getData())) { if (!old2.getData().equals(clue2.getData())) {
clue2.setId(old2.getId()); clue2.setId(old2.getId());
toUpdate2.add(clue2); data2.getToUpdate().add(clue2);
} }
} }
List<RiskModelTaskClue> toDelete = new ArrayList<>(); data = eachToDelete(data, personOldMap);
List<RiskModelTaskClue> toDelete2 = new ArrayList<>(); data2 = eachToDelete(data2, personOldMap2);
List<String> deleteIdCards = new ArrayList<>();
List<String> deleteIdCards2 = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : personOldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getKey());
}
for (Map.Entry<String, RiskModelTaskClue> entry : personOldMap2.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete2.add(delete);
deleteIdCards2.add(entry.getKey());
}
log.info("被家暴:{} | {} | {}", toInsert.size(), toUpdate.size(), toDelete.size()); toDb(data, "被家暴", "B53被他人家暴", task);
if (!toInsert.isEmpty()) { toDb(data2, "家暴", "B52对他人家暴", task2);
clueService.saveClues(toInsert, "B53被他人家暴");
}
if (!toUpdate.isEmpty()) {
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
log.info("家暴:{} | {} | {}", toInsert2.size(), toUpdate2.size(), toDelete2.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert2, "B52对他人家暴");
}
if (!toUpdate2.isEmpty()) {
clueService.updateClues(toUpdate2, task2.getModelId());
}
if (!toDelete2.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete2, deleteIdCards2, task2.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
taskRepository.updateTask(task2.getId(), toInsert.size(), toUpdate2.size() + toDelete2.size());
} }
@Override @Override
@ -718,92 +585,44 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
log.info("父亲条数:{} | 母亲条数:{}", fatherIdCodeMap.size(), motherIdCodeMap.size()); log.info("父亲条数:{} | 母亲条数:{}", fatherIdCodeMap.size(), motherIdCodeMap.size());
List<RiskModelTaskClue> tmp1 = eachClue2Save(domain, task, fatherIdCodeMap, "父亲"); DBData fatherDBData = new DBData();
DBData motherDBData = new DBData();
List<RiskModelTaskClue> tmp2 = eachClue2Save(domain, task2, motherIdCodeMap, "母亲"); Map<String, RiskModelTaskClue> fatherOldMap = domain.getOldMap(task.getModelId(), true);
Map<String, RiskModelTaskClue> motherOldMap = domain.getOldMap(task2.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); for (RiskPersonal person : domain.getPersons()) {
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); RiskModelTaskClue fatherClue = collectionClue(fatherIdCodeMap, new WeakHashMap<>(0), person, task, "与父亲关系不合");
List<RiskModelTaskClue> toDelete = new ArrayList<>(); RiskModelTaskClue motherClue = collectionClue(motherIdCodeMap, new WeakHashMap<>(0), person, task2, "与母亲关系不合");
List<String> deleteIdCards = new ArrayList<>(); if (fatherClue != null) {
RiskModelTaskClue fatherOld = fatherOldMap.get(person.getIdCode());
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); if(fatherOld == null) {
for (RiskModelTaskClue riskModelTaskClue : tmp1) { fatherDBData.getToInsert().add(fatherClue);
RiskModelTaskClue old = oldMap.get(riskModelTaskClue.getIdCode()); } else {
if (old == null) { fatherOldMap.remove(person.getIdCode());
toInsert.add(riskModelTaskClue); if (!fatherOld.getData().equals(fatherClue.getData())) {
continue; fatherClue.setId(fatherOld.getId());
} fatherDBData.getToUpdate().add(fatherClue);
oldMap.remove(riskModelTaskClue.getIdCode()); }
if (!old.getData().equals(riskModelTaskClue.getData())) { }
riskModelTaskClue.setId(old.getId());
toUpdate.add(riskModelTaskClue);
} }
} if(motherClue == null) continue;
RiskModelTaskClue motherOld = motherOldMap.get(person.getIdCode());
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) { if(motherOld == null) {
RiskModelTaskClue delete = new RiskModelTaskClue(); motherDBData.getToInsert().add(motherClue);
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getKey());
}
if (!toInsert.isEmpty()) {
log.info("父亲矛盾增加 {}", toInsert.size());
clueService.saveClues(toInsert, "B48与父亲关系");
}
if (!toUpdate.isEmpty()) {
log.info("父亲矛盾修改 {}", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
log.info("父亲矛盾删除 {}", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
List<RiskModelTaskClue> toUpdate2 = new ArrayList<>();
List<RiskModelTaskClue> toDelete2 = new ArrayList<>();
List<String> deleteIdCards2 = new ArrayList<>();
Map<String, RiskModelTaskClue> oldMap2 = domain.getOldMap(task2.getModelId(), true);
for (RiskModelTaskClue riskModelTaskClue : tmp2) {
RiskModelTaskClue old = oldMap2.get(riskModelTaskClue.getIdCode());
if (old == null) {
toInsert2.add(riskModelTaskClue);
continue; continue;
} }
oldMap2.remove(riskModelTaskClue.getIdCode()); motherOldMap.remove(person.getIdCode());
if (!old.getData().equals(riskModelTaskClue.getData())) { if (!motherOld.getData().equals(motherClue.getData())) {
riskModelTaskClue.setId(old.getId()); motherClue.setId(motherOld.getId());
toUpdate2.add(riskModelTaskClue); motherDBData.getToUpdate().add(motherClue);
} }
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap2.entrySet()) { fatherDBData = eachToDelete(fatherDBData, fatherOldMap);
RiskModelTaskClue delete = new RiskModelTaskClue(); toDb(fatherDBData, "父亲矛盾", "B48与父亲关系", task);
delete.setId(entry.getValue().getId()); motherDBData = eachToDelete(motherDBData, motherOldMap);
delete.setDel(1); toDb(motherDBData, "母亲矛盾", "B49与母亲关系", task2);
toDelete2.add(delete);
deleteIdCards2.add(entry.getKey());
}
if (!toInsert2.isEmpty()) {
log.info("母亲矛盾增加 {}", toInsert2.size());
clueService.saveClues(toInsert2, "B49与母亲关系");
}
if (!toUpdate2.isEmpty()) {
log.info("母亲矛盾修改 {}", toUpdate2.size());
clueService.updateClues(toUpdate2, task2.getModelId());
}
if (!toDelete2.isEmpty()) {
log.info("母亲矛盾删除 {}", toDelete2.size());
clueService.deleteCluesAndDeleteTag(toDelete2, deleteIdCards2, task2.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
taskRepository.updateTask(task2.getId(), toInsert2.size(), toUpdate2.size() + toDelete2.size());
} }
@Override @Override
@ -866,42 +685,23 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "个人恋爱创伤"); RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "个人恋爱创伤");
if (clue == null) continue; if (clue == null) continue;
RiskModelTaskClue old = oldMap.get(person.getIdCode()); RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old == null) { if (old == null) {
toInsert.add(clue); data.getToInsert().add(clue);
continue; continue;
} }
oldMap.remove(person.getIdCode()); oldMap.remove(person.getIdCode());
if (!old.getData().equals(clue.getData())) { if (!old.getData().equals(clue.getData())) {
clue.setId(old.getId()); clue.setId(old.getId());
toUpdate.add(clue); data.getToUpdate().add(clue);
} }
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) { data = eachToDelete(data, oldMap);
RiskModelTaskClue delete = new RiskModelTaskClue(); toDb(data, "恋爱创伤", "B68个人恋爱创伤", task);
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getValue().getIdCode());
}
log.info("恋爱创伤:{} | {} | {}", toInsert.size(), toUpdate.size(), toDelete.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, "B68个人恋爱创伤");
}
if (!toUpdate.isEmpty()) {
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
} }
@Override @Override
@ -965,42 +765,23 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "与配偶关系不和"); RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "与配偶关系不和");
if (clue == null) continue; if (clue == null) continue;
RiskModelTaskClue old = oldMap.get(person.getIdCode()); RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old == null) { if (old == null) {
toInsert.add(clue); data.getToInsert().add(clue);
continue; continue;
} }
oldMap.remove(person.getIdCode()); oldMap.remove(person.getIdCode());
if (!old.getData().equals(clue.getData())) { if (!old.getData().equals(clue.getData())) {
clue.setId(old.getId()); clue.setId(old.getId());
toUpdate.add(clue); data.getToUpdate().add(clue);
} }
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) { data = eachToDelete(data, oldMap);
RiskModelTaskClue delete = new RiskModelTaskClue(); toDb(data, "与配偶关系不和", "B55与配偶关系", task);
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getValue().getIdCode());
}
log.info("与配偶关系不和:{} | {} | {}", toInsert.size(), toUpdate.size(), toDelete.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, "B55与配偶关系");
}
if (!toUpdate.isEmpty()) {
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
} }
@Override @Override
@ -1063,43 +844,23 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "与邻居或同事纠纷"); RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, "与邻居或同事纠纷");
if (clue == null) continue; if (clue == null) continue;
RiskModelTaskClue old = oldMap.get(person.getIdCode()); RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old == null) { if (old == null) {
toInsert.add(clue); data.getToInsert().add(clue);
continue; continue;
} }
oldMap.remove(person.getIdCode()); oldMap.remove(person.getIdCode());
if (!old.getData().equals(clue.getData())) { if (!old.getData().equals(clue.getData())) {
clue.setId(old.getId()); clue.setId(old.getId());
toUpdate.add(clue); data.getToUpdate().add(clue);
} }
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) { data = eachToDelete(data, oldMap);
RiskModelTaskClue delete = new RiskModelTaskClue(); toDb(data, "邻里和同事", "B55同事与邻居关系", task);
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getValue().getIdCode());
}
log.info("邻里和同事:{} | {} | {}", toInsert.size(), toUpdate.size(), toDelete.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, "B55同事与邻居关系");
}
if (!toUpdate.isEmpty()) {
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
} }
@Override @Override
@ -1170,11 +931,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseJJD> jjdList = Optional.ofNullable(idCodesMap.get(person.getIdCode())).orElse(new ArrayList<>()); List<GBaseJJD> jjdList = Optional.ofNullable(idCodesMap.get(person.getIdCode())).orElse(new ArrayList<>());
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).sorted().toList(); jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).sorted().toList();
@ -1186,14 +943,14 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
for (GBaseJJD jjd : jjdList) { for (GBaseJJD jjd : jjdList) {
sb.append(jjd.getJjdbh()).append(","); sb.append(jjd.getJjdbh()).append(",");
LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(jjd.getBjsj()); LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(jjd.getBjsj());
if (time == null || (tmp!= null && time.isBefore(tmp))) { if (time == null || (tmp != null && time.isBefore(tmp))) {
time = tmp; time = tmp;
} }
} }
String desc = sb.substring(0, sb.length() - 1); String desc = sb.substring(0, sb.length() - 1);
RiskModelTaskClue old = oldMap.get(person.getIdCode()); RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old == null) { if (old == null) {
toInsert.add(DataUtil.createClueData(task, ClueData.builder() data.getToInsert().add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of("被欺凌")) .tags(List.of("被欺凌"))
@ -1205,7 +962,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
continue; continue;
} }
oldMap.remove(person.getIdCode()); oldMap.remove(person.getIdCode());
if(old.getData().equals(desc)) continue; if (old.getData().equals(desc)) continue;
RiskModelTaskClue update = DataUtil.createClueData(task, ClueData.builder() RiskModelTaskClue update = DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
@ -1216,27 +973,11 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
.eventTime(time) .eventTime(time)
.build()); .build());
update.setId(old.getId()); update.setId(old.getId());
toUpdate.add(update); data.getToUpdate().add(update);
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) { data = eachToDelete(data, oldMap);
RiskModelTaskClue delete = new RiskModelTaskClue(); toDb(data, "欺凌", "B73遭遇暴力欺凌", task);
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCards.add(entry.getValue().getIdCode());
}
log.info("欺凌:{} | {} | {}", toInsert.size(), toUpdate.size(), toDelete.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, "B73遭遇暴力欺凌");
}
if (!toUpdate.isEmpty()) {
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCards, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()+toDelete.size());
} }
@Override @Override
@ -1249,10 +990,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
Map<String, List<Contradict>> map = list.stream().collect(Collectors.groupingBy(Contradict::getGmsfhm)); Map<String, List<Contradict>> map = list.stream().collect(Collectors.groupingBy(Contradict::getGmsfhm));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<Contradict> contradicts = Optional.ofNullable(map.get(person.getIdCode())).orElse(new ArrayList<>()).stream().sorted(Comparator.comparing(Contradict::getType)).toList(); List<Contradict> contradicts = Optional.ofNullable(map.get(person.getIdCode())).orElse(new ArrayList<>()).stream().sorted(Comparator.comparing(Contradict::getType)).toList();
if (contradicts.isEmpty()) continue; if (contradicts.isEmpty()) continue;
@ -1280,10 +1018,10 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
RiskModelTaskClue update = new RiskModelTaskClue(); RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId()); update.setId(old.getId());
update.setData(desc); update.setData(desc);
toUpdate.add(update); data.getToUpdate().add(update);
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() data.getToInsert().add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of("其他矛盾纠纷")) .tags(List.of("其他矛盾纠纷"))
@ -1293,32 +1031,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
.score(5) .score(5)
.build())); .build()));
} }
data = eachToDelete(data, oldMap);
if (!toInsert.isEmpty()) { toDb(data, "其他纠纷", "B57其他矛盾纠纷", task);
log.info("新增其他纠纷:{} ", toInsert.size());
clueService.saveClues(toInsert, "B57其他矛盾纠纷");
}
if (!toUpdate.isEmpty()) {
log.info("修改其他纠纷:{} ", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toDelete.isEmpty()) {
log.info("删除其他纠纷:{} ", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
} }
/** /**
@ -1328,9 +1042,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
* @param tag 标签 * @param tag 标签
* @param result 接警单数据 * @param result 接警单数据
* @param domain domain * @param domain domain
* @return 要新增的结果
*/ */
List<RiskModelTaskClue> collectJJD(RiskTask task, String tag, List<GBaseJJD> result, TaskParamDomain domain) { void collectJJD(RiskTask task, String tag, List<GBaseJJD> result, TaskParamDomain domain, String bigTag) {
Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>(); Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>();
Map<String, List<GBaseJJD>> mobilesMap = new WeakHashMap<>(); Map<String, List<GBaseJJD>> mobilesMap = new WeakHashMap<>();
@ -1374,15 +1087,24 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
} }
} }
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
// 按人分
Map<String, List<RiskModelTaskClue>> personOldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); DBData data = new DBData();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, personOldMap, task, tag)); RiskModelTaskClue clue = collectionClue(idCodesMap, mobilesMap, person, task, tag);
if (clue == null) continue;
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old == null) {
data.getToInsert().add(clue);
continue;
}
oldMap.remove(person.getIdCode());
if (old.getData().equals(clue.getData())) continue;
clue.setId(old.getId());
data.getToUpdate().add(clue);
} }
return toInsert; data = eachToDelete(data, oldMap);
toDb(data, tag, bigTag, task);
} }
Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) { Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) {
@ -1448,103 +1170,39 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
return fatherIdCodeMap; return fatherIdCodeMap;
} }
List<RiskModelTaskClue> eachClue2Save(TaskParamDomain domain, RiskTask task, Map<String, List<GBaseJJD>> idCodeMap, String tag) { DBData eachToDelete(DBData data, Map<String, RiskModelTaskClue> oldMap) {
List<RiskModelTaskClue> toInsert = new ArrayList<>(); for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
for (RiskPersonal person : domain.getPersons()) { RiskModelTaskClue delete = new RiskModelTaskClue();
List<GBaseJJD> jjdList = Optional.ofNullable(idCodeMap.get(person.getIdCode())).orElse(new ArrayList<>()); delete.setId(entry.getValue().getId());
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).sorted().toList(); delete.setDel(1);
if (jjdList.isEmpty()) { data.getToDelete().add(delete);
continue; data.getDeleteIdCards().add(entry.getValue().getIdCode());
}
LocalDateTime time = null;
StringBuilder sb = new StringBuilder("该人员与" + tag + "存在" + jjdList.size() + "起矛盾,接警单编号:");
for (GBaseJJD jjd : jjdList) {
sb.append(jjd.getJjdbh()).append(",");
LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(jjd.getBjsj());
if (time == null || (tmp!= null && time.isBefore(tmp))) time = tmp;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName())
.idCode(person.getIdCode())
.tags(List.of("与" + tag + "存在矛盾"))
.eventTime(time)
.score(Math.min(5, jjdList.size()))
.sourceData(sb.substring(0, sb.length() - 1))
.personId(person.getId())
.build()));
} }
return toInsert; return data;
} }
String findSmallOne(List<String> list) { void toDb(DBData data, String mark, String bigTag, RiskTask task) {
LocalDate today = LocalDate.now(); if (!data.getToInsert().isEmpty()) {
String idCode = null; log.info("{}增加 {}", mark, data.getToInsert().size());
int age = 0; clueService.saveClues(data.getToInsert(), bigTag);
for (String s : list) {
if (idCode == null) {
idCode = s;
age = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0);
continue;
}
int tmp = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0);
if (tmp < age) {
age = tmp;
idCode = s;
}
} }
return idCode; if (!data.getToUpdate().isEmpty()) {
} log.info("{}修改 {}", mark, data.getToUpdate().size());
clueService.updateClues(data.getToUpdate(), task.getModelId());
/**
* 手机要搜索的clue数据
*
* @param idCode 身份证Map
* @param mobile 手机号map
* @param personal 人员
* @param personOldMap 人员的旧clue
* @param task 任务
* @param tag 标签
* @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<GBaseJJD> jjdList = Optional.ofNullable(idCode.get(personal.getIdCode())).orElse(new ArrayList<>());
jjdList.addAll(Optional.ofNullable(mobile.get(personal.getMobileNumber())).orElse(new ArrayList<>()));
if (jjdList.isEmpty()) {
return new ArrayList<>();
} }
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); if (!data.getToDelete().isEmpty()) {
List<RiskModelTaskClue> olds = personOldMap.get(personal.getIdCode()); log.info("{}删除 {}", mark, data.getToDelete().size());
if (olds != null) { clueService.deleteCluesAndDeleteTag(data.getToDelete(), data.getDeleteIdCards(), task.getModelId());
return new ArrayList<>();
} }
List<RiskModelTaskClue> toInsert = new ArrayList<>(); taskRepository.updateTask(task.getId(), data.getToInsert().size(), data.getToUpdate().size() + data.getToDelete().size());
StringBuilder sb = new StringBuilder("该人员存在" + jjdList.size() + "起" + tag + "警情,接警单编号:"); }
LocalDateTime time = null;
for (GBaseJJD gBaseJJD : jjdList) {
sb.append(gBaseJJD.getJjdbh()).append(",");
try {
LocalDateTime tmp = gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if (time == null) {
time = tmp;
continue;
}
if (time.isBefore(tmp)) {
time = tmp;
}
} catch (Exception ignored) {
}
} String findSmallOne(List<String> list) {
toInsert.add(DataUtil.createClueData(task, ClueData.builder() LocalDate today = LocalDate.now();
.name(personal.getName()) return list.stream()
.idCode(personal.getIdCode()) .min(Comparator.comparingInt(id -> Optional.ofNullable(IdCodeUtil.idCard2Age(id, today))
.tags(List.of(tag)) .orElse(Integer.MAX_VALUE)))
.personId(personal.getId()) .orElse(null);
.eventTime(time)
.sourceData(sb.substring(0, sb.length() - 1))
.score(Math.min(jjdList.size(), 5))
.build()));
return toInsert;
} }
/** /**
@ -1567,7 +1225,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
for (GBaseJJD gBaseJJD : jjdList) { for (GBaseJJD gBaseJJD : jjdList) {
sb.append(gBaseJJD.getJjdbh()).append(","); sb.append(gBaseJJD.getJjdbh()).append(",");
LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(gBaseJJD.getBjsj()); LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(gBaseJJD.getBjsj());
if (time == null || (tmp!= null && time.isBefore(tmp))) { if (time == null || (tmp != null && time.isBefore(tmp))) {
time = tmp; time = tmp;
} }
} }
@ -1584,20 +1242,12 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
/** /**
* 多身份证对比名称 * 多身份证对比名称
*
* @param infos 信息 * @param infos 信息
* @param name 名称 * @param name 名称
* @return 正确信息 * @return 正确信息
*/ */
GBaseSYRKXX compare(List<GBaseSYRKXX> infos, String name) { GBaseSYRKXX compare(List<GBaseSYRKXX> infos, String name) {
GBaseSYRKXX info = null; return infos.stream().filter(item -> item.getXm().equals(name)).findFirst().orElse(null);
for (GBaseSYRKXX gBaseSYRKXX : infos) {
if (gBaseSYRKXX.getXm().equals(name)) {
info = gBaseSYRKXX;
break;
}
}
return info;
} }
RiskPersonal createPerson(GBaseJJD item) { RiskPersonal createPerson(GBaseJJD item) {
@ -1610,14 +1260,9 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
person.setIdCode(item.getBjrzjhm()); person.setIdCode(item.getBjrzjhm());
person.setControlDepartType(DepartType.OTHER.getType()); person.setControlDepartType(DepartType.OTHER.getType());
// 如果有报警时间,暂时填报警时间 处理标签回正 // 如果有报警时间,暂时填报警时间 处理标签回正
try { person.setCreateTime(DateTimeUtil.date2LocalDateTime(item.getBjsj()));
LocalDateTime time = item.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); person.setControlTime(person.getCreateTime());
person.setCreateTime(time); if (person.getCreateTime() == null) person.setCreateTime(LocalDateTime.now());
person.setControlTime(time);
} catch (Exception e) {
person.setCreateTime(LocalDateTime.now());
log.info("报警时间处理异常");
}
// 这里暂时将小标签放到预览属性 处理标签回正 // 这里暂时将小标签放到预览属性 处理标签回正
person.setTags(item.getJqxzmc()); person.setTags(item.getJqxzmc());
return person; return person;
@ -1628,16 +1273,11 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
personal.setIdCode(info.getGmsfhm()); personal.setIdCode(info.getGmsfhm());
personal.setMobileNumber(info.getLxdh()); personal.setMobileNumber(info.getLxdh());
personal.setGender(IdCodeUtil.idCard2Gender(personal.getIdCode())); personal.setGender(IdCodeUtil.idCard2Gender(personal.getIdCode()));
personal.setAge(Optional.ofNullable(IdCodeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); personal.setAge(Optional.ofNullable(IdCodeUtil.idCard2Age(personal.getIdCode(), today)).orElse(-1));
if (personal.getAge() == null) { if (personal.getAge() == null) {
try { LocalDate localDate = DateTimeUtil.date2LocalDate(info.getCsrq());
LocalDate localDate = info.getCsrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); int age = localDate.until(today).getYears();
int age = localDate.until(today).getYears(); personal.setAge(age);
personal.setAge(age);
} catch (Exception e) {
log.error("发现一例没有出生日期");
personal.setAge(-1);
}
} }
if (personal.getGender() == null) { if (personal.getGender() == null) {
personal.setGender(info.getXbdm()); personal.setGender(info.getXbdm());

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

@ -120,6 +120,7 @@ public class TaskService {
noControlService.syncNoControlData(initDomain(List.of(45))); noControlService.syncNoControlData(initDomain(List.of(45)));
pointService.syncControlNoPower(initDomain(List.of(48))); pointService.syncControlNoPower(initDomain(List.of(48)));
pointService.syncOilBuy(initDomain(List.of(52))); pointService.syncOilBuy(initDomain(List.of(52)));
gBaseJJDService.pullPoliceInstance(initDomain(List.of(55,56,57,58)));
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))); gBaseJJDService.warningInstance(initDomain(List.of(64)));

9
src/main/java/com/biutag/supervisiondata/util/DateTimeUtil.java

@ -2,6 +2,7 @@ package com.biutag.supervisiondata.util;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.Date; import java.util.Date;
@ -21,4 +22,12 @@ public class DateTimeUtil {
} }
return null; return null;
} }
public LocalDate date2LocalDate(Date date) {
try {
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
} catch (Exception ignored) {
}
return null;
}
} }

Loading…
Cancel
Save