feat(dms): 添加工单服务日志记录功能,工单的创建人字段应为计划的创建人字段,若没有则使用 -1L 表示系统自动创建

- 在巡检工单服务中添加SLF4J日志记录器
- 新增巡检工单时记录关键字段信息到日志
- 定时任务创建已完成巡检工单时添加详细的开始和完成日志
- 对于空的巡检路线明细数据添加错误日志记录
- 在保养工单服务中添加计划不存在的错误检查和日志
- 创建已完成保养工单时记录详细的开始和完成日志
- 优化工单创建人的逻辑,默认使用计划创建人而非固定值-1L
- 巡检和保养计划服务中统一异常日志格式,包含更多上下文信息
- 添加计划下次执行时间计算相关的警告和错误日志
- 统一所有日志消息格式,使用结构化参数传递
master
zangch@mesnac.com 6 days ago
parent a55c0eaa8b
commit 18aee3074b

@ -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<DmsBillsInspectInstance> 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<DmsInspectRouteDetail> 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;
}

@ -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<DmsPlanMaintDetail> 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<DmsPlanMaintDetail> planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList();
if (planMaintDetails == null || planMaintDetails.isEmpty()) {
log.warn("保养计划[{}]无明细数据,跳过生成工单", planMaintCode);
if (dmsPlanMaint == null) {
log.error("定时任务创建已完成保养工单失败: 未找到保养计划 | planMaintCode={}", planMaintCodeS);
return 0;
}
List<DmsPlanMaintDetail> 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;
}

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

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

Loading…
Cancel
Save