diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index 808fafb..d2ffd52 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -110,8 +110,8 @@ public class ApplicationEvent { // personalService.pullPetitionAgain(); // pointService.personPullAndSave(start, end); // gBaseJJDService.pullAndSave(start, end); -// riskPersonalService.fixed(); -// personalService.syncPerson(); + riskPersonalService.fixed(); + personalService.syncPerson(); // // petitionService.petitionModelTask(initDomain(List.of(40))); // riskTaskService.eduModelTask(initDomain(List.of(34))); @@ -164,7 +164,6 @@ public class ApplicationEvent { // pointService.syncIsSpecialPeople(initDomain(List.of(129))); // pointService.syncSpecialPeopleType(initDomain(List.of(130))); // *********暂时不要********** -// riskTaskService.caseModelTask(initDomain(List.of(35))); // riskTaskService.heightFight(initDomain(List.of(42))); // pointService.syncKillSelf(initDomain(List.of(46))); // policeService.contradictModelTask(initDomain(List.of(38))); diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java b/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java index 7149f05..439f849 100644 --- a/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java +++ b/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java @@ -20,11 +20,6 @@ public interface RiskTaskService { */ void eduModelTask(TaskParamDomain domain); - /** - * 违法人员和执法办案警情 - * @param domain 参数 - */ - void caseModelTask(TaskParamDomain domain); /** * (三)行为因素 * @param domain 参数 diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java index 47cc142..b7a1edb 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java @@ -74,10 +74,8 @@ public class RiskTaskServiceImpl implements RiskTaskService { @Override public void infoModelTask(TaskParamDomain domain) { - RiskTask genderTask = createTask(domain.getPersons().size(), 32); - RiskTask ageTask = createTask(domain.getPersons().size(), 33); - riskTaskRepository.save(ageTask); - riskTaskRepository.save(genderTask); + RiskTask genderTask = riskTaskRepository.create(domain.getPersons().size(), 32); + RiskTask ageTask = riskTaskRepository.create(domain.getPersons().size(), 33); CompletableFuture.allOf( CompletableFutureUtil.runSyncObject(() -> ageModel(domain, ageTask)), @@ -87,8 +85,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { @Override public void eduModelTask(TaskParamDomain domain) { - RiskTask eduTask = createTask(domain.getPersons().size(), 34); - riskTaskRepository.save(eduTask); + RiskTask eduTask = riskTaskRepository.create(domain.getPersons().size(), 34); List xxList = new ArrayList<>(); int count = 0; @@ -139,7 +136,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { .name(person.getName()) .idCode(person.getIdCode()) .tag(edu) - .sourceData("该人员的学历为"+xx.getXlmc()+",属于"+edu+",增加风险分"+score+"分") + .sourceData("该人员的学历为"+xx.getXlmc()+",属于"+edu) .eventTime(LocalDateTime.now()) .personId(person.getId()) .build(), "edu"+person.getId().toString())); @@ -148,208 +145,24 @@ public class RiskTaskServiceImpl implements RiskTaskService { RiskModelTaskClue tmp = new RiskModelTaskClue(); tmp.setId(old.getId()); tmp.setRiskReason(edu); - tmp.setData("该人员的学历为"+xx.getXlmc()+",属于"+edu+",增加风险分"+score+"分"); + tmp.setData("该人员的学历为"+xx.getXlmc()+",属于"+edu); tmp.setScore(Edu.contains(edu)); toUpdate.add(tmp); } - RiskTask eduUpdate = new RiskTask(); - eduUpdate.setId(eduTask.getId()); - int size = 0; if (!toInsert.isEmpty()) { - size = toInsert.size(); riskModelTaskClueService.saveClues(toInsert, Default.EDU_IG); log.info("批量新增学历完成"); } - eduUpdate.setInsertSize(size); if (!toUpdate.isEmpty()) { clueRepository.updateBatchById(toUpdate, 10000); - size = toUpdate.size(); log.info("批量修改学历完成"); } - eduUpdate.setState(1); - eduUpdate.setUpdateSize(size); - eduUpdate.setEndTime(LocalDateTime.now()); - riskTaskRepository.updateById(eduUpdate); - } - - @Override - public void caseModelTask(TaskParamDomain domain) { - RiskTask caseTask = createTask(domain.getPersons().size(), 35); - riskTaskRepository.save(caseTask); - // 1 - 违法信息 - List wfxxList = new ArrayList<>(); - for (List idCard : domain.getIdCards()) { - wfxxList.addAll(wfrxxRepository.list(new LambdaQueryWrapper() - .select(GBaseWFRXX::getAjbh, GBaseWFRXX::getZjhm, GBaseWFRXX::getSxzm) - .in(GBaseWFRXX::getZjhm, idCard))); - } - log.info("违法数量: {}", wfxxList.size()); - - // 1 - 信息转map 2 - 案件编号list - Map> xxMap = new HashMap<>(); - List ajIdList = new ArrayList<>(); - for (GBaseWFRXX gBaseWFRXX : wfxxList) { - if (gBaseWFRXX.getSxzm() == null) { - continue; - } - String charge = chargeContain(gBaseWFRXX.getSxzm()); - if (charge == null) { - continue; - } - ajIdList.add(gBaseWFRXX.getAjbh()); - List tmp = Optional.ofNullable(xxMap.get(gBaseWFRXX.getZjhm())).orElse(new ArrayList<>()); - tmp.add(gBaseWFRXX); - xxMap.put(gBaseWFRXX.getZjhm(), tmp); - } - // 切割 每次查10000条 - List> ajs = IntStream.range(0, (ajIdList.size() + 9999) / 10000) - .mapToObj(i -> ajIdList.subList(i * 10000, Math.min((i + 1) * 10000, ajIdList.size()))) - .toList(); - - List xxList = new ArrayList<>(); - // 查案件基本信息 - for (List aj : ajs) { - xxList.addAll(ajjbxxRepository.list(new LambdaQueryWrapper() - .select(GBaseAJJBXX::getAjbh, GBaseAJJBXX::getBadwidmc, GBaseAJJBXX::getBadwiddm, GBaseAJJBXX::getBarq) - .in(GBaseAJJBXX::getAjbh, aj))); - } - // 案件转map方便提取 - Map ajxxMap = xxList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); - - // 管控部门记录 - List controlRecords = new ArrayList<>(); - for (List idCard : domain.getIdCards()) { - controlRecords.addAll(controlRecordRepository.list(new LambdaQueryWrapper() - .in(RiskPersonalControlRecord::getIdCode, idCard))); - } - // 转map - Map> controlMap = Optional.of(controlRecords).filter(it -> !it.isEmpty()) - .map(it -> it.stream().collect(Collectors.groupingBy(RiskPersonalControlRecord::getIdCode))) - .orElse(new HashMap<>()); - - Map oldMap = domain.getOldMap(35, true); - // ************** 要动的表 ************** - List toInsertControl = new ArrayList<>(); - List toUpdatePerson = new ArrayList<>(); - List toInsertClue = new ArrayList<>(); - List toUpdateClue = new ArrayList<>(); - // ************** ************** - Map bHMap; - for (RiskPersonal person : domain.getPersons()) { - List tmp = xxMap.get(person.getIdCode()); - // 案件编号 - StringBuilder caseNo = new StringBuilder(); - // 原因 - StringBuilder reason = new StringBuilder(); - List controls = controlMap.get(person.getIdCode()); - if (controls == null || controls.isEmpty()) { - bHMap = new HashMap<>(); - controls = new ArrayList<>(); - } else { - bHMap = controls.stream().collect(Collectors.toMap(RiskPersonalControlRecord::getCaseId, Function.identity(), (oldValue, newValue) -> newValue)); - } - List tmpRecords = new ArrayList<>(); - // 如果没有违法 - if (tmp == null || tmp.isEmpty()) { - continue; - } - for (GBaseWFRXX gBaseWFRXX : tmp) { - if (gBaseWFRXX.getSxzm() == null) { - continue; - } - caseNo.append(gBaseWFRXX.getAjbh()).append(","); - reason.append(chargeContain(gBaseWFRXX.getSxzm())).append(","); - RiskPersonalControlRecord record = bHMap.get(BhUtil.ajBh(gBaseWFRXX.getAjbh())); - if (record == null) { - //如果没有管控记录 新建 - GBaseAJJBXX ajxx = ajxxMap.get(gBaseWFRXX.getAjbh()); - if (ajxx == null) { - continue; - } - RiskPersonalControlRecord controlRecord = createControlRecord(person, ajxx, gBaseWFRXX); - toInsertControl.add(controlRecord); - tmpRecords.add(controlRecord); - } - } - controls.addAll(tmpRecords); - RiskPersonalControlRecord last = null; - for (RiskPersonalControlRecord riskPersonalControlRecord : controls) { - if (riskPersonalControlRecord == null) { - continue; - } - if (last == null) { - last = riskPersonalControlRecord; - continue; - } - if (riskPersonalControlRecord.getControlTime().isAfter(last.getControlTime())) { - last = riskPersonalControlRecord; - } - } - // 记录中的案件编号 - RiskModelTaskClue old = oldMap.get(person.getIdCode()); - String caseIds = Optional.ofNullable(old).map(RiskModelTaskClue::getCaseIds).orElse(""); - String[] oldCase = caseIds.split(","); - if (oldCase.length == caseNo.toString().split(",").length - 1) { - // 涉及案件和老的长度一致,说明没有新增事件 - continue; - } - if (old != null) { - // 将旧的作废 - RiskModelTaskClue updateClue = new RiskModelTaskClue(); - updateClue.setId(old.getId()); - updateClue.setDel(1); - toUpdateClue.add(updateClue); - continue; - } - RiskModelTaskClue clue = new RiskModelTaskClue(); - clue.setModelId(caseTask.getModelId()); - clue.setScore(5); - clue.setName(person.getName()); - clue.setIdCode(person.getIdCode()); - clue.setTaskId(caseTask.getId()); - StringBuilder data = new StringBuilder(); - if (!reason.isEmpty()) { - clue.setRiskReason(reason.substring(0, reason.length() - 1)); - data.append("发现该人员涉嫌以下罪名:"+clue.getRiskReason()); - } - if (!caseNo.isEmpty()) { - clue.setCaseIds(caseNo.substring(0, caseNo.length() - 1)); - data.append(",相关案件编号为:").append(clue.getCaseIds()); - } - if(!data.isEmpty()) { - data.append(",属于涉严重暴力犯罪前科人员,增加风险分5分"); - } - if (last != null && last.getControlTime() != null) { - clue.setEventTime(last.getControlTime()); - } - clue.setData(data.toString()); - clue.setCreateTime(LocalDateTime.now()); - clue.setUpdateTime(LocalDateTime.now()); - toInsertClue.add(clue); - } - RiskTask caseUpdate = new RiskTask(); - caseUpdate.setId(caseTask.getId()); - if (!toInsertClue.isEmpty()) { - riskModelTaskClueService.saveClues(toInsertClue, Default.WFR_IG); - } - if (!toUpdateClue.isEmpty()) { - clueRepository.updateBatchById(toUpdateClue); - } - if (!toUpdatePerson.isEmpty()) { - riskPersonalRepository.updateBatchById(toUpdatePerson); - } - controlRecordService.batchInsert(toInsertControl); - caseUpdate.setState(1); - caseUpdate.setInsertSize(toInsertClue.size()); - caseUpdate.setUpdateSize(toUpdateClue.size()); - caseUpdate.setEndTime(LocalDateTime.now()); - riskTaskRepository.updateById(caseUpdate); + riskTaskRepository.updateTask(eduTask.getId(), toInsert.size(), toUpdate.size()); } @Override public void behavior(TaskParamDomain domain) { - RiskTask task = createTask(domain.getPersons().size(), 20); - riskTaskRepository.save(task); + RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 20); LocalDateTime end = LocalDateTime.now(); LocalDateTime start = end.minusMonths(3); @@ -425,7 +238,6 @@ public class RiskTaskServiceImpl implements RiskTaskService { clueData.add(data); } List toInsert = new ArrayList<>(); - Map> toInsertMap = new HashMap<>(); List oldList = Optional.ofNullable(domain.getMap().get(20)).orElse(new ArrayList<>()); Map> oldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); @@ -433,9 +245,6 @@ public class RiskTaskServiceImpl implements RiskTaskService { List tmpList = oldMap.get(clueDatum.getIdCode()); if (tmpList == null || tmpList.isEmpty()) { toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); - List tmp = Optional.ofNullable(toInsertMap.get(clueDatum.getIdCode())).orElse(new ArrayList<>()); - tmp.add(createControlRecord(clueDatum)); - toInsertMap.put(clueDatum.getIdCode(), tmp); continue; } boolean exist = false; @@ -447,9 +256,6 @@ public class RiskTaskServiceImpl implements RiskTaskService { } if (!exist) { toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); - List tmp = Optional.ofNullable(toInsertMap.get(clueDatum.getIdCode())).orElse(new ArrayList<>()); - tmp.add(createControlRecord(clueDatum)); - toInsertMap.put(clueDatum.getIdCode(), tmp); } } StringBuilder sb = new StringBuilder(); @@ -461,8 +267,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { @Override public void riskAreaModelTask(TaskParamDomain domain) { - RiskTask task = createTask(domain.getPersons().size(), 41); - riskTaskRepository.save(task); + RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 41); List> idCards = new ArrayList<>(); // 旧的clue List oldClueList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); @@ -480,10 +285,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { personMap.put(person.getIdCode(), person); } if(idCards.isEmpty()) { - RiskTask endTask = endTask(task.getId()); - endTask.setInsertSize(0); - endTask.setUpdateSize(0); - endTask.setErrMsg("没有新增数据"); + riskTaskRepository.updateTask(task.getId(), 0,0); return; } @@ -500,10 +302,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { } if(xxList.isEmpty()) { - RiskTask endTask = endTask(task.getId()); - endTask.setInsertSize(0); - endTask.setUpdateSize(0); - endTask.setErrMsg("没有新增数据"); + riskTaskRepository.updateTask(task.getId(), 0,0); return; } @@ -525,10 +324,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { log.info("开始操作新增项:{}", toInsert.size()); riskModelTaskClueService.saveClues(toInsert, Default.FIGHT_IG); } - RiskTask endTask = endTask(task.getId()); - endTask.setInsertSize(toInsert.size()); - endTask.setUpdateSize(0); - riskTaskRepository.updateById(endTask); + riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0); } private final SupExternalDepartRepository externalDepartRepository; @@ -555,8 +351,7 @@ public class RiskTaskServiceImpl implements RiskTaskService { orgCodeMap.put(org.getDm(), org); } - RiskTask task = createTask(xxList.size(), 42); - riskTaskRepository.save(task); + RiskTask task = riskTaskRepository.create(xxList.size(), 42); List idCodes = xxList.stream().map(GBaseSYRKXX::getGmsfhm).distinct().toList(); log.info("查询用户数 : {}", idCodes.size()); @@ -757,72 +552,6 @@ public class RiskTaskServiceImpl implements RiskTaskService { return clue; } - RiskTask createTask(Integer size, Integer modelId) { - RiskTask task = new RiskTask(); - task.setModelId(modelId); - task.setStartTime(LocalDateTime.now()); - task.setState(0); - task.setScanSize(size); - return task; - } - - RiskTask endTask(Integer id) { - RiskTask task = new RiskTask(); - task.setId(id); - task.setEndTime(LocalDateTime.now()); - task.setState(1); - return task; - } - - - RiskPersonalControlRecord createControlRecord(ClueData data) { - RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); - controlRecord.setName(data.getName()); - controlRecord.setIdCode(data.getIdCode()); - controlRecord.setCreateTime(LocalDateTime.now()); - controlRecord.setControlTime(data.getEventTime()); - controlRecord.setControlDepartId(data.getDepartId()); - controlRecord.setControlDepartName(data.getDepartName()); - controlRecord.setControlTag(data.getTag()); - controlRecord.setCaseId(BhUtil.ajBh(data.getId())); - return controlRecord; - } - - RiskPersonalControlRecord createControlRecord(RiskPersonal person, GBaseAJJBXX ajxx, GBaseWFRXX gBaseWFRXX) { - RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); - controlRecord.setName(person.getName()); - controlRecord.setIdCode(person.getIdCode()); - controlRecord.setCreateTime(LocalDateTime.now()); - try { - controlRecord.setControlTime(ajxx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); - } catch (Exception e) { - log.info("报案日期转化异常"); - } - controlRecord.setControlDepartId(ajxx.getBadwiddm()); - controlRecord.setControlDepartName(ajxx.getBadwidmc()); - controlRecord.setControlTag(gBaseWFRXX.getSxzm()); - controlRecord.setCaseId("aj___" + gBaseWFRXX.getAjbh()); - return controlRecord; - } - - /** - * 判断罪名 - * - * @param charge 罪名 - * @return 罪名 - */ - String chargeContain(String charge) { - String res = Charge.contains(charge); - if (res != null) { - return res; - } - if (charge.contains("故意伤害") && (charge.contains("重伤") || - charge.contains("死亡"))) { - return "涉故意伤害致人重伤或死亡"; - } - return null; - } - RiskPersonal createPerson(GBaseSYRKXX xx, String tag, Map orgCodeMap, Map orgIdMap,Map jqExternalDepart) { RiskPersonal person = new RiskPersonal(); person.setName(xx.getXm());