Merge branch 'feature/RDMP-3845' into pre

# Conflicts:
#	workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/AbstractBpmnEventListener.java
This commit is contained in:
wangli 2026-01-05 14:47:56 +08:00
commit efc2636e73
3 changed files with 32 additions and 22 deletions

View File

@ -74,5 +74,4 @@ public abstract class AbstractBpmnEventListener<T extends OperationContext> impl
.noneMatch(prefix -> entry.getKey().startsWith(prefix))) .noneMatch(prefix -> entry.getKey().startsWith(prefix)))
.collect(HashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), HashMap::putAll); .collect(HashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), HashMap::putAll);
} }
} }

View File

@ -44,6 +44,15 @@ public class RpcExternalUtil {
return result.getData(); return result.getData();
} }
public static <T> T rpcApiResultFProcessor(Supplier<cn.axzo.foundation.result.ApiResult<T>> supplier, String operationType, Object... param) {
log.info(operationType + "-Param: " + JSONUtil.toJsonStr(param));
cn.axzo.foundation.result.ApiResult<T> result = printLatency(supplier, operationType);
log.info(operationType + "-Result: " + JSONUtil.toJsonStr(result));
Assert.notNull(result, "服务调用异常");
Assert.isTrue(result.getCode() == 200, "服务调用异常:" + result.getMsg());
return result.getData();
}
/** /**
* 常用的RPC请求返回值解析如果 被请求方 返回非200会抛出异常 * 常用的RPC请求返回值解析如果 被请求方 返回非200会抛出异常
* *

View File

@ -2,13 +2,15 @@ package cn.axzo.workflow.server.controller.web.manage;
import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.BeanMapper;
import cn.axzo.maokai.api.client.OrganizationalNodeUserQueryApi; import cn.axzo.maokai.api.client.OrganizationalNodeUserQueryApi;
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
import cn.axzo.maokai.api.vo.response.OrgNodeUserBriefInfoResp;
import cn.axzo.nanopart.doc.api.conversion.DocConversionApi; import cn.axzo.nanopart.doc.api.conversion.DocConversionApi;
import cn.axzo.nanopart.doc.api.conversion.req.QueryConversionTaskRequestV2; import cn.axzo.nanopart.doc.api.conversion.req.QueryConversionTaskRequestV2;
import cn.axzo.nanopart.doc.api.conversion.req.SubmitConversionTaskRequest; import cn.axzo.nanopart.doc.api.conversion.req.SubmitConversionTaskRequest;
import cn.axzo.nanopart.doc.api.conversion.res.FileConvertResultResp; import cn.axzo.nanopart.doc.api.conversion.res.FileConvertResultResp;
import cn.axzo.nanopart.doc.api.enums.DocConversionTypeEnum; import cn.axzo.nanopart.doc.api.enums.DocConversionTypeEnum;
import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi;
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
import cn.axzo.oss.http.api.ServerFileServiceApi; import cn.axzo.oss.http.api.ServerFileServiceApi;
import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest; import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest;
import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse; import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse;
@ -190,7 +192,8 @@ public class PrintAdminController implements PrintAdminApi {
private SupportRefreshProperties refreshProperties; private SupportRefreshProperties refreshProperties;
@Resource @Resource
private RuntimeService runtimeService; private RuntimeService runtimeService;
@Resource
private OrgNodeUserApi orgNodeUserApi;
/** /**
* 查询指定流程实例是否能使用打印 * 查询指定流程实例是否能使用打印
* *
@ -457,11 +460,11 @@ public class PrintAdminController implements PrintAdminApi {
// 解析发起人 // 解析发起人
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(PRINT_VAR_PROCESS_INITIATOR, null)); BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(PRINT_VAR_PROCESS_INITIATOR, null));
if (Objects.nonNull(initiator)) { if (Objects.nonNull(initiator)) {
Optional<OrgNodeUserBriefInfoResp> user = getUserInfo(initiator); Optional<OrgNodeUserDTO> user = getUserInfo(initiator);
variables.put(PRINT_VAR_PROCESS_INITIATOR_NAME, user.isPresent() ? user.get().getRealName() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_NAME, user.isPresent() ? user.get().getRealName() : "");
variables.put(PRINT_VAR_PROCESS_INITIATOR_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : "");
variables.put(PRINT_VAR_PROCESS_INITIATOR_PHONE, user.isPresent() ? user.get().getProfile().getPhone() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_PHONE, user.isPresent() ? user.get().getPersonProfile().getPhone() : "");
variables.put(PRINT_VAR_PROCESS_INITIATOR_UNIT, user.isPresent() ? user.get().getOrganizationalUnitName() : ""); variables.put(PRINT_VAR_PROCESS_INITIATOR_UNIT, user.isPresent() ? user.get().getUnit().getName() : "");
variables.remove(PRINT_VAR_PROCESS_INITIATOR); variables.remove(PRINT_VAR_PROCESS_INITIATOR);
} }
// 填充审批日志 // 填充审批日志
@ -478,9 +481,9 @@ public class PrintAdminController implements PrintAdminApi {
Map<String, Object> taskLogMap = new HashMap<>(); Map<String, Object> taskLogMap = new HashMap<>();
taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME, taskLog.getName()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NAME, taskLog.getName());
taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE, taskLog.getNodeType().getType()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_ACTIVITY_NODE_TYPE, taskLog.getNodeType().getType());
Optional<OrgNodeUserBriefInfoResp> user = getUserInfo(taskLog.getAssigneeSnapshot()); Optional<OrgNodeUserDTO> user = getUserInfo(taskLog.getAssigneeSnapshot());
taskLogMap.put(PRINT_VAR_PROCESS_LOG_APPROVER_NAME, user.isPresent() ? user.get().getRealName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_APPROVER_NAME, user.isPresent() ? user.get().getRealName() : "");
taskLogMap.put(PRINT_VAR_PROCESS_LOG_UNIT, user.isPresent() ? user.get().getOrganizationalUnitName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_UNIT, user.isPresent() ? user.get().getUnit().getName() : "");
taskLogMap.put(PRINT_VAR_PROCESS_LOG_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : ""); taskLogMap.put(PRINT_VAR_PROCESS_LOG_POSITION, user.isPresent() && Objects.nonNull(user.get().getJob()) ? user.get().getJob().getName() : "");
taskLogMap.put(PRINT_VAR_PROCESS_LOG_ADVICE, taskLog.getAdvice()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_ADVICE, taskLog.getAdvice());
taskLogMap.put(PRINT_VAR_PROCESS_LOG_OPERATION, taskLog.getOperationDesc()); taskLogMap.put(PRINT_VAR_PROCESS_LOG_OPERATION, taskLog.getOperationDesc());
@ -493,35 +496,34 @@ public class PrintAdminController implements PrintAdminApi {
result.putAll(variables); result.putAll(variables);
} }
private Optional<OrgNodeUserBriefInfoResp> getUserInfo(BpmnTaskDelegateAssigner assigner) { private Optional<OrgNodeUserDTO> getUserInfo(BpmnTaskDelegateAssigner assigner) {
if (Objects.isNull(assigner)) { if (Objects.isNull(assigner)) {
return Optional.empty(); return Optional.empty();
} }
OrgNodeUserBriefInfoListReq req = new OrgNodeUserBriefInfoListReq(); ListOrgNodeUserReq req = new ListOrgNodeUserReq();
if (StringUtils.hasText(assigner.getTenantId())) { if (StringUtils.hasText(assigner.getTenantId())) {
req.setWorkspaceId(Long.valueOf(assigner.getTenantId())); req.setWorkspaceId(Long.valueOf(assigner.getTenantId()));
} }
if (StringUtils.hasText(assigner.getOuId())) { if (StringUtils.hasText(assigner.getOuId())) {
req.setOuId(Long.valueOf(assigner.getOuId())); req.setOrganizationalUnitId(Long.valueOf(assigner.getOuId()));
} }
if (StringUtils.hasText(assigner.getNodeId())) { if (StringUtils.hasText(assigner.getNodeId())) {
req.setOrgNodeIds(Lists.newArrayList(Long.valueOf(assigner.getNodeId()))); req.setAncestorNodeIds(Lists.newArrayList(Long.valueOf(assigner.getNodeId())));
} }
if (StringUtils.hasText(assigner.getPersonId())) { if (StringUtils.hasText(assigner.getPersonId())) {
req.setPersonIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId()))); req.setPersonIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId())));
} }
req.setNeedJob(true); req.setNeeds(ListNodeUserReq.Needs.builder().job(true).unit(true).personProfile(true).build());
req.setNeedUnit(true); req.setIncludeDeleted(true);
req.setNeedProfile(true);
req.setContainsExited(true); List<OrgNodeUserDTO> users = RpcExternalUtil.rpcApiResultFProcessor(() -> orgNodeUserApi.list(req), "查询审批人员组织信息", req).getData();
List<OrgNodeUserBriefInfoResp> users = RpcExternalUtil.rpcApiResultProcessor(() -> organizationalNodeUserQueryApi.listOrgNodeUsers(req), // RpcExternalUtil.rpcApiResultProcessor(() -> orgNodeUserApi.list(req), "查询审批人员组织信息", req);
"查询审批人员组织信息", req);
if (CollectionUtils.isEmpty(users)) { if (CollectionUtils.isEmpty(users)) {
return Optional.empty(); return Optional.empty();
} }
return users.stream().sorted(Comparator.comparing(OrgNodeUserBriefInfoResp::getExited).reversed()) return users.stream().sorted(Comparator.comparing(OrgNodeUserDTO::getIsDelete).reversed())
.collect(Collectors.toList()).stream().findFirst(); .collect(Collectors.toList()).stream().findFirst();
} }
@ -549,7 +551,7 @@ public class PrintAdminController implements PrintAdminApi {
// 解析发起人 // 解析发起人
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(PRINT_VAR_PROCESS_INITIATOR, null)); BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(variables.getOrDefault(PRINT_VAR_PROCESS_INITIATOR, null));
if (Objects.nonNull(initiator)) { if (Objects.nonNull(initiator)) {
Optional<OrgNodeUserBriefInfoResp> user = getUserInfo(initiator); Optional<OrgNodeUserDTO> user = getUserInfo(initiator);
systemVarItems.add(TableItemDTO.builder() systemVarItems.add(TableItemDTO.builder()
.label(PRINT_VAR_PROCESS_INITIATOR_NAME_DESC) .label(PRINT_VAR_PROCESS_INITIATOR_NAME_DESC)
.code(PRINT_VAR_PROCESS_INITIATOR_NAME) .code(PRINT_VAR_PROCESS_INITIATOR_NAME)
@ -560,7 +562,7 @@ public class PrintAdminController implements PrintAdminApi {
.label(PRINT_VAR_PROCESS_INITIATOR_UNIT_DESC) .label(PRINT_VAR_PROCESS_INITIATOR_UNIT_DESC)
.code(PRINT_VAR_PROCESS_INITIATOR_UNIT) .code(PRINT_VAR_PROCESS_INITIATOR_UNIT)
.type(FORM_FIELD_TYPE_INPUT) .type(FORM_FIELD_TYPE_INPUT)
.value(user.isPresent() ? user.get().getOrganizationalUnitName() : "") .value(user.isPresent() ? user.get().getUnit() : "")
.build()); .build());
} }