diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 7d446de5..7361afb1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -55,6 +55,7 @@ import com.google.common.collect.Sets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.groovy.util.Maps; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -444,13 +445,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl essRecipientIdMap = new HashMap<>(); - recipientRelation.setVisaId(visa.getId()); - recipientRelation.setVarName(ESS_RECIPIENT_ID_MAP.name()); - recipientRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType()); - recipientRelation.setContent(JSON.toJSONString(essRecipientIdMap)); + Map essRecipientIdMap = createContract(req, visa); // 用印申请信息 List relations = req.getRequestStamps().stream().map(i -> { @@ -466,6 +461,15 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl { - Approver approver = new Approver(); - approver.setSealTypes(Lists.newArrayList(i.getSealType())); - return approver; - }).collect(Collectors.toList())); - - createContractRequest.setByFile(pdfFile); - createContractRequest.setAppCode(MSG_CENTER_APP_CODE); - createContractRequest.setBizCode(String.valueOf(visa.getId())); - OperatorInfo creator = new OperatorInfo(); - creator.setOuId(req.getOperatorOuId()); - creator.setPersonId(req.getOperatorPersonId()); - createContractRequest.setCreator(creator); - - CreateContractByFileResponse contract = essGateway.createContract(createContractRequest); - AssertUtil.notNull(contract, "腾讯电子签合同创建失败"); - visa.setContractId(contract.getEssContractId()); - changeRecordService.updateById(visa); + private Map createContract(VisaRequestStampReq req, ChangeRecord visa) { + if (StringUtils.hasText(visa.getContractId())) { + return null; } + CreateContractByFileRequest createContractRequest = new CreateContractByFileRequest(); + CreateContractByFile pdfFile = new CreateContractByFile(); + pdfFile.setContractName(visa.getTopic()); + try { + pdfFile.setBase64Files(Lists.newArrayList(downloadFileAndConvertToBase64(req.getPdfFile().getFileUrl()))); + } catch (Exception e) { + throw new ServiceException("拉取表单 PDF 文件失败"); + } + pdfFile.setApprovers(req.getRequestStamps().stream().map(i -> { + Approver approver = new Approver(); + approver.setSealTypes(Lists.newArrayList(i.getSealType())); + return approver; + }).collect(Collectors.toList())); + + createContractRequest.setByFile(pdfFile); + createContractRequest.setAppCode(MSG_CENTER_APP_CODE); + createContractRequest.setBizCode(String.valueOf(visa.getId())); + OperatorInfo creator = new OperatorInfo(); + creator.setOuId(req.getOperatorOuId()); + creator.setPersonId(req.getOperatorPersonId()); + createContractRequest.setCreator(creator); + + CreateContractByFileResponse contract = essGateway.createContract(createContractRequest); + AssertUtil.notNull(contract, "腾讯电子签合同创建失败"); + visa.setContractId(contract.getEssContractId()); + changeRecordService.updateById(visa); + + Map essRecipientIdMap = new HashMap<>(); + for (int i = 0; i < req.getRequestStamps().size(); i++) { + essRecipientIdMap.put(req.getRequestStamps().get(i).getOuId(), contract.getEssRecipientIds().get(i)); + } + return essRecipientIdMap; + } public static String downloadFileAndConvertToBase64(String fileUrl) throws IOException { @@ -548,7 +560,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl