From ee22dfeaf6bdf0f6034eea3ad1f90c74faccbb14 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Sat, 7 Mar 2026 12:15:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dms):=20=E4=BC=98=E5=8C=96=E4=BF=9D?= =?UTF-8?q?=E5=85=BB=E5=B7=A5=E5=8D=95=E6=98=8E=E7=BB=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E5=92=8C=E7=A9=BA=E5=80=BC=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改数据库字段映射,将machine_id映射为device_id,maint_station_id映射为station_id - 在查询SQL中添加begin_time和end_time字段支持 - 更新条件查询中的字段名称以匹配新的数据库结构 - 修复保养工单明细回查时的空值检查逻辑 - 添加详细的日志记录以跟踪数据处理过程中的异常情况 - 实现降级处理机制,避免单条脏数据影响批量生成流程 --- .../DmsBillsMaintInstanceServiceImpl.java | 23 +++++++- .../mapper/dms/DmsBillsMaintDetailMapper.xml | 53 +++++++++++++++---- 2 files changed, 64 insertions(+), 12 deletions(-) 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