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 f3b4d89..2aaa75a 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -416,39 +416,42 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { continue; } jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList(); - 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)); - + List olds = personOldMap.get(person.getIdCode()); + if(olds != null) { + // 是否类型只有一个 + continue; + } + LocalDateTime eventTime = null; + StringBuilder sb = new StringBuilder("该人员存在平台涉警事件警情,相关警情接警单编号为:"); for (GBaseJJD gBaseJJD : jjdList) { - if (oldMap.get(BhUtil.jjdBh(gBaseJJD.getJjdbh())) != null) { - continue; - } - ClueData data = ClueData.builder() - .name(person.getName()) - .id(BhUtil.jjdBh(gBaseJJD.getJjdbh())) - .idCode(person.getIdCode()) - .tag("平台涉警事件") - .personId(person.getId()) - .build(); - StringBuilder sb = new StringBuilder("该人员存在平台涉警事件警情,接警单编号:" + gBaseJJD.getJjdbh()); - if (gBaseJJD.getBjnr() != null && !gBaseJJD.getBjnr().isEmpty()) { - sb.append(",报警内容;" + gBaseJJD.getBjnr()); - } - if (gBaseJJD.getCjqk() != null && !gBaseJJD.getCjqk().isEmpty()) { - sb.append(",处警情况;" + gBaseJJD.getCjqk()); - } - data.setSourceData(sb.toString()); + sb.append(gBaseJJD.getJjdbh()).append(","); try { - data.setEventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + LocalDateTime tmp = gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + if(eventTime == null) { + eventTime = tmp; + continue; + } + if (eventTime.isBefore(tmp)) { + eventTime = tmp; + } } catch (Exception ignored) { - data.setEventTime(LocalDateTime.now()); } - toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + ClueData data = ClueData.builder() + .name(person.getName()) + .id("ptsjsj") + .idCode(person.getIdCode()) + .tag("平台涉警事件") + .sourceData(sb.substring(0, sb.length()-1)) + .eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now())) + .personId(person.getId()) + .build(); + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); } log.info("保存袭警数据:{}", toInsert.size()); if (!toInsert.isEmpty()) { - clueService.saveClues(toInsert, Default.WF_IG); + clueService.saveClues(toInsert, "B28平台涉警事件"); } taskRepository.updateTask(task.getId(), toInsert.size(), 0); } 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 c4ebe66..6b670d4 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java @@ -49,11 +49,6 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { if(idCodes != null && !idCodes.isEmpty()) { queryWrapper.in(RiskPersonal::getIdCode, idCodes); } - if(weight != null && !weight.equals("1")) { - Double we = Optional.ofNullable(weight).map(Double::valueOf).orElse(1.0); - int result = riskModelTaskClueRepository.getBaseMapper().updateScoreResult(we); - log.info("修改分数"); - } List riskPersonals = personalRepository.list(queryWrapper); List rules = riskScoreRuleRepository.list(new LambdaQueryWrapper<>()); @@ -68,6 +63,21 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { List clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper() .select(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScore, RiskModelTaskClue::getScoreResult) .eq(RiskModelTaskClue::getDel, 0)); + log.info("1、修改每项得分\n2、修改人员总分"); + log.info("1、计算分项倍分"); + List updates = new ArrayList<>(); + if(weight != null && !weight.equals("1")) { + for (RiskModelTaskClue clue : clues) { + RiskModelTaskClue update = new RiskModelTaskClue(); + 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); + } + Map>> clueMap = new HashMap<>(); for (RiskModelTaskClue clue : clues) { @@ -105,15 +115,15 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { // BigDecimal n2 = new BigDecimal(Double.toString(Math.min(ruleScore.doubleValue(), riskScoreRule.getScore()))); // // BigDecimal weight = new BigDecimal(Double.toString(riskScoreRule.getWeight())); -// n2 = n2.multiply(weight).divide(new BigDecimal("100"), 2, RoundingMode.UP); +// n2 = n2.multiply(weight).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); Double ruleScore = temp.stream().mapToDouble(RiskModelTaskClue::getScoreResult).sum(); - BigDecimal rScore = new BigDecimal(riskScoreRule.getScore().toString()).multiply(new BigDecimal(weight)); + BigDecimal rScore = new BigDecimal(riskScoreRule.getScore().toString()).multiply(new BigDecimal(weight)).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP); BigDecimal n2 = new BigDecimal(Double.toString(Math.min(ruleScore, rScore.doubleValue()))); score=score.add(n2); } // BigDecimal ruleScore = new BigDecimal(Double.toString(rule.getScore())); // BigDecimal weight = new BigDecimal(Double.toString(rule.getWeight())); -// score = score.multiply(weight).divide(ruleScore, 2, RoundingMode.UP); +// score = score.multiply(weight).divide(ruleScore, 2, RoundingMode.HALF_UP); total = total.add(score); } //二次改造 @@ -135,6 +145,7 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { log.info("已完成打分: {},共计:{}", count,size); } } + personalRepository.updateBatchById(toUpdates, 10000); } }