fix(dms): 修复巡检工单创建中的事务传播和空指针问题@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)

- 修改 insertCompletedInspe- 防止因未找到巡检标准对应项目ID导致的空指针异常
master
zangch@mesnac.com 4 days ago
parent 0f5b1947c0
commit b9ab8b1aa3

@ -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());
}
}
}

@ -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;

Loading…
Cancel
Save