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

This commit is contained in:
yanglin 2025-03-04 15:21:54 +08:00
commit 6b28ccb7f7
2 changed files with 37 additions and 18 deletions

View File

@ -5,9 +5,11 @@ 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.GetContractDetailByContractIdRequest;
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.nanopart.ess.api.response.GetContractDetailByContractIdResponse;
import cn.azxo.framework.common.logger.MethodAroundLog;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -29,7 +31,7 @@ public class EssGateway {
private final EssApi essApi;
@MethodAroundLog(target = "maokai", source = "nanopart", value = "创建电子签合同")
@MethodAroundLog(target = "nanopart.ess", source = "nanopart.visa", value = "创建电子签合同")
public CreateContractByFileResponse createContract(CreateContractByFileRequest request) {
ApiResult<CreateContractByFileResponse> apiResult = essApi.createContractByFile(request);
if (apiResult.isSuccess() && Objects.nonNull(apiResult.getData())) {
@ -39,7 +41,7 @@ public class EssGateway {
return null;
}
@MethodAroundLog(target = "maokai", source = "nanopart", value = "查询单位已启用的印章以及授权人员列表")
@MethodAroundLog(target = "nanopart.ess", source = "nanopart.visa", value = "查询单位已启用的印章以及授权人员列表")
public List<EssOrgAndSealInfo> getOrgEnabledSeals(GetSealsRequest request) {
ApiResult<List<EssOrgAndSealInfo>> apiResult = essApi.getOrgEnabledSeals(request);
if (apiResult.isSuccess() && Objects.nonNull(apiResult.getData())) {
@ -49,9 +51,19 @@ public class EssGateway {
return null;
}
@MethodAroundLog(target = "maokai", source = "nanopart", value = "查询单位已启用的印章以及授权人员列表")
@MethodAroundLog(target = "nanopart.ess", source = "nanopart.visa", value = "查询单位已启用的印章以及授权人员列表")
public void saveContractSnapshot(SaveContractSnapshotRequest request) {
ApiResult<Void> apiResult = essApi.saveContractSnapshot(request);
AssertUtil.isTrue(apiResult.isSuccess(), apiResult.getMsg());
}
@MethodAroundLog(target = "nanopart.ess", source = "nanopart.visa", value = "获取合同详情, 通过合同id")
public GetContractDetailByContractIdResponse getContractByContractId(GetContractDetailByContractIdRequest request) {
ApiResult<GetContractDetailByContractIdResponse> apiResult = essApi.getContractByContractId(request);
if (apiResult.isSuccess() && Objects.nonNull(apiResult.getData())) {
return apiResult.getData();
}
AssertUtil.isTrue(apiResult.isSuccess(), apiResult.getMsg());
return null;
}
}

View File

@ -76,6 +76,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.groovy.util.Maps;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -489,7 +490,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
// 移除上一次申请
removeLastRequest(visa);
// 创建电子签合同
Map<Long, String> essRecipientIdMap = createContract(req, visa);
Map<String, String> essRecipientIdMap = createContract(req, visa);
// 拉取单位类型
Map<Long, String> ouTypeMap = listCooperateShipTypes(req, visa);
@ -521,13 +522,14 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
return stamp;
}).collect(Collectors.toList());
if (Objects.nonNull(essRecipientIdMap)) {
if (Objects.nonNull(essRecipientIdMap) && !StringUtils.hasText(visa.getContractId())) {
// 记录单位与其在合同中的签章位置
ChangeRecordRelation recipientRelation = new ChangeRecordRelation();
recipientRelation.setVisaId(visa.getId());
recipientRelation.setVarName(ESS_RECIPIENT_ID_MAP.name());
recipientRelation.setVarType(VisaRelationVarTypeEnum.JSON.getType());
recipientRelation.setContent(JSON.toJSONString(essRecipientIdMap));
relations.add(recipientRelation);
}
// 打印生成的 PDF 文件信息
@ -544,12 +546,15 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
saveBatch(relations);
insertLog(UpdateVisaChangeReq.builder()
.visaId(visa.getId())
.operatorId(req.getOperatorPersonId())
.operatorName(req.getOperatorPersonName())
.visaStampAction(REQUEST_STAMP)
.build());
if (!StringUtils.hasText(visa.getContractId())) {
// 仅完全重新发起时,才记录日志
insertLog(UpdateVisaChangeReq.builder()
.visaId(visa.getId())
.operatorId(req.getOperatorPersonId())
.operatorName(req.getOperatorPersonName())
.visaStampAction(REQUEST_STAMP)
.build());
}
visa.setAppliedStamp(true);
changeRecordService.updateById(visa);
@ -608,7 +613,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
if (StringUtils.hasText(visa.getContractId())) {
return;
}
deleteByVisaId(visa.getId(), Lists.newArrayList(PRINT_PDF_FILE, PROCESS_INSTANCE_OF_ESS));
deleteByVisaId(visa.getId(), Lists.newArrayList(PRINT_PDF_FILE, PROCESS_INSTANCE_OF_ESS, ESS_RECIPIENT_ID_MAP));
}
private Map<Long, String> listCooperateShipTypes(VisaRequestStampReq req, ChangeRecord visa) {
@ -618,9 +623,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
.build()).stream().collect(Collectors.toMap(CooperateShipResp::getOrganizationalUnitId, i -> SaasCooperateShipCooperateTypeEnum.getByCode(i.getCooperateType()).name()));
}
private Map<Long, String> createContract(VisaRequestStampReq req, ChangeRecord visa) {
private Map<String, String> createContract(VisaRequestStampReq req, ChangeRecord visa) {
if (StringUtils.hasText(visa.getContractId())) {
return null;
List<ChangeRecordRelation> recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP.name());
AssertUtil.notEmpty(recipientIds, "未找到签章位置信息");
return JSON.parseObject(recipientIds.get(0).getContent(), Map.class);
}
CreateContractByFileRequest createContractRequest = new CreateContractByFileRequest();
CreateContractByFile pdfFile = new CreateContractByFile();
@ -650,9 +657,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
visa.setStampStatus(VisaStampStatusEnum.WITH_PRINT);
changeRecordService.updateById(visa);
Map<Long, String> essRecipientIdMap = new HashMap<>();
Map<String, String> essRecipientIdMap = new HashMap<>();
for (int i = 0; i < req.getRequestStamps().size(); i++) {
essRecipientIdMap.put(req.getRequestStamps().get(i).getOuId(), contract.getEssRecipientIds().get(i));
essRecipientIdMap.put(String.valueOf(req.getRequestStamps().get(i).getOuId()), contract.getEssRecipientIds().get(i));
}
return essRecipientIdMap;
@ -677,7 +684,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
private String createEssProcessInstance(VisaRequestStampReq.RequestStampModel model,
ChangeRecord visa,
VisaRequestStampReq req,
Map<Long, String> essRecipientIdMap,
Map<String, String> essRecipientIdMap,
NodesByModelVO specifyAssigneeActivity, Map<Long, List<BpmnTaskDelegateAssigner>> stampUserMap) {
List<GetWorkspaceDetailRes> workspaces = workspaceGateway.getWorkspace(GetWorkspaceDetailReq.builder()
.organizationUnitId(model.getOuId())
@ -724,7 +731,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
WORKFLOW_PENDING_INITIATOR_UNIT_NAME, unitInfo.getName(),
WORKFLOW_VAR_STAMP_TYPE, model.getSealType().name(),
WORKFLOW_PENDING_STAMP_TYPE_DESC, model.getSealType().getDescription(),
WORKFLOW_VAR_STAMP_RECIPIENT, MapUtils.emptyIfNull(essRecipientIdMap).getOrDefault(model.getOuId(), ""),
WORKFLOW_VAR_STAMP_RECIPIENT, MapUtils.emptyIfNull(essRecipientIdMap).getOrDefault(String.valueOf(model.getOuId()), ""),
WORKFLOW_VAR_STAMP_CONTRACT_ID, visa.getContractId(),
WORKFLOW_PENDING_PDF_FILE_URL, req.getPdfFile().getFileUrl()
);