From 41fdf526f668390c864257ce6bfb24d5614f9089 Mon Sep 17 00:00:00 2001 From: yanglin Date: Thu, 13 Feb 2025 14:25:23 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3581:=20=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/ess/server/dao/EssContractDao.java | 6 +++--- .../axzo/nanopart/ess/server/ess/Broadcaster.java | 15 +++++++-------- .../nanopart/ess/server/ess/ContractManager.java | 15 ++++++++------- .../axzo/nanopart/ess/server/ess/EssClient.java | 4 +++- .../server/ess/controller/CallbackController.java | 11 +++++++++-- 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java index f22dc307..d633375b 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java @@ -1,8 +1,8 @@ package cn.axzo.nanopart.ess.server.dao; +import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; import cn.axzo.nanopart.ess.api.enums.EssContractState; import cn.axzo.nanopart.ess.server.entity.EssContract; -import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; import cn.axzo.nanopart.ess.server.mapper.EssContractMapper; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -31,9 +31,9 @@ public class EssContractDao extends ServiceImpl .update(); } - public void updateState(String essContractId, EssContractState state, List details) { + public void updateState(EssContract contract, EssContractState state, List details) { lambdaUpdate() - .eq(EssContract::getEssContractId, essContractId) + .eq(EssContract::getId, contract.getId()) .set(EssContract::getState, state) .set(details != null, EssContract::getApproverDetails, details == null ? "[]" : JSON.toJSONString(details)) .update(); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/Broadcaster.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/Broadcaster.java index c4344cbe..13e76f1f 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/Broadcaster.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/Broadcaster.java @@ -3,8 +3,8 @@ package cn.axzo.nanopart.ess.server.ess; import cn.axzo.basics.common.BeanMapper; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventProducer; -import cn.axzo.nanopart.ess.api.enums.MQEvent; import cn.axzo.nanopart.ess.api.domain.EssContractInfo; +import cn.axzo.nanopart.ess.api.enums.MQEvent; import cn.axzo.nanopart.ess.api.mq.EssContractStateChangeMessage; import cn.axzo.nanopart.ess.server.dao.EssContractDao; import cn.axzo.nanopart.ess.server.entity.EssContract; @@ -21,16 +21,15 @@ class Broadcaster { private final EssContractDao essContractDao; protected final EventProducer eventProducer; - void fireContractStateChanged(String essContractId) { - EssContract contract = essContractDao - .find(essContractId).orElse(null); - if (contract == null) return; + void fireContractStateChanged(EssContract contract) { + EssContract reloadContract = essContractDao + .find(contract.getEssContractId()).orElse(null); EssContractStateChangeMessage message = new EssContractStateChangeMessage(); - message.setContract(BeanMapper.copyBean(contract, EssContractInfo.class)); + message.setContract(BeanMapper.copyBean(reloadContract, EssContractInfo.class)); eventProducer.send(Event.builder() .eventCode(MQEvent.ESS_CONTRACT_STATE_CHANGE.getEventCode()) - .shardingKey(essContractId) - .targetId(essContractId) + .shardingKey(contract.getEssContractId()) + .targetId(contract.getEssContractId()) .targetType("ess-contract") .data(message) .build()); 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 f5e8d54c..77323b36 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 @@ -1,6 +1,7 @@ package cn.axzo.nanopart.ess.server.ess; import cn.axzo.basics.common.exception.ServiceException; +import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; import cn.axzo.nanopart.ess.api.enums.EssContractState; import cn.axzo.nanopart.ess.api.request.CreateContractInfo; import cn.axzo.nanopart.ess.api.request.CreateContractRequest; @@ -11,7 +12,6 @@ import cn.axzo.nanopart.ess.server.dao.EssPersonDao; import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao; import cn.axzo.nanopart.ess.server.dao.domain.OuAndPersonId; import cn.axzo.nanopart.ess.server.entity.EssContract; -import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; import cn.axzo.nanopart.ess.server.entity.EssOrg; import cn.axzo.nanopart.ess.server.entity.EssPerson; import cn.axzo.nanopart.ess.server.entity.EssSealPerson; @@ -53,9 +53,10 @@ public class ContractManager { EssPerson superAdmin = orgManager.getSuperAdminOrThrow(request.getOperator().getOuId()); List essFileIds = essClient.uploadFile( superAdmin, UploadFileBusinessType.DOCUMENT, request.getByFile().getBase64Files()); - String essContractId = essClient.createContractByFile(superAdmin, essFileIds, request.getByFile()); + String essContractId = essClient.createContractByFile( + superAdmin, essFileIds, request.getByFile(), contract.getId() + ""); essContractDao.setEssContractCreated(contract.getId(), essFileIds, essContractId); - broadcaster.fireContractStateChanged(contract.getEssContractId()); + broadcaster.fireContractStateChanged(contract); return essContractId; } catch (TencentCloudSDKException e) { log.warn("创建合同失败", e); @@ -110,11 +111,11 @@ public class ContractManager { } } - public void updateContractState(String essContractId, + public void updateContractState(EssContract contract, EssContractState state, List details) { - essContractDao.updateState(essContractId, state, details); - broadcaster.fireContractStateChanged(essContractId); + essContractDao.updateState(contract, state, details); + broadcaster.fireContractStateChanged(contract); } public void revokeContract(RevokeContractRequest request) { @@ -127,7 +128,7 @@ public class ContractManager { .find(contract.getCreatorOuId(), contract.getCreatorPersonId(), false) .orElse(null); essClient.revokeContract(creator, contract.getEssContractId(), request.getReason()); - essContractDao.updateState(request.getEssContractId(), EssContractState.CANCEL, null); + essContractDao.updateState(contract, EssContractState.CANCEL, null); } } \ No newline at end of file diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java index 10075860..b91f1022 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java @@ -187,7 +187,8 @@ public class EssClient implements InitializingBean { String createContractByFile(EssPerson superAdmin, List contractFileIds, - CreateContractInfo contractInfo) throws TencentCloudSDKException { + CreateContractInfo contractInfo, + String customerData) throws TencentCloudSDKException { Map orgProfiles = essSupport .getOrgProfiles(contractInfo.getApprovers().stream() .map(ApproverInfo::getOuId) @@ -230,6 +231,7 @@ public class EssClient implements InitializingBean { request.setFileIds(contractFileIds.toArray(new String[0])); request.setFlowApprovers(approvers.toArray(new FlowApproverInfo[0])); request.setUnordered(!contractInfo.isSignOrdered()); + request.setCustomerData(customerData); ChannelCreateFlowByFilesResponse response = call(Invocation.invocation() .context("ChannelCreateFlowByFiles") .subject(contractInfo.getContractName()) 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 a5dbd0cb..dad37640 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 @@ -2,6 +2,7 @@ package cn.axzo.nanopart.ess.server.ess.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.ess.api.EssCallbackApi; +import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; import cn.axzo.nanopart.ess.api.enums.EssContractApproveState; import cn.axzo.nanopart.ess.api.enums.EssContractState; import cn.axzo.nanopart.ess.api.enums.EssSealState; @@ -9,8 +10,9 @@ import cn.axzo.nanopart.ess.api.enums.EssSealType; import cn.axzo.nanopart.ess.api.request.CallbackRequest; import cn.axzo.nanopart.ess.api.request.CallbackRequest.OrgAuthorizationFinish; import cn.axzo.nanopart.ess.api.request.CallbackRequest.SuperAdminChanged; +import cn.axzo.nanopart.ess.server.dao.EssContractDao; import cn.axzo.nanopart.ess.server.dao.EssLogDao; -import cn.axzo.nanopart.ess.api.domain.EssApproverDetail; +import cn.axzo.nanopart.ess.server.entity.EssContract; import cn.axzo.nanopart.ess.server.entity.EssLog; import cn.axzo.nanopart.ess.server.ess.ContractManager; import cn.axzo.nanopart.ess.server.ess.OrgManager; @@ -47,6 +49,7 @@ class CallbackController implements EssCallbackApi, InitializingBean { private final OrgManager orgManager; private final ContractManager contractManager; private final EssLogDao essLogDao; + private final EssContractDao essContractDao; private final TransactionTemplate transactionTemplate; private final Map handlers = new HashMap<>(); @@ -118,7 +121,11 @@ class CallbackController implements EssCallbackApi, InitializingBean { return detail; }) .collect(toList()); - contractManager.updateContractState(changes.getFlowId(), state, details); + EssContract contract = essContractDao.find(changes.getFlowId()).orElse(null); + if (contract == null) + contract = essContractDao.getById(Long.parseLong(changes.getCustomerData())); + if (contract != null) + contractManager.updateContractState(contract, state, details); return changes.getFlowId(); }); registerHandler(CallbackType.SUPER_ADMIN_CHANGED, request -> {