diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 2c066bf..a906c20 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/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); // riskPersonalService.fixed(); // personalService.syncPerson(LocalDate.now()); - + // 32,33,34,39,41,51 // petitionService.petitionModelTask(initDomain(List.of(40))); - riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41))); - riskTaskService.infoModelTask(initDomain(List.of(32,33))); - marriageService.marriageModelTask(initDomain(List.of(39,51))); +// riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41))); +// riskTaskService.infoModelTask(initDomain(List.of(32,33))); +// marriageService.marriageModelTask(initDomain(List.of(39,51))); // pointService.syncSecurity(initDomain(List.of(37))); -// habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62))); - pointService.syncCarUser(initDomain(List.of(53))); - pointService.syncScore(initDomain(List.of(43))); + habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62))); +// pointService.syncCarUser(initDomain(List.of(53))); +// pointService.syncScore(initDomain(List.of(43))); // pointService.syncViolence(initDomain(List.of(44))); // noControlService.syncNoControlData(initDomain(List.of(45))); // pointService.syncDrug(initDomain(List.of(37))); diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java index f46aa05..3858f31 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java @@ -76,6 +76,10 @@ public class RiskModelTaskClue implements Serializable { */ @TableField("risk_reason") String riskReason; + /** + * 来源 + */ + Integer source; /** * 数据详情 JSON */ diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java index e603501..e76f17e 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java +++ b/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.RiskModelTaskClueService; import com.biutag.supervisiondata.util.BhUtil; +import com.biutag.supervisiondata.util.DataUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -93,31 +94,19 @@ public class HabitServiceImpl implements HabitService { List toInsert1 = new ArrayList<>(); - List toInsert2 = new ArrayList<>(); - List toInsert3 = new ArrayList<>(); CompletableFuture.allOf( - CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为"))), - CompletableFutureUtil.runSyncObject(() -> toInsert2.addAll(findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为"))), - CompletableFutureUtil.runSyncObject(() -> toInsert3.addAll(findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为"))) + CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为", "B35酗酒"))), + CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为", "B37赌博")), + CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为", "B40其它成瘾行为")) ).join(); 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); @@ -125,22 +114,15 @@ public class HabitServiceImpl implements HabitService { List toInsertYears = new ArrayList<>(); for (RiskModelTaskClue clue : toInsert1) { - if(!limit.isBefore(clue.getEventTime())) { - continue; - } if(old.get(clue.getIdCode()) == null) { clue.setModelId(task4.getModelId()); clue.setTaskId(task4.getId()); - clue.setData(clue.getData().replace(",存在"+clue.getRiskReason()+",", ",近一年内存在"+clue.getRiskReason()+"行为,")); - clue.setRiskReason(Default.YEAR_DRINK); toInsertYears.add(clue); - continue; } - old.remove(clue.getIdCode()); } if(!toInsertYears.isEmpty()) { - riskModelTaskClueService.saveClues(toInsertYears, Default.HABBIT_IG); + riskModelTaskClueService.saveClues(toInsertYears, "B78酗酒"); } List toUpdate = new ArrayList<>(); List idCodes = new ArrayList<>(); @@ -163,7 +145,7 @@ public class HabitServiceImpl implements HabitService { riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size()); } - List findBadHabit(List ajNos, List targetAjList, RiskTask task, TaskParamDomain domain, String tag) { + List findBadHabit(List ajNos, List targetAjList, RiskTask task, TaskParamDomain domain, String tag, String bigTag) { List> ajNo = IntStream.range(0, (ajNos.size() + 9999) / 10000) .mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size()))) .toList(); @@ -179,8 +161,13 @@ public class HabitServiceImpl implements HabitService { // 人员的旧线索 Map> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); List clues; + + LocalDateTime limit = LocalDateTime.now().minusYears(1); + // 创建新数据 List toInsert = new ArrayList<>(); + + List toInsert2 = new ArrayList<>(); log.info("开始遍历人员:{}", wfrMap.size()); for (RiskPersonal person : domain.getPersons()) { List 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 ajs = new StringBuilder(); LocalDateTime eventTime = null; + int count = 0; + int size = 0; for (GBaseWFRXX gBaseWFRXX : wfTmp) { GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh()); if (aj == null) { continue; } sb.append(gBaseWFRXX.getAjbh()).append(","); + size++; try { LocalDateTime tmp = aj.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + if(tmp.isAfter(limit)) { + count++; + ajs.append(aj.getAjbh()).append(","); + } if(eventTime == null) { eventTime = tmp; continue; @@ -213,36 +208,36 @@ public class HabitServiceImpl implements HabitService { } } catch (Exception ignored) { } - } ClueData data = ClueData.builder() .id("habit") .name(person.getName()) .idCode(person.getIdCode()) - .tag(tag) + .tags(List.of(tag)) .personId(person.getId()) .sourceData(sb.substring(0, sb.length()-1)) + .score(Math.min(size, 5)) .eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now())) .build(); - toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + toInsert.add(DataUtil.createClueData(task, data)); + if(count > 0) { + toInsert2.add(DataUtil.createClueData(new RiskTask(), ClueData.builder() + .id("habit2") + .name(person.getName()) + .idCode(person.getIdCode()) + .tags(List.of(Default.YEAR_DRINK)) + .score(5) + .personId(person.getId()) + .sourceData("发现该人员近一年内有酗酒行为,具体案件为:"+ajs.substring(0, ajs.length()-1)) + .eventTime(LocalDateTime.now()) + .build())); + } } - return toInsert; + if(!toInsert.isEmpty()) { + riskModelTaskClueService.saveClues(toInsert, bigTag); + } + riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0); + return toInsert2; } - RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) { - RiskModelTaskClue clue = new RiskModelTaskClue(); - clue.setModelId(modelId); - clue.setScore(score); - clue.setName(data.getName()); - clue.setIdCode(data.getIdCode()); - clue.setTaskId(taskId); - clue.setData(data.getSourceData()); - clue.setEventTime(data.getEventTime()); - clue.setCreateTime(LocalDateTime.now()); - clue.setUpdateTime(LocalDateTime.now()); - clue.setCaseIds(BhUtil.ajBh(data.getId())); - data.setPersonId(null); - clue.setRiskReason(data.getTag()); - return clue; - } } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java index 6c7a30e..918bb0f 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java +++ b/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 alliances, String bigTag, Map ruleMap) { try (Connection connection = getConnection(); @@ -153,14 +153,15 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { prepareStatement.setObject(4, it.getTaskId()); prepareStatement.setObject(5, it.getSourceId()); prepareStatement.setObject(6, bigTag); - prepareStatement.setObject(7, Optional.ofNullable(it.getData()).orElse("")); - prepareStatement.setObject(8, Optional.ofNullable(it.getScore()).orElse(0)); - prepareStatement.setObject(9, Optional.ofNullable(score.doubleValue()).orElse(0.00)); + prepareStatement.setObject(7, 0); + prepareStatement.setObject(8, Optional.ofNullable(it.getData()).orElse("")); + prepareStatement.setObject(9, Optional.ofNullable(it.getScore()).orElse(0)); 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(12, Optional.ofNullable(it.getCreateTime()).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(14, Optional.ofNullable(it.getCaseIds()).orElse("")); + prepareStatement.setObject(11, Optional.ofNullable(score.doubleValue()).orElse(0.00)); + 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.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + 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(); } catch (SQLException e) { log.error("", e);