From 1153fee4fc78e374518ba1402de4004e39e2fb03 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 27 Feb 2026 15:55:45 +0800 Subject: [PATCH] =?UTF-8?q?2026-02-27=20=E8=AF=A2=E4=BB=B7=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E3=80=81=E6=B5=8B=E8=AF=95=E7=94=B3=E8=AF=B7=E3=80=81?= =?UTF-8?q?=E6=89=93=E6=A0=B7=E7=94=B3=E8=AF=B7=E4=BB=A5=E5=8F=8A=E5=88=80?= =?UTF-8?q?=E5=85=B7=E7=94=B3=E8=AF=B7=E8=AE=B0=E5=BD=95OA=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=94=BE=E9=87=8D=E5=A4=8D=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProjectToolingApplyServiceImpl.java | 12 ++++++++++++ .../impl/ProofingInformationServiceImpl.java | 18 +++++++++++++++++- .../impl/QuotationInformationServiceImpl.java | 18 +++++++++++++++++- .../impl/TestInformationServiceImpl.java | 18 +++++++++++++++++- 4 files changed, 63 insertions(+), 3 deletions(-) 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());