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 getApprovalConfigPage(ApprovalConfigPageReqVO pageReqVO); /** * 获得指定业务类型的审批人用户编号集合 * * @param bizType 业务类型编码 * @return 审批人用户编号集合,未配置时返回空集合 */ Set getApproverUserIds(String bizType); /** * 校验审批流程可用,并返回审批人集合 * * 校验内容:业务类型已启用审批、且已配置至少一个有效审批人。 * 供各业务模块在「提交审核」时调用。 * * @param bizType 业务类型编码 * @return 审批人用户编号集合 */ Set validateApprovalEnabledAndGetApprovers(String bizType); /** * 校验指定用户是否为该业务类型的审批人 * * 供各业务模块在「审核」时调用。 * * @param bizType 业务类型编码 * @param userId 用户编号 */ void validateApprover(String bizType, Long userId); }