From b9ab8b1aa320e6221eda8491f5835f9674319bc7 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 24 Feb 2026 11:21:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(dms):=20=E4=BF=AE=E5=A4=8D=E5=B7=A1?= =?UTF-8?q?=E6=A3=80=E5=B7=A5=E5=8D=95=E5=88=9B=E5=BB=BA=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E4=BC=A0=E6=92=AD=E5=92=8C=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E9=97=AE=E9=A2=98@Transactional(propagation=20=3D=20P?= =?UTF-8?q?ropagation.REQUIRES=5FNEW,=20rollbackFor=20=3D=20Exception.clas?= =?UTF-8?q?s)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 insertCompletedInspe- 防止因未找到巡检标准对应项目ID导致的空指针异常 --- .../DmsBillsInspectInstanceServiceImpl.java | 20 ++++++++++++------- .../impl/DmsPlanInspectServiceImpl.java | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java index 18591cf..ca3b556 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java @@ -14,6 +14,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -401,7 +402,8 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta * 不依赖SecurityUtils,适合在定时任务上下文中调用 */ @Override - @Transactional(rollbackFor = Exception.class) + // @Transactional(rollbackFor = Exception.class) + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public int insertCompletedInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance) { Date now = new Date(); log.info("开始创建已完成巡检工单 | billsInspectCode={}, planInspectId={}, inspectRouteId={}, inspectType={}", @@ -456,12 +458,16 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta // 创建明细项目记录 Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(routeDetail.getInspectStandard()); - DmsInspectInstanceDetailProject detailProject = new DmsInspectInstanceDetailProject(); - detailProject.setInstanceDetailId(detail.getInstanceDetailId()); - detailProject.setInspectProjectId(projectId); - detailProject.setCreateTime(now); - detailProject.setInspectProjectStatus(DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_PROJECT_STATUS_PASS); // 1=合格 - dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(detailProject); + if (projectId != null) { + DmsInspectInstanceDetailProject detailProject = new DmsInspectInstanceDetailProject(); + detailProject.setInstanceDetailId(detail.getInstanceDetailId()); + detailProject.setInspectProjectId(projectId); + detailProject.setCreateTime(now); + detailProject.setInspectProjectStatus(DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_PROJECT_STATUS_PASS); // 1=合格 + dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(detailProject); + } else { + log.warn("未找到巡检标准对应的项目ID,跳过创建项目记录 | inspectStandard={}", routeDetail.getInspectStandard()); + } } } diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java index 004d648..19febb6 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -272,7 +272,7 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService * cron表达式:秒 分 时 日 月 周 */ @Scheduled(cron = "0 0 0 * * ?") - @Transactional(rollbackFor = Exception.class) + // @Transactional(rollbackFor = Exception.class) public void generateDailyInspectWorkOrders() { log.info("========== 开始执行巡检工单生成任务 =========="); int count = 0;