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 +