|
|
|
|
@ -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)); |
|
|
|
|
} |
|
|
|
|
return toInsert; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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; |
|
|
|
|
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())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(!toInsert.isEmpty()) { |
|
|
|
|
riskModelTaskClueService.saveClues(toInsert, bigTag); |
|
|
|
|
} |
|
|
|
|
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0); |
|
|
|
|
return toInsert2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|