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

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

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

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

Loading…
Cancel
Save