From bd639cd3cf15addf73c1d83428f4c414bda70621 Mon Sep 17 00:00:00 2001 From: yanglin Date: Thu, 20 Feb 2025 11:38:17 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3581:=20=E4=BF=AE=E5=A4=8D=E5=8D=B0?= =?UTF-8?q?=E7=AB=A0=E7=8A=B6=E6=80=81=E5=90=8C=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ess/server/ess/ContractManager.java | 22 ++++++++++--------- .../nanopart/ess/server/ess/EssService.java | 21 +++++++++++------- 2 files changed, 25 insertions(+), 18 deletions(-) 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 4cbbcbde..7621efe8 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 @@ -20,6 +20,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; import java.util.Arrays; import java.util.List; @@ -43,8 +44,8 @@ public class ContractManager { private final EssBroadcaster essBroadcaster; private final ContractSupport contractSupport; private final EssLogDao essLogDao; + private final TransactionTemplate transactionTemplate; - @Transactional public CreateContractByFileResponse createContractByFile(CreateContractByFileRequest request) { essLogDao.logRequest("createContractByFile", request.getBizCode(), request); @@ -61,15 +62,16 @@ public class ContractManager { .collect(toList()); for (int i = 0; i < contract.approverSize(); i++) contract.getApprover(i).setEssRecipientId(essRecipientIds.get(i)); - essContractDao.setEssContractCreated( - contract.getId(), essResponse.getFlowId(), - essFileIds, contract.getApprovers()); - contract = essContractDao.getOrThrow(essResponse.getFlowId()); - essBroadcaster.fireContractStateChanged(contract); - CreateContractByFileResponse response = new CreateContractByFileResponse(); - response.setEssContractId(essResponse.getFlowId()); - response.setEssRecipientIds(essRecipientIds); - return response; + return transactionTemplate.execute(unused -> { + essContractDao.setEssContractCreated( + contract.getId(), essResponse.getFlowId(), + essFileIds, contract.getApprovers()); + essBroadcaster.fireContractStateChanged(contract); + CreateContractByFileResponse response = new CreateContractByFileResponse(); + response.setEssContractId(essResponse.getFlowId()); + response.setEssRecipientIds(essRecipientIds); + return response; + }); } catch (TencentCloudSDKException | ServiceException e) { log.warn("创建合同失败", e); if (contract != null) 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 a2004544..281073eb 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 @@ -29,6 +29,7 @@ import cn.axzo.nanopart.ess.server.utils.BizAssertions; import com.tencentcloudapi.essbasic.v20210526.models.CreateSignUrlsResponse; import com.tencentcloudapi.essbasic.v20210526.models.SignUrlInfo; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import static cn.axzo.nanopart.ess.server.utils.BizAssertions.fail; /** * @author yanglin */ +@Slf4j @Service @RequiredArgsConstructor public class EssService { @@ -165,14 +167,17 @@ public class EssService { public void maybeUploadContractToOss(EssContract contract) { essSupport.asyncExec(() -> { - EssContract effectiveContract = essContractDao.findOrNull(contract.getEssContractId()); - if (!effectiveContract.isFinalState() - || StringUtils.isNotBlank(effectiveContract.getOssFileKey())) - return; - String pdfUrl = getContractPDFUrlFromEss(effectiveContract); - String fileName = String.format("%s.pdf", effectiveContract.getContractName()); - String fileKey = ossService.uploadToOss(pdfUrl, fileName); - essContractDao.setOssKey(effectiveContract, fileKey); + try { + EssContract c = essContractDao.findOrNull(contract.getEssContractId()); + if (c == null || !c.isFinalState() || StringUtils.isNotBlank(c.getOssFileKey())) + return; + String pdfUrl = getContractPDFUrlFromEss(c); + String fileName = String.format("%s.pdf", c.getContractName()); + String fileKey = ossService.uploadToOss(pdfUrl, fileName); + essContractDao.setOssKey(c, fileKey); + } catch (Exception e) { + log.warn("上传合同到OSS失败", e); + } }); }