Skip to content

Commit d22ea52

Browse files
song-cc-rockfit2-zhao
authored andcommitted
feat: Add approval node multi mode
1 parent eb50c49 commit d22ea52

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

backend/crm/src/main/java/cn/cordys/crm/approval/dto/ApprovalRecordNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.cordys.crm.approval.dto;
22

3+
import cn.cordys.crm.approval.constants.MultiApproverModeEnum;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.AllArgsConstructor;
56
import lombok.Builder;
@@ -26,6 +27,9 @@ public class ApprovalRecordNode {
2627
@Schema(description = "审批任务")
2728
private List<ApprovalTaskNode> taskNodes;
2829

30+
@Schema(description = "多人审批方式", allowableValues = {"ALL: 会签", "ANY: 或签", "SEQUENTIAL: 依次审批"})
31+
private MultiApproverModeEnum multiApproverMode;
32+
2933
@Schema(description = "是否退回节点")
3034
private boolean isReturnNode;
3135

backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
import cn.cordys.common.util.BeanUtils;
66
import cn.cordys.common.util.CommonBeanFactory;
77
import cn.cordys.common.util.Translator;
8-
import cn.cordys.crm.approval.constants.ApprovalAction;
98
import cn.cordys.crm.approval.constants.ApprovalAddSignType;
109
import cn.cordys.crm.approval.constants.ApprovalStatus;
1110
import cn.cordys.crm.approval.constants.ApprovalTaskType;
11+
import cn.cordys.crm.approval.constants.MultiApproverModeEnum;
1212
import cn.cordys.crm.approval.domain.*;
1313
import cn.cordys.crm.approval.dto.ApprovalCcNode;
1414
import cn.cordys.crm.approval.dto.ApprovalInstanceDetail;
1515
import cn.cordys.crm.approval.dto.ApprovalRecordNode;
1616
import cn.cordys.crm.approval.dto.ApprovalTaskNode;
17-
import cn.cordys.crm.approval.mapper.ExtApprovalInstanceMapper;
1817
import cn.cordys.crm.system.domain.Attachment;
1918
import cn.cordys.crm.system.dto.UserSimple;
2019
import cn.cordys.crm.system.service.AttachmentService;
@@ -52,6 +51,8 @@ public class ApprovalInstanceService {
5251
private AttachmentService attachmentService;
5352
@Resource
5453
private UserExtendService userExtendService;
54+
@Resource
55+
private BaseMapper<ApprovalNodeApprover> approvalNodeApproverMapper;
5556

5657
/**
5758
* 获取资源最新审批实例详情
@@ -203,9 +204,30 @@ private List<ApprovalRecordNode> buildApprovalRecordNodeList(List<ApprovalTask>
203204
}
204205
});
205206

207+
Map<String, ApprovalNodeApprover> approverNodeMap = getApproverNodeMapByIds(sortHisNodes);
208+
nodes.forEach(node -> {
209+
ApprovalNodeApprover approverNode = approverNodeMap.get(node.getNodeId());
210+
if (approverNode != null) {
211+
node.setMultiApproverMode(MultiApproverModeEnum.valueOf(approverNode.getMultiApproverMode()));
212+
}
213+
214+
});
206215
return nodes;
207216
}
208217

218+
/**
219+
* 获取所有审批节点集合
220+
* @param nodeIds 节点ID集合
221+
* @return 审批节点集合
222+
*/
223+
private Map<String, ApprovalNodeApprover> getApproverNodeMapByIds(List<String> nodeIds) {
224+
if (CollectionUtils.isEmpty(nodeIds)) {
225+
return Map.of();
226+
}
227+
List<ApprovalNodeApprover> approvalNodeApprovers = approvalNodeApproverMapper.selectByIds(nodeIds);
228+
return approvalNodeApprovers.stream().collect(Collectors.toMap(ApprovalNodeApprover::getId, n -> n));
229+
}
230+
209231
private List<ApprovalTask> flatSignTask(ApprovalTask currentTask, Map<String, List<ApprovalAddSignTask>> addSignTaskMap, Map<String, ApprovalTask> signTaskMap) {
210232
if (!signTaskMap.containsKey(currentTask.getId())) {
211233
// 不存在加签链

0 commit comments

Comments
 (0)