From 81cd17f1bd5482379b98b0734339588484a20ffa Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Tue, 29 Sep 2026 15:13:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BA=AB=E4=BB=BD=E8=AF=81=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/NegativeScoreService.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java index 31b8cdb..d033aea 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java @@ -171,6 +171,7 @@ public class NegativeScoreService { String formula = "%s + (%s * %s) + (%s * %s)"; Map scorePolices = new LinkedHashMap<>(); Map scoreDeparts = new LinkedHashMap<>(); + int missingIdCodeCount = 0; for (int i = 0; i < total; i++) { if (i > 0 && i % 1000 == 0) { log.info("风险指数优化重算:已处理 {}/{} 条,耗时 {} 秒", i, total, (System.currentTimeMillis() - startTime) / 1000); @@ -192,7 +193,9 @@ public class NegativeScoreService { // 保留原来的逐条查字典和一年内次数规则。 SupDictProblemType problemType = supDictContentMapper.selectOneByMaxScore(codes); LocalDateTime endTime = negative.getDiscoveryTime(); - int frequency = blameService.countByTrue(blame.getBlameIdCode(), + String idCode = blame.getBlameIdCode(); + boolean missingIdCode = idCode == null || idCode.isBlank(); + int frequency = missingIdCode ? 0 : blameService.countByTrue(idCode, problemType.getParentCode(), endTime.minusYears(1), endTime); String expression = String.format(formula, problemType.getScore(), problemType.getScore(), @@ -202,15 +205,19 @@ public class NegativeScoreService { NegativeScorePolice policeScore = new NegativeScorePolice() .setNegativeId(blame.getNegativeId()) - .setIdCode(blame.getBlameIdCode()) + .setIdCode(idCode) .setDiscoveryTime(endTime) .setBusinessTypeCode(negative.getBusinessTypeCode()) .setDepartGroupId(depart.getStatisticsGroupId()) .setCreateTime(LocalDateTime.now()) .setScore(score) .setExpression(expression); - scorePolices.merge(new PoliceScoreKey(blame.getNegativeId(), blame.getBlameIdCode()), - policeScore, (oldScore, newScore) -> oldScore.getScore() < newScore.getScore() ? newScore : oldScore); + if (missingIdCode) { + missingIdCodeCount++; + } else { + scorePolices.merge(new PoliceScoreKey(blame.getNegativeId(), idCode), + policeScore, (oldScore, newScore) -> oldScore.getScore() < newScore.getScore() ? newScore : oldScore); + } NegativeScoreDepart departScore = scoreDeparts.get(negative.getId()); if (departScore == null) { @@ -224,8 +231,8 @@ public class NegativeScoreService { } } - log.info("风险指数优化重算:处理完 {} 条,开始写入个人 {} 条、单位 {} 条,耗时 {} 秒", - total, scorePolices.size(), scoreDeparts.size(), + log.info("风险指数优化重算:处理完 {} 条,缺身份证号跳过个人 {} 条,开始写入个人 {} 条、单位 {} 条,耗时 {} 秒", + total, missingIdCodeCount, scorePolices.size(), scoreDeparts.size(), (System.currentTimeMillis() - startTime) / 1000); negativeScorePoliceService.saveBatch(scorePolices.values()); negativeScoreDepartService.saveBatch(scoreDeparts.values());