diff --git a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/EssApproveDetail.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/EssApproveDetail.java index d80436fd..17b72732 100644 --- a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/EssApproveDetail.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/EssApproveDetail.java @@ -21,6 +21,8 @@ public class EssApproveDetail { */ private Long personId; + private String recipientId; + /** * 签署状态 */ diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/ApproverAssignType.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/ApproverAssignType.java similarity index 60% rename from ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/ApproverAssignType.java rename to ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/ApproverAssignType.java index 04454d90..ea5f46b0 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/ApproverAssignType.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/ApproverAssignType.java @@ -1,4 +1,4 @@ -package cn.axzo.nanopart.ess.server.entity.domain; +package cn.axzo.nanopart.ess.api.enums; /** * @author yanglin 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 0c07ee96..a9a6a057 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 @@ -5,7 +5,7 @@ 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.EssContractState; import cn.axzo.nanopart.ess.api.utils.YesOrNo; -import cn.axzo.nanopart.ess.server.entity.domain.ApproverAssignType; +import cn.axzo.nanopart.ess.api.enums.ApproverAssignType; import cn.axzo.nanopart.ess.server.entity.domain.AssignedApprovers; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import com.alibaba.fastjson.JSON; diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/AssignedApprovers.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/AssignedApprovers.java index 9983d3f7..c56782e6 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/AssignedApprovers.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/AssignedApprovers.java @@ -1,5 +1,6 @@ package cn.axzo.nanopart.ess.server.entity.domain; +import cn.axzo.nanopart.ess.api.enums.ApproverAssignType; import lombok.Getter; import lombok.Setter; diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/SignByOrg.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/SignByOrg.java index 4afcb084..cf5ba768 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/SignByOrg.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/domain/SignByOrg.java @@ -3,6 +3,8 @@ package cn.axzo.nanopart.ess.server.entity.domain; import cn.axzo.basics.common.exception.ServiceException; import cn.axzo.nanopart.ess.api.domain.contract.Approver; import cn.axzo.nanopart.ess.server.utils.BizAssertions; +import lombok.Getter; +import lombok.Setter; import javax.annotation.Nullable; import java.util.ArrayList; @@ -12,6 +14,7 @@ import java.util.Optional; /** * @author yanglin */ +@Setter @Getter public class SignByOrg { private final List recipientIds = new ArrayList<>(); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java index 93f7708e..f851d3cc 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java @@ -21,7 +21,7 @@ import cn.axzo.nanopart.ess.server.entity.EssOrg; import cn.axzo.nanopart.ess.server.entity.EssPerson; import cn.axzo.nanopart.ess.server.entity.EssSeal; import cn.axzo.nanopart.ess.server.entity.EssSealPerson; -import cn.axzo.nanopart.ess.server.entity.domain.ApproverAssignType; +import cn.axzo.nanopart.ess.api.enums.ApproverAssignType; import cn.axzo.nanopart.ess.server.ess.domain.JsonObjectAsString; import cn.axzo.nanopart.ess.server.ess.domain.SealPersons; import cn.axzo.nanopart.ess.server.ess.support.EssSupport; @@ -166,15 +166,15 @@ public class ContractManager { //noinspection DataFlowIssue BizAssertions.assertTrue(contract.getIsDynamicApprover().isYes(), "合同不支持动态签署"); BizAssertions.assertEquals(ApproverAssignType.ORG_WEIXIN_APP, contract.getAssignType(), "签署方式不正确"); - String assignedRecipientId = contract.getAssignedApprovers() + String recipientId = contract.getAssignedApprovers() .getSignByOrg() .assign(contract.getApprovers(), request.getOuId(), request.getRecipientId()); Approver approver = contract.getAssignedApprovers() .getSignByOrg() - .getApproverOrThrow(contract.getApprovers(), assignedRecipientId); + .getApproverOrThrow(contract.getApprovers(), recipientId); checkApproverSeals(request, approver.getSealTypes()); essContractDao.updateAssignedApprovers(contract); - return assignedRecipientId; + return recipientId; } public void checkApproverSeals(OrgPerson person, List sealTypes) { 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 035f5083..0f409146 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 @@ -106,8 +106,10 @@ public class EssService { EssPerson signPerson = essPersonDao.findOrNull(request); BizAssertions.assertNotNull(signPerson, "当前签署人员未加入单位, 无法签署"); String recipientId = contractManager.assignRecipientIdByOrg(request); + EssContract contract = essContractDao.getOrThrow(request.getEssContractId()); + EssPerson creator = contractManager.getContractCreatorOrThrow(contract); CreateSignUrlsResponse essResponse = essClient - .getContractSignUrlWeixinApp(request.getEssContractId(), signPerson, recipientId); + .getContractSignUrlWeixinApp(request.getEssContractId(), creator, recipientId); SignUrlInfo signUrlInfo = essResponse.getSignUrlInfos()[0]; return request.getUrlType() == SignUrlType.PC ? signUrlInfo.getSignQrcodeUrl() diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java index 3aa9188e..14c2326e 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java @@ -133,10 +133,13 @@ class CallbackController implements EssCallbackApi, InitializingBean { } List approveDetails = changes.getFlowApproverInfo().stream() .map(info -> { - PersonOpenId personOpenId = PersonOpenId.parse(info.getProxyOperatorOpenId()); EssApproveDetail detail = new EssApproveDetail(); - detail.setOuId(personOpenId.getOuId()); - detail.setPersonId(personOpenId.getPersonId()); + if (StringUtils.isNotBlank(info.getProxyOperatorOpenId())) { + PersonOpenId personOpenId = PersonOpenId.parse(info.getProxyOperatorOpenId()); + detail.setOuId(personOpenId.getOuId()); + detail.setPersonId(personOpenId.getPersonId()); + } + detail.setRecipientId(info.getRecipientId()); detail.setState(EssContractApproveState.fromEssCode(info.getApproveStatus())); detail.setSignOrder(info.getSignOrder()); detail.setApproveTimeMs(info.getApproveTime() * 1000); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/support/EssSupport.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/support/EssSupport.java index 9973cab3..06c9697c 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/support/EssSupport.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/support/EssSupport.java @@ -10,7 +10,7 @@ import cn.axzo.nanopart.ess.api.enums.EssPersonState; import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest; import cn.axzo.nanopart.ess.api.request.CreateContractRequest; import cn.axzo.nanopart.ess.api.utils.YesOrNo; -import cn.axzo.nanopart.ess.server.entity.domain.ApproverAssignType; +import cn.axzo.nanopart.ess.api.enums.ApproverAssignType; import cn.axzo.nanopart.ess.server.entity.domain.AssignedApprovers; import cn.axzo.nanopart.ess.server.entity.EssContract; import cn.axzo.nanopart.ess.server.entity.EssOrg;