diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 66aa32b..e923fbf 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -101,7 +101,7 @@ public class ApplicationEvent { RedisDao.getInstance().init(redisTemplate); LocalDateTime end = LocalDate.now().minusDays(1).atTime(23,59,59); CompletableFutureUtil.runSync(() -> { - personalService.init(List.of(75,130)); + personalService.init(List.of(64,75,130)); // personalService.pullInvestigate(); // personalService.pullPsychosis(); // gBaseSHRWFRService.pullAndSave(LocalDateTime.of(2019,12,6,0,0,0), end); @@ -127,7 +127,7 @@ public class ApplicationEvent { // gBaseJJDService.pullPoliceInstance(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end, initDomain(List.of(55,56,57,58))); // jsbryService.syncPys(initDomain(List.of(59))); // gBaseSHRWFRService.combatCrime(initDomain(List.of(63))); -// gBaseJJDService.syncPoliceAttack(initDomain(List.of(64))); + gBaseJJDService.warningInstance(initDomain(List.of(64))); // gBaseJJDService.syncHomeViolence(initDomain(List.of(65,66))); // pointService.syncPointType(initDomain(List.of(67))); // gBaseSHRWFRService.hadWork(initDomain(List.of(68))); @@ -145,7 +145,7 @@ public class ApplicationEvent { // pointService.syncAdministrativePunishment(initDomain(List.of(116))); // 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.syncMotherDie(initDomain(List.of(120))); // pointService.syncChildNo(initDomain(List.of(121))); diff --git a/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java index 1fee233..d60b2f7 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java @@ -43,7 +43,7 @@ public interface GBaseSYRKXXMapper extends BaseMapper { List selectHeightFight(@Param("time")String time); @Select(" select a.gmsfhm as gmsfhm, b.mdjfcddm as type, count(1) as number from csga_dwd.dwd_qt_jzpt_mdjfdsrxx a " + - " inner join csga_dwd.dwd_wp_zfba_mdjfzb as b on a.mdjfid = b.id " + + " inner join csga_dwd.dwd_qt_jzpt_mdjfzb as b on a.mdjfid = b.id " + " inner join csga_wdpcdb.wdpc_person as c on a.gmsfhm = c.id_code " + " where a.djsj > #{time}" + " group by a.gmsfhm, b.mdjfcddm order by a.gmsfhm") diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java index 8f3aa5b..c4d3576 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java @@ -71,8 +71,15 @@ public interface GBaseJJDMapper extends BaseMapper { @Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd where (bjnr like '%袭警%' or cjqk like '%袭警%' or jqxzmc like '%阻碍%' or jqxzmc like '%袭击%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start}") List selectAttackPolist(@Param("start")String start); - @Select("select * from dwd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11'") - List selectWarningInstance(); + /** + * 非矛盾纠纷有效警情 + * @return 列表 + */ + @Select("select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk from dwd_asj_zhtx_jjd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11' and substr(jqxzdm, 1, 2) != '08' and bjsj >= #{start} limit #{pageNo}, #{pageSize}") + List selectWarningInstance(@Param("start")String start,@Param("pageNo")Integer pageNo, @Param("pageSize")Integer pageSize); + + @Select(" select count(1) from from dwd_asj_zhtx_jjd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11' and substr(jqxzdm, 1, 2) != '08' and bjsj >= #{start}") + int selectWarningInstanceCount(@Param("start")String start); /** * 家暴 diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java index a12fdda..10bb50c 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java @@ -63,6 +63,5 @@ public class RiskPersonalTag implements Serializable { /** * 逻辑删除键 */ - @TableLogic(value = "0", delval = "1") Integer del; } 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 ec210e2..db26ec1 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -457,7 +457,92 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { @Override public void warningInstance(TaskParamDomain domain) { + String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + Map idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); + Map mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val)); + + Map> personJqList = new WeakHashMap<>(); + + int count = gBaseJJDRepository.getBaseMapper().selectWarningInstanceCount(startTime); + RiskTask task = taskRepository.create(count, 64); + + List jjdList; + int batch = count % 10000 == 0 ? count / 10000 : (count / 10000) + 1; + int pageSize = 10000; + for (int page = 1; page <= batch; page++) { + log.info("平台涉警进度:{} | {}", page, batch); + int pageNo = (page - 1) * pageSize; + jjdList = gBaseJJDRepository.getBaseMapper().selectWarningInstance(startTime, pageNo, pageSize); + for (GBaseJJD jjd : jjdList) { + RiskPersonal riskPerson = null; + // 报警人 + if (jjd.getBjrzjhm() != null) { + riskPerson = idCodelMap.get(jjd.getBjrzjhm()); + } else if (jjd.getBjdh() != null) { + riskPerson = mobileMap.get(jjd.getBjdh()); + } + if (riskPerson != null) { + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + } + // 一个都不放过 + String idCard = PatternUtil.takeIdCard(jjd.getCjqk()); + if (idCard.isEmpty()) { + idCard = PatternUtil.takeIdCard(jjd.getBjnr()); + } + if (!idCard.isEmpty()) { + String[] str = idCard.split(","); + for (String s : str) { + riskPerson = idCodelMap.get(s); + if (riskPerson == null) continue; + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + } + } + + String mobile = PatternUtil.takeMobile(jjd.getCjqk()); + if (mobile.isEmpty()) { + mobile = PatternUtil.takeMobile(jjd.getBjnr()); + } + if (mobile.isEmpty()) continue; + String[] str = mobile.split(","); + for (String s : str) { + riskPerson = mobileMap.get(s); + if (riskPerson == null) continue; + personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh()); + } + } + } + log.info("开始统计每个人的警情"); + List toInsert = new ArrayList<>(); + + List list; + for (Map.Entry> entry : personJqList.entrySet()) { + list = entry.getValue().stream().distinct().toList(); + RiskPersonal person = idCodelMap.get(entry.getKey()); + StringBuilder sb = new StringBuilder("该人员近一年来有"+list.size()+"起平台涉警事件,接警单编号为:"); + for (int i = 0,length = Math.min(3, list.size()); i < length; i++) { + sb.append(list.get(i)).append(","); + } + + ClueData data = ClueData.builder() + .name(person.getName()) + .id("") + .idCode(person.getIdCode()) + .tags(List.of(list.size()+"起平台涉警事件")) + .sourceData(sb.substring(0, sb.length()-1)) + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .score(Math.min(5, list.size())) + .build(); + toInsert.add(DataUtil.createClueData(task, data)); + } + + if(!toInsert.isEmpty()) { + log.info("保存平台涉警事件数据:{}", toInsert.size()); + clueService.saveClues(toInsert, "B28平台涉警事件"); + } + taskRepository.updateTask(task.getId(), toInsert.size(), 0); } @Override @@ -1028,13 +1113,13 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { for (Contradict contradict : contradicts) { switch (contradict.getType()) { case "0" -> - sb.append("\n").append("简单矛盾纠纷").append(contradict.getNumber().toString()).append("起"); + sb.append("简单矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(","); case "1" -> - sb.append("\n").append("一般矛盾纠纷").append(contradict.getNumber().toString()).append("起"); + sb.append("一般矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(","); case "2" -> - sb.append("\n").append("复杂疑难矛盾纠纷").append(contradict.getNumber().toString()).append("起"); + sb.append("复杂疑难矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(","); case "3" -> - sb.append("\n").append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起"); + sb.append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(","); } } toInsert.add(DataUtil.createClueData(task, ClueData.builder() 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 fc17b14..caab9e2 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java @@ -497,7 +497,7 @@ public class PersonalServiceImpl implements PersonalService { if(modelIds.isEmpty()) { return; } - riskModelTaskClueRepository.remove(new LambdaQueryWrapper().in(RiskModelTaskClue::getModelId, modelIds)); + riskModelTaskClueRepository.remove(new LambdaQueryWrapper().in(RiskModelTaskClue::getModelId, modelIds).ne(RiskModelTaskClue::getSource, 1)); tagRepository.remove(new LambdaQueryWrapper().in(RiskPersonalTag::getModelId, modelIds)); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java index 3835b7b..db00717 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java @@ -63,10 +63,9 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { Map modelMap = models.stream().collect(Collectors.toMap(Model::getRiskScoreRuleId, Function.identity(), (oldValue, newValue) -> newValue)); List clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper() - .select(RiskModelTaskClue::getId, RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScore, RiskModelTaskClue::getScoreCalc) + .select(RiskModelTaskClue::getId, RiskModelTaskClue::getScoreCalc) .eq(RiskModelTaskClue::getDel, 0)); - log.info("1、修改每项得分\n2、修改人员总分"); - log.info("1、计算分项倍分"); + log.info("计算分项倍分"); List updates = new ArrayList<>(); if(weight != null && !weight.equals("1")) { for (RiskModelTaskClue clue : clues) { @@ -74,12 +73,14 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { update.setId(clue.getId()); update.setScoreResult(new BigDecimal(clue.getScoreCalc().toString()).multiply(new BigDecimal(weight)).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP).doubleValue()); updates.add(update); - clue.setScoreResult(update.getScoreResult()); } - log.info("1、修改每项得分"); - riskModelTaskClueRepository.updateBatchById(updates); + log.info("修改每项得分"); + riskModelTaskClueRepository.updateBatchById(updates, 100000); } - + clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper() + .select(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScoreResult) + .eq(RiskModelTaskClue::getDel, 0)); + log.info("开始算分"); Map>> clueMap = new HashMap<>(); for (RiskModelTaskClue clue : clues) {