From 18aee3074b710c1623b267b86b10ac50c2004ec4 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Mon, 9 Feb 2026 10:18:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(dms):=20=E6=B7=BB=E5=8A=A0=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=9C=8D=E5=8A=A1=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B7=A5=E5=8D=95=E7=9A=84=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E4=BA=BA=E5=AD=97=E6=AE=B5=E5=BA=94=E4=B8=BA=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=9A=84=E5=88=9B=E5=BB=BA=E4=BA=BA=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=EF=BC=8C=E8=8B=A5=E6=B2=A1=E6=9C=89=E5=88=99=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20-1L=20=E8=A1=A8=E7=A4=BA=E7=B3=BB=E7=BB=9F=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在巡检工单服务中添加SLF4J日志记录器 - 新增巡检工单时记录关键字段信息到日志 - 定时任务创建已完成巡检工单时添加详细的开始和完成日志 - 对于空的巡检路线明细数据添加错误日志记录 - 在保养工单服务中添加计划不存在的错误检查和日志 - 创建已完成保养工单时记录详细的开始和完成日志 - 优化工单创建人的逻辑,默认使用计划创建人而非固定值-1L - 巡检和保养计划服务中统一异常日志格式,包含更多上下文信息 - 添加计划下次执行时间计算相关的警告和错误日志 - 统一所有日志消息格式,使用结构化参数传递 --- .../DmsBillsInspectInstanceServiceImpl.java | 19 ++++++++++++++ .../DmsBillsMaintInstanceServiceImpl.java | 25 ++++++++++++++++--- .../impl/DmsPlanInspectServiceImpl.java | 19 +++++++++----- .../service/impl/DmsPlanMaintServiceImpl.java | 16 ++++++++---- 4 files changed, 64 insertions(+), 15 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 15438cb..18591cf 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 @@ -10,6 +10,8 @@ import com.aucma.dms.domain.*; import com.aucma.dms.domain.vo.DmsBillsInspectInstanceScanVo; import com.aucma.dms.mapper.*; import com.aucma.dms.service.IDmsBillsInspectInstanceService; +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.Transactional; @@ -28,6 +30,8 @@ import java.util.List; */ @Service public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInstanceService { + private static final Logger log = LoggerFactory.getLogger(DmsBillsInspectInstanceServiceImpl.class); + @Autowired private DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper; @Autowired @@ -101,6 +105,9 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT); dmsBillsInspectInstance.setCreateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUserId() :SecurityUtils.getLoginUser().getUser().getUserId()); int i = dmsBillsInspectInstanceMapper.insertDmsBillsInspectInstance(dmsBillsInspectInstance); + log.info("新增巡检工单 | inspectInstanceId={}, billsInspectCode={}, inspectRouteId={}, inspectType={}", + dmsBillsInspectInstance.getInspectInstanceId(), dmsBillsInspectInstance.getBillsInspectCode(), + dmsBillsInspectInstance.getInspectRouteId(), dmsBillsInspectInstance.getInspectType()); // List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); //新建第一步工单实例节点 DmsBillsInspectInstanceActivity dmsBillsInspectInstanceActivity = new DmsBillsInspectInstanceActivity(); @@ -397,6 +404,9 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta @Transactional(rollbackFor = Exception.class) public int insertCompletedInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance) { Date now = new Date(); + log.info("开始创建已完成巡检工单 | billsInspectCode={}, planInspectId={}, inspectRouteId={}, inspectType={}", + dmsBillsInspectInstance.getBillsInspectCode(), dmsBillsInspectInstance.getPlanInspectId(), + dmsBillsInspectInstance.getInspectRouteId(), dmsBillsInspectInstance.getInspectType()); // 1. 设置工单为已完成状态 dmsBillsInspectInstance.setCreateTime(now); @@ -427,6 +437,11 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta DmsInspectRouteDetail queryRouteDetail = new DmsInspectRouteDetail(); queryRouteDetail.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId()); List routeDetails = dmsInspectRouteDetailMapper.selectDmsInspectRouteDetailList(queryRouteDetail); + if (routeDetails == null || routeDetails.isEmpty()) { + log.error("定时任务创建已完成巡检工单: 巡检路线无设备明细 | inspectRouteId={}, billsInspectCode={}, planInspectId={}", + dmsBillsInspectInstance.getInspectRouteId(), dmsBillsInspectInstance.getBillsInspectCode(), + dmsBillsInspectInstance.getPlanInspectId()); + } for (DmsInspectRouteDetail routeDetail : routeDetails) { DmsInspectInstanceDetail detail = new DmsInspectInstanceDetail(); @@ -450,6 +465,10 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta } } + log.info("已完成巡检工单创建 | billsInspectCode={}, inspectInstanceId={}, inspectRouteId={}", + dmsBillsInspectInstance.getBillsInspectCode(), dmsBillsInspectInstance.getInspectInstanceId(), + dmsBillsInspectInstance.getInspectRouteId()); + return i; } diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java index 91795d3..897dfb2 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsBillsMaintInstanceServiceImpl.java @@ -78,8 +78,13 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS public int insertDmsBillsMaintInstance(String planMaintCode) { String planMaintCodeS = planMaintCode.replaceAll("\"", ""); DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); + if (dmsPlanMaint == null) { + log.error("创建保养工单失败: 未找到保养计划 | planMaintCode={}", planMaintCodeS); + return 0; + } List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); if (planMaintDetails == null || planMaintDetails.isEmpty()) { + log.error("创建保养工单失败: 保养计划无明细数据 | planMaintCode={}, planMaintId={}", planMaintCodeS, dmsPlanMaint.getPlanMaintId()); return 0; } @@ -413,11 +418,18 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS public int insertCompletedMaintInstance(String planMaintCode) { String planMaintCodeS = planMaintCode.replaceAll("\"", ""); DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); - List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); - if (planMaintDetails == null || planMaintDetails.isEmpty()) { - log.warn("保养计划[{}]无明细数据,跳过生成工单", planMaintCode); + if (dmsPlanMaint == null) { + log.error("定时任务创建已完成保养工单失败: 未找到保养计划 | planMaintCode={}", planMaintCodeS); return 0; } + List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); + if (planMaintDetails == null || planMaintDetails.isEmpty()) { + log.error("定时任务创建已完成保养工单失败: 保养计划无明细数据 | planMaintCode={}, planMaintId={}, maintLevel={}, maintGroup={}", + planMaintCodeS, dmsPlanMaint.getPlanMaintId(), dmsPlanMaint.getMaintLevel(), dmsPlanMaint.getMaintGroup()); + return 0; + } + log.info("开始创建已完成保养工单 | planMaintCode={}, planMaintId={}, 明细数量={}", + planMaintCodeS, dmsPlanMaint.getPlanMaintId(), planMaintDetails.size()); Date now = new Date(); DmsBillsMaintInstance instance = new DmsBillsMaintInstance(); @@ -435,7 +447,8 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS instance.setMaintSupervisor(dmsPlanMaint.getMaintSupervisor()); instance.setMaintLevel(dmsPlanMaint.getMaintLevel()); instance.setIsFlag(1L); - instance.setCreateBy(-1L); + // 创建人优先使用计划的创建人,若无则使用-1L表示系统自动创建 + instance.setCreateBy(dmsPlanMaint.getCreateBy() != null ? dmsPlanMaint.getCreateBy() : -1L); int i = dmsBillsMaintInstanceMapper.insertDmsBillsMaintInstance(instance); @@ -481,6 +494,10 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS dmsBillsMaintInstanceMapper.batchDmsProject(projectList); } + log.info("已完成保养工单创建 | planMaintCode={}, billsMaintCode={}, maintInstanceId={}, 设备明细数={}, 项目数={}", + planMaintCode, instance.getBillsMaintCode(), instance.getMaintInstanceId(), + billsMaintDetails.size(), projectList.size()); + return i; } 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 320ed2d..004d648 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 @@ -309,7 +309,8 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService instance.setInspectType(plan.getInspectType()); instance.setDeviceAmount(plan.getDeviceAmount()); instance.setPerformer(plan.getPerformer()); - instance.setCreateBy(-1L); + // 创建人优先使用计划的创建人,若无则使用-1L表示系统自动创建 + instance.setCreateBy(plan.getCreateBy() != null ? plan.getCreateBy() : -1L); // 通过Service创建已完成状态的巡检工单(含明细,路线所有设备正常) dmsBillsInspectInstanceService.insertCompletedInspectInstance(instance); @@ -320,11 +321,14 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService updateInspectPlanNextTime(plan); } catch (Exception e) { - log.error("为巡检计划[{}]生成工单失败: {}", plan.getPlanInspectCode(), e.getMessage(), e); + log.error("为巡检计划生成工单失败 | planInspectId={}, planInspectCode={}, cronExpression={}, planTime={}, inspectType={}, inspectRouteId={}, 异常信息: {}", + plan.getPlanInspectId(), plan.getPlanInspectCode(), plan.getCronExpression(), + plan.getPlanTime(), plan.getInspectType(), plan.getInspectRouteId(), + e.getMessage(), e); } } } catch (Exception e) { - log.error("查询巡检计划失败", e); + log.error("查询待执行巡检计划列表失败(selectPendingInspectPlans), 异常信息: {}", e.getMessage(), e); } log.info("========== 巡检工单生成任务完成,生成数量: {},跳过数量: {} ==========", count, skipCount); } @@ -341,13 +345,16 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService nextTime = CronUtils.getNextExecution(cronExpression); } if (nextTime == null) { - // 默认下次执行时间为明天 + log.warn("巡检计划下次执行时间计算为null, 使用默认+1天 | planInspectId={}, planInspectCode={}, cronExpression={}", + plan.getPlanInspectId(), plan.getPlanInspectCode(), cronExpression); nextTime = new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000L); } dmsPlanInspectMapper.updatePlanNextTime(plan.getPlanInspectId(), nextTime); - log.debug("更新巡检计划[{}]下次执行时间: {}", plan.getPlanInspectCode(), nextTime); + log.debug("更新巡检计划下次执行时间 | planInspectCode={}, nextTime={}", plan.getPlanInspectCode(), nextTime); } catch (Exception e) { - log.warn("更新巡检计划[{}]下次执行时间失败: {}", plan.getPlanInspectCode(), e.getMessage()); + log.error("更新巡检计划下次执行时间失败 | planInspectId={}, planInspectCode={}, cronExpression={}, 异常信息: {}", + plan.getPlanInspectId(), plan.getPlanInspectCode(), plan.getCronExpression(), + e.getMessage(), e); } } } diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java index 7804791..a286cb9 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -359,11 +359,14 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { updateMaintPlanNextTime(plan); } catch (Exception e) { - log.error("为保养计划[{}]生成工单失败: {}", plan.getPlanMaintCode(), e.getMessage(), e); + log.error("为保养计划生成工单失败 | planMaintId={}, planMaintCode={}, cronExpression={}, maintTime={}, maintLevel={}, maintGroup={}, 异常信息: {}", + plan.getPlanMaintId(), plan.getPlanMaintCode(), plan.getCronExpression(), + plan.getMaintTime(), plan.getMaintLevel(), plan.getMaintGroup(), + e.getMessage(), e); } } } catch (Exception e) { - log.error("查询保养计划失败", e); + log.error("查询待执行保养计划列表失败(selectPendingMaintPlans), 异常信息: {}", e.getMessage(), e); } log.info("========== 保养工单生成任务完成,生成数量: {},跳过数量: {} ==========", count, skipCount); } @@ -380,13 +383,16 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { nextTime = CronUtils.getNextExecution(cronExpression); } if (nextTime == null) { - // 默认下次执行时间为明天 + log.warn("保养计划下次执行时间计算为null, 使用默认+1天 | planMaintId={}, planMaintCode={}, cronExpression={}", + plan.getPlanMaintId(), plan.getPlanMaintCode(), cronExpression); nextTime = new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000L); } dmsPlanMaintMapper.updatePlanNextTime(plan.getPlanMaintId(), nextTime); - log.debug("更新保养计划[{}]下次执行时间: {}", plan.getPlanMaintCode(), nextTime); + log.debug("更新保养计划下次执行时间 | planMaintCode={}, nextTime={}", plan.getPlanMaintCode(), nextTime); } catch (Exception e) { - log.warn("更新保养计划[{}]下次执行时间失败: {}", plan.getPlanMaintCode(), e.getMessage()); + log.error("更新保养计划下次执行时间失败 | planMaintId={}, planMaintCode={}, cronExpression={}, 异常信息: {}", + plan.getPlanMaintId(), plan.getPlanMaintCode(), plan.getCronExpression(), + e.getMessage(), e); } } }