package cn.stylefeng.team.project.modular.filing.service;

import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.team.project.modular.filing.entity.BusinessFlow;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.add.BusinessFlowAddRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.del.BusinessFlowBatchDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.del.BusinessFlowDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.edit.BusinessFlowEditRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.edit.BusinessFlowUpdateStatusRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.query.BusinessFlowDetailRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.query.BusinessFlowListRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.query.BusinessFlowPageRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.response.BusinessFlowDetailResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.response.BusinessFlowListResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessFlow.response.BusinessFlowPageResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface BusinessFlowService extends IService<BusinessFlow> {

    Long add(BusinessFlowAddRequest businessFlowAddRequest);

    void del(BusinessFlowDelRequest businessFlowDelRequest);

    void batchDelete(BusinessFlowBatchDelRequest businessFlowBatchDelRequest);

    void edit(BusinessFlowEditRequest businessFlowEditRequest);

    BusinessFlowDetailResponse detail(BusinessFlowDetailRequest businessFlowDetailRequest);

    List<BusinessFlowListResponse> findList(BusinessFlowListRequest businessFlowListRequest);

    PageResult<BusinessFlowPageResponse> findPage(BusinessFlowPageRequest businessFlowPageRequest);

    BusinessFlowDetailResponse customDetail(BusinessFlowDetailRequest businessFlowDetailRequest);

    List<BusinessFlowListResponse> customList(BusinessFlowListRequest businessFlowListRequest);

    PageResult<BusinessFlowPageResponse> customPage(BusinessFlowPageRequest businessFlowPageRequest);

    void updateStatus(BusinessFlowUpdateStatusRequest businessFlowUpdateStatusRequest);

    Map<Long, Integer> statBusinessFlowNumber(Set<Long> businessIds);

    BusinessFlow queryBusinessLinkFlow(Long businessId);

}