Browse Source

修改人员标签和风险项的入库逻辑

master
kami 1 year ago
parent
commit
50af3e5997
  1. 14
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 4
      src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java
  3. 93
      src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java
  4. 17
      src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java

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

@ -111,15 +111,15 @@ public class ApplicationEvent {
// gBaseJJDService.pullAndSave(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end); // gBaseJJDService.pullAndSave(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end);
// riskPersonalService.fixed(); // riskPersonalService.fixed();
// personalService.syncPerson(LocalDate.now()); // personalService.syncPerson(LocalDate.now());
// 32,33,34,39,41,51
// petitionService.petitionModelTask(initDomain(List.of(40))); // petitionService.petitionModelTask(initDomain(List.of(40)));
riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41))); // riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41)));
riskTaskService.infoModelTask(initDomain(List.of(32,33))); // riskTaskService.infoModelTask(initDomain(List.of(32,33)));
marriageService.marriageModelTask(initDomain(List.of(39,51))); // marriageService.marriageModelTask(initDomain(List.of(39,51)));
// pointService.syncSecurity(initDomain(List.of(37))); // pointService.syncSecurity(initDomain(List.of(37)));
// habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62))); habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62)));
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)));
// noControlService.syncNoControlData(initDomain(List.of(45))); // noControlService.syncNoControlData(initDomain(List.of(45)));
// pointService.syncDrug(initDomain(List.of(37))); // pointService.syncDrug(initDomain(List.of(37)));

4
src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java

@ -76,6 +76,10 @@ public class RiskModelTaskClue implements Serializable {
*/ */
@TableField("risk_reason") @TableField("risk_reason")
String riskReason; String riskReason;
/**
* 来源
*/
Integer source;
/** /**
* 数据详情 JSON * 数据详情 JSON
*/ */

93
src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java

@ -15,6 +15,7 @@ import com.biutag.supervisiondata.repository.*;
import com.biutag.supervisiondata.service.HabitService; import com.biutag.supervisiondata.service.HabitService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.util.BhUtil; import com.biutag.supervisiondata.util.BhUtil;
import com.biutag.supervisiondata.util.DataUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -93,31 +94,19 @@ public class HabitServiceImpl implements HabitService {
List<RiskModelTaskClue> toInsert1 = new ArrayList<>(); List<RiskModelTaskClue> toInsert1 = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
List<RiskModelTaskClue> toInsert3 = new ArrayList<>();
CompletableFuture.allOf( CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为"))), CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为", "B35酗酒"))),
CompletableFutureUtil.runSyncObject(() -> toInsert2.addAll(findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为"))), CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为", "B37赌博")),
CompletableFutureUtil.runSyncObject(() -> toInsert3.addAll(findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为"))) CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为", "B40其它成瘾行为"))
).join(); ).join();
log.info("开始进行数据库操作"); log.info("开始进行数据库操作");
if(!toInsert1.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert1, Default.HABBIT_IG);
}
if(!toInsert2.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert2, Default.HABBIT_IG);
}
if(!toInsert3.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert3, Default.HABBIT_IG);
}
riskTaskRepository.updateTask(task.getId(), toInsert1.size(), 0);
riskTaskRepository.updateTask(task2.getId(), toInsert2.size(), 0);
riskTaskRepository.updateTask(task3.getId(), toInsert3.size(), 0);
if(toInsert1.isEmpty()) {
return;
}
// 近一年酗酒 // 近一年酗酒
RiskTask task4 = riskTaskRepository.create(toInsert1.size(), 62); RiskTask task4 = riskTaskRepository.create(toInsert1.size(), 62);
@ -125,22 +114,15 @@ public class HabitServiceImpl implements HabitService {
List<RiskModelTaskClue> toInsertYears = new ArrayList<>(); List<RiskModelTaskClue> toInsertYears = new ArrayList<>();
for (RiskModelTaskClue clue : toInsert1) { for (RiskModelTaskClue clue : toInsert1) {
if(!limit.isBefore(clue.getEventTime())) {
continue;
}
if(old.get(clue.getIdCode()) == null) { if(old.get(clue.getIdCode()) == null) {
clue.setModelId(task4.getModelId()); clue.setModelId(task4.getModelId());
clue.setTaskId(task4.getId()); clue.setTaskId(task4.getId());
clue.setData(clue.getData().replace(",存在"+clue.getRiskReason()+",", ",近一年内存在"+clue.getRiskReason()+"行为,"));
clue.setRiskReason(Default.YEAR_DRINK);
toInsertYears.add(clue); toInsertYears.add(clue);
continue;
} }
old.remove(clue.getIdCode());
} }
if(!toInsertYears.isEmpty()) { if(!toInsertYears.isEmpty()) {
riskModelTaskClueService.saveClues(toInsertYears, Default.HABBIT_IG); riskModelTaskClueService.saveClues(toInsertYears, "B78酗酒");
} }
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> idCodes = new ArrayList<>(); List<String> idCodes = new ArrayList<>();
@ -163,7 +145,7 @@ public class HabitServiceImpl implements HabitService {
riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size()); riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size());
} }
List<RiskModelTaskClue> findBadHabit(List<String> ajNos, List<GBaseAJJBXX> targetAjList, RiskTask task, TaskParamDomain domain, String tag) { List<RiskModelTaskClue> findBadHabit(List<String> ajNos, List<GBaseAJJBXX> targetAjList, RiskTask task, TaskParamDomain domain, String tag, String bigTag) {
List<List<String>> ajNo = IntStream.range(0, (ajNos.size() + 9999) / 10000) List<List<String>> ajNo = IntStream.range(0, (ajNos.size() + 9999) / 10000)
.mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size()))) .mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size())))
.toList(); .toList();
@ -179,8 +161,13 @@ public class HabitServiceImpl implements HabitService {
// 人员的旧线索 // 人员的旧线索
Map<String, List<RiskModelTaskClue>> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); Map<String, List<RiskModelTaskClue>> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> clues; List<RiskModelTaskClue> clues;
LocalDateTime limit = LocalDateTime.now().minusYears(1);
// 创建新数据 // 创建新数据
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
log.info("开始遍历人员:{}", wfrMap.size()); log.info("开始遍历人员:{}", wfrMap.size());
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseWFRXX> wfTmp = Optional.ofNullable(wfrMap.get(person.getIdCode())).orElse(new ArrayList<>()); List<GBaseWFRXX> wfTmp = Optional.ofNullable(wfrMap.get(person.getIdCode())).orElse(new ArrayList<>());
@ -195,15 +182,23 @@ public class HabitServiceImpl implements HabitService {
} }
StringBuilder sb = new StringBuilder("结合案件信息和违法人信息相关数据,发现该人员有"+wfTmp.size()+"起"+tag+"相关案件,相关案件编号为:"); StringBuilder sb = new StringBuilder("结合案件信息和违法人信息相关数据,发现该人员有"+wfTmp.size()+"起"+tag+"相关案件,相关案件编号为:");
StringBuilder ajs = new StringBuilder();
LocalDateTime eventTime = null; LocalDateTime eventTime = null;
int count = 0;
int size = 0;
for (GBaseWFRXX gBaseWFRXX : wfTmp) { for (GBaseWFRXX gBaseWFRXX : wfTmp) {
GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh()); GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh());
if (aj == null) { if (aj == null) {
continue; continue;
} }
sb.append(gBaseWFRXX.getAjbh()).append(","); sb.append(gBaseWFRXX.getAjbh()).append(",");
size++;
try { try {
LocalDateTime tmp = aj.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDateTime tmp = aj.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if(tmp.isAfter(limit)) {
count++;
ajs.append(aj.getAjbh()).append(",");
}
if(eventTime == null) { if(eventTime == null) {
eventTime = tmp; eventTime = tmp;
continue; continue;
@ -213,36 +208,36 @@ public class HabitServiceImpl implements HabitService {
} }
} catch (Exception ignored) { } catch (Exception ignored) {
} }
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.id("habit") .id("habit")
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tag(tag) .tags(List.of(tag))
.personId(person.getId()) .personId(person.getId())
.sourceData(sb.substring(0, sb.length()-1)) .sourceData(sb.substring(0, sb.length()-1))
.score(Math.min(size, 5))
.eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now())) .eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now()))
.build(); .build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); toInsert.add(DataUtil.createClueData(task, data));
} if(count > 0) {
return toInsert; toInsert2.add(DataUtil.createClueData(new RiskTask(), ClueData.builder()
} .id("habit2")
.name(person.getName())
RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) { .idCode(person.getIdCode())
RiskModelTaskClue clue = new RiskModelTaskClue(); .tags(List.of(Default.YEAR_DRINK))
clue.setModelId(modelId); .score(5)
clue.setScore(score); .personId(person.getId())
clue.setName(data.getName()); .sourceData("发现该人员近一年内有酗酒行为,具体案件为:"+ajs.substring(0, ajs.length()-1))
clue.setIdCode(data.getIdCode()); .eventTime(LocalDateTime.now())
clue.setTaskId(taskId); .build()));
clue.setData(data.getSourceData()); }
clue.setEventTime(data.getEventTime()); }
clue.setCreateTime(LocalDateTime.now()); if(!toInsert.isEmpty()) {
clue.setUpdateTime(LocalDateTime.now()); riskModelTaskClueService.saveClues(toInsert, bigTag);
clue.setCaseIds(BhUtil.ajBh(data.getId()));
data.setPersonId(null);
clue.setRiskReason(data.getTag());
return clue;
} }
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0);
return toInsert2;
}
} }

17
src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java

@ -128,7 +128,7 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
} }
} }
final String sql = "INSERT INTO risk_model_task_clue(model_id, name, id_code, task_id, source_id, risk_reason, data, score, score_calc, score_result, event_time, create_time, update_time, case_ids) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; final String sql = "INSERT INTO risk_model_task_clue(model_id, name, id_code, task_id, source_id, risk_reason, source, data, score, score_calc, score_result, event_time, create_time, update_time, case_ids) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
public void batchInsert(List<RiskModelTaskClue> alliances, String bigTag, Map<Integer, ScoreRule> ruleMap) { public void batchInsert(List<RiskModelTaskClue> alliances, String bigTag, Map<Integer, ScoreRule> ruleMap) {
try (Connection connection = getConnection(); try (Connection connection = getConnection();
@ -153,14 +153,15 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
prepareStatement.setObject(4, it.getTaskId()); prepareStatement.setObject(4, it.getTaskId());
prepareStatement.setObject(5, it.getSourceId()); prepareStatement.setObject(5, it.getSourceId());
prepareStatement.setObject(6, bigTag); prepareStatement.setObject(6, bigTag);
prepareStatement.setObject(7, Optional.ofNullable(it.getData()).orElse("")); prepareStatement.setObject(7, 0);
prepareStatement.setObject(8, Optional.ofNullable(it.getScore()).orElse(0)); prepareStatement.setObject(8, Optional.ofNullable(it.getData()).orElse(""));
prepareStatement.setObject(9, Optional.ofNullable(score.doubleValue()).orElse(0.00)); prepareStatement.setObject(9, Optional.ofNullable(it.getScore()).orElse(0));
prepareStatement.setObject(10, Optional.ofNullable(score.doubleValue()).orElse(0.00)); prepareStatement.setObject(10, Optional.ofNullable(score.doubleValue()).orElse(0.00));
prepareStatement.setObject(11, Optional.ofNullable(it.getEventTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); prepareStatement.setObject(11, Optional.ofNullable(score.doubleValue()).orElse(0.00));
prepareStatement.setObject(12, Optional.ofNullable(it.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); prepareStatement.setObject(12, Optional.ofNullable(it.getEventTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(13, Optional.ofNullable(it.getUpdateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); prepareStatement.setObject(13, Optional.ofNullable(it.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(14, Optional.ofNullable(it.getCaseIds()).orElse("")); prepareStatement.setObject(14, Optional.ofNullable(it.getUpdateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(15, Optional.ofNullable(it.getCaseIds()).orElse(""));
prepareStatement.addBatch(); prepareStatement.addBatch();
} catch (SQLException e) { } catch (SQLException e) {
log.error("", e); log.error("", e);

Loading…
Cancel
Save