Browse Source

模型数据任务更新

master
kami 1 year ago
parent
commit
eab1ef6ace
  1. 2
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 8
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.java
  3. 22
      src/main/java/com/biutag/supervisiondata/pojo/domain/BadHabit.java
  4. 7
      src/main/java/com/biutag/supervisiondata/service/HabitService.java
  5. 7
      src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java
  6. 241
      src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java
  7. 19
      src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java
  8. 78
      src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java
  9. 125
      src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java
  10. 22
      src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java
  11. 17
      src/main/java/com/biutag/supervisiondata/task/TaskService.java

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

@ -119,7 +119,7 @@ public class ApplicationEvent {
// 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)));
// habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62))); // habitService.syncBadHabit(LocalDateTime.of(2019, 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)));

8
src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.java

@ -1,6 +1,7 @@
package com.biutag.supervisiondata.mapper.dwd; package com.biutag.supervisiondata.mapper.dwd;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervisiondata.pojo.domain.BadHabit;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -16,4 +17,11 @@ public interface GBaseAJJBXXMapper extends BaseMapper<GBaseAJJBXX> {
@Select(" select ajbh, barq, ajlbmc from dwd_asj_zfba_ajjbxx where barq > #{time}") @Select(" select ajbh, barq, ajlbmc from dwd_asj_zfba_ajjbxx where barq > #{time}")
List<GBaseAJJBXX> selectHabit(@Param("time")String time); List<GBaseAJJBXX> selectHabit(@Param("time")String time);
@Select(" select a.ajbh, a.barq, a.ajlbmc, c.id_code from dwd_asj_zfba_ajjbxx as a " +
" inner join dwd_ry_zfba_wfryxx as b on a.ajbh = b.ajbh " +
" inner join csga_wdpcdb.wdpc_person as c on c.id_code = b.zjhm " +
" where a.barq > #{time} and a.ajlbmc is not null ")
List<BadHabit> selectBadHabit(@Param("time")String time);
} }

22
src/main/java/com/biutag/supervisiondata/pojo/domain/BadHabit.java

@ -0,0 +1,22 @@
package com.biutag.supervisiondata.pojo.domain;
import lombok.Data;
import java.util.Date;
/**
* @author kami on 2024-12-23 14:58
* @version 1.0
* @since 1.8
*/
@Data
public class BadHabit {
String idCode;
String ajbh;
String ajlbmc;
Date barq;
}

7
src/main/java/com/biutag/supervisiondata/service/HabitService.java

@ -12,5 +12,10 @@ import java.time.LocalDateTime;
*/ */
public interface HabitService { public interface HabitService {
void habitModelTask(LocalDateTime targetTime, TaskParamDomain domain); /**
* 拉取不良嗜好
* @param targetTime 目标开始时间
* @param domain 数据
*/
void syncBadHabit(LocalDateTime targetTime, TaskParamDomain domain);
} }

7
src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java

@ -20,4 +20,11 @@ public interface RiskModelTaskClueService {
* @param modelId 要删除的模型id * @param modelId 要删除的模型id
*/ */
void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId); void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId);
/**
* 修改记录
* @param list 要修改的数据
* @param modelId 模型id
*/
void updateClues(List<RiskModelTaskClue> list, Integer modelId);
} }

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

@ -1,13 +1,9 @@
package com.biutag.supervisiondata.service.impl; package com.biutag.supervisiondata.service.impl;
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.pojo.ClueData; import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.domain.BadHabit;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX;
import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue;
import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal;
import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; import com.biutag.supervisiondata.pojo.entity.mine.RiskTask;
@ -15,18 +11,15 @@ 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.DataUtil; import com.biutag.supervisiondata.util.DataUtil;
import com.biutag.supervisiondata.util.DateTimeUtil;
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;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/** /**
* @author kami on 2024-11-13 11:11:56 * @author kami on 2024-11-13 11:11:56
@ -40,203 +33,107 @@ public class HabitServiceImpl implements HabitService {
private final GBaseAJJBXXRepository gBaseAJJBXXRepository; private final GBaseAJJBXXRepository gBaseAJJBXXRepository;
private final GBaseWFRXXRepository gBaseWFRXXRepository;
private final RiskTaskRepository riskTaskRepository; private final RiskTaskRepository riskTaskRepository;
private final RiskModelTaskClueService riskModelTaskClueService; private final RiskModelTaskClueService riskModelTaskClueService;
@Override @Override
public void habitModelTask(LocalDateTime targetTime, TaskParamDomain domain) { public void syncBadHabit(LocalDateTime targetTime, TaskParamDomain domain) {
List<GBaseAJJBXX> ajjbxxList = gBaseAJJBXXRepository.getBaseMapper().selectHabit(targetTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); List<BadHabit> habitList = gBaseAJJBXXRepository.getBaseMapper().selectBadHabit(targetTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
LocalDateTime limit = LocalDateTime.now().minusYears(1);
log.info("总案件数:{}", ajjbxxList.size());
// 酒
List<GBaseAJJBXX> targetAjList = new ArrayList<>();
List<String> ajNos = new ArrayList<>();
// 赌博
List<GBaseAJJBXX> targetAjList2 = new ArrayList<>();
List<String> ajNos2 = new ArrayList<>();
// 其他行为 Map<String, List<String>> alcoholics = new WeakHashMap<>();
List<GBaseAJJBXX> targetAjList3 = new ArrayList<>(); Map<String, List<String>> gambler = new WeakHashMap<>();
List<String> ajNos3 = new ArrayList<>(); Map<String, List<String>> AIDS = new WeakHashMap<>();
Map<String, List<String>> alcoholics2 = new WeakHashMap<>();
for (GBaseAJJBXX gBaseAJJBXX : ajjbxxList) { LocalDateTime limit = LocalDateTime.now().minusYears(1);
if (gBaseAJJBXX.getAjlbmc() == null) { for (BadHabit badHabit : habitList) {
continue; if (badHabit.getAjlbmc().contains("酒")) {
} alcoholics.computeIfAbsent(badHabit.getIdCode(), k -> new ArrayList<>()).add(badHabit.getAjbh());
if (gBaseAJJBXX.getAjlbmc().contains("酒")){ LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(badHabit.getBarq());
targetAjList.add(gBaseAJJBXX); if (tmp != null && tmp.isAfter(limit))
ajNos.add(gBaseAJJBXX.getAjbh()); alcoholics2.computeIfAbsent(badHabit.getIdCode(), k -> new ArrayList<>()).add(badHabit.getAjbh());
} }
if (gBaseAJJBXX.getAjlbmc().contains("赌博")) { if (badHabit.getAjlbmc().contains("赌博")) {
targetAjList2.add(gBaseAJJBXX); gambler.computeIfAbsent(badHabit.getIdCode(), k -> new ArrayList<>()).add(badHabit.getAjbh());
ajNos2.add(gBaseAJJBXX.getAjbh()); }
} if (badHabit.getAjlbmc().contains("嫖娼") || badHabit.getAjlbmc().contains("招嫖")
|| badHabit.getAjlbmc().contains("嫖宿")) {
if (gBaseAJJBXX.getAjlbmc().contains("嫖娼") || gBaseAJJBXX.getAjlbmc().contains("招嫖") if (badHabit.getAjlbmc().contains("幼女")) {
|| gBaseAJJBXX.getAjlbmc().contains("嫖宿")) {
if (gBaseAJJBXX.getAjlbmc().contains("幼女")) {
continue; continue;
} }
targetAjList3.add(gBaseAJJBXX); AIDS.computeIfAbsent(badHabit.getIdCode(), k -> new ArrayList<>()).add(badHabit.getAjbh());
ajNos3.add(gBaseAJJBXX.getAjbh());
} }
} }
RiskTask task = riskTaskRepository.create(ajNos.size(), 36);
RiskTask task2 = riskTaskRepository.create(ajNos2.size(), 60);
RiskTask task3 = riskTaskRepository.create(ajNos3.size(), 61);
log.info("共计案件:{} | {} | {}", ajNos.size(), ajNos2.size(), ajNos3.size());
List<RiskModelTaskClue> toInsert1 = new ArrayList<>();
CompletableFuture.allOf( CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为", "B35酗酒"))), CompletableFutureUtil.runSyncObject(() -> createBadHabit(alcoholics, domain, 36, "酗酒行为", "B35酗酒")),
CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为", "B37赌博")), CompletableFutureUtil.runSyncObject(() -> createBadHabit(gambler, domain, 60, "赌博行为", "B37赌博")),
CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为", "B40其它成瘾行为")) CompletableFutureUtil.runSyncObject(() -> createBadHabit(AIDS, domain, 61, "其它成瘾行为", "B40其它成瘾行为")),
CompletableFutureUtil.runSyncObject(() -> createBadHabit(alcoholics2, domain, 62, "一年内酗酒行为", "B78酗酒"))
).join(); ).join();
log.info("开始进行数据库操作");
if(toInsert1.isEmpty()) {
return;
} }
// 近一年酗酒
RiskTask task4 = riskTaskRepository.create(toInsert1.size(), 62);
Map<String, RiskModelTaskClue> old = domain.getOldMap(task4.getModelId(), true); void createBadHabit(Map<String, List<String>> badHabits, TaskParamDomain domain, Integer modelId, String tag, String bigTag) {
RiskTask task = riskTaskRepository.create(badHabits.size(), modelId);
List<RiskModelTaskClue> toInsertYears = new ArrayList<>(); Map<String, RiskModelTaskClue> olds = domain.getOldMap(modelId, true);
for (RiskModelTaskClue clue : toInsert1) {
if(old.get(clue.getIdCode()) == null) {
clue.setModelId(task4.getModelId());
clue.setTaskId(task4.getId());
toInsertYears.add(clue);
}
}
if(!toInsertYears.isEmpty()) {
riskModelTaskClueService.saveClues(toInsertYears, "B78酗酒");
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> idCodes = new ArrayList<>();
// 酗酒 看看有没有过期
for (Map.Entry<String, RiskModelTaskClue> entry : old.entrySet()) {
if(entry.getValue().getEventTime() == null) {
continue;
}
if(entry.getValue().getEventTime().isBefore(limit)) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(entry.getValue().getId());
update.setDel(1);
toUpdate.add(update);
idCodes.add(entry.getValue().getIdCode());
}
}
if(!toUpdate.isEmpty()) {
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, task4.getModelId());
}
riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size());
}
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();
List<GBaseWFRXX> wfrList = new ArrayList<>();
ajNo.forEach(aj -> wfrList.addAll(gBaseWFRXXRepository.list(new LambdaQueryWrapper<GBaseWFRXX>()
.select(GBaseWFRXX::getAjbh, GBaseWFRXX::getZjhm)
.in(GBaseWFRXX::getAjbh, aj))));
// 违法信息
Map<String, List<GBaseWFRXX>> wfrMap = wfrList.stream().filter(it -> it.getZjhm() != null).collect(Collectors.groupingBy(GBaseWFRXX::getZjhm));
// 案件信息
Map<String, GBaseAJJBXX> ajMap = targetAjList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue));
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>());
// 人员的旧线索
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> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
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<String> tmp = badHabits.get(person.getIdCode());
wfTmp = wfTmp.stream().filter(StreamUtil.distinctByKey(GBaseWFRXX::getAjbh)).toList(); if (tmp == null) continue;
if(wfTmp.isEmpty()){ tmp = tmp.stream().distinct().sorted().toList();
continue; String desc = "结合案件信息和违法人信息相关数据,发现该人员有" + tmp.size() + "起" + tag + "相关案件,相关案件编号为:" + String.join(",", tmp);
}
// 该人员旧的线索
clues = clueMap.get(person.getIdCode());
if(clues != null) {
continue;
}
StringBuilder sb = new StringBuilder("结合案件信息和违法人信息相关数据,发现该人员有"+wfTmp.size()+"起"+tag+"相关案件,相关案件编号为:"); RiskModelTaskClue old = olds.get(person.getIdCode());
StringBuilder ajs = new StringBuilder(); if (old != null && !old.getData().equals(desc)) {
LocalDateTime eventTime = null; RiskModelTaskClue update = new RiskModelTaskClue();
int count = 0; update.setId(old.getId());
int size = 0; update.setData(desc);
for (GBaseWFRXX gBaseWFRXX : wfTmp) { update.setEventTime(LocalDateTime.now());
GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh()); update.setScore(Math.min(5, tmp.size()));
if (aj == null) { update.setModelId(modelId);
toUpdate.add(update);
olds.remove(person.getIdCode());
continue; continue;
} }
sb.append(gBaseWFRXX.getAjbh()).append(","); if(old != null) {
size++; olds.remove(person.getIdCode());
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; continue;
} }
if(eventTime.isBefore(tmp)) { toInsert.add(DataUtil.createClueData(task, ClueData.builder()
eventTime = tmp;
}
} catch (Exception ignored) {
}
}
ClueData data = ClueData.builder()
.id("habit") .id("habit")
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of(tag)) .tags(List.of(tag))
.personId(person.getId()) .personId(person.getId())
.sourceData(sb.substring(0, sb.length()-1)) .sourceData(desc)
.score(Math.min(size, 5)) .score(Math.min(tmp.size(), 5))
.eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now()))
.build();
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()) .eventTime(LocalDateTime.now())
.build())); .build()));
} }
} List<RiskModelTaskClue> toDelete = new ArrayList<>();
if(!toInsert.isEmpty()) { List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : olds.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toInsert.isEmpty()) {
log.info("新增{}数据{}条", tag, toInsert.size());
riskModelTaskClueService.saveClues(toInsert, bigTag); riskModelTaskClueService.saveClues(toInsert, bigTag);
} }
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
return toInsert2; log.info("修改{}数据{}条", tag, toUpdate.size());
riskModelTaskClueService.updateClues(toInsert, modelId);
}
if (!toDelete.isEmpty()) {
log.info("删除{}数据{}条", tag, toDelete.size());
riskModelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, modelId);
}
riskTaskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size() + toUpdate.size());
} }
} }

19
src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java

@ -78,9 +78,10 @@ public class MarriageServiceImpl implements MarriageService {
clueData.setEventTime(LocalDateTime.now()); clueData.setEventTime(LocalDateTime.now());
} }
toInsert1.add(DataUtil.createClueData(task2, clueData)); toInsert1.add(DataUtil.createClueData(task2, clueData));
if(clueData.getEventTime().isBefore(yearsDate) || old2.get(person.getIdCode()) != null) { if(clueData.getEventTime().isBefore(yearsDate)) continue;
continue; RiskModelTaskClue oldClue = old2.get(person.getIdCode());
} // 如果老数据存在且在新数据之前
if(oldClue != null && !clueData.getEventTime().isAfter(oldClue.getEventTime())) continue;
ClueData clueData2 = ClueData.builder() ClueData clueData2 = ClueData.builder()
.id("") .id("")
.score(5) .score(5)
@ -128,16 +129,18 @@ public class MarriageServiceImpl implements MarriageService {
log.info("修改个离婚:{}", toUpdate2.size()); log.info("修改个离婚:{}", toUpdate2.size());
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate2, idCodes2, task2.getModelId()); riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate2, idCodes2, task2.getModelId());
} }
riskTaskRepository.updateTask(task2.getId(), toInsert1.size(), 0); riskTaskRepository.updateTask(task2.getId(), toInsert1.size(), toUpdate2.size());
if(!toInsert2.isEmpty()) { // 创伤先删在增
log.info("新增个人婚姻创伤:{}", toInsert2.size());
riskModelTaskClueService.saveClues(toInsert2, "个人婚姻创伤");
}
if(!toUpdate.isEmpty()) { if(!toUpdate.isEmpty()) {
log.info("修改个人婚姻创伤:{}", toUpdate.size()); log.info("修改个人婚姻创伤:{}", toUpdate.size());
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, task.getModelId()); riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, task.getModelId());
} }
if(!toInsert2.isEmpty()) {
log.info("新增个人婚姻创伤:{}", toInsert2.size());
riskModelTaskClueService.saveClues(toInsert2, "个人婚姻创伤");
}
riskTaskRepository.updateTask(task.getId(), toInsert2.size(), toUpdate.size()); riskTaskRepository.updateTask(task.getId(), toInsert2.size(), toUpdate.size());
} }
} }

78
src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java

@ -2,25 +2,21 @@ package com.biutag.supervisiondata.service.impl;
import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil;
import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.domain.*;
import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue;
import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal;
import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; import com.biutag.supervisiondata.pojo.entity.mine.RiskTask;
import com.biutag.supervisiondata.repository.GBaseZDRYRepository; import com.biutag.supervisiondata.repository.GBaseZDRYRepository;
import com.biutag.supervisiondata.repository.RiskPersonalRepository;
import com.biutag.supervisiondata.repository.RiskTaskRepository; import com.biutag.supervisiondata.repository.RiskTaskRepository;
import com.biutag.supervisiondata.service.NoControlService; import com.biutag.supervisiondata.service.NoControlService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.util.DataUtil; import com.biutag.supervisiondata.util.DataUtil;
import com.biutag.supervisiondata.util.BhUtil; import com.biutag.supervisiondata.util.BhUtil;
import com.biutag.supervisiondata.util.DateTimeUtil;
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;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -39,16 +35,10 @@ public class NoControlServiceImpl implements NoControlService {
private final RiskTaskRepository riskTaskRepository; private final RiskTaskRepository riskTaskRepository;
private final RiskPersonalRepository personalRepository;
private final RiskModelTaskClueService clueService; private final RiskModelTaskClueService clueService;
@Override @Override
public void syncNoControlData(TaskParamDomain domain) { public void syncNoControlData(TaskParamDomain domain) {
// 婚姻不用管管控
// clue 应该要看结婚状态
RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 45);
List<ClueData> clueData = new ArrayList<>(); List<ClueData> clueData = new ArrayList<>();
Map<String, RiskPersonal> idCodes = new HashMap<>(); Map<String, RiskPersonal> idCodes = new HashMap<>();
Map<String, RiskPersonal> mobiles = new HashMap<>(); Map<String, RiskPersonal> mobiles = new HashMap<>();
@ -64,32 +54,68 @@ public class NoControlServiceImpl implements NoControlService {
CompletableFutureUtil.runSyncObject(() -> clueData.addAll(crazyLevelThreeControl(idCodes, mobiles))) CompletableFutureUtil.runSyncObject(() -> clueData.addAll(crazyLevelThreeControl(idCodes, mobiles)))
).join(); ).join();
List<RiskModelTaskClue> clues = new ArrayList<>(); RiskTask task = riskTaskRepository.create(clueData.size(), 45);
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
Map<String, List<ClueData>> clueDataMap = clueData.stream().collect(Collectors.groupingBy(ClueData::getIdCode)); Map<String, List<ClueData>> clueDataMap = clueData.stream().collect(Collectors.groupingBy(ClueData::getIdCode));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
for (Map.Entry<String, List<ClueData>> entry : clueDataMap.entrySet()) { for (Map.Entry<String, List<ClueData>> entry : clueDataMap.entrySet()) {
RiskPersonal personal = idCodes.get(entry.getKey()); RiskPersonal personal = idCodes.get(entry.getKey());
List<String> tags = entry.getValue().stream().flatMap(data -> data.getTags().stream())
List<String> tags = new ArrayList<>(); .collect(Collectors.toList());
for (ClueData data : entry.getValue()) {
tags.addAll(data.getTags()); String desc = "该人员存在:"+ tags.stream().distinct().sorted().collect(Collectors.joining(","));
RiskModelTaskClue old = oldMap.get(entry.getKey());
if(old != null && !old.getData().equals(desc)) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData(desc);
update.setEventTime(LocalDateTime.now());
toUpdate.add(update);
oldMap.remove(entry.getKey());
continue;
} }
String tag = tags.stream().distinct().collect(Collectors.joining(",")); if(old != null) {
clues.add(DataUtil.createClueData(task, ClueData.builder() oldMap.remove(entry.getKey());
continue;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("") .id("")
.idCode(personal.getIdCode()) .idCode(personal.getIdCode())
.name(personal.getName()) .name(personal.getName())
.personId(personal.getId()) .personId(personal.getId())
.tags(tags) .tags(tags)
.score(5) .score(5)
.sourceData("该人员存在:"+tag) .sourceData(desc)
.eventTime(LocalDateTime.now())
.build())); .build()));
} }
if (!clues.isEmpty()) {
clueService.saveClues(clues, "B92风险人员排查不到位"); 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 (!toInsert.isEmpty()) {
log.info("新增风险人员排查不到位数据{}条", toInsert.size());
clueService.saveClues(toInsert, "B92风险人员排查不到位");
}
if (!toUpdate.isEmpty()) {
log.info("修改风险人员排查不到位数据{}条", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
log.info("删除风险人员排查不到位数据{}条", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
} }
riskTaskRepository.updateTask(task.getId(), clues.size(), 0); riskTaskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()+toUpdate.size());
} }
List<ClueData> crazyControl(Map<String, RiskPersonal> idCodes, Map<String, RiskPersonal> mobiles) { List<ClueData> crazyControl(Map<String, RiskPersonal> idCodes, Map<String, RiskPersonal> mobiles) {
@ -114,8 +140,6 @@ public class NoControlServiceImpl implements NoControlService {
.personId(person.getId()) .personId(person.getId())
.tags(List.of("精神病人排查不到位")) .tags(List.of("精神病人排查不到位"))
.score(5) .score(5)
.sourceData("该人员属于精神病人,涉及到有关警情," + Optional.ofNullable(extreme.getJjdbh()).map(it -> "接警单编号:" + it).orElse("") + "属于管控不到位" + Optional.ofNullable(extreme.getCjqk()).map(it -> ",具体情况:" + it).orElse(""))
.eventTime(DateTimeUtil.date2LocalDateTime(extreme.getBjsj()))
.build(); .build();
clueData.add(data); clueData.add(data);
} }
@ -141,8 +165,6 @@ public class NoControlServiceImpl implements NoControlService {
.personId(person.getId()) .personId(person.getId())
.tags(List.of("刑事、吸毒人员排查不到位")) .tags(List.of("刑事、吸毒人员排查不到位"))
.score(5) .score(5)
.sourceData("该人员属于故意犯罪并作出刑事判决人员(排除仍在羁押状态的)、公安机关查处吸毒人员(排除仍在羁押状态的),涉及到案件," + Optional.ofNullable(violence.getAjbh()).map(it -> "案件编号:" + it).orElse("") + "属于管控不到位" + Optional.ofNullable(violence.getAjmc()).map(it -> ",案件名称:" + it).orElse("") + Optional.ofNullable(violence.getWfss()).map(it -> ",违法事实:" + it).orElse(""))
.eventTime(DateTimeUtil.date2LocalDateTime(violence.getBarq()))
.build(); .build();
clueData.add(data); clueData.add(data);
} }
@ -168,8 +190,6 @@ public class NoControlServiceImpl implements NoControlService {
.personId(person.getId()) .personId(person.getId())
.tags(List.of("刑满释放人排查不到位")) .tags(List.of("刑满释放人排查不到位"))
.score(5) .score(5)
.sourceData("该人员属于看守所故意犯罪刑满释放不满5年人员,发现在重点人员中 未纳入或未按要求落实双列管," + Optional.ofNullable(noControl.getCrime()).map(it -> "涉及犯罪事实:" + it).orElse("") + "" + Optional.ofNullable(noControl.getBriefCase()).map(it -> ",,具体事件表现为:" + it).orElse(""))
.eventTime(DateTimeUtil.date2LocalDateTime(noControl.getOutDate()))
.build(); .build();
clueData.add(data); clueData.add(data);
} }
@ -198,8 +218,6 @@ public class NoControlServiceImpl implements NoControlService {
.personId(person.getId()) .personId(person.getId())
.tags(List.of("精神疾病三级以上人员排查不到位")) .tags(List.of("精神疾病三级以上人员排查不到位"))
.score(5) .score(5)
.sourceData("卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管" + Optional.ofNullable(crazyLevelThree.getTsqksm()).map(it -> ",备注:" + it).orElse(""))
.eventTime(LocalDateTime.now())
.build()); .build());
} }
return clueData; return clueData;

125
src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java

@ -62,10 +62,6 @@ public class PointServiceImpl implements PointService {
private final GBaseCSCZRKRepository cSCZRKRepository; private final GBaseCSCZRKRepository cSCZRKRepository;
private final GBaseWFRWFXXRepository wFRWFXXRepository;
private final GBaseGAXZCFJDSRepository gAXZCFJDSRepository;
private final WdpcHZCRYXXRepository hZCRYXXRepository; private final WdpcHZCRYXXRepository hZCRYXXRepository;
private final WdpcXdryRepository xdryRepository; private final WdpcXdryRepository xdryRepository;
@ -103,20 +99,30 @@ public class PointServiceImpl implements PointService {
List<RiskPersonal> persons = getPersons(); List<RiskPersonal> persons = getPersons();
RiskTask task = taskRepository.create(persons.size(), 43); RiskTask task = taskRepository.create(persons.size(), 43);
List<RiskModelTaskClue> clues = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldClueMap = domain.getOldMap(task.getModelId(), true);
Map<String, List<RiskModelTaskClue>> oldClueMap = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
Map<String, List<RiskPersonal>> map = persons.stream().collect(Collectors.groupingBy(RiskPersonal::getIdCode)); Map<String, List<RiskPersonal>> map = persons.stream().collect(Collectors.groupingBy(RiskPersonal::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, List<RiskPersonal>> entry : map.entrySet()) { for (Map.Entry<String, List<RiskPersonal>> entry : map.entrySet()) {
List<RiskModelTaskClue> olds = oldClueMap.get(entry.getKey()); List<RiskPersonal> personals = entry.getValue().stream().filter(StreamUtil.distinctByKey(RiskPersonal::getTags)).toList();
// 是否类型只存在一条 if (personals.isEmpty()) continue;
if (olds != null) { String desc = "发现该人员为重点人员,存在" + personals.size() + "个标签";
RiskModelTaskClue old = oldClueMap.get(entry.getKey());
if (old != null && old.getData().equals(desc)) {
oldClueMap.remove(entry.getKey());
continue; continue;
} }
List<RiskPersonal> personals = entry.getValue().stream().filter(StreamUtil.distinctByKey(RiskPersonal::getTags)).toList(); if (old != null) {
if (personals.isEmpty()) { oldClueMap.remove(entry.getKey());
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData(desc);
update.setEventTime(LocalDateTime.now());
toUpdate.add(update);
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
@ -124,16 +130,31 @@ public class PointServiceImpl implements PointService {
.score(5) .score(5)
.personId(personals.getFirst().getId()) .personId(personals.getFirst().getId())
.tags(List.of("重点人员")) .tags(List.of("重点人员"))
.sourceData("发现该人员为重点人员,存在" + personals.size() + "个标签") .sourceData(desc)
.name(personals.getFirst().getName()) .name(personals.getFirst().getName())
.idCode(personals.getFirst().getIdCode()) .idCode(personals.getFirst().getIdCode())
.eventTime(personals.getFirst().getControlTime())
.build())); .build()));
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldClueMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("新增是否重点人员人数{}条", toInsert.size());
modelTaskClueService.saveClues(toInsert, "B11是否是重点人员"); modelTaskClueService.saveClues(toInsert, "B11是否是重点人员");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改是否重点人员人数{}条", toUpdate.size());
modelTaskClueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
log.info("修改是否重点人员人数{}条", toDelete.size());
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toUpdate.size());
} }
private final WdpcGrjdZblxRepository zblxRepository; private final WdpcGrjdZblxRepository zblxRepository;
@ -166,7 +187,7 @@ public class PointServiceImpl implements PointService {
continue; continue;
} }
List<RiskModelTaskClue> oldList = personMap.get(ry.getSfzh()); List<RiskModelTaskClue> oldList = personMap.get(ry.getSfzh());
if(oldList != null) { if (oldList != null) {
continue; continue;
} }
codes = codes.stream().distinct().toList(); codes = codes.stream().distinct().toList();
@ -234,52 +255,67 @@ public class PointServiceImpl implements PointService {
List<Violence> list = zdryRepository.getBaseMapper().syncViolencePerson(); List<Violence> list = zdryRepository.getBaseMapper().syncViolencePerson();
Map<String, List<Violence>> violenceMap = list.stream().collect(Collectors.groupingBy(Violence::getZjhm)); Map<String, List<Violence>> violenceMap = list.stream().collect(Collectors.groupingBy(Violence::getZjhm));
List<RiskModelTaskClue> olds = Optional.ofNullable(domain.getMap().get(task.getId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, List<RiskModelTaskClue>> maps = olds.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<Violence> tmp = violenceMap.get(person.getIdCode()); List<Violence> tmp = violenceMap.get(person.getIdCode());
if (tmp == null) continue; if (tmp == null) continue;
List<RiskModelTaskClue> old = maps.get(person.getIdCode()); String desc = "通过核查案件信息,发现该人员有暴力伤害行为,案件编号为:" + String.join(",", tmp.stream().map(Violence::getAjbh).distinct().sorted().toList());
if (old != null) continue;
tmp = tmp.stream().filter(StreamUtil.distinctByKey(Violence::getAjbh)).toList(); tmp = tmp.stream().filter(StreamUtil.distinctByKey(Violence::getAjbh)).toList();
StringBuilder sb = new StringBuilder("通过核查案件信息,发现该人员有暴力伤害行为,案件编号为:"); List<String> tags = tmp.stream().map(Violence::getAjlbmc).distinct().toList();
List<String> tags = new ArrayList<>();
LocalDateTime date = null; RiskModelTaskClue old = oldMap.get(person.getIdCode());
for (Violence violence : tmp) { if (old != null && old.getData().equals(desc)) {
sb.append(violence.getAjbh()).append(","); oldMap.remove(person.getIdCode());
if(!tags.contains(violence.getAjlbmc())) {
tags.add(violence.getAjlbmc());
}
try {
LocalDateTime ld = violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if(date == null) {
date = ld;
continue; continue;
} }
if(date.isAfter(ld)) { if (old != null) {
date = ld; oldMap.remove(person.getIdCode());
} RiskModelTaskClue update = new RiskModelTaskClue();
} catch (Exception ignored) { update.setId(old.getId());
} update.setData(desc);
update.setEventTime(LocalDateTime.now());
update.setScore(Math.min(tmp.size(), 5));
toUpdate.add(update);
continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("") .id("")
.personId(person.getId()) .personId(person.getId())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.sourceData(sb.substring(0, sb.length()-1)) .sourceData(desc)
.tags(tags) .tags(tags)
.score(Math.min(tmp.size(), 5)) .score(Math.min(tmp.size(), 5))
.eventTime(date)
.build(); .build();
toInsert.add(DataUtil.createClueData(task, data)); 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);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("新增暴力伤害行为数据{}条", toInsert.size());
modelTaskClueService.saveClues(toInsert, "B89暴力伤害行为"); modelTaskClueService.saveClues(toInsert, "B89暴力伤害行为");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改暴力伤害行为数据{}条", toUpdate.size());
modelTaskClueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
log.info("删除暴力伤害行为数据{}条", toDelete.size());
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()+toUpdate.size());
} }
@Override @Override
@ -311,7 +347,8 @@ public class PointServiceImpl implements PointService {
.build(); .build();
try { try {
data.setEventTime(extreme.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); data.setEventTime(extreme.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} catch (Exception ignored) {} } catch (Exception ignored) {
}
toInsert.add(DataUtil.createClueData(task, data)); toInsert.add(DataUtil.createClueData(task, data));
} }
@ -1933,18 +1970,18 @@ public class PointServiceImpl implements PointService {
count++; count++;
try { try {
LocalDateTime tmp = LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); LocalDateTime tmp = LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if(time == null) { if (time == null) {
time = tmp; time = tmp;
continue; continue;
} }
if(tmp.isAfter(time)) { if (tmp.isAfter(time)) {
time = tmp; time = tmp;
} }
} catch (Exception e) { } catch (Exception e) {
log.error("散装油时间转化异常"); log.error("散装油时间转化异常");
} }
} }
if(count <= 0) { if (count <= 0) {
continue; continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
@ -2032,7 +2069,7 @@ public class PointServiceImpl implements PointService {
log.info("车主数量:{}", carUsers.size()); log.info("车主数量:{}", carUsers.size());
RiskTask task = taskRepository.create(carUsers.size(), 53); RiskTask task = taskRepository.create(carUsers.size(), 53);
Map<String, RiskModelTaskClue> clueMap = domain.getOldMap(task.getModelId(), false); Map<String, RiskModelTaskClue> clueMap = domain.getOldMap(task.getModelId(), true);
HashSet<String> exist = new HashSet<>(); HashSet<String> exist = new HashSet<>();
for (String carUser : carUsers) { for (String carUser : carUsers) {
exist.add(carUser); exist.add(carUser);

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

@ -115,12 +115,32 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
@Override @Override
public void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId) { public void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId) {
list.forEach(item -> item.setUpdateTime(LocalDateTime.now()));
clueRepository.updateBatchById(list); clueRepository.updateBatchById(list);
if (!idCodes.isEmpty()) { if (!idCodes.isEmpty()) {
tagRepository.getBaseMapper().updateToDelete(idCodes, modelId); tagRepository.getBaseMapper().updateToDelete(idCodes, modelId);
} }
} }
@Override
public void updateClues(List<RiskModelTaskClue> list, Integer modelId) {
List<ScoreRule> rules = riskScoreRuleMapper.selectRuleByModelId(List.of(modelId));
// 赋分规则
Map<Integer, ScoreRule> ruleMap = rules.stream().collect(Collectors.toMap(ScoreRule::getModelId, Function.identity(), (val, old) -> val));
ScoreRule rule = ruleMap.get(modelId);
for (RiskModelTaskClue clue : list) {
if (rule == null) continue;
BigDecimal score = new BigDecimal(clue.getScore().toString());
BigDecimal weight = new BigDecimal(rule.getWeight().toString());
score = score.multiply(new BigDecimal("20"))
.multiply(weight)
.divide(new BigDecimal("100"), 2, RoundingMode.UP);
clue.setScoreCalc(Optional.ofNullable(score.doubleValue()).orElse(0.00));
clue.setUpdateTime(LocalDateTime.now());
}
clueRepository.updateBatchById(list);
}
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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 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) {
@ -163,7 +183,7 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
prepareStatement.executeBatch(); prepareStatement.executeBatch();
connection.commit(); connection.commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("", e);
throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); throw new BusinessException(StatusCode.BUSINESS, "数据保存失败");
} }
} }

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

@ -86,14 +86,31 @@ public class TaskService {
@Resource @Resource
private RiskTaskService riskTaskService; private RiskTaskService riskTaskService;
@Resource
private MarriageService marriageService;
@Resource
private HabitService habitService;
@Resource
private NoControlService noControlService;
/** /**
* 2点更新模型 * 2点更新模型
*/ */
@Scheduled(cron = "0 0 02 * * ?") @Scheduled(cron = "0 0 02 * * ?")
public void modelRefresh() { public void modelRefresh() {
LocalDateTime fiveYearsAgo = LocalDateTime.now().minusYears(5);
CompletableFutureUtil.runSync(() -> { CompletableFutureUtil.runSync(() -> {
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)));
// 五年内酒、赌博、嫖娼案件,一年内酒案件
habitService.syncBadHabit(fiveYearsAgo, 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)));
}); });
} }

Loading…
Cancel
Save