package cn.iocoder.yudao.module.bpm.service.definition; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.autoapprove.BpmProcessAutoApproveConfigPageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.autoapprove.BpmProcessAutoApproveConfigSaveReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessAutoApproveConfigDO; import jakarta.validation.Valid; import java.util.List; /** * BPM 流程免审批配置 Service 接口 * * @author 超级管理员 */ public interface BpmProcessAutoApproveService { /** * 全局总开关在上述配置表中占用的流程 Key * * 该 Key 不对应任何真实流程,仅作为「所有流程一律免审批」的总闸标记 */ String GLOBAL_KEY = "*"; /** * 判断指定流程是否开启了免审批 * * 判定顺序:全局总开关优先,其次看该流程自己的开关。 * * 注意:本方法只回答「开关是否打开」,不判断流程是否已部署。 * 流程未部署时,创建流程实例阶段就会抛出 PROCESS_DEFINITION_NOT_EXISTS,走不到本方法。 * * @param processDefinitionKey 流程定义的 Key * @return 是否免审批 */ boolean isAutoApprove(String processDefinitionKey); /** * 是否开启了全局免审批总开关 * * @return 是否开启 */ boolean isGlobalAutoApprove(); /** * 设置全局免审批总开关 * * 开启后所有流程一律免审批(优先于各流程自己的开关); * 关闭后恢复为按各流程自己的开关判定。 * * @param autoApprove 是否开启 * @param remark 备注 */ void updateGlobalAutoApprove(Boolean autoApprove, String remark); /** * 按流程定义的 Key 设置免审批开关(不存在则新增,存在则更新) * * 供「流程模型」列表的行内开关直接调用,无需先查询配置编号。 * * @param processDefinitionKey 流程定义的 Key * @param autoApprove 是否免审批 * @param remark 备注 */ void updateAutoApproveByKey(String processDefinitionKey, Boolean autoApprove, String remark); /** * 获得全部免审批配置 * * 供前端一次性拉取「流程 Key -> 是否免审批」的映射关系 * * @return 配置列表 */ List getConfigList(); /** * 获得免审批配置分页 * * @param pageReqVO 分页查询 * @return 配置分页 */ PageResult getConfigPage(BpmProcessAutoApproveConfigPageReqVO pageReqVO); /** * 创建免审批配置 * * @param createReqVO 创建信息 * @return 编号 */ Long createConfig(@Valid BpmProcessAutoApproveConfigSaveReqVO createReqVO); /** * 更新免审批配置 * * @param updateReqVO 更新信息 */ void updateConfig(@Valid BpmProcessAutoApproveConfigSaveReqVO updateReqVO); /** * 删除免审批配置 * * @param id 编号 */ void deleteConfig(Long id); }