REQ-3581: 备份

This commit is contained in:
yanglin 2025-02-13 14:25:23 +08:00
parent ccf8d6d78e
commit 41fdf526f6
5 changed files with 30 additions and 21 deletions

View File

@ -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<EssContractMapper, EssContract>
.update();
}
public void updateState(String essContractId, EssContractState state, List<EssApproverDetail> details) {
public void updateState(EssContract contract, EssContractState state, List<EssApproverDetail> 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();

View File

@ -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());

View File

@ -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<String> 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<EssApproverDetail> 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);
}
}

View File

@ -187,7 +187,8 @@ public class EssClient implements InitializingBean {
String createContractByFile(EssPerson superAdmin,
List<String> contractFileIds,
CreateContractInfo contractInfo) throws TencentCloudSDKException {
CreateContractInfo contractInfo,
String customerData) throws TencentCloudSDKException {
Map<Long, OrganizationalUnitVO> 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.<ChannelCreateFlowByFilesResponse>invocation()
.context("ChannelCreateFlowByFiles")
.subject(contractInfo.getContractName())

View File

@ -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<CallbackType, CallbackHandler> 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 -> {