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 8a1c875..699c653 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 @@ -520,8 +520,27 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS // 创建保养工单明细项目(所有项目均为已完成状态) List insertedDetails = dmsBillsMaintDetailMapper.selectDetailList(instance.getMaintInstanceId()); ArrayList projectList = new ArrayList<>(); - for (DmsBillsMaintDetail detail : insertedDetails) { - List projects = dmsBillsMaintDetailMapper.selectPrjectIds(detail.getStationId()); + if (insertedDetails == null || insertedDetails.isEmpty()) { + log.warn("已完成保养工单明细回查为空,跳过项目生成 | planMaintCode={}, maintInstanceId={}", + planMaintCodeS, instance.getMaintInstanceId()); + } + for (DmsBillsMaintDetail detail : insertedDetails == null ? new ArrayList() : insertedDetails) { + if (detail == null) { + continue; + } + Long stationId = detail.getStationId(); + if (stationId == null) { + // Why:历史数据存在列名不一致导致的部位ID取值失败,定时任务必须降级继续,避免单条脏数据拖垮整批生成。 + log.warn("保养工单明细缺少保养部位,跳过项目生成 | planMaintCode={}, maintInstanceId={}, billsMaintDetailId={}, deviceId={}", + planMaintCodeS, instance.getMaintInstanceId(), detail.getBillsMaintDetailId(), detail.getDeviceId()); + continue; + } + List projects = dmsBillsMaintDetailMapper.selectPrjectIds(stationId); + if (projects == null || projects.isEmpty()) { + log.warn("保养部位未配置保养项目,跳过项目生成 | planMaintCode={}, maintInstanceId={}, billsMaintDetailId={}, stationId={}", + planMaintCodeS, instance.getMaintInstanceId(), detail.getBillsMaintDetailId(), stationId); + continue; + } for (DmsBaseMaintProject project : projects) { DmsBillsMaintDetailProject detailProject = new DmsBillsMaintDetailProject(); detailProject.setBillsMaintDetailId(detail.getBillsMaintDetailId()); diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml index 92a3223..d778904 100644 --- a/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml +++ b/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintDetailMapper.xml @@ -31,15 +31,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select bills_maint_detail_id, maint_instance_id, device_id, station_id, maint_standard_id, operation_description, maint_status, is_flag, remark, create_by, create_time, update_by, update_time from dms_bills_maint_detail + select + bills_maint_detail_id, + maint_instance_id, + machine_id as device_id, + maint_station_id as station_id, + maint_standard_id, + operation_description, + maint_status, + is_flag, + remark, + create_by, + create_time, + update_by, + update_time, + begin_time, + end_time + from dms_bills_maint_detail