feat(REQ-3798) - 处理签章合同创建逻辑

This commit is contained in:
wangli 2025-03-06 16:27:12 +08:00
parent 9dec48a87c
commit 99ec5f738b

View File

@ -492,7 +492,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
// 移除上一次申请
removeLastRequest(visa);
// 或者指定单位下的签章人作为审批人
Map<Long, List<BpmnTaskDelegateAssigner>> stampUserMap = listOuAssignees(req);
Map<Long, List<EssSealPersonInfo>> stampUserMap = listOuAssignees(req);
// 创建电子签合同
Map<String, String> essRecipientIdMap = createContract(req, visa, stampUserMap);
@ -504,6 +504,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
// 用印申请信息
String uuid = UUID.fastUUID().toString(true);
//模型转换
Map<Long, List<BpmnTaskDelegateAssigner>> assigneeMaps = buildAssignees(stampUserMap);
List<ChangeRecordRelation> relations = req.getRequestStamps().stream().map(i -> {
ChangeRecordRelation stamp = new ChangeRecordRelation();
stamp.setVisaId(req.getVisaId());
@ -515,7 +518,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
.stampType(i.getSealType())
.cooperationShipType(ouTypeMap.getOrDefault(i.getOuId(), ""))
// 发起用印的审批
.approvalId(createEssProcessInstance(i, visa, req, essRecipientIdMap, specifyAssigneeActivity, stampUserMap))
.approvalId(createEssProcessInstance(i, visa, req, essRecipientIdMap, specifyAssigneeActivity, assigneeMaps))
.uniqueId(uuid)
.build()));
stamp.setContentExt(PROCESSING.getStatus());
@ -562,6 +565,20 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
changeRecordService.updateById(visa);
}
private Map<Long, List<BpmnTaskDelegateAssigner>> buildAssignees(Map<Long, List<EssSealPersonInfo>> stampUserMap) {
Map<Long, List<BpmnTaskDelegateAssigner>> result = new HashMap<>();
stampUserMap.forEach((key, value) -> {
if (CollectionUtils.isNotEmpty(value)) {
result.put(key, value.stream().map(u -> BpmnTaskDelegateAssigner.builder()
.personId(String.valueOf(u.getSealPerson().getPersonId()))
.ouId(String.valueOf(u.getOuId()))
.tenantId(NO_TENANT_ID)
.build()).collect(Collectors.toList()));
}
});
return result;
}
private void insertLog(UpdateVisaChangeReq req) {
if (Objects.equals(req.getVisaStampAction(), REQUEST_STAMP)) {
changeRecordLogService.addLog(ChangeRecordLog.builder()
@ -574,7 +591,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
}
}
private Map<Long, List<BpmnTaskDelegateAssigner>> listOuAssignees(VisaRequestStampReq req) {
private Map<Long, List<EssSealPersonInfo>> listOuAssignees(VisaRequestStampReq req) {
// 构建印章类型映射
Map<Long, EssSealType> stampMap = req.getRequestStamps().stream()
.collect(Collectors.toMap(
@ -598,19 +615,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
},
(existing, replacement) -> existing // 处理键冲突
));
Map<Long, List<BpmnTaskDelegateAssigner>> result = new HashMap<>();
stampUserMap.forEach((key, value) -> {
if (CollectionUtils.isNotEmpty(value)) {
result.put(key, value.stream().map(u -> BpmnTaskDelegateAssigner.builder()
.personId(String.valueOf(u.getSealPerson().getPersonId()))
.ouId(String.valueOf(u.getOuId()))
.tenantId(NO_TENANT_ID)
.build()).collect(Collectors.toList()));
}
});
return result;
return stampUserMap;
}
private void removeLastRequest(ChangeRecord visa) {
@ -629,7 +634,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
return cooperateShipResps.stream().collect(Collectors.toMap(CooperateShipResp::getOrganizationalUnitId, i -> SaasCooperateShipCooperateTypeEnum.getByCode(i.getCooperateType()).name()));
}
private Map<String, String> createContract(VisaRequestStampReq req, ChangeRecord visa, Map<Long, List<BpmnTaskDelegateAssigner>> stampUserMap) {
private Map<String, String> createContract(VisaRequestStampReq req, ChangeRecord visa, Map<Long, List<EssSealPersonInfo>> stampUserMap) {
if (StringUtils.hasText(visa.getContractId())) {
List<ChangeRecordRelation> recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP.name());
AssertUtil.notEmpty(recipientIds, "未找到签章位置信息");
@ -653,14 +658,14 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
createContractRequest.setAppCode(MSG_CENTER_APP_CODE);
createContractRequest.setBizCode(String.valueOf(visa.getId()));
List<BpmnTaskDelegateAssigner> mergedList = stampUserMap.values().stream()
List<EssSealPersonInfo> mergedList = stampUserMap.values().stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
.collect(Collectors.toList()).stream().filter(EssSealPersonInfo::isSuperAdmin).collect(Collectors.toList());
AssertUtil.notEmpty(mergedList, "无法创建签章合同,未找到签章用户");
BpmnTaskDelegateAssigner assigner = mergedList.get(0);
EssSealPersonInfo personInfo = mergedList.get(0);
OperatorInfo creator = new OperatorInfo();
creator.setOuId(Long.valueOf(assigner.getOuId()));
creator.setPersonId(Long.valueOf(assigner.getPersonId()));
creator.setOuId(personInfo.getOuId());
creator.setPersonId(personInfo.getSealPerson().getPersonId());
createContractRequest.setCreator(creator);
CreateContractByFileResponse contract = essGateway.createContract(createContractRequest);
@ -697,7 +702,8 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
ChangeRecord visa,
VisaRequestStampReq req,
Map<String, String> essRecipientIdMap,
NodesByModelVO specifyAssigneeActivity, Map<Long, List<BpmnTaskDelegateAssigner>> stampUserMap) {
NodesByModelVO specifyAssigneeActivity,
Map<Long, List<BpmnTaskDelegateAssigner>> assigneeMaps) {
List<GetWorkspaceDetailRes> workspaces = workspaceGateway.getWorkspace(GetWorkspaceDetailReq.builder()
.organizationUnitId(model.getOuId())
.type(1)
@ -708,7 +714,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
BpmnProcessInstanceCreateDTO create = new BpmnProcessInstanceCreateDTO();
create.setBusinessKey(String.valueOf(visa.getId()));
create.setProcessDefinitionKey(refreshableConfiguration.getStampProcessDefinitionKey());
List<BpmnTaskDelegateAssigner> assigners = stampUserMap.getOrDefault(model.getOuId(), new ArrayList<>());
List<BpmnTaskDelegateAssigner> assigners = assigneeMaps.getOrDefault(model.getOuId(), new ArrayList<>());
assigners.forEach(i -> i.setTenantId(String.valueOf(entWorkspace.getId())));
// 指定审批人
create.setSpecifyAssignerMap(Maps.of(specifyAssigneeActivity.getActivityId(), assigners));