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