From e1502c59a1dae9e337ca196f6a4368b9e1a6cd6c Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Thu, 5 Mar 2026 14:37:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(dms):=20=E6=B7=BB=E5=8A=A0=E4=BF=9D?= =?UTF-8?q?=E5=85=BB=E5=B7=A5=E5=8D=95=E6=98=8E=E7=BB=86=E5=8D=95=E6=9D=A1?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 insertDmsBillsMaintDetail 方法支持单条保养工单明细插入 - 重构批量插入实现,将原有 UNION ALL 方式改为子查询方式 - 添加 Oracle 11/19 兼容性处理,通过逐条插入确保序列值正确获取 - 修改服务层实现,将批量插入改为逐条插入以解决数据库兼容性问题 - 完善 Mapper 接口和 XML 映射文件的相关配置 --- .../mapper/DmsBillsMaintInstanceMapper.java | 9 +++ .../DmsBillsMaintInstanceServiceImpl.java | 13 +++- .../dms/DmsBillsMaintInstanceMapper.xml | 69 ++++++++++++++----- 3 files changed, 73 insertions(+), 18 deletions(-) diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsBillsMaintInstanceMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsBillsMaintInstanceMapper.java index ccf6c45..9275774 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsBillsMaintInstanceMapper.java +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsBillsMaintInstanceMapper.java @@ -75,6 +75,14 @@ public interface DmsBillsMaintInstanceMapper { */ public int batchDmsBillsMaintDetail(List dmsBillsMaintDetailList); + /** + * 新增保养工单明细(单条) + * + * @param dmsBillsMaintDetail 保养工单明细 + * @return 结果 + */ + int insertDmsBillsMaintDetail(DmsBillsMaintDetail dmsBillsMaintDetail); + /** * 查询最新一条保养工单,Join 第一步节点 * @@ -100,3 +108,4 @@ public interface DmsBillsMaintInstanceMapper { */ Date selectDbNow(); } + 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 5981ad1..8a1c875 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 @@ -132,7 +132,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS }); if (!billsMaintDetails.isEmpty()) { - dmsBillsMaintInstanceMapper.batchDmsBillsMaintDetail(billsMaintDetails); + insertMaintDetailsOneByOne(billsMaintDetails); } ArrayList list1 = new ArrayList<>(); List list = dmsBillsMaintDetailMapper.selectDetailList(maintInstanceId); @@ -514,7 +514,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS billsMaintDetails.add(detail); } if (!billsMaintDetails.isEmpty()) { - dmsBillsMaintInstanceMapper.batchDmsBillsMaintDetail(billsMaintDetails); + insertMaintDetailsOneByOne(billsMaintDetails); } // 创建保养工单明细项目(所有项目均为已完成状态) @@ -544,6 +544,14 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS return i; } + /** + * Oracle 11/19 兼容:逐条插入明细,确保每条记录独立获取序列值。 + */ + private void insertMaintDetailsOneByOne(List billsMaintDetails) { + for (DmsBillsMaintDetail detail : billsMaintDetails) { + dmsBillsMaintInstanceMapper.insertDmsBillsMaintDetail(detail); + } + } private boolean isOracleUniqueViolation(Throwable e) { Throwable cursor = e; while (cursor != null) { @@ -557,3 +565,4 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS } } + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintInstanceMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintInstanceMapper.xml index 9ed7857..d08ee7f 100644 --- a/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintInstanceMapper.xml +++ b/aucma-dms/src/main/resources/mapper/dms/DmsBillsMaintInstanceMapper.xml @@ -169,22 +169,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bills_maint_detail_id, maint_instance_id, machine_id, maint_station_id, maint_standard_id, operation_description, maint_status, remark, create_by, create_time, update_by, update_time ) - - select - HAIWEI.SEQ_DMS_MAINT_DETAIL.NEXTVAL, - #{item.maintInstanceId,jdbcType=NUMERIC}, - #{item.deviceId,jdbcType=NUMERIC}, - #{item.stationId,jdbcType=NUMERIC}, - #{item.maintStandardId,jdbcType=NUMERIC}, - #{item.operationDescription,jdbcType=VARCHAR}, - #{item.maintStatus,jdbcType=NUMERIC}, - #{item.remark,jdbcType=VARCHAR}, - #{item.createBy,jdbcType=NUMERIC}, - #{item.createTime,jdbcType=TIMESTAMP}, - #{item.updateBy,jdbcType=NUMERIC}, - #{item.updateTime,jdbcType=TIMESTAMP} - from dual - + select + HAIWEI.SEQ_DMS_MAINT_DETAIL.NEXTVAL, + t.maint_instance_id, + t.machine_id, + t.maint_station_id, + t.maint_standard_id, + t.operation_description, + t.maint_status, + t.remark, + t.create_by, + t.create_time, + t.update_by, + t.update_time + from ( + + select + #{item.maintInstanceId,jdbcType=NUMERIC} as maint_instance_id, + #{item.deviceId,jdbcType=NUMERIC} as machine_id, + #{item.stationId,jdbcType=NUMERIC} as maint_station_id, + #{item.maintStandardId,jdbcType=NUMERIC} as maint_standard_id, + #{item.operationDescription,jdbcType=VARCHAR} as operation_description, + #{item.maintStatus,jdbcType=NUMERIC} as maint_status, + #{item.remark,jdbcType=VARCHAR} as remark, + #{item.createBy,jdbcType=NUMERIC} as create_by, + #{item.createTime,jdbcType=TIMESTAMP} as create_time, + #{item.updateBy,jdbcType=NUMERIC} as update_by, + #{item.updateTime,jdbcType=TIMESTAMP} as update_time + from dual + + ) t + + + + SELECT HAIWEI.SEQ_DMS_MAINT_DETAIL.NEXTVAL FROM DUAL + + insert into dms_bills_maint_detail( + bills_maint_detail_id, maint_instance_id, machine_id, maint_station_id, maint_standard_id, + operation_description, maint_status, remark, create_by, create_time, update_by, update_time + ) values ( + #{billsMaintDetailId,jdbcType=NUMERIC}, + #{maintInstanceId,jdbcType=NUMERIC}, + #{deviceId,jdbcType=NUMERIC}, + #{stationId,jdbcType=NUMERIC}, + #{maintStandardId,jdbcType=NUMERIC}, + #{operationDescription,jdbcType=VARCHAR}, + #{maintStatus,jdbcType=NUMERIC}, + #{remark,jdbcType=VARCHAR}, + #{createBy,jdbcType=NUMERIC}, + #{createTime,jdbcType=TIMESTAMP}, + #{updateBy,jdbcType=NUMERIC}, + #{updateTime,jdbcType=TIMESTAMP} + ) insert all @@ -264,3 +300,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT SYSDATE FROM DUAL +