1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package cn.iocoder.yudao.module.system.service.approval;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.approval.vo.ApprovalConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.approval.vo.ApprovalConfigRespVO;
import cn.iocoder.yudao.module.system.controller.admin.approval.vo.ApprovalConfigSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.approval.ApprovalConfigDO;
 
import java.util.Set;
 
/**
 * 通用审批配置 Service 接口
 *
 * @author 超级管理员
 */
public interface ApprovalConfigService {
 
    /**
     * 保存审批配置(新增或修改)
     *
     * 审批人采用整体覆盖方式保存,即传入的 userIds 即为最终结果。
     *
     * @param saveReqVO 保存信息
     * @return 配置编号
     */
    Long saveApprovalConfig(ApprovalConfigSaveReqVO saveReqVO);
 
    /**
     * 删除审批配置
     *
     * @param id 配置编号
     */
    void deleteApprovalConfig(Long id);
 
    /**
     * 获得审批配置
     *
     * @param id 配置编号
     * @return 审批配置
     */
    ApprovalConfigDO getApprovalConfig(Long id);
 
    /**
     * 按业务类型获得审批配置
     *
     * @param bizType 业务类型编码
     * @return 审批配置,不存在时返回 null
     */
    ApprovalConfigDO getApprovalConfigByBizType(String bizType);
 
    /**
     * 获得审批配置分页,含审批人信息
     *
     * @param pageReqVO 分页查询
     * @return 分页结果
     */
    PageResult<ApprovalConfigRespVO> getApprovalConfigPage(ApprovalConfigPageReqVO pageReqVO);
 
    /**
     * 获得指定业务类型的审批人用户编号集合
     *
     * @param bizType 业务类型编码
     * @return 审批人用户编号集合,未配置时返回空集合
     */
    Set<Long> getApproverUserIds(String bizType);
 
    /**
     * 校验审批流程可用,并返回审批人集合
     *
     * 校验内容:业务类型已启用审批、且已配置至少一个有效审批人。
     * 供各业务模块在「提交审核」时调用。
     *
     * @param bizType 业务类型编码
     * @return 审批人用户编号集合
     */
    Set<Long> validateApprovalEnabledAndGetApprovers(String bizType);
 
    /**
     * 校验指定用户是否为该业务类型的审批人
     *
     * 供各业务模块在「审核」时调用。
     *
     * @param bizType 业务类型编码
     * @param userId  用户编号
     */
    void validateApprover(String bizType, Long userId);
 
}