refactor(dms): 优化保养工单明细数据映射和空值处理

- 修改数据库字段映射,将machine_id映射为device_id,maint_station_id映射为station_id
- 在查询SQL中添加begin_time和end_time字段支持
- 更新条件查询中的字段名称以匹配新的数据库结构
- 修复保养工单明细回查时的空值检查逻辑
- 添加详细的日志记录以跟踪数据处理过程中的异常情况
- 实现降级处理机制,避免单条脏数据影响批量生成流程
master
zangch@mesnac.com 19 hours ago
parent 9f055a756f
commit ee22dfeaf6

@ -520,8 +520,27 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
// 创建保养工单明细项目(所有项目均为已完成状态) // 创建保养工单明细项目(所有项目均为已完成状态)
List<DmsBillsMaintDetail> insertedDetails = dmsBillsMaintDetailMapper.selectDetailList(instance.getMaintInstanceId()); List<DmsBillsMaintDetail> insertedDetails = dmsBillsMaintDetailMapper.selectDetailList(instance.getMaintInstanceId());
ArrayList<DmsBillsMaintDetailProject> projectList = new ArrayList<>(); ArrayList<DmsBillsMaintDetailProject> projectList = new ArrayList<>();
for (DmsBillsMaintDetail detail : insertedDetails) { if (insertedDetails == null || insertedDetails.isEmpty()) {
List<DmsBaseMaintProject> projects = dmsBillsMaintDetailMapper.selectPrjectIds(detail.getStationId()); log.warn("已完成保养工单明细回查为空,跳过项目生成 | planMaintCode={}, maintInstanceId={}",
planMaintCodeS, instance.getMaintInstanceId());
}
for (DmsBillsMaintDetail detail : insertedDetails == null ? new ArrayList<DmsBillsMaintDetail>() : 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<DmsBaseMaintProject> 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) { for (DmsBaseMaintProject project : projects) {
DmsBillsMaintDetailProject detailProject = new DmsBillsMaintDetailProject(); DmsBillsMaintDetailProject detailProject = new DmsBillsMaintDetailProject();
detailProject.setBillsMaintDetailId(detail.getBillsMaintDetailId()); detailProject.setBillsMaintDetailId(detail.getBillsMaintDetailId());

@ -31,15 +31,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectDmsBillsMaintDetailVo"> <sql id="selectDmsBillsMaintDetailVo">
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
</sql> </sql>
<select id="selectDmsBillsMaintDetailList" parameterType="DmsBillsMaintDetail" resultMap="DmsBillsMaintDetailResult"> <select id="selectDmsBillsMaintDetailList" parameterType="DmsBillsMaintDetail" resultMap="DmsBillsMaintDetailResult">
<include refid="selectDmsBillsMaintDetailVo"/> <include refid="selectDmsBillsMaintDetailVo"/>
<where> <where>
<if test="maintInstanceId != null "> and maint_instance_id = #{maintInstanceId}</if> <if test="maintInstanceId != null "> and maint_instance_id = #{maintInstanceId}</if>
<if test="deviceId != null "> and device_id = #{deviceId}</if> <if test="deviceId != null "> and machine_id = #{deviceId}</if>
<if test="stationId != null "> and station_id = #{stationId}</if> <if test="stationId != null "> and maint_station_id = #{stationId}</if>
<if test="maintStandardId != null "> and maint_standard_id = #{maintStandardId}</if> <if test="maintStandardId != null "> and maint_standard_id = #{maintStandardId}</if>
<if test="operationDescription != null and operationDescription != ''"> and operation_description = #{operationDescription}</if> <if test="operationDescription != null and operationDescription != ''"> and operation_description = #{operationDescription}</if>
<if test="maintStatus != null "> and maint_status = #{maintStatus}</if> <if test="maintStatus != null "> and maint_status = #{maintStatus}</if>
@ -60,8 +76,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="billsMaintDetailId != null">bills_maint_detail_id,</if> <if test="billsMaintDetailId != null">bills_maint_detail_id,</if>
<if test="maintInstanceId != null">maint_instance_id,</if> <if test="maintInstanceId != null">maint_instance_id,</if>
<if test="deviceId != null">device_id,</if> <if test="deviceId != null">machine_id,</if>
<if test="stationId != null">station_id,</if> <if test="stationId != null">maint_station_id,</if>
<if test="maintStandardId != null">maint_standard_id,</if> <if test="maintStandardId != null">maint_standard_id,</if>
<if test="operationDescription != null">operation_description,</if> <if test="operationDescription != null">operation_description,</if>
<if test="maintStatus != null">maint_status,</if> <if test="maintStatus != null">maint_status,</if>
@ -97,8 +113,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update dms_bills_maint_detail update dms_bills_maint_detail
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="maintInstanceId != null">maint_instance_id = #{maintInstanceId},</if> <if test="maintInstanceId != null">maint_instance_id = #{maintInstanceId},</if>
<if test="deviceId != null">device_id = #{deviceId},</if> <if test="deviceId != null">machine_id = #{deviceId},</if>
<if test="stationId != null">station_id = #{stationId},</if> <if test="stationId != null">maint_station_id = #{stationId},</if>
<if test="maintStandardId != null">maint_standard_id = #{maintStandardId},</if> <if test="maintStandardId != null">maint_standard_id = #{maintStandardId},</if>
<if test="operationDescription != null">operation_description = #{operationDescription},</if> <if test="operationDescription != null">operation_description = #{operationDescription},</if>
<if test="maintStatus != null">maint_status = #{maintStatus},</if> <if test="maintStatus != null">maint_status = #{maintStatus},</if>
@ -132,8 +148,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select select
dbmd.bills_maint_detail_id, dbmd.bills_maint_detail_id,
dbmd.maint_instance_id, dbmd.maint_instance_id,
dbmd.machine_id, dbmd.machine_id as device_id,
dbmd.maint_station_id, dbmd.maint_station_id as station_id,
dbmd.maint_standard_id, dbmd.maint_standard_id,
dbmd.operation_description, dbmd.operation_description,
dbmd.maint_status, dbmd.maint_status,
@ -164,7 +180,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectDetailList" resultType="com.aucma.dms.domain.DmsBillsMaintDetail" <select id="selectDetailList" resultType="com.aucma.dms.domain.DmsBillsMaintDetail"
parameterType="java.lang.Long"> parameterType="java.lang.Long">
select * from dms_bills_maint_detail where maint_instance_id = #{maintInstanceId} 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
where maint_instance_id = #{maintInstanceId}
</select> </select>
<select id="selectMainStation" resultType="com.aucma.dms.domain.DmsBaseMaintStation" <select id="selectMainStation" resultType="com.aucma.dms.domain.DmsBaseMaintStation"
parameterType="java.lang.Long"> parameterType="java.lang.Long">

Loading…
Cancel
Save