package com.cpop.oam.business.service;

import com.cpop.oam.business.bo.BusinessDisposeBo;
import com.cpop.oam.business.bo.BusinessDistributeBo;
import com.cpop.oam.business.bo.BusinessInfoPageBo;
import com.cpop.oam.business.bo.BusinessRemoveBo;
import com.cpop.oam.business.vo.BusinessInfoPageVo;
import com.cpop.oam.business.vo.BusinessPageVo;
import com.cpop.oam.business.vo.BusinessUnSignPageVo;
import com.cpop.oam.business.vo.PersonBusinessInfoVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.cpop.oam.business.entity.Business;

/**
 * Oam-事务表 服务层。
 *
 * @author DB
 * @since 2023-12-12
 */
public interface BusinessService extends IService<Business> {

    /**
     * 获取事务分页列表
     * @author DB
     * @since 2023/12/13
     * @param status 状态（0:进行中;1:已完成）
     * @return Page<BusinessPageVo>
     */
    Page<BusinessPageVo> getBusinessPage(Integer status);

    /**
     * 事务分发
     * @author DB
     * @since 2023/12/13
     * @param bo 请求数据
     */
    void businessDistribute(BusinessDistributeBo bo);

    /**
     * 获取个人事务分页列表/管理人员事务详情列表
     * @author DB
     * @since 2023/12/13
     * @param bo 请求参数
     * @return Page<BusinessInfoPageVo>
     */
    Page<BusinessInfoPageVo> getBusinessInfoPage(BusinessInfoPageBo bo);

    /**
     * 员工事务处理
     * @author DB
     * @since 2023/12/13
     * @param bo 请求
     */
    void businessDispose(BusinessDisposeBo bo);

    /**
     * 事务详情删除
     * @author DB
     * @since 2023/12/14
     * @param bo 删除参数
     */
    void businessRemove(BusinessRemoveBo bo);

    /**
     * 获取个人当前事务详情
     * @author DB
     * @since 2023/12/29
     * @param id 事务详情id
     * @return PersonBusinessInfoVo
     */
    PersonBusinessInfoVo getPersonBusinessInfoById(String id);

    /**
     * 查询未签约校区分页列表
     * @author DB
     * @since 2024/1/22
     * @param params 请求参数
     * @return Page<BusinessUnSignPageVo>
     */
    Page<BusinessUnSignPageVo> getUnSignStorePage(String params);

    /**
     * 校区签约
     * @author DB
     * @since 2024/1/22
     * @param id 主键
     */
    void storeSign(String id);
}
