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 b81c1bc..376f651 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -62,7 +62,7 @@ public class Default { public static final String WFR_IG = "犯罪前科因素"; - public static final String IMPORT_IG = "特种职业因素"; + public static final String IMPORT_IG = "职业因素"; public static final String TRUBO_IG = "涉矛盾纠纷因素"; diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java index 25bd223..d482be7 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java @@ -60,5 +60,15 @@ public class GBaseSYRKXX { String sspcsdm; @TableField("sspcsmc") String sspcsmc; + /** + * 职业名称 + */ + @TableField("zymc") + String zymc; + /** + * 职业代码 + */ + @TableField("zydm") + String zydm; } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java index 4f3d46a..97b876e 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java @@ -45,6 +45,17 @@ public class GBaseWFRXX implements Serializable { */ @TableField("sxzm") String sxzm; + /** + * 职业名称 + */ + @TableField("zymc") + String zymc; + /** + * 职业代码 + */ + @TableField("zydm") + String zydm; + @TableField("lrsj") Date lrsj; } diff --git a/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java b/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java index 515c86a..0a6ff8b 100644 --- a/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java +++ b/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java @@ -18,7 +18,19 @@ public interface GBaseSHRWFRService { /** * 打击5年内犯罪 - * @param domain + * @param domain domain */ void combatCrime(TaskParamDomain domain); + + /** + * 罪名名称 + * @param domain domain + */ + void crimeName(TaskParamDomain domain); + + /** + * 有咩有工作 + * @param domain domain + */ + void hadWork(TaskParamDomain domain); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java index cd1a142..cb11fe1 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -535,7 +535,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { } log.info("家暴:{} | {}", toInsert2.size(), toUpdate2.size()); if (!toInsert.isEmpty()) { - clueService.saveClues(toInsert, Default.HOME_VIOLENCE); + clueService.saveClues(toInsert2, Default.HOME_VIOLENCE); } if (!toUpdate2.isEmpty()) { clueService.deleteCluesAndDeleteTag(toUpdate2, deleteIdCards, "家暴"); diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java index 142b666..ac1bc23 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java @@ -14,6 +14,7 @@ import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; import com.biutag.supervisiondata.pojo.entity.mine.SupExternalDepart; +import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdZblx; import com.biutag.supervisiondata.pojo.enums.DepartType; import com.biutag.supervisiondata.repository.*; import com.biutag.supervisiondata.service.GBaseSHRWFRService; @@ -92,9 +93,9 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { List shrTmp = shrxxRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); for (GBaseSHRXX gBaseSHRXX : shrTmp) { - if(gBaseSHRXX.getGmsfhm() != null) { + if (gBaseSHRXX.getGmsfhm() != null) { idCards.add(gBaseSHRXX.getGmsfhm()); - } else if(gBaseSHRXX.getLxdh() != null) { + } else if (gBaseSHRXX.getLxdh() != null) { mobiles.add(gBaseSHRXX.getLxdh()); } else { continue; @@ -107,9 +108,9 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { List wfrTmp = wfrxxRepository.getBaseMapper().selectDataToRisk("2019-12-06 00:00:00", end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); for (GBaseWFRXX gBaseWFRXX : wfrTmp) { - if(gBaseWFRXX.getZjhm() != null) { + if (gBaseWFRXX.getZjhm() != null) { idCards.add(gBaseWFRXX.getZjhm()); - } else if(gBaseWFRXX.getLxdh() != null) { + } else if (gBaseWFRXX.getLxdh() != null) { mobiles.add(gBaseWFRXX.getLxdh()); } else { continue; @@ -136,7 +137,7 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { .in(GBaseAJJBXX::getAjbh, aj))); } // 案件转map方便提取 - Map xxMap = xxList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); + Map xxMap = xxList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); // 人员信息查询 // 身份证查到的人 @@ -172,25 +173,25 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { }) ).join(); - Map idCodeMap = sFms.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + Map idCodeMap = sFms.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); Map> mobileMap = lXfs.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); List personals = new ArrayList<>(); Map> shrMap = new HashMap<>(); for (GBaseSHRXX gBaseSHRXX : shrList) { GBaseAJJBXX ajjbxx = xxMap.get(gBaseSHRXX.getAjbh()); - if(ajjbxx == null) { + if (ajjbxx == null) { continue; } GBaseSYRKXX rkxx = Optional.ofNullable(gBaseSHRXX.getGmsfhm()).map(idCodeMap::get) .orElse(null); - if(gBaseSHRXX.getLxdh() != null && rkxx == null) { + if (gBaseSHRXX.getLxdh() != null && rkxx == null) { List rkxxList = mobileMap.get(gBaseSHRXX.getLxdh()); - if(rkxxList != null) { + if (rkxxList != null) { rkxx = compare(rkxxList, gBaseSHRXX.getXm()); } } - if(rkxx != null) { + if (rkxx != null) { RiskPersonal person = createPerson(Default.SHR_TAG, ajjbxx, rkxx); if (rkxx.getSspcsdm() != null) { PointOrg org = orgCodeMap.get(rkxx.getSspcsdm()); @@ -207,7 +208,7 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { } } - if(person.getIdCode() != null) { + if (person.getIdCode() != null) { shrMap.computeIfAbsent(person.getIdCode(), k -> new ArrayList<>()).add(ajjbxx); } personals.add(person); @@ -215,20 +216,20 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { } for (GBaseWFRXX gBaseWFRXX : wxrList) { GBaseAJJBXX ajjbxx = xxMap.get(gBaseWFRXX.getAjbh()); - if(ajjbxx == null) { + if (ajjbxx == null) { continue; } GBaseSYRKXX rkxx = null; - if(gBaseWFRXX.getZjhm() != null) { + if (gBaseWFRXX.getZjhm() != null) { rkxx = idCodeMap.get(gBaseWFRXX.getZjhm()); } - if(gBaseWFRXX.getLxdh() != null && rkxx == null) { + if (gBaseWFRXX.getLxdh() != null && rkxx == null) { List rkxxList = mobileMap.get(gBaseWFRXX.getLxdh()); - if(rkxxList != null) { + if (rkxxList != null) { rkxx = compare(rkxxList, gBaseWFRXX.getXm()); } } - if(rkxx != null) { + if (rkxx != null) { RiskPersonal person = createPerson(Default.WFR_TAG, ajjbxx, rkxx); if (rkxx.getSspcsdm() != null) { PointOrg org = orgCodeMap.get(rkxx.getSspcsdm()); @@ -253,25 +254,25 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { continue; } List tmp = shrMap.get(personal.getIdCode()); - if(tmp == null || tmp.isEmpty()) { + if (tmp == null || tmp.isEmpty()) { continue; } GBaseAJJBXX jjx = null; for (GBaseAJJBXX gBaseAJJBXX : tmp) { - if(jjx == null) { + if (jjx == null) { jjx = gBaseAJJBXX; continue; } try { LocalDateTime time = gBaseAJJBXX.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); - if(time.isAfter(jjx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) { + if (time.isAfter(jjx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) { jjx = gBaseAJJBXX; } } catch (Exception e) { log.info("报警时间处理异常"); } } - if(jjx == null || jjx.getBadwiddm() == null) { + if (jjx == null || jjx.getBadwiddm() == null) { personal.setControlDepartId(null); personal.setControlDepartName(null); personal.setControlTime(null); @@ -311,14 +312,14 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { @Override public void combatCrime(TaskParamDomain domain) { - LocalDateTime start = LocalDateTime.of(2019,12,6,0,0,0); - LocalDateTime end = LocalDate.now().atTime(0,0,0); + LocalDateTime start = LocalDateTime.of(2019, 12, 6, 0, 0, 0); + LocalDateTime end = LocalDate.now().atTime(0, 0, 0); List xxList = wfrxxRepository.getBaseMapper().selectFiveYearsCombatCrime(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); RiskTask task = taskRepository.create(xxList.size(), 63); - List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); // 按人分 Map> personOldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); @@ -328,22 +329,22 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { for (RiskPersonal person : domain.getPersons()) { List wfxxList = wfrMap.get(person.getIdCode()); - if(wfxxList == null) { + if (wfxxList == null) { continue; } List olds = Optional.ofNullable(personOldMap.get(person.getIdCode())).orElse(new ArrayList<>()); Map oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val)); for (GBaseWFRXX xx : wfxxList) { - if(oldMap.get(BhUtil.ajBh(xx.getAjbh())) != null) { + if (oldMap.get(BhUtil.ajBh(xx.getAjbh())) != null) { continue; } ClueData data = ClueData.builder() .name(person.getName()) .id(BhUtil.ajBh(xx.getAjbh())) .idCode(person.getIdCode()) - .tag("被打击处理") + .tag("已被打击处理") .personId(person.getId()) - .sourceData("该人员因" + xx.getSxzm() + "被打击处理,案件编号:" + xx.getAjbh()+ ",增加风险分5分") + .sourceData("该人员因" + xx.getSxzm() + "被打击处理,案件编号:" + xx.getAjbh() + ",增加风险分5分") .build(); try { data.setEventTime(xx.getLrsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); @@ -354,23 +355,175 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { } } - if(!toInsert.isEmpty()) { + if (!toInsert.isEmpty()) { clueService.saveClues(toInsert, Default.WF_IG); } taskRepository.updateTask(task.getId(), toInsert.size(), 0); } + @Override + public void crimeName(TaskParamDomain domain) { + + } + + private final WdpcGrjdZblxRepository zblxRepository; + + @Override + public void hadWork(TaskParamDomain domain) { + // 职业等级 + RiskTask task = taskRepository.create(domain.getPersons().size(), 37); + // 有无职业 + RiskTask task2 = taskRepository.create(domain.getPersons().size(), 67); + + List lxList = zblxRepository.list(new LambdaQueryWrapper() + .in(WdpcGrjdZblx::getLxdm, List.of("9", "12"))); + + Map> lxMap = lxList.stream().collect(Collectors.groupingBy(WdpcGrjdZblx::getLxdm)); + Map wfrMap = new WeakHashMap<>(); + int count = domain.getIdCards().size(); + for (List idCard : domain.getIdCards()) { + count--; + log.info("违法人进度{}", count); + List tmp = wfrxxRepository.list(new LambdaQueryWrapper() + .select(GBaseWFRXX::getZjhm, GBaseWFRXX::getZydm) + .in(GBaseWFRXX::getZjhm, idCard)); + for (GBaseWFRXX gBaseWFRXX : tmp) { + wfrMap.put(gBaseWFRXX.getZjhm(), gBaseWFRXX.getZydm()); + } + } + // 担心和保安、涉药模型混搭 + Map oldMap = domain.getOldMap(task.getModelId(), true); + + List wfzyList = Optional.ofNullable(lxMap.get("12")).orElse(new ArrayList<>()); + Map wfzyMap = wfzyList.stream().collect(Collectors.toMap(WdpcGrjdZblx::getDmbh, Function.identity(), (val, old) -> val)); + // 职业登记划分 + List toInsert = new ArrayList<>(); + // 有无职业 + List toInsert2 = new ArrayList<>(); + // 实有人口要查的 + List personalList = new ArrayList<>(); + List> srIdCodes = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + if (oldMap.get(person.getIdCode()) != null) { + continue; + } + String zydm = wfrMap.get(person.getIdCode()); + if (zydm == null) { + if (srIdCodes.isEmpty()) { + srIdCodes.add(new ArrayList<>()); + } + if (srIdCodes.getLast().size() >= 10000) { + srIdCodes.add(new ArrayList<>()); + } + srIdCodes.getLast().add(person.getIdCode()); + personalList.add(person); + continue; + } + WdpcGrjdZblx zblx = wfzyMap.get(zydm); + if (zblx == null) { + if (srIdCodes.isEmpty()) { + srIdCodes.add(new ArrayList<>()); + } + if (srIdCodes.getLast().size() >= 10000) { + srIdCodes.add(new ArrayList<>()); + } + srIdCodes.getLast().add(person.getIdCode()); + personalList.add(person); + continue; + } + ClueData data = ClueData.builder() + .name(person.getName()) + .id("zy") + .idCode(person.getIdCode()) + .tag(zblx.getDmmc()) + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .build(); + if (zblx.getScore() < 5.0) { + data.setSourceData("该人员从事" + zblx.getDmmc() + "的职业,增加风险分" + zblx.getScore().intValue() + "分"); + } else { + data.setSourceData("该人员" + zblx.getDmmc() + ",增加风险分" + zblx.getScore().intValue() + "分"); + ClueData data2 = ClueData.builder() + .name(person.getName()) + .id("zy") + .idCode(person.getIdCode()) + .tag(zblx.getDmmc()) + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .sourceData("该人员无固定职业,增加风险分5分") + .build(); + toInsert2.add(createClue(task2.getModelId(), zblx.getScore().intValue(), task2.getId(), data2)); + } + toInsert.add(createClue(task.getModelId(), zblx.getScore().intValue(), task.getId(), data)); + } + + List xxList = new ArrayList<>(); + count = srIdCodes.size(); + for (List srIdCode : srIdCodes) { + count--; + log.info("实有人口进度{}", count); + xxList.addAll(gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getZydm, GBaseSYRKXX::getGmsfhm) + .in(GBaseSYRKXX::getGmsfhm, srIdCode))); + } + + Map syMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getZydm, (val, old) -> val)); + for (RiskPersonal person : personalList) { + String zydm = syMap.get(person.getIdCode()); + if (zydm == null) continue; + WdpcGrjdZblx zblx = wfzyMap.get(zydm); + if(zblx == null) continue; + ClueData data = ClueData.builder() + .name(person.getName()) + .id("zy") + .idCode(person.getIdCode()) + .tag(zblx.getDmmc()) + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .build(); + if (zblx.getScore() < 5.0) { + data.setSourceData("该人员从事" + zblx.getDmmc() + "的职业,增加风险分" + zblx.getScore().intValue() + "分"); + } else { + data.setSourceData("该人员" + zblx.getDmmc() + ",增加风险分" + zblx.getScore().intValue() + "分"); + ClueData data2 = ClueData.builder() + .name(person.getName()) + .id("zy") + .idCode(person.getIdCode()) + .tag(zblx.getDmmc()) + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .sourceData("该人员无固定职业,增加风险分5分") + .build(); + toInsert2.add(createClue(task2.getModelId(), zblx.getScore().intValue(), task2.getId(), data2)); + } + toInsert.add(createClue(task.getModelId(), zblx.getScore().intValue(), task.getId(), data)); + } + + if(!toInsert.isEmpty()) { + log.info("保存职业类型: {}", toInsert.size()); + clueService.saveClues(toInsert, Default.IMPORT_IG); + } + if(!toInsert2.isEmpty()) { + log.info("保存无职业: {}", toInsert2.size()); + clueService.saveClues(toInsert2, Default.IMPORT_IG); + } + + taskRepository.updateTask(task.getId(), toInsert.size(), 0); + taskRepository.updateTask(task2.getId(), toInsert2.size(), 0); + } + /** * 多身份证对比名称 + * * @param infos 信息 - * @param name 名称 + * @param name 名称 * @return 正确信息 */ GBaseSYRKXX compare(List infos, String name) { GBaseSYRKXX info = null; for (GBaseSYRKXX gBaseSYRKXX : infos) { - if(gBaseSYRKXX.getXm().equals(name)) { - info=gBaseSYRKXX; + if (gBaseSYRKXX.getXm().equals(name)) { + info = gBaseSYRKXX; break; } } @@ -385,7 +538,7 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { personal.setControlDepartId(ajjbxx.getBadwiddm()); personal.setControlDepartName(ajjbxx.getBadwidmc()); personal.setGender(IdCodeUtil.idCard2Gender(rkxx.getGmsfhm())); - if(personal.getGender() == null ){ + if (personal.getGender() == null) { personal.setGender(rkxx.getXbdm()); } personal.setControlDepartType(DepartType.OTHER.getType()); 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 e032e1d..3d85fea 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -169,18 +169,24 @@ public class PointServiceImpl implements PointService { if(oldClue.get(index) != null || zblx == null) { continue; } - toInsert.add(createClue(task.getModelId(), zblx.getScore().intValue(), task.getId(), ClueData.builder() + ClueData data = ClueData.builder() .id(index) .personId(person.getId()) .tag(zblx.getDmmc()) .name(person.getName()) .idCode(person.getIdCode()) .sourceData("该人员存在标签:" + zblx.getDmmc() + ",增加风险分5分") - .build())); + .build(); + try { + data.setEventTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + } catch (Exception e) { + data.setEventTime(LocalDateTime.now()); + } + toInsert.add(createClue(task.getModelId(), zblx.getScore().intValue(), task.getId(), data)); } } if (!toInsert.isEmpty()) { - log.info("保存重点人员标签, {}"); + log.info("保存重点人员标签 {}", toInsert.size()); modelTaskClueService.saveClues(toInsert, Default.POINT_IG); } taskRepository.updateTask(task.getId(), toInsert.size(), 0); @@ -231,6 +237,7 @@ public class PointServiceImpl implements PointService { try { data.setEventTime(violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); } catch (Exception ignored) { + data.setEventTime(LocalDateTime.now()); } toInsert.add(createClue2(task.getModelId(), 5, task.getId(), data)); }