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. 89
      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);
// 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)));

4
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
*/

89
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<RiskModelTaskClue> toInsert1 = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
List<RiskModelTaskClue> 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<RiskModelTaskClue> 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<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> idCodes = new ArrayList<>();
@ -163,7 +145,7 @@ public class HabitServiceImpl implements HabitService {
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)
.mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size())))
.toList();
@ -179,8 +161,13 @@ public class HabitServiceImpl implements HabitService {
// 人员的旧线索
Map<String, List<RiskModelTaskClue>> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> clues;
LocalDateTime limit = LocalDateTime.now().minusYears(1);
// 创建新数据
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
log.info("开始遍历人员:{}", wfrMap.size());
for (RiskPersonal person : domain.getPersons()) {
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 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;
}
}

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) {
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);

Loading…
Cancel
Save