diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java index 4669e69..75e87d7 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java @@ -1,6 +1,7 @@ package com.biutag.supervisiondata.mapper.dwd; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.database.PointOrg; import com.biutag.supervisiondata.pojo.database.SecurityMan; import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; @@ -85,4 +86,11 @@ public interface GBaseZDRYMapper extends BaseMapper { "") List syncCarUser(@Param("list")List list); + /** + * 获取重点人员的组织机构 + * @return 列表 + */ + @Select("select id,pid,dm,jx,pcs from tb_d_dwbm where dm like '4301%'") + List selectOrg(); + } diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java index b441f90..ec9b530 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java @@ -13,4 +13,18 @@ public interface RiskTestMapper extends BaseMapper { @Update("truncate table risk_test") int truncateTable(); + @Update("truncate table risk_personal") + int truncatePerson(); + + @Update("truncate table risk_personal_tag") + int truncateTag(); + + @Update("truncate table risk_personal_control_record") + int truncateControl(); + + @Update("truncate table risk_task") + int truncateTask(); + + @Update("truncate table risk_model_task_clue") + int truncateClue(); } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java index 3cc6267..0350a97 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -28,6 +28,8 @@ public class Default { public static final String BA_TAG = "保安"; + public static final String CAR_TAG = "有车"; + public static final String DRUG_TAG = "涉药"; public static final String BIG_TAG_TRUBO = "涉矛盾纠纷"; @@ -84,4 +86,6 @@ public class Default { public static final String GOODS_IG ="购买危险物品行为因素"; + public static final String CAR_IG ="有车因素"; + } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/database/PointOrg.java b/src/main/java/com/biutag/supervisiondata/pojo/database/PointOrg.java new file mode 100644 index 0000000..9fc7932 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/database/PointOrg.java @@ -0,0 +1,22 @@ +package com.biutag.supervisiondata.pojo.database; + +import lombok.Data; + +/** + * @author kami on 2024-11-28 11:59:20 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class PointOrg { + + String id; + + String pid; + + String dm; + + String jx; + + String pcs; +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PersonalService.java b/src/main/java/com/biutag/supervisiondata/service/PersonalService.java index b64f535..cf36a9c 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PersonalService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PersonalService.java @@ -28,4 +28,6 @@ public interface PersonalService { void syncOrg(); + + void init(); } diff --git a/src/main/java/com/biutag/supervisiondata/service/PointService.java b/src/main/java/com/biutag/supervisiondata/service/PointService.java index cd8903e..d2133b4 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PointService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PointService.java @@ -36,4 +36,10 @@ public interface PointService { void syncOilBuy(TaskParamDomain domain); void syncSecurity(TaskParamDomain domain); + + /** + * 同步车主系统 + * @param domain domain + */ + void syncCarUser(TaskParamDomain domain); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java index 511fb5e..df2f53b 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java @@ -305,6 +305,18 @@ public class PersonalServiceImpl implements PersonalService { } } + private final RiskTestRepository riskTestRepository; + + @Override + public void init() { + riskTestRepository.getBaseMapper().truncateControl(); + riskTestRepository.getBaseMapper().truncateClue(); + riskTestRepository.getBaseMapper().truncatePerson(); + riskTestRepository.getBaseMapper().truncateTag(); + riskTestRepository.getBaseMapper().truncateTask(); + riskTestRepository.getBaseMapper().truncateTable(); + } + /** * 通过身份证号查询实有人口 * diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java index 212b4c4..a353100 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -8,6 +8,7 @@ import com.biutag.supervisiondata.mapper.mine.SupDepartMapper; import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.database.MuchCall; +import com.biutag.supervisiondata.pojo.database.PointOrg; import com.biutag.supervisiondata.pojo.database.SecurityMan; import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseOilBuy; @@ -593,6 +594,69 @@ public class PointServiceImpl implements PointService { taskRepository.updateById(updateTask); } + @Override + public void syncCarUser(TaskParamDomain domain) { + int count = domain.getIdCards().size(); + List carUsers = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + carUsers.addAll(zdryRepository.getBaseMapper().syncCarUser(idCard)); + log.info("车主进度:{}", --count); + } + RiskTask task = createTask(carUsers.size(), 53); + taskRepository.save(task); + + Map clueMap = domain.getOldMap(task.getModelId(), false); + Map exist = new WeakHashMap<>(); + for (String carUser : carUsers) { + exist.put(carUser, new Byte[0]); + } + + List toInsert = new ArrayList<>(); + List toDelete = new ArrayList<>(); + List idCodes = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + // 增加 + if(exist.get(person.getIdCode())!=null && clueMap.get(person.getIdCode()) == null) { + ClueData data = ClueData.builder() + .name(person.getName()) + .id("car_man") + .tag(Default.CAR_TAG) + .idCode(person.getIdCode()) + .departId(person.getControlDepartId()) + .departName(person.getControlDepartName()) + .personId(person.getId()) + .sourceData("发现该人员有车,增加风险分1分。") + .build(); + toInsert.add(createClue(task.getModelId(), 1, task.getId(), data)); + } + // 减少 + if(exist.get(person.getIdCode())==null && clueMap.get(person.getIdCode())!=null) { + RiskModelTaskClue old = clueMap.get(person.getIdCode()); + RiskModelTaskClue delete = new RiskModelTaskClue(); + delete.setId(old.getId()); + delete.setDel(1); + toDelete.add(delete); + idCodes.add(person.getIdCode()); + } + } + + if (!toInsert.isEmpty()) { + log.info("增加有车人员:{}", toInsert.size()); + modelTaskClueService.saveClues(toInsert, Default.CAR_IG); + } + + if (!toDelete.isEmpty()) { + modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, Default.CAR_TAG); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toDelete.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) { RiskModelTaskClue clue = new RiskModelTaskClue(); clue.setModelId(modelId); @@ -654,21 +718,21 @@ public class PointServiceImpl implements PointService { List getPersons() { List lbList = zdrylbRepository.list(new LambdaQueryWrapper() .select(GBaseTbDZdrylb::getCode, GBaseTbDZdrylb::getDefine)); - List supDeparts = supDepartMapper.selectList(new LambdaQueryWrapper() - .select(SupDepart::getId, SupDepart::getCode, SupDepart::getLevel, SupDepart::getShortName, SupDepart::getPid) - .ge(SupDepart::getLevel, 3)); - - Map supExternalDepartMap = new WeakHashMap<>(); - List externalDeparts = new ArrayList<>(); + List supDeparts = externalDepartRepository.list(new LambdaQueryWrapper() + .select(SupExternalDepart::getExternalId, SupExternalDepart::getInternalId, SupExternalDepart::getInternalName) + .eq(SupExternalDepart::getSource, "重点人员")); + + List orgs = zdryRepository.getBaseMapper().selectOrg(); + Map orgIdMap = new WeakHashMap<>(); + Map orgCodeMap = new WeakHashMap<>(); + for (PointOrg org : orgs) { + orgIdMap.put(org.getId(), org); + orgCodeMap.put(org.getDm(), org); + } Map lbMap = new WeakHashMap<>(); - Map supDepartCodeMap = new WeakHashMap<>(); - Map supDepartIdMap = new WeakHashMap<>(); + Map supExternalDepartMap = supDeparts.stream().collect(Collectors.toMap(SupExternalDepart::getExternalId, Function.identity(), (val,old) -> val)); - for (SupDepart supDepart : supDeparts) { - supDepartCodeMap.put(supDepart.getCode(), supDepart); - supDepartIdMap.put(supDepart.getId(), supDepart); - } for (GBaseTbDZdrylb lb : lbList) { if (lb.getCode().startsWith("0")) { @@ -685,6 +749,7 @@ public class PointServiceImpl implements PointService { Map> map = new HashMap<>(); int zdCount = 0; int noDepartCount = 0; + int noOrgCount = 0; for (GBaseZDRY ry : list) { List codes = PatternUtil.takeMarkPosition(ry.getZdrylbbj()); if (codes.isEmpty()) { @@ -704,20 +769,16 @@ public class PointServiceImpl implements PointService { zdCount++; sb = sb.stream().distinct().toList(); Map tmp = Optional.ofNullable(map.get(ry.getSfzh())).orElse(new HashMap<>()); - - SupDepart depart = supDepartCodeMap.get(ry.getGxdwjgdm()); - depart = findLevelThreeDepart(depart, supDepartIdMap); - Integer exist = supExternalDepartMap.get(ry.getGxdwjgdm()); - if (exist == null) { - SupExternalDepart externalDepart = new SupExternalDepart(); - externalDepart.setExternalId(ry.getGxdwjgdm()); - externalDepart.setExternalName(ry.getGxdw()); - externalDepart.setSource("重点人员"); - externalDeparts.add(externalDepart); - supExternalDepartMap.put(ry.getGxdwjgdm(), 1); + PointOrg org = orgCodeMap.get(ry.getGxdwjgdm()); + org = findOrg(org, orgIdMap); + if(org == null) { + noOrgCount++; + continue; } + SupExternalDepart depart = supExternalDepartMap.get(org.getDm()); if (depart == null) { noDepartCount++; + continue; } for (String s : sb) { if (tmp.get(s) != null) { @@ -730,8 +791,8 @@ public class PointServiceImpl implements PointService { personal.setIdCode(ry.getSfzh()); personal.setName(ry.getXm()); - personal.setControlDepartName(Optional.ofNullable(depart).map(SupDepart::getShortName).orElse(ry.getGxdw())); - personal.setControlDepartId(Optional.ofNullable(depart).map(SupDepart::getId).orElse(ry.getGxdwjgdm())); + personal.setControlDepartName(depart.getInternalName()); + personal.setControlDepartId(depart.getInternalId()); try { personal.setControlTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); } catch (Exception e) { @@ -763,9 +824,18 @@ public class PointServiceImpl implements PointService { } map.put(ry.getSfzh(), tmp); } - log.info("重点人员入库数:{} 未匹配到本地组织机构数:{}", zdCount, noDepartCount); - externalDepartRepository.saveBatch(externalDeparts); + log.info("重点人员入库数:{} | 外部机构未匹配:{} | 本地组织机构未匹配:{}", zdCount, noOrgCount, noDepartCount); return personals; } + PointOrg findOrg(PointOrg org, Map orgIdMap) { + if(org == null) { + return null; + } + if(org.getPcs() == null || !org.getPcs().equals("1")) { + return findOrg(orgIdMap.get(org.getPid()), orgIdMap); + } + return org; + } + } diff --git a/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java b/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java index f0f11eb..f18c6ad 100644 --- a/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java +++ b/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java @@ -1,14 +1,16 @@ package com.biutag.supervisiondata.util; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; +import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; -import java.time.LocalDateTime; -import java.time.ZoneId; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.*; /** @@ -29,8 +31,15 @@ public class TxtUtil { } public static void main(String[] args) { - Map> map = new HashMap<>(); - map.computeIfAbsent("1", k -> new ArrayList<>()).add(1); - log.info(JSON.toJSONString(map)); + String content = ""; + try { + content = new String(Files.readAllBytes(Paths.get("D:\\work\\code\\gitlab\\health-web\\src\\assets\\a.json"))); + } catch (IOException e) { + e.printStackTrace(); + } + JSONArray array = JSON.parseArray(content); + for (int i = 0; i < array.size(); i++) { + log.info("{}", array.getJSONObject(i).getString("id")); + } } }