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

This commit is contained in:
yanglin 2025-02-26 16:43:28 +08:00
parent b9725fe6a1
commit 911cb2d078
2 changed files with 16 additions and 21 deletions

View File

@ -145,20 +145,22 @@ public class EssContract extends BaseEntity<EssContract> {
return approvers == null ? null : approvers.get(idx); return approvers == null ? null : approvers.get(idx);
} }
public Optional<Approver> findApproverByRecipientId(String recipientId) { public Approver getApproverOrThrow(String recipientId) {
if (approvers == null) Approver approver = approvers.stream()
return Optional.empty(); .filter(a -> a.getEssRecipientId().equals(recipientId))
return approvers.stream() .findFirst()
.filter(approver -> approver.getEssRecipientId().equals(recipientId)) .orElse(null);
.findFirst(); BizAssertions.assertNotNull(approver, "无效的签署编号: {}", recipientId);
return approver;
} }
public Optional<EssApproveDetail> findApproveDetailByRecipientId(String recipientId) { public EssApproveDetail getApproveDetailOrThrow(String recipientId) {
if (approveDetails == null) EssApproveDetail detail = approveDetails.stream()
return Optional.empty(); .filter(d -> d.getRecipientId().equals(recipientId))
return approveDetails.stream() .findFirst()
.filter(detail -> detail.getRecipientId().equals(recipientId)) .orElse(null);
.findFirst(); BizAssertions.assertNotNull(detail, "无效的签署编号: {}", recipientId);
return detail;
} }
public boolean isApproversPreset() { public boolean isApproversPreset() {

View File

@ -160,16 +160,9 @@ public class EssService {
return signUrlFun.apply(null); return signUrlFun.apply(null);
BizAssertions.assertFalse(StringUtils.isBlank(request.getRecipientId()), BizAssertions.assertFalse(StringUtils.isBlank(request.getRecipientId()),
"存在动态签署人的情况下, recipientId不能为空"); "存在动态签署人的情况下, recipientId不能为空");
Approver approver = contract EssApproveDetail approveDetail = contract.getApproveDetailOrThrow(request.getRecipientId());
.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(), "该签署位已签署, 无法再次签署"); BizAssertions.assertNotEquals(EssContractApproveState.ACCEPT, approveDetail.getState(), "该签署位已签署, 无法再次签署");
//noinspection DataFlowIssue Approver approver = contract.getApproverOrThrow(request.getRecipientId());
if (approver.getSignPerson() != null) { if (approver.getSignPerson() != null) {
BizAssertions.assertTrue(OrgPerson.equals(approver.getSignPerson(), request), "签署人员不匹配"); BizAssertions.assertTrue(OrgPerson.equals(approver.getSignPerson(), request), "签署人员不匹配");
return signUrlFun.apply(null); return signUrlFun.apply(null);