diff --git a/backend/crm/src/main/java/cn/cordys/crm/approval/dto/ApprovalRecordNode.java b/backend/crm/src/main/java/cn/cordys/crm/approval/dto/ApprovalRecordNode.java index dd654efac..be5ec8712 100644 --- a/backend/crm/src/main/java/cn/cordys/crm/approval/dto/ApprovalRecordNode.java +++ b/backend/crm/src/main/java/cn/cordys/crm/approval/dto/ApprovalRecordNode.java @@ -1,5 +1,6 @@ package cn.cordys.crm.approval.dto; +import cn.cordys.crm.approval.constants.MultiApproverModeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; @@ -26,6 +27,9 @@ public class ApprovalRecordNode { @Schema(description = "审批任务") private List taskNodes; + @Schema(description = "多人审批方式", allowableValues = {"ALL: 会签", "ANY: 或签", "SEQUENTIAL: 依次审批"}) + private MultiApproverModeEnum multiApproverMode; + @Schema(description = "是否退回节点") private boolean isReturnNode; diff --git a/backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java b/backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java index 31129c058..7494722d2 100644 --- a/backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java +++ b/backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java @@ -5,16 +5,15 @@ import cn.cordys.common.util.BeanUtils; import cn.cordys.common.util.CommonBeanFactory; import cn.cordys.common.util.Translator; -import cn.cordys.crm.approval.constants.ApprovalAction; import cn.cordys.crm.approval.constants.ApprovalAddSignType; import cn.cordys.crm.approval.constants.ApprovalStatus; import cn.cordys.crm.approval.constants.ApprovalTaskType; +import cn.cordys.crm.approval.constants.MultiApproverModeEnum; import cn.cordys.crm.approval.domain.*; import cn.cordys.crm.approval.dto.ApprovalCcNode; import cn.cordys.crm.approval.dto.ApprovalInstanceDetail; import cn.cordys.crm.approval.dto.ApprovalRecordNode; import cn.cordys.crm.approval.dto.ApprovalTaskNode; -import cn.cordys.crm.approval.mapper.ExtApprovalInstanceMapper; import cn.cordys.crm.system.domain.Attachment; import cn.cordys.crm.system.dto.UserSimple; import cn.cordys.crm.system.service.AttachmentService; @@ -52,6 +51,8 @@ public class ApprovalInstanceService { private AttachmentService attachmentService; @Resource private UserExtendService userExtendService; + @Resource + private BaseMapper approvalNodeApproverMapper; /** * 获取资源最新审批实例详情 @@ -203,9 +204,30 @@ private List buildApprovalRecordNodeList(List } }); + Map approverNodeMap = getApproverNodeMapByIds(sortHisNodes); + nodes.forEach(node -> { + ApprovalNodeApprover approverNode = approverNodeMap.get(node.getNodeId()); + if (approverNode != null) { + node.setMultiApproverMode(MultiApproverModeEnum.valueOf(approverNode.getMultiApproverMode())); + } + + }); return nodes; } + /** + * 获取所有审批节点集合 + * @param nodeIds 节点ID集合 + * @return 审批节点集合 + */ + private Map getApproverNodeMapByIds(List nodeIds) { + if (CollectionUtils.isEmpty(nodeIds)) { + return Map.of(); + } + List approvalNodeApprovers = approvalNodeApproverMapper.selectByIds(nodeIds); + return approvalNodeApprovers.stream().collect(Collectors.toMap(ApprovalNodeApprover::getId, n -> n)); + } + private List flatSignTask(ApprovalTask currentTask, Map> addSignTaskMap, Map signTaskMap) { if (!signTaskMap.containsKey(currentTask.getId())) { // 不存在加签链