diff --git a/src/main/java/com/xujie/sys/modules/erf/data/ErfExpApplyData.java b/src/main/java/com/xujie/sys/modules/erf/data/ErfExpApplyData.java index 98087d99..a4b5e272 100644 --- a/src/main/java/com/xujie/sys/modules/erf/data/ErfExpApplyData.java +++ b/src/main/java/com/xujie/sys/modules/erf/data/ErfExpApplyData.java @@ -20,10 +20,15 @@ public class ErfExpApplyData implements Serializable { private static final long serialVersionUID = 1L; /** - * 申请单号 + * 申请单号(试验单号) */ private String applyNo; + /** + * 原始申请单号(编辑时传入,用于定位原记录;为空表示新增) + */ + private String originalApplyNo; + /** * 事业部代码 */ diff --git a/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpApplyMapper.java b/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpApplyMapper.java index deef8aa7..a208666a 100644 --- a/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpApplyMapper.java +++ b/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpApplyMapper.java @@ -121,4 +121,21 @@ public interface ErfExpApplyMapper extends BaseMapper { */ int updateAttachmentWorkOrderNo(@Param("applyNo") String applyNo, @Param("workOrderNo") String workOrderNo); + + /** 更新主表的试验单号(主键变更专用,用旧值定位) */ + void updateMainApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateFlowInstanceApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateFlowNodeInstanceApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateFlowApproveLogApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateTriConfirmApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateTriConfirmDetailApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateRawMaterialApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); + + void updateOssApplyNo(@Param("oldApplyNo") String oldApplyNo, @Param("newApplyNo") String newApplyNo); } diff --git a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java index e52cdd35..1da7166f 100644 --- a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpApplyServiceImpl.java @@ -102,27 +102,54 @@ public class ErfExpApplyServiceImpl extends ServiceImpl1?data.getBuNo().split("-")[1]:data.getBuNo()); - entity.setApplyNo(applyNo); + if (isNew) { + // 新增 entity.setStatus("草稿"); entity.setCreateTime(new Date()); entity.setUpdateTime(new Date()); String site = erfExpApplyMapper.getSiteByBu(data.getBuNo()); entity.setSite(site); this.save(entity); - log.info("新增工程实验申请单: {}", applyNo); - return applyNo; + log.info("新增工程实验申请单: {}", newApplyNo); } else { + // 修改 - 通过原始单号查找记录 + originalApplyNo = originalApplyNo.trim(); + ErfExpApply existing = this.getById(originalApplyNo); + if (existing == null) { + throw new XJException("申请单不存在: " + originalApplyNo); + } entity.setUpdateTime(new Date()); + if (!newApplyNo.equals(originalApplyNo)) { + // 试验单号发生变更: + // 第一步:级联更新所有关联表(Druid防注入不允许多语句,逐条执行) + log.info("试验单号变更: {} -> {}", originalApplyNo, newApplyNo); + erfExpApplyMapper.updateFlowInstanceApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateFlowNodeInstanceApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateFlowApproveLogApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateTriConfirmApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateTriConfirmDetailApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateRawMaterialApplyNo(originalApplyNo, newApplyNo); + erfExpApplyMapper.updateOssApplyNo(originalApplyNo, newApplyNo); + // 第二步:更新主表主键(用旧值定位,改为新值) + erfExpApplyMapper.updateMainApplyNo(originalApplyNo, newApplyNo); + } + // 第三步:更新主表其他字段(此时主键已是新值,updateById可正确定位) this.updateById(entity); - log.info("修改工程实验申请单: {}", entity.getApplyNo()); - return entity.getApplyNo(); + log.info("修改工程实验申请单: {} (原单号: {})", newApplyNo, originalApplyNo); } + return newApplyNo; } @Override @@ -1507,12 +1534,12 @@ public class ErfExpApplyServiceImpl extends ServiceImpl" + "" - + "收到邮件日期项目号实验单号项目名称" + + "收到邮件日期项目号试验单号项目名称" + "安排生产工序数量备注需求日期工程师" + "" + "" + todayStr + "" + "" + (entity.getProjectNo() != null ? entity.getProjectNo() : "") + "" - + "" + (entity.getWorkOrderNo()!=null ? entity.getWorkOrderNo() : "") + "" + + "" + (entity.getApplyNo()!=null ? entity.getApplyNo() : "") + "" + "" + (entity.getTitle() != null ? entity.getTitle() : "") + "" + "" + (entity.getProcessRequirement() != null ? entity.getProcessRequirement() : "") + "" + "" + (entity.getQuantityReq() != null ? entity.getQuantityReq() : "") + "" diff --git a/src/main/resources/mapper/erf/ErfExpApplyMapper.xml b/src/main/resources/mapper/erf/ErfExpApplyMapper.xml index fc0db588..4db0366b 100644 --- a/src/main/resources/mapper/erf/ErfExpApplyMapper.xml +++ b/src/main/resources/mapper/erf/ErfExpApplyMapper.xml @@ -466,4 +466,36 @@ ) + + UPDATE erf_exp_apply SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_flow_instance SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_flow_node_instance SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_flow_approve_log SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_exp_tri_confirm SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_exp_tri_confirm_detail SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE erf_exp_raw_material SET apply_no = #{newApplyNo} WHERE apply_no = #{oldApplyNo} + + + + UPDATE sys_oss SET order_ref2 = #{newApplyNo} WHERE order_ref2 = #{oldApplyNo} AND order_ref1 = 'ERF' + +