Merge remote-tracking branch 'origin/feature/REQ-3581' into feature/REQ-3581

This commit is contained in:
yanglin 2025-02-27 15:34:48 +08:00
commit b26f34efbc
3 changed files with 38 additions and 10 deletions

View File

@ -16,15 +16,19 @@ public interface VisaConstant {
/**
* 申请用印针对单位创建的审批携带的 ouId
*/
String WORKFLOW_VAR_STAMP_OU_ID = "stamp_ou_id";
String WORKFLOW_VAR_STAMP_OU_ID = "stampOuId";
/**
* 申请用印针对单位的签章类型
*/
String WORKFLOW_VAR_STAMP_TYPE = "stamp_type";
String WORKFLOW_VAR_STAMP_TYPE = "stampType";
/**
* 申请用印针对单位的签章位置
*/
String WORKFLOW_VAR_STAMP_RECIPIENT = "stamp_recipient";
String WORKFLOW_VAR_STAMP_RECIPIENT = "stampRecipient";
/**
* 申请用印合同 ID
*/
String WORKFLOW_VAR_STAMP_CONTRACT_ID = "stampContractId";
/**
* 用于发送待办的变量名

View File

@ -1,17 +1,20 @@
package cn.axzo.nanopart.visa.server.rpc;
import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.nanopart.ess.api.EssApi;
import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo;
import cn.axzo.nanopart.ess.api.request.CreateContractByFileRequest;
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
import cn.axzo.nanopart.ess.api.request.SaveContractSnapshotRequest;
import cn.axzo.nanopart.ess.api.response.CreateContractByFileResponse;
import cn.axzo.pokonyan.util.RpcUtil;
import cn.azxo.framework.common.logger.MethodAroundLog;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* 腾讯电子签
@ -26,15 +29,29 @@ public class EssGateway {
private final EssApi essApi;
@MethodAroundLog(target = "maokai", source = "nanopart", value = "创建电子签合同")
public CreateContractByFileResponse createContract(CreateContractByFileRequest request) {
return RpcUtil.rpcApiResultProcessor(() -> essApi.createContractByFile(request), "创建电子签合同", request);
ApiResult<CreateContractByFileResponse> apiResult = essApi.createContractByFile(request);
if (apiResult.isSuccess() && Objects.nonNull(apiResult.getData())) {
return apiResult.getData();
}
AssertUtil.isTrue(apiResult.isSuccess(), apiResult.getMsg());
return null;
}
@MethodAroundLog(target = "maokai", source = "nanopart", value = "查询单位已启用的印章以及授权人员列表")
public List<EssOrgAndSealInfo> getOrgEnabledSeals(GetSealsRequest request) {
return RpcUtil.rpcApiResultProcessor(() -> essApi.getOrgEnabledSeals(request), "查询单位已启用的印章以及授权人员列表", request);
ApiResult<List<EssOrgAndSealInfo>> apiResult = essApi.getOrgEnabledSeals(request);
if (apiResult.isSuccess() && Objects.nonNull(apiResult.getData())) {
return apiResult.getData();
}
AssertUtil.isTrue(apiResult.isSuccess(), apiResult.getMsg());
return null;
}
@MethodAroundLog(target = "maokai", source = "nanopart", value = "查询单位已启用的印章以及授权人员列表")
public void saveContractSnapshot(SaveContractSnapshotRequest request) {
RpcUtil.rpcApiResultProcessor(() -> essApi.saveContractSnapshot(request), "从腾讯电子签下载合同PDF文件", request);
ApiResult<Void> apiResult = essApi.saveContractSnapshot(request);
AssertUtil.isTrue(apiResult.isSuccess(), apiResult.getMsg());
}
}

View File

@ -26,6 +26,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStampStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq;
import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
@ -100,6 +101,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPA
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS_OPERATED;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_INITIATOR_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_STAMP_CONTRACT_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_STAMP_OU_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_STAMP_RECIPIENT;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_STAMP_TYPE;
@ -462,6 +464,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
@Override
@Transactional(rollbackFor = Exception.class)
public void requestStamp(VisaRequestStampReq req) {
AssertUtil.isTrue(Objects.nonNull(req.getOperatorOuId()) && Objects.nonNull(req.getOperatorPersonId()), "操作人信息不能为空");
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
AssertUtil.notNull(visa, "变洽签单据不存在");
@ -604,6 +607,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
CreateContractByFileResponse contract = essGateway.createContract(createContractRequest);
AssertUtil.notNull(contract, "腾讯电子签合同创建失败");
visa.setContractId(contract.getEssContractId());
visa.setStampStatus(VisaStampStatusEnum.WITH_PRINT);
changeRecordService.updateById(visa);
Map<Long, String> essRecipientIdMap = new HashMap<>();
@ -667,12 +671,15 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
AssertUtil.notNull(createReq, "未找到变洽签单据");
create.setStartFormVariables(visaHelper.buildStartFormVariables(createReq));
create.setVariables(Maps.of(
Map<String, Object> variables = Maps.of(
IM_GROUP_BIZ_INFO_VISA_ID, visa.getId(),
WORKFLOW_VAR_STAMP_OU_ID, model.getOuId(),
WORKFLOW_VAR_STAMP_TYPE, model.getSealType().name(),
WORKFLOW_VAR_STAMP_RECIPIENT, MapUtils.emptyIfNull(essRecipientIdMap).getOrDefault(model.getOuId(), "")
));
WORKFLOW_VAR_STAMP_RECIPIENT, MapUtils.emptyIfNull(essRecipientIdMap).getOrDefault(model.getOuId(), ""),
WORKFLOW_VAR_STAMP_CONTRACT_ID, visa.getContractId()
);
create.setVariables(variables);
create.setPendingVariables(variables);
return workflowGateway.processInstanceCreate(create);
}