From b9725fe6a161d95019a306d6d63e168ae002644d Mon Sep 17 00:00:00 2001 From: yanglin Date: Wed, 26 Feb 2025 16:40:39 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3581:=20=E8=AF=A5=E7=AD=BE=E7=BD=B2?= =?UTF-8?q?=E4=BD=8D=E5=B7=B2=E7=AD=BE=E7=BD=B2,=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=86=8D=E6=AC=A1=E7=AD=BE=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/nanopart/ess/server/entity/EssContract.java | 8 ++++++++ .../java/cn/axzo/nanopart/ess/server/ess/EssService.java | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssContract.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssContract.java index e088bb10..dab371fb 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssContract.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssContract.java @@ -153,6 +153,14 @@ public class EssContract extends BaseEntity { .findFirst(); } + public Optional findApproveDetailByRecipientId(String recipientId) { + if (approveDetails == null) + return Optional.empty(); + return approveDetails.stream() + .filter(detail -> detail.getRecipientId().equals(recipientId)) + .findFirst(); + } + public boolean isApproversPreset() { if (approvers == null) return false; diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java index 75e86ade..4e6f217c 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java @@ -2,7 +2,9 @@ package cn.axzo.nanopart.ess.server.ess; import cn.axzo.nanopart.ess.api.domain.OrgPerson; import cn.axzo.nanopart.ess.api.domain.contract.Approver; +import cn.axzo.nanopart.ess.api.domain.contract.EssApproveDetail; import cn.axzo.nanopart.ess.api.enums.Constraint; +import cn.axzo.nanopart.ess.api.enums.EssContractApproveState; import cn.axzo.nanopart.ess.api.enums.EssEmbedType.EssContext; import cn.axzo.nanopart.ess.api.enums.SignUrlEndpoint; import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest; @@ -162,6 +164,11 @@ public class EssService { .findApproverByRecipientId(request.getRecipientId()) .orElse(null); BizAssertions.assertNotNull(approver, "无效的签署编号: {}", request.getRecipientId()); + EssApproveDetail approveDetail = contract + .findApproveDetailByRecipientId(request.getRecipientId()) + // 上面已经保证了肯定存在 + .orElseThrow(InternalError::new); + BizAssertions.assertNotEquals(EssContractApproveState.ACCEPT, approveDetail.getState(), "该签署位已签署, 无法再次签署"); //noinspection DataFlowIssue if (approver.getSignPerson() != null) { BizAssertions.assertTrue(OrgPerson.equals(approver.getSignPerson(), request), "签署人员不匹配");