diff --git a/src/main/java/com/spring/modules/Tooling/service/impl/ProjectToolingApplyServiceImpl.java b/src/main/java/com/spring/modules/Tooling/service/impl/ProjectToolingApplyServiceImpl.java index e9ff295b..63487458 100644 --- a/src/main/java/com/spring/modules/Tooling/service/impl/ProjectToolingApplyServiceImpl.java +++ b/src/main/java/com/spring/modules/Tooling/service/impl/ProjectToolingApplyServiceImpl.java @@ -328,6 +328,18 @@ public class ProjectToolingApplyServiceImpl implements ProjectToolingApplyServic @Override public void submitChange(ProjectToolApplyDaTa data) { + // 防并发重复提交:先查当前状态,只有"审批中"才允许继续 + PlmProjectToolApplyHeaderData checkData = new PlmProjectToolApplyHeaderData(); + checkData.setSite(data.getSite()); + checkData.setApplyNo(data.getApplyNo()); + PlmProjectToolApplyHeaderData current = projectToolingApplyMapper.checkToolApplyHeaderData(checkData); + if (current == null) { + throw new RuntimeException("未找到单据,applyNo: " + data.getApplyNo()); + } + if (!"审批中".equals(current.getStatus())) { + throw new RuntimeException("单据状态已变更(当前状态:" + current.getStatus() + "),请刷新页面后重试!"); + } + // 保存修改信息 projectToolingApplyMapper.updateApplyHeader(data); for (int i = 0; i < data.getDetailList().size() ; i++) { diff --git a/src/main/java/com/spring/modules/proofing/service/impl/ProofingInformationServiceImpl.java b/src/main/java/com/spring/modules/proofing/service/impl/ProofingInformationServiceImpl.java index 9cf96de3..849117fa 100644 --- a/src/main/java/com/spring/modules/proofing/service/impl/ProofingInformationServiceImpl.java +++ b/src/main/java/com/spring/modules/proofing/service/impl/ProofingInformationServiceImpl.java @@ -602,7 +602,23 @@ public class ProofingInformationServiceImpl extends ServiceImpl() + .eq(ProofingInformationEntity::getSite, data.getSite()) + .eq(ProofingInformationEntity::getProofingNo, data.getProofingNo()) + ); + if (current == null) { + throw new RuntimeException("未找到单据,proofingNo: " + data.getProofingNo()); + } + if (!"审批中".equals(current.getProofingStatus())) { + throw new RuntimeException("单据状态已变更(当前状态:" + current.getProofingStatus() + "),请刷新页面后重试!"); + } + + // 保存修改信息:排除状态类字段,防止前端脏数据覆盖流程写入的状态 + data.setProofingStatus(null); + data.setStepId(null); + data.setUpdateDate(null); lambdaUpdate().eq(ProofingInformationEntity::getSite, data.getSite()).eq(ProofingInformationEntity::getProofingNo, data.getProofingNo()).update(data); // 获取提交基础数据 Map baseData = changeManagementService.getSubmitBaseData(data.getSite(), data.getUserName(), data.getProofingNo()); diff --git a/src/main/java/com/spring/modules/quotation/service/impl/QuotationInformationServiceImpl.java b/src/main/java/com/spring/modules/quotation/service/impl/QuotationInformationServiceImpl.java index df2b0dfc..1a6da02d 100644 --- a/src/main/java/com/spring/modules/quotation/service/impl/QuotationInformationServiceImpl.java +++ b/src/main/java/com/spring/modules/quotation/service/impl/QuotationInformationServiceImpl.java @@ -777,7 +777,23 @@ public class QuotationInformationServiceImpl extends ServiceImpl() + .eq("site", data.getSite()) + .eq("quotation_batch_no", data.getQuotationBatchNo()) + ); + if (current == null) { + throw new RuntimeException("未找到单据,quotationBatchNo: " + data.getQuotationBatchNo()); + } + if (!"审批中".equals(current.getQuotationStatus())) { + throw new RuntimeException("单据状态已变更(当前状态:" + current.getQuotationStatus() + "),请刷新页面后重试!"); + } + + // 更新单据:排除状态类字段,防止前端脏数据覆盖流程写入的状态 + data.setQuotationStatus(null); + data.setStepId(null); + data.setUpdateDate(null); lambdaUpdate().eq(QuotationInformationEntity::getSite, data.getSite()).eq(QuotationInformationEntity::getQuotationBatchNo, data.getQuotationBatchNo()).update(data); // 获取提交基础数据 Map baseData = changeManagementService.getSubmitBaseData(data.getSite(), data.getUserName(), data.getQuotationBatchNo()); diff --git a/src/main/java/com/spring/modules/test/service/impl/TestInformationServiceImpl.java b/src/main/java/com/spring/modules/test/service/impl/TestInformationServiceImpl.java index b3f60197..1e27ca82 100644 --- a/src/main/java/com/spring/modules/test/service/impl/TestInformationServiceImpl.java +++ b/src/main/java/com/spring/modules/test/service/impl/TestInformationServiceImpl.java @@ -348,7 +348,23 @@ public class TestInformationServiceImpl extends ServiceImpl() + .eq("site", data.getSite()) + .eq("test_no", data.getTestNo()) + ); + if (current == null) { + throw new RuntimeException("未找到单据,test_no: " + data.getTestNo()); + } + if (!"审批中".equals(current.getTestStatus())) { + throw new RuntimeException("单据状态已变更(当前状态:" + current.getTestStatus() + "),请刷新页面后重试!"); + } + + // 更新单据:排除状态类字段,防止前端脏数据覆盖流程写入的状态 + data.setTestStatus(null); + data.setStepId(null); + data.setUpdateDate(null); lambdaUpdate().eq(TestInformationEntity::getSite, data.getSite()).eq(TestInformationEntity::getTestNo, data.getTestNo()).update(data); // 获取审批基础数据 Map baseData = changeManagementService.getSubmitBaseData(data.getSite(), data.getUserName(), data.getTestNo());