REQ-3581: 该签署位已签署, 无法再次签署

This commit is contained in:
yanglin 2025-02-26 16:40:39 +08:00
parent 069f6b66e6
commit b9725fe6a1
2 changed files with 15 additions and 0 deletions

View File

@ -153,6 +153,14 @@ public class EssContract extends BaseEntity<EssContract> {
.findFirst();
}
public Optional<EssApproveDetail> 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;

View File

@ -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), "签署人员不匹配");