kami 1 year ago
parent
commit
0448cbe1e2
  1. 4
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 12
      src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java
  3. 4
      src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java
  4. 14
      src/main/java/com/biutag/supervisiondata/pojo/constants/Area.java
  5. 39
      src/main/java/com/biutag/supervisiondata/pojo/enums/Age.java
  6. 38
      src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java
  7. 60
      src/main/java/com/biutag/supervisiondata/pojo/enums/EduType.java
  8. 5
      src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java
  9. 11
      src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java
  10. 12
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  11. 2
      src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java
  12. 24
      src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java
  13. 2
      src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java
  14. 4
      src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java
  15. 545
      src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java
  16. 18
      src/main/java/com/biutag/supervisiondata/task/TaskService.java

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

@ -119,7 +119,6 @@ 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.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)));
@ -140,6 +139,7 @@ public class ApplicationEvent {
// gBaseJJDService.syncMarryDispute(initDomain(List.of(72))); // gBaseJJDService.syncMarryDispute(initDomain(List.of(72)));
// gBaseJJDService.syncNeighborAndColleagueDispute(initDomain(List.of(73))); // gBaseJJDService.syncNeighborAndColleagueDispute(initDomain(List.of(73)));
// gBaseJJDService.syncBullying(initDomain(List.of(74))); // gBaseJJDService.syncBullying(initDomain(List.of(74)));
// gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
// gBaseSHRWFRService.crimeName(initDomain(List.of(76))); // gBaseSHRWFRService.crimeName(initDomain(List.of(76)));
// pointService.syncIsPetition(initDomain(List.of(40))); // pointService.syncIsPetition(initDomain(List.of(40)));
// pointService.syncFatherEducation(initDomain(List.of(112))); // pointService.syncFatherEducation(initDomain(List.of(112)));
@ -148,7 +148,7 @@ public class ApplicationEvent {
// pointService.syncCriminalPunishment(initDomain(List.of(115))); // pointService.syncCriminalPunishment(initDomain(List.of(115)));
// pointService.syncAdministrativePunishment(initDomain(List.of(116))); // pointService.syncAdministrativePunishment(initDomain(List.of(116)));
// pointService.syncParentsDivorce(initDomain(List.of(117))); // pointService.syncParentsDivorce(initDomain(List.of(117)));
// gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
// pointService.syncFamilyDie(initDomain(List.of(118))); // pointService.syncFamilyDie(initDomain(List.of(118)));
// pointService.syncFatherDie(initDomain(List.of(119))); // pointService.syncFatherDie(initDomain(List.of(119)));
// pointService.syncMotherDie(initDomain(List.of(120))); // pointService.syncMotherDie(initDomain(List.of(120)));

12
src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java

@ -62,14 +62,10 @@ public interface GBaseSYRKXXMapper extends BaseMapper<GBaseSYRKXX> {
* 查人纠纷的次数 * 查人纠纷的次数
* @return 列表 * @return 列表
*/ */
@Select("<script>" + @Select(" SELECT a.gmsfhm,count(1) as fightCount FROM csga_dwd.dwd_qt_jzpt_mdjfdsrxx as a " +
" SELECT gmsfhm,count(1) as fightCount, count(DISTINCT substr(djsj, 0, 10)) as dateCount FROM csga_dwd.dwd_qt_jzpt_mdjfdsrxx " + " inner join csga_wdpcdb.wdpc_person as c on a.gmsfhm = c.id_code" +
" WHERE djsj >= '2024-01-01 00:00:00' and gmsfhm in " + " WHERE a.djsj >= #{time} group by a.gmsfhm")
" (<foreach collection='list' separator=',' item='item'> " + List<FightMan> selectFightMan(@Param("time")String time);
" #{item}" +
" </foreach>) group by gmsfhm" +
"</script>")
List<FightMan> selectListByIdCode(@Param("list")List<String> list);
/** /**
* 风险人员的学历和职业 * 风险人员的学历和职业

4
src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java

@ -18,12 +18,12 @@ public interface RiskPersonalTagMapper extends BaseMapper<RiskPersonalTag> {
* @return * @return
*/ */
@Update("<script>" + @Update("<script>" +
" update risk_personal_tag set del = 1 where small_tag in (#{smallTag}) and id_code in ( " + " update risk_personal_tag set del = 1 where model_d = #{smallTag} and id_code in ( " +
" <foreach collection='list' separator=',' item='item'> " + " <foreach collection='list' separator=',' item='item'> " +
" #{item}" + " #{item}" +
" </foreach>" + " </foreach>" +
" ) "+ " ) "+
"</script>") "</script>")
int updateToDelete(@Param("list") List<String> list,@Param("smallTag")String smallTag); int updateToDelete(@Param("list") List<String> list,@Param("modelId")Integer modelId);
} }

14
src/main/java/com/biutag/supervisiondata/pojo/constants/Area.java

@ -0,0 +1,14 @@
package com.biutag.supervisiondata.pojo.constants;
import lombok.experimental.UtilityClass;
/**
* @author kami on 2024-12-23 11:09
* @version 1.0
* @since 1.8
*/
@UtilityClass
public class Area {
public static final String HEIGHT_RISK_AREA_CODE = "431122,431322,433127,431382,430525,430722";
}

39
src/main/java/com/biutag/supervisiondata/pojo/enums/Age.java

@ -0,0 +1,39 @@
package com.biutag.supervisiondata.pojo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
/**
* @author kami on 2024-12-23 11:28
* @version 1.0
* @since 1.8
*/
@AllArgsConstructor
@Getter
@Slf4j
public enum Age {
AGE24(16, 24, 1, "年龄处于16岁至24岁之间"),
AGE34(25, 34, 3, "年龄处于25岁至34岁之间"),
AGE55(35, 55, 5, "年龄处于35岁至55岁之间"),
AGE65(56, 65, 3, "年龄处于55岁至65岁之间"),
AGE75(66, 75, 1, "年龄处于16岁至24岁之间");
private final Integer lowAge;
private final Integer heightAge;
private final Integer score;
private final String name;
public static Age contains(Integer age) {
if(age == null) return null;
for (Age enums : values()) {
if (age >= enums.getLowAge() && age <= enums.getHeightAge()) {
return enums;
}
}
return null;
}
}

38
src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java

@ -1,38 +0,0 @@
package com.biutag.supervisiondata.pojo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
/**
* @author kami on 2024-06-19 13:52:23
* @version 0.0.1
* @since 1.8
*/
@AllArgsConstructor
@Getter
@Slf4j
public enum Edu {
LOW("小学及以下", 5),
MIDDLE("初中", 4),
MIDDLE_HEIGHT("高中/中专", 3),
HEIGHT("大学", 2),
OTHER("大学以上", 1);
private final String desc;
private final Integer score;
public static Integer contains(String desc) {
for (Edu enums : values()) {
if (enums.getDesc().equals(desc)) {
return enums.getScore();
}
}
log.info("未找到该类型:{}", desc);
return 0;
}
}

60
src/main/java/com/biutag/supervisiondata/pojo/enums/EduType.java

@ -0,0 +1,60 @@
package com.biutag.supervisiondata.pojo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
/**
* @author kami on 2024-06-19 13:52:23
* @version 0.0.1
* @since 1.8
*/
@AllArgsConstructor
@Getter
@Slf4j
public enum EduType {
LOW_1("小学教育", "小学及以下", 5),
LOW_2("文盲", "小学及以下", 5),
LOW_3("小学毕业", "小学及以下", 5),
LOW_4("小学肄业", "小学及以下", 5),
LOW_5("其他", "小学及以下", 5),
MIDDLE_1("初中毕业", "初中", 4),
MIDDLE_2("初级中等教育", "初中", 4),
MIDDLE_3("初中肄业", "初中", 4),
MIDDLE_HEIGHT_1("普通高中结业", "高中/中专", 3),
MIDDLE_HEIGHT_2("普通高级中学教育", "高中/中专", 3),
MIDDLE_HEIGHT_3("普通高中毕业", "高中/中专", 3),
MIDDLE_HEIGHT_4("普通高中肄业", "高中/中专", 3),
MIDDLE_HEIGHT_5("中等专科结业", "高中/中专", 3),
MIDDLE_HEIGHT_6("中等专科教育", "高中/中专", 3),
MIDDLE_HEIGHT_7("中等专业毕业", "高中/中专", 3),
MIDDLE_HEIGHT_8("技工学校肄业", "高中/中专", 3),
HEIGHT_1("大学专科毕业", "大学", 2),
HEIGHT_2("大学专科结业", "大学", 2),
HEIGHT_3("大学本科/专科教育", "大学", 2),
HEIGHT_4("大学生本科结业", "大学", 2),
HEIGHT_5("大学生普通班毕业", "大学", 2),
HEIGHT_6("大学生本科肄业", "大学", 2),
HEIGHT_7("大学生本科毕业", "大学", 2),
OTHER_1("硕士研究生毕业", "大学以上", 1),
OTHER_2("研究生教育", "大学以上", 1),
OTHER_3("研究生班肄业", "大学以上", 1);
private final String name;
private final String desc;
private final Integer score;
public static EduType contains(String name) {
for (EduType enums : values()) {
if (enums.getName().equals(name)) {
return enums;
}
}
log.info("未找到该类型:{}", name);
return null;
}
}

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

@ -1,6 +1,5 @@
package com.biutag.supervisiondata.service; package com.biutag.supervisiondata.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue;
import java.util.List; import java.util.List;
@ -18,7 +17,7 @@ public interface RiskModelTaskClueService {
* 删除线索并删除标签只是删除或修改直接调用repository * 删除线索并删除标签只是删除或修改直接调用repository
* @param list 线索 * @param list 线索
* @param idCodes 要删除标签的身份证号 * @param idCodes 要删除标签的身份证号
* @param smallTag 要删除的标签 * @param modelId 要删除的模型id
*/ */
void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, String smallTag); void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId);
} }

11
src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java

@ -14,11 +14,6 @@ public interface RiskTaskService {
* @param domain 参数 * @param domain 参数
*/ */
void infoModelTask(TaskParamDomain domain); void infoModelTask(TaskParamDomain domain);
/**
* 学历模型任务
* @param domain 参数
*/
void eduModelTask(TaskParamDomain domain);
void eduAndAreaModelTask(TaskParamDomain domain); void eduAndAreaModelTask(TaskParamDomain domain);
@ -28,12 +23,6 @@ public interface RiskTaskService {
*/ */
void behavior(TaskParamDomain domain); void behavior(TaskParamDomain domain);
/**
* 风险地区
* @param domain 参数
*/
void riskAreaModelTask(TaskParamDomain domain);
/** /**
* 高战斗人群 * 高战斗人群
* @param domain 参数 * @param domain 参数

12
src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

@ -612,14 +612,14 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
clueService.saveClues(toInsert, "B53被他人家暴"); clueService.saveClues(toInsert, "B53被他人家暴");
} }
if (!toUpdate.isEmpty()) { if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "被家暴"); clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, task.getModelId());
} }
log.info("家暴:{} | {}", toInsert2.size(), toUpdate2.size()); log.info("家暴:{} | {}", toInsert2.size(), toUpdate2.size());
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert2, "B52对他人家暴"); clueService.saveClues(toInsert2, "B52对他人家暴");
} }
if (!toUpdate2.isEmpty()) { if (!toUpdate2.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate2, deleteIdCards2, "家暴"); clueService.deleteCluesAndDeleteTag(toUpdate2, deleteIdCards2, task2.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
taskRepository.updateTask(task2.getId(), toInsert.size(), toUpdate2.size()); taskRepository.updateTask(task2.getId(), toInsert.size(), toUpdate2.size());
@ -744,7 +744,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
clueService.saveClues(toInsert, "B68个人恋爱创伤"); clueService.saveClues(toInsert, "B68个人恋爱创伤");
} }
if (!toUpdate.isEmpty()) { if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "个人恋爱创伤"); clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, task.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
} }
@ -833,7 +833,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
clueService.saveClues(toInsert, "B55与配偶关系"); clueService.saveClues(toInsert, "B55与配偶关系");
} }
if (!toUpdate.isEmpty()) { if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与配偶关系不和"); clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, task.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
} }
@ -922,7 +922,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
clueService.saveClues(toInsert, "B55同事与邻居关系"); clueService.saveClues(toInsert, "B55同事与邻居关系");
} }
if (!toUpdate.isEmpty()) { if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与邻居或同事纠纷"); clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, task.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
} }
@ -1042,8 +1042,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
taskRepository.updateTask(task.getId(), toInsert.size(), 0); taskRepository.updateTask(task.getId(), toInsert.size(), 0);
} }
private final RiskModelTaskClueRepository taskClueRepository;
@Override @Override
public void syncOtherContradict(TaskParamDomain domain) { public void syncOtherContradict(TaskParamDomain domain) {
String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

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

@ -139,7 +139,7 @@ public class HabitServiceImpl implements HabitService {
} }
} }
if(!toUpdate.isEmpty()) { if(!toUpdate.isEmpty()) {
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, Default.YEAR_DRINK); riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, task4.getModelId());
} }
riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size()); riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size());
} }

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

@ -56,11 +56,11 @@ public class MarriageServiceImpl implements MarriageService {
List<RiskModelTaskClue> toInsert2 = new ArrayList<>(); List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
if(old1.get(person.getIdCode()) != null) {
continue;
}
WdpcGrjdHyqkb result = dataMap.get(person.getIdCode()); WdpcGrjdHyqkb result = dataMap.get(person.getIdCode());
if(result == null) { if(result == null) continue;
if(old1.get(person.getIdCode()) != null) {
old1.remove(person.getIdCode());
continue; continue;
} }
ClueData clueData = ClueData.builder() ClueData clueData = ClueData.builder()
@ -98,6 +98,16 @@ public class MarriageServiceImpl implements MarriageService {
toInsert2.add(DataUtil.createClueData(task, clueData2)); toInsert2.add(DataUtil.createClueData(task, clueData2));
} }
List<RiskModelTaskClue> toUpdate2 = new ArrayList<>();
List<String> idCodes2 = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : old1.entrySet()) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setId(entry.getValue().getId());
clue.setDel(1);
toUpdate2.add(clue);
idCodes2.add(entry.getValue().getIdCode());
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>(); List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> idCodes = new ArrayList<>(); List<String> idCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : old2.entrySet()) { for (Map.Entry<String, RiskModelTaskClue> entry : old2.entrySet()) {
@ -114,6 +124,10 @@ public class MarriageServiceImpl implements MarriageService {
log.info("新增离婚数据:{}", toInsert1.size()); log.info("新增离婚数据:{}", toInsert1.size());
riskModelTaskClueService.saveClues(toInsert1, "婚姻状态"); riskModelTaskClueService.saveClues(toInsert1, "婚姻状态");
} }
if(!toUpdate2.isEmpty()) {
log.info("修改个离婚:{}", toUpdate2.size());
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate2, idCodes2, task2.getModelId());
}
riskTaskRepository.updateTask(task2.getId(), toInsert1.size(), 0); riskTaskRepository.updateTask(task2.getId(), toInsert1.size(), 0);
if(!toInsert2.isEmpty()) { if(!toInsert2.isEmpty()) {
@ -122,7 +136,7 @@ public class MarriageServiceImpl implements MarriageService {
} }
if(!toUpdate.isEmpty()) { if(!toUpdate.isEmpty()) {
log.info("修改个人婚姻创伤:{}", toUpdate.size()); log.info("修改个人婚姻创伤:{}", toUpdate.size());
riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, "个人婚姻创伤"); riskModelTaskClueService.deleteCluesAndDeleteTag(toUpdate, idCodes, task.getModelId());
} }
riskTaskRepository.updateTask(task.getId(), toInsert2.size(), toUpdate.size()); riskTaskRepository.updateTask(task.getId(), toInsert2.size(), toUpdate.size());
} }

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

@ -2071,7 +2071,7 @@ public class PointServiceImpl implements PointService {
modelTaskClueService.saveClues(toInsert, Default.CAR_IG); modelTaskClueService.saveClues(toInsert, Default.CAR_IG);
} }
if (!toDelete.isEmpty()) { if (!toDelete.isEmpty()) {
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, Default.CAR_TAG); modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, task.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size());
} }

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

@ -114,10 +114,10 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
} }
@Override @Override
public void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, String smallTag) { public void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, Integer modelId) {
clueRepository.updateBatchById(list); clueRepository.updateBatchById(list);
if (!idCodes.isEmpty()) { if (!idCodes.isEmpty()) {
tagRepository.getBaseMapper().updateToDelete(idCodes, smallTag); tagRepository.getBaseMapper().updateToDelete(idCodes, modelId);
} }
} }

545
src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java

@ -1,21 +1,18 @@
package com.biutag.supervisiondata.service.impl; package com.biutag.supervisiondata.service.impl;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.Area;
import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.database.PointOrg;
import com.biutag.supervisiondata.pojo.domain.FightMan; import com.biutag.supervisiondata.pojo.domain.FightMan;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD;
import com.biutag.supervisiondata.pojo.entity.mine.*; import com.biutag.supervisiondata.pojo.entity.mine.*;
import com.biutag.supervisiondata.pojo.enums.Edu; import com.biutag.supervisiondata.pojo.enums.Age;
import com.biutag.supervisiondata.pojo.enums.EduType;
import com.biutag.supervisiondata.repository.*; import com.biutag.supervisiondata.repository.*;
import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.service.RiskPersonalService;
import com.biutag.supervisiondata.service.RiskTaskService; import com.biutag.supervisiondata.service.RiskTaskService;
import com.biutag.supervisiondata.util.*; import com.biutag.supervisiondata.util.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -27,7 +24,6 @@ import java.time.LocalDateTime;
import java.time.ZoneId; 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.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -51,95 +47,69 @@ public class RiskTaskServiceImpl implements RiskTaskService {
private final RiskModelTaskClueService riskModelTaskClueService; private final RiskModelTaskClueService riskModelTaskClueService;
private final RiskPersonalService riskPersonalService;
@Override @Override
public void infoModelTask(TaskParamDomain domain) { public void infoModelTask(TaskParamDomain domain) {
RiskTask genderTask = riskTaskRepository.create(domain.getPersons().size(), 32); RiskTask genderTask = riskTaskRepository.create(domain.getPersons().size(), 32);
RiskTask ageTask = riskTaskRepository.create(domain.getPersons().size(), 33); RiskTask ageTask = riskTaskRepository.create(domain.getPersons().size(), 33);
CompletableFuture.allOf( Map<String, RiskModelTaskClue> oldAgeMap = domain.getOldMap(ageTask.getModelId(), true);
CompletableFutureUtil.runSyncObject(() -> ageModel(domain, ageTask)), Map<String, RiskModelTaskClue> oldGenderMap = domain.getOldMap(genderTask.getModelId(), true);
CompletableFutureUtil.runSyncObject(() -> genderModel(domain, genderTask))
).join();
}
@Override
public void eduModelTask(TaskParamDomain domain) {
RiskTask eduTask = riskTaskRepository.create(domain.getPersons().size(), 34);
List<GBaseSYRKXX> xxList = new ArrayList<>(); LocalDate now = LocalDate.now();
int count = 0; List<RiskModelTaskClue> toInsertAge = new ArrayList<>();
log.info("开始查学历 | {}", domain.getIdCards().size()); List<RiskModelTaskClue> toInsertGender = new ArrayList<>();
for (List<String> idCard : domain.getIdCards()) { List<RiskModelTaskClue> toDeletes = new ArrayList<>();
count++;
xxList.addAll(syrkxxRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>()
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXlmc)
.in(GBaseSYRKXX::getGmsfhm, idCard)));
log.info("学历进度 | {}", count);
}
// 日常转map
Map<String, GBaseSYRKXX> xxMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue));
// 旧数据
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(34, true);
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toInsert = new ArrayList<>();
log.info("开始遍历学历");
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
if (xxMap.get(person.getIdCode()) == null) { RiskModelTaskClue oldAge = oldAgeMap.get(person.getIdCode());
continue; Integer age = IdCodeUtil.idCard2Age(person.getIdCode(), now);
} Age ageType = Age.contains(age);
GBaseSYRKXX xx = xxMap.get(person.getIdCode()); // 年龄过了阶段 删除
if (xx.getXlmc() == null) { if (ageType == null && oldAge != null) {
continue; RiskModelTaskClue clue = new RiskModelTaskClue();
} clue.setId(oldAge.getId());
String edu = switch (xx.getXlmc()) { clue.setDel(1);
case "小学教育", "文盲", "小学毕业", "小学肄业", "其他" -> "小学及以下"; toDeletes.add(clue);
case "初中毕业", "初级中等教育", "初中肄业" -> "初中"; }
case "普通高中结业", "普通高级中学教育", "普通高中毕业", "普通高中肄业", "中等专科结业", "中等专科教育", "中等专业毕业", "技工学校肄业" -> // 年龄属于阶段 增加
"高中/中专"; if (ageType != null && oldAge == null) {
case "大学专科毕业", "大学专科结业", "大学本科/专科教育", "大学生本科结业", "大学生普通班毕业", "大学生本科肄业", "大学生本科毕业" -> toInsertAge.add(DataUtil.createClueData(ageTask, ClueData.builder()
"大学"; .id("")
case "硕士研究生毕业", "研究生教育", "研究生班肄业" -> "大学以上"; .score(ageType.getScore())
default -> null; .personId(person.getId())
}; .tags(List.of(ageType.getName()))
if (edu == null) { .sourceData("该人员年龄为" + age + "," + ageType.getName())
continue;
}
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old != null && old.getRiskReason().equals(edu)) {
continue;
}
Integer score = Edu.contains(edu);
if (old == null) {
//创建新的
toInsert.add(createClue(eduTask.getModelId(), score, eduTask.getId(), ClueData.builder()
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tag(edu) .eventTime(null)
.sourceData("该人员的学历为" + xx.getXlmc() + ",属于" + edu) .build()));
.eventTime(LocalDateTime.now())
.personId(person.getId())
.build(), "edu" + person.getId().toString()));
continue;
} }
RiskModelTaskClue tmp = new RiskModelTaskClue(); if (person.getGender() == null || !person.getGender().equals("1") || oldGenderMap.get(person.getIdCode()) != null)
tmp.setId(old.getId()); continue;
tmp.setRiskReason(edu); toInsertGender.add(DataUtil.createClueData(genderTask, ClueData.builder()
tmp.setData("该人员的学历为" + xx.getXlmc() + ",属于" + edu); .id("")
tmp.setScore(Edu.contains(edu)); .score(5)
toUpdate.add(tmp); .personId(person.getId())
.tags(List.of("男性"))
.sourceData("该人员性别为男性")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
} }
if (!toInsert.isEmpty()) { if (!toInsertAge.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert, Default.EDU_IG); log.info("增加年龄数据{}条", toInsertAge.size());
log.info("批量新增学历完成"); riskModelTaskClueService.saveClues(toInsertAge, "B2年龄");
}
if (!toDeletes.isEmpty()) {
log.info("删除年龄数据{}条", toDeletes.size());
clueRepository.removeBatchByIds(toDeletes);
} }
if (!toUpdate.isEmpty()) { riskTaskRepository.updateTask(ageTask.getId(), toInsertAge.size(), toDeletes.size());
clueRepository.updateBatchById(toUpdate, 10000); if (!toInsertGender.isEmpty()) {
log.info("批量修改学历完成"); log.info("增加性别数据{}条", toInsertGender.size());
riskModelTaskClueService.saveClues(toInsertGender, "B1性别");
} }
riskTaskRepository.updateTask(eduTask.getId(), toInsert.size(), toUpdate.size()); riskTaskRepository.updateTask(genderTask.getId(), toInsertGender.size(), 0);
} }
@Override @Override
@ -157,66 +127,59 @@ public class RiskTaskServiceImpl implements RiskTaskService {
List<RiskModelTaskClue> toInsert1 = new ArrayList<>(); List<RiskModelTaskClue> toInsert1 = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>(); List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
String areCode = "431122,431322,433127,431382,430525,430722";
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
GBaseSYRKXX xx = xxMap.get(person.getIdCode()); GBaseSYRKXX xx = xxMap.get(person.getIdCode());
if (xx == null) { if (xx == null) {
continue; continue;
} }
if (xx.getXlmc() != null && oldEduMap.get(person.getIdCode()) == null) { RiskModelTaskClue areaClue = area(xx, person, areaTask, oldAreaMap.get(person.getIdCode()));
String edu = switch (xx.getXlmc()) { if (areaClue != null) toInsert2.add(areaClue);
case "小学教育", "文盲", "小学毕业", "小学肄业", "其他" -> "小学及以下"; RiskModelTaskClue eudClue = edu(xx, person, eduTask, oldEduMap.get(person.getIdCode()));
case "初中毕业", "初级中等教育", "初中肄业" -> "初中"; if (eudClue != null) toInsert1.add(eudClue);
case "普通高中结业", "普通高级中学教育", "普通高中毕业", "普通高中肄业", "中等专科结业", "中等专科教育", "中等专业毕业", "技工学校肄业" ->
"高中/中专";
case "大学专科毕业", "大学专科结业", "大学本科/专科教育", "大学生本科结业", "大学生普通班毕业", "大学生本科肄业", "大学生本科毕业" ->
"大学";
case "硕士研究生毕业", "研究生教育", "研究生班肄业" -> "大学以上";
default -> null;
};
if (edu != null) {
Integer score = Edu.contains(edu);
//创建新的
toInsert1.add(DataUtil.createClueData(eduTask, ClueData.builder()
.id("")
.score(score)
.personId(person.getId())
.tags(List.of(edu))
.sourceData("该人员的学历为" + xx.getXlmc() + ",属于" + edu)
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
}
if(xx.getCsdxzqhdm() != null && oldAreaMap.get(person.getIdCode()) == null) {
if(!areCode.contains(xx.getCsdxzqhdm())) {
continue;
}
toInsert2.add(DataUtil.createClueData(areaTask, ClueData.builder()
.id(BhUtil.sfBh(person.getId().toString()))
.score(5)
.personId(person.getId())
.tags(List.of(xx.getCsdxzqhmc()))
.sourceData("发现该人员在" + xx.getCsdxzqhmc() + "成长,该地区暴力警情情况较多")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
} }
if(!toInsert1.isEmpty()) { if (!toInsert1.isEmpty()) {
log.info("保存学历:{}", toInsert1.size()); log.info("保存学历:{}", toInsert1.size());
riskModelTaskClueService.saveClues(toInsert1, "B4文化程度"); riskModelTaskClueService.saveClues(toInsert1, "B4文化程度");
} }
riskTaskRepository.updateTask(eduTask.getId(), toInsert1.size(), 0); riskTaskRepository.updateTask(eduTask.getId(), toInsert1.size(), 0);
if(!toInsert2.isEmpty()) { if (!toInsert2.isEmpty()) {
log.info("保存风险区域:{}", toInsert2.size()); log.info("保存风险区域:{}", toInsert2.size());
riskModelTaskClueService.saveClues(toInsert2, "B10民风习俗"); riskModelTaskClueService.saveClues(toInsert2, "B10民风习俗");
} }
riskTaskRepository.updateTask(areaTask.getId(), toInsert2.size(), 0); riskTaskRepository.updateTask(areaTask.getId(), toInsert2.size(), 0);
} }
RiskModelTaskClue edu(GBaseSYRKXX xx, RiskPersonal person, RiskTask task, RiskModelTaskClue oldClue) {
if (xx.getXlmc() == null || oldClue != null) return null;
EduType type = EduType.contains(xx.getXlmc());
if (type == null) return null;
return DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(type.getScore())
.personId(person.getId())
.tags(List.of(type.getDesc()))
.sourceData("该人员的学历为" + xx.getXlmc() + ",属于" + type.getDesc())
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build());
}
RiskModelTaskClue area(GBaseSYRKXX xx, RiskPersonal person, RiskTask task, RiskModelTaskClue oldClue) {
if (xx.getCsdxzqhdm() == null || oldClue != null) return null;
if (!Area.HEIGHT_RISK_AREA_CODE.contains(xx.getCsdxzqhdm())) return null;
return DataUtil.createClueData(task, ClueData.builder()
.id(BhUtil.sfBh(person.getId().toString()))
.score(5)
.personId(person.getId())
.tags(List.of(xx.getCsdxzqhmc()))
.sourceData("发现该人员在" + xx.getCsdxzqhmc() + "成长,该地区暴力警情情况较多")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build());
}
@Override @Override
public void behavior(TaskParamDomain domain) { public void behavior(TaskParamDomain domain) {
RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 20); RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 20);
@ -265,12 +228,12 @@ public class RiskTaskServiceImpl implements RiskTaskService {
person = idNumberMap.get(s); person = idNumberMap.get(s);
if (person != null) { if (person != null) {
clueData.add(ClueData.builder() clueData.add(ClueData.builder()
.id(gBaseJJD.getJjdbh()) .id(BhUtil.jjdBh(gBaseJJD.getJjdbh()))
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tag(JSONObject.of("jqxzmc", gBaseJJD.getJqxzmc(), "cjqk", gBaseJJD.getCjqk()).toJSONString()) .tags(List.of(gBaseJJD.getJqxzmc()))
.departName(gBaseJJD.getGxdwmc()) .sourceData("该人员存在个人极端警情,案件性质为:" + gBaseJJD.getJqxzmc() + ",接警单编号为" + gBaseJJD.getJjdbh())
.departId(gBaseJJD.getGxdwdm()) .score(10)
.personId(person.getId()) .personId(person.getId())
.eventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()) .eventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())
.build()); .build());
@ -279,18 +242,17 @@ public class RiskTaskServiceImpl implements RiskTaskService {
continue; continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.id(gBaseJJD.getJjdbh()) .id(BhUtil.jjdBh(gBaseJJD.getJjdbh()))
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tag(JSONObject.of("jqxzmc", gBaseJJD.getJqxzmc(), "cjqk", gBaseJJD.getCjqk()).toJSONString()) .tags(List.of(gBaseJJD.getJqxzmc()))
.departName(gBaseJJD.getGxdwmc()) .sourceData("该人员存在个人极端警情,案件性质为:" + gBaseJJD.getJqxzmc() + ",接警单编号为" + gBaseJJD.getJjdbh())
.departId(gBaseJJD.getGxdwdm()) .score(10)
.personId(person.getId()) .personId(person.getId())
.build(); .build();
try { try {
data.setEventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); data.setEventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} catch (Exception e) { } catch (Exception ignored) {
log.error("报案日期转LocalDateTime异常");
} }
clueData.add(data); clueData.add(data);
} }
@ -301,7 +263,7 @@ public class RiskTaskServiceImpl implements RiskTaskService {
for (ClueData clueDatum : clueData) { for (ClueData clueDatum : clueData) {
List<RiskModelTaskClue> tmpList = oldMap.get(clueDatum.getIdCode()); List<RiskModelTaskClue> tmpList = oldMap.get(clueDatum.getIdCode());
if (tmpList == null || tmpList.isEmpty()) { if (tmpList == null || tmpList.isEmpty()) {
toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); toInsert.add(DataUtil.createClueData(task, clueDatum));
continue; continue;
} }
boolean exist = false; boolean exist = false;
@ -312,7 +274,7 @@ public class RiskTaskServiceImpl implements RiskTaskService {
} }
} }
if (!exist) { if (!exist) {
toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); toInsert.add(DataUtil.createClueData(task, clueDatum));
} }
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -322,150 +284,44 @@ public class RiskTaskServiceImpl implements RiskTaskService {
TxtUtil.write(sb.toString(), "/work/test.txt"); TxtUtil.write(sb.toString(), "/work/test.txt");
} }
@Override
public void riskAreaModelTask(TaskParamDomain domain) {
RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 41);
List<List<String>> idCards = new ArrayList<>();
// 旧的clue
List<RiskModelTaskClue> oldClueList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>());
Map<String, String> map = oldClueList.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getIdCode, (oldValue, newValue) -> newValue));
Map<String, RiskPersonal> personMap = new HashMap<>();
// 将旧clue的人剔除出去,一个人的出生地一般不会变
for (RiskPersonal person : domain.getPersons()) {
if (map.get(person.getIdCode()) != null) {
continue;
}
if (idCards.isEmpty() || idCards.getLast().size() >= 10000) {
idCards.add(new ArrayList<>());
}
idCards.getLast().add(person.getIdCode());
personMap.put(person.getIdCode(), person);
}
if (idCards.isEmpty()) {
riskTaskRepository.updateTask(task.getId(), 0, 0);
return;
}
List<GBaseSYRKXX> xxList = new ArrayList<>();
List<String> area = List.of("431122", "431322", "433127", "431382", "430525", "430722");
int count = idCards.size();
for (List<String> idCard : idCards) {
count--;
xxList.addAll(syrkxxRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>()
.select(GBaseSYRKXX::getXm, GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getCsdxzqhdm, GBaseSYRKXX::getCsdxzqhmc)
.in(GBaseSYRKXX::getCsdxzqhdm, area)
.in(GBaseSYRKXX::getGmsfhm, idCard)));
log.info("地区进度 | {}", count);
}
if (xxList.isEmpty()) {
riskTaskRepository.updateTask(task.getId(), 0, 0);
return;
}
List<RiskModelTaskClue> toInsert = new ArrayList<>();
// 新增
for (GBaseSYRKXX gBaseSYRKXX : xxList) {
RiskPersonal person = personMap.get(gBaseSYRKXX.getGmsfhm());
toInsert.add(createClue(task.getModelId(), 5, task.getId(), ClueData.builder()
.id(BhUtil.sfBh(person.getId().toString()))
.name(person.getName())
.idCode(person.getIdCode())
.personId(person.getId())
.eventTime(LocalDateTime.now())
.sourceData("发现该人员在" + gBaseSYRKXX.getCsdxzqhmc() + "成长,该地区暴力警情情况较多")
.tag(gBaseSYRKXX.getCsdxzqhmc())
.build(), "area___" + person.getId().toString()));
}
log.info("开始操作新增项:{}", toInsert.size());
riskModelTaskClueService.saveClues(toInsert, Default.FIGHT_IG);
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
private final SupExternalDepartRepository externalDepartRepository;
private final GBaseZDRYRepository zdryRepository;
@Override @Override
public void heightFight(TaskParamDomain domain) { public void heightFight(TaskParamDomain domain) {
// 战斗过的用户 LocalDateTime time = LocalDateTime.now().minusYears(1);
List<GBaseSYRKXX> xxList = syrkxxRepository.getBaseMapper().selectHeightFight("2024-01-01 00:00:00");
log.info("用户数 : {}", xxList.size());
Map<String, GBaseSYRKXX> syrkxxMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue));
List<SupExternalDepart> supDeparts = externalDepartRepository.list(new LambdaQueryWrapper<SupExternalDepart>()
.select(SupExternalDepart::getExternalId, SupExternalDepart::getInternalId, SupExternalDepart::getInternalShortName, SupExternalDepart::getSource)
.eq(SupExternalDepart::getSource, "重点人员"));
Map<String, SupExternalDepart> jqExternalDepart = supDeparts.stream().collect(Collectors.toMap(SupExternalDepart::getExternalId, Function.identity(), (val, old) -> val));
List<PointOrg> orgs = zdryRepository.getBaseMapper().selectOrg();
Map<String, PointOrg> orgIdMap = new WeakHashMap<>();
Map<String, PointOrg> orgCodeMap = new WeakHashMap<>();
for (PointOrg org : orgs) {
orgIdMap.put(org.getId(), org);
orgCodeMap.put(org.getDm(), org);
}
RiskTask task = riskTaskRepository.create(xxList.size(), 42); List<FightMan> fightMans = syrkxxRepository.getBaseMapper().selectFightMan(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
List<String> idCodes = xxList.stream().map(GBaseSYRKXX::getGmsfhm).distinct().toList(); RiskTask task = riskTaskRepository.create(fightMans.size(), 42);
log.info("查询用户数 : {}", idCodes.size());
List<FightMan> fightMans = syrkxxRepository.getBaseMapper().selectListByIdCode(idCodes);
log.info("fightman : {}", fightMans.size());
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toUpdates = new ArrayList<>(); List<RiskModelTaskClue> toUpdates = new ArrayList<>();
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskPersonal> toInsertPeople = new ArrayList<>();
Map<String, FightMan> fightManMap = new HashMap<>(); Map<String, FightMan> fightManMap = fightMans.stream().collect(Collectors.toMap(FightMan::getGmsfhm, Function.identity(), (val, old) -> val));
List<String> manList = new ArrayList<>();
int count = 0; for (RiskPersonal person : domain.getPersons()) {
for (FightMan fightMan : fightMans) { FightMan fightMan = fightManMap.get(person.getIdCode());
if (fightMan.getFightCount() < 5) { if (fightMan == null) continue;
continue;
}
count++;
RiskModelTaskClue old = oldMap.get(fightMan.getGmsfhm()); RiskModelTaskClue old = oldMap.get(fightMan.getGmsfhm());
if (old != null) { if (old != null) {
RiskModelTaskClue update = new RiskModelTaskClue(); RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId()); update.setId(old.getId());
update.setData("该人员在近期发生" + fightMan.getFightCount() + "起矛盾纠纷,属于高频次矛盾纠纷发生人员"); update.setData("该人员在近期发生" + fightMan.getFightCount() + "起矛盾纠纷,属于高频次矛盾纠纷发生人员");
update.setEventTime(LocalDateTime.now());
toUpdates.add(update); toUpdates.add(update);
// 剩下的是没有矛盾的人
oldMap.remove(fightMan.getGmsfhm());
continue; continue;
} }
// 看看人员信息是否存在,决定需要增加人员不 toInsert.add(DataUtil.createClueData(task, ClueData.builder()
RiskPersonal person = personalMap.get(fightMan.getGmsfhm()); .score(3)
if (person == null) { .idCode(person.getIdCode())
fightManMap.put(fightMan.getGmsfhm(), fightMan); .personId(person.getId())
manList.add(fightMan.getGmsfhm()); .name(person.getName())
continue; .tags(List.of(fightMan.getFightCount() + "起纠纷"))
} .sourceData("该人员在近期发生" + fightMan.getFightCount() + "起矛盾纠纷,属于高频次矛盾纠纷发生人员")
RiskModelTaskClue clue = createClue(task.getModelId(), 3, person, task.getId(), fightMan.getFightCount() + "起纠纷", "该人员在近期发生" + fightMan.getFightCount() + "起矛盾纠纷,属于高频次矛盾纠纷发生人员"); .build()));
toInsert.add(clue);
person.setId(null);
person.setTags(Default.FIGHT_MUCH);
toInsertPeople.add(person);
}
log.info("大于等于5的个数 : {}", count);
List<GBaseSYRKXX> list = syrkxxRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>()
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXm, GBaseSYRKXX::getLxdh, GBaseSYRKXX::getSspcsdm)
.in(GBaseSYRKXX::getGmsfhm, manList));
Map<String, GBaseSYRKXX> map = list.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue));
for (RiskPersonal person : domain.getPersons()) {
FightMan fightMan = fightManMap.get(person.getIdCode());
if(fightMan == null) {
continue;
}
RiskModelTaskClue clue = createClue(task.getModelId(), 3, person, task.getId(), fightMan.getFightCount() + "起纠纷", "该人员在近期发生" + fightMan.getFightCount() + "起矛盾纠纷,属于高频次矛盾纠纷发生人员");
toInsert.add(clue);
} }
if (!toUpdates.isEmpty()) { if (!toUpdates.isEmpty()) {
@ -478,163 +334,4 @@ public class RiskTaskServiceImpl implements RiskTaskService {
} }
riskTaskRepository.updateTask(task.getId(), toInsert.size(), toUpdates.size()); riskTaskRepository.updateTask(task.getId(), toInsert.size(), toUpdates.size());
} }
/**
* 年龄模型
*
* @param domain 参数
* @param task 任务
*/
void ageModel(TaskParamDomain domain, RiskTask task) {
List<RiskModelTaskClue> taskClue = new ArrayList<>();
List<RiskModelTaskClue> toHidden = new ArrayList<>();
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
LocalDate now = LocalDate.now();
for (RiskPersonal person : domain.getPersons()) {
if (person.getIdCode() == null) {
continue;
}
RiskModelTaskClue old = oldMap.get(person.getIdCode());
Integer age = IdCodeUtil.idCard2Age(person.getIdCode(), now);
if (age == null) {
continue;
}
if (old != null) {
RiskModelTaskClue hidden = new RiskModelTaskClue();
hidden.setId(old.getId());
hidden.setDel(0);
toHidden.add(hidden);
}
// 符合条件但是又没有旧数据 | 新增
if (age >= 16 && age <= 24) {
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(1)
.personId(person.getId())
.tags(List.of("年龄处于16岁至24岁之间"))
.sourceData("该人员年龄为" + age + ",属于16岁至24岁之间")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
if (age >= 25 && age <= 34) {
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(3)
.personId(person.getId())
.tags(List.of("年龄处于25岁至34岁之间"))
.sourceData("该人员年龄为" + age + ",属于25岁至34岁之间")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
if (age >= 35 && age <= 55) {
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(5)
.personId(person.getId())
.tags(List.of("年龄处于35岁至55岁之间"))
.sourceData("该人员年龄为" + age + ",属于35岁至55岁之间")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
if (age >= 56 && age <= 65) {
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(3)
.personId(person.getId())
.tags(List.of("年龄处于56岁至66岁之间"))
.sourceData("该人员年龄为" + age + ",属于56岁至66岁之间")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
if (age >= 66 && age <= 75) {
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(1)
.personId(person.getId())
.tags(List.of("年龄处于66岁至75岁之间"))
.sourceData("该人员年龄为" + age + ",属于66岁至75岁之间")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
}
riskModelTaskClueService.saveClues(taskClue, "B2年龄");
if (!toHidden.isEmpty()) {
clueRepository.updateBatchById(toHidden);
}
riskTaskRepository.updateTask(task.getId(), taskClue.size(), toHidden.size());
}
/**
* 性别模型
*
* @param domain 参数
* @param task 任务
*/
void genderModel(TaskParamDomain domain, RiskTask task) {
List<RiskModelTaskClue> taskClue = new ArrayList<>();
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
for (RiskPersonal person : domain.getPersons()) {
if (person.getGender() == null || !person.getGender().equals("1")) {
continue;
}
if (oldMap.get(person.getIdCode()) != null) {
continue;
}
taskClue.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(5)
.personId(person.getId())
.tags(List.of("男性"))
.sourceData("该人员性别为男性")
.name(person.getName())
.idCode(person.getIdCode())
.eventTime(null)
.build()));
}
riskModelTaskClueService.saveClues(taskClue, "B1性别");
riskTaskRepository.updateTask(task.getId(), taskClue.size(), 0);
}
RiskModelTaskClue createClue(Integer modelId, Integer score, RiskPersonal person, Integer taskId, String reason, String data) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setModelId(modelId);
clue.setScore(score);
clue.setName(person.getName());
clue.setIdCode(person.getIdCode());
clue.setTaskId(taskId);
clue.setRiskReason(reason);
clue.setData(data);
clue.setCreateTime(LocalDateTime.now());
clue.setUpdateTime(LocalDateTime.now());
clue.setEventTime(LocalDateTime.now());
return clue;
}
RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data, String caseId) {
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(caseId);
data.setPersonId(null);
clue.setRiskReason(data.getTag());
return clue;
}
} }

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

@ -1,5 +1,6 @@
package com.biutag.supervisiondata.task; package com.biutag.supervisiondata.task;
import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil;
import com.biutag.supervisiondata.service.*; import com.biutag.supervisiondata.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -82,9 +83,24 @@ public class TaskService {
} }
TaskParamDomain initDomain() { @Resource
private RiskTaskService riskTaskService;
/**
* 2点更新模型
*/
@Scheduled(cron = "0 0 02 * * ?")
public void modelRefresh() {
CompletableFutureUtil.runSync(() -> {
riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41)));
riskTaskService.infoModelTask(initDomain(List.of(32,33)));
});
}
TaskParamDomain initDomain(List<Integer> modelIds) {
List<RiskPersonal> persons = riskPersonalRepository.list(); List<RiskPersonal> persons = riskPersonalRepository.list();
List<RiskModelTaskClue> clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper<RiskModelTaskClue>() List<RiskModelTaskClue> clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper<RiskModelTaskClue>()
.in(RiskModelTaskClue::getModelId, modelIds)
.eq(RiskModelTaskClue::getDel, 0)); .eq(RiskModelTaskClue::getDel, 0));
Map<Integer, List<RiskModelTaskClue>> map = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getModelId)); Map<Integer, List<RiskModelTaskClue>> map = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getModelId));
return new TaskParamDomain(persons, map); return new TaskParamDomain(persons, map);

Loading…
Cancel
Save