From 912644f02fd3397a75642924b78b79424856220d Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Tue, 21 Jul 2026 18:27:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MailBoxCaptureService.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/biutag/supervision/service/MailBoxCaptureService.java b/src/main/java/com/biutag/supervision/service/MailBoxCaptureService.java index daa48b2..e37504b 100644 --- a/src/main/java/com/biutag/supervision/service/MailBoxCaptureService.java +++ b/src/main/java/com/biutag/supervision/service/MailBoxCaptureService.java @@ -398,44 +398,44 @@ public class MailBoxCaptureService { * 同步涉及人 */ private List syncBlame(Mail mail, String negativeId, List mailBlames) { - // 幂等性检查:已存在则跳过 - LambdaQueryWrapper existWrapper = new LambdaQueryWrapper<>(); - existWrapper.eq(NegativeBlame::getNegativeId, negativeId); - if (blameService.count(existWrapper) > 0) { - log.info("【阶段2同步】涉及人已存在,跳过: negativeId={}", negativeId); - return Collections.emptyList(); - } - // mailBlames 已由调用方在事务外查询好 if (CollectionUtil.isEmpty(mailBlames)) { return Collections.emptyList(); } + // 全量覆盖同步:先删除问题关联,再删除涉及人员 + negativeProblemRelationService.remove(negativeId); + blameService.remove(negativeId); + List result = new ArrayList<>(); for (MailBlame blame : mailBlames) { - // 通过姓名+警号查询 SupPolice 获取完整信息 + // 通过身份证号或警号查询 SupPolice 获取完整信息 LambdaQueryWrapper supPoliceLambdaQueryWrapper = new LambdaQueryWrapper<>(); - supPoliceLambdaQueryWrapper.eq(SupPolice::getIdCode, blame.getBlameIdCode()); - supPoliceLambdaQueryWrapper.last("limit 1"); + supPoliceLambdaQueryWrapper + .eq(StrUtil.isNotBlank(blame.getBlameIdCode()), SupPolice::getIdCode, blame.getBlameIdCode()) + .or() + .eq(StrUtil.isNotBlank(blame.getBlameEmpNo()), SupPolice::getEmpNo, blame.getBlameEmpNo()) + .last("limit 1"); SupPolice police = supPoliceService.getOne(supPoliceLambdaQueryWrapper); if (Objects.isNull(police)) { - log.warn("【阶段2同步】未找到该警员的数据! blameName={}, blameEmpNo={}", blame.getBlameName(), blame.getBlameEmpNo()); - continue; + log.warn("【阶段2同步】未找到该警员的数据,使用MailBlame数据补充! blameName={}, blameEmpNo={}", blame.getBlameName(), blame.getBlameEmpNo()); } NegativeBlame negativeBlame = new NegativeBlame(); negativeBlame.setBlameId(IdUtil.getSnowflakeNextIdStr()); negativeBlame.setNegativeId(negativeId); negativeBlame.setType("personal"); - negativeBlame.setBlameEmpNo(police.getEmpNo()); - negativeBlame.setBlameIdCode(police.getIdCode()); - negativeBlame.setBlameName(police.getName()); + negativeBlame.setBlameEmpNo(Objects.nonNull(police) ? police.getEmpNo() : blame.getBlameEmpNo()); + negativeBlame.setBlameIdCode(Objects.nonNull(police) ? police.getIdCode() : blame.getBlameIdCode()); + negativeBlame.setBlameName(Objects.nonNull(police) ? police.getName() : blame.getBlameName()); negativeBlame.setCrtTime(LocalDateTime.now()); negativeBlame.setUpdTime(LocalDateTime.now()); negativeBlame.setLeadEmpNo(blame.getLeaderEmpNo()); negativeBlame.setLeadName(blame.getLeaderName()); negativeBlame.setLeadIdCode(blame.getLeaderIdCode()); - negativeBlame.setIvPersonType(police.getPersonType()); + if (Objects.nonNull(police)) { + negativeBlame.setIvPersonType(police.getPersonType()); + } // 责任追究映射 if (StrUtil.isNotBlank(blame.getVerifyPunish())) {