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.cc.BpmProcessCcPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.cc.BpmProcessCcSaveReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessCcDO;

import javax.validation.Valid;
import java.util.List;

/**
 * BPM 流程抄送配置 Service 接口
 *
 * @author 符溶馨
 */
public interface BpmProcessCcService {

    /**
     * 创建BPM 流程抄送配置
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createProcessCc(@Valid BpmProcessCcSaveReqVO createReqVO);

    /**
     * 更新BPM 流程抄送配置
     *
     * @param updateReqVO 更新信息
     */
    void updateProcessCc(@Valid BpmProcessCcSaveReqVO updateReqVO);

    /**
     * 删除BPM 流程抄送配置
     *
     * @param id 编号
     */
    void deleteProcessCc(Long id);

    /**
     * 获得BPM 流程抄送配置
     *
     * @param id 编号
     * @return BPM 流程抄送配置
     */
    BpmProcessCcDO getProcessCc(Long id);

    /**
     * 获得BPM 流程抄送配置分页
     *
     * @param pageReqVO 分页查询
     * @return BPM 流程抄送配置分页
     */
    PageResult<BpmProcessCcDO> getProcessCcPage(BpmProcessCcPageReqVO pageReqVO);

    /**
     * 根据流程名称查询抄送信息
     * @param name 流程名称
     * @param userId 用户编号
     * @return 抄送信息
     */
    List<BpmProcessCcDO> getCCListByName(String name, Long userId);
}