package jnpf.personnels.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.base.ActionResult;
import jnpf.model.cultivate.req.paper.SavePaperReq;
import jnpf.model.personnels.dto.staff.transfer.TransferPositionCountDto;
import jnpf.model.personnels.dto.staff.transfer.TransferPositionDto;
import jnpf.model.personnels.po.FtbPersonnelsStaffTransferPosition;
import jnpf.model.personnels.req.employment.EmploymentApplyCheckDto;
import jnpf.model.personnels.req.transfer.AppQueryTransferListReq;
import jnpf.model.personnels.req.transfer.MyWebTransferCheckListReq;
import jnpf.model.personnels.req.transfer.QueryTransferListReq;
import jnpf.model.personnels.req.transfer.SaveTransferReq;
import jnpf.model.personnels.vo.app.FtbPersonnelsBubbleCountVO;

import java.util.List;

public interface FtbPersonnelsStaffTransferPositionService extends IService<FtbPersonnelsStaffTransferPosition> {
    /**
     * 查询列表
     *
     * @param req
     * @return
     */
    PageInfo<TransferPositionDto> getPageList(QueryTransferListReq req);

    /**
     * 获取详情
     *
     * @param id
     * @return
     */
    TransferPositionDto getInfo(String id);

    /**
     * 新增
     *
     * @param req
     */
    String insertData(SaveTransferReq req);

    /**
     * 修改
     *
     * @param req
     */
    void updateData(SavePaperReq req);

    /**
     * 删除
     *
     * @param id 主键
     */
    void deleteData(String id);

    /**
     * 审批
     *
     * @param dto
     */
    void approval( EmploymentApplyCheckDto dto);

    /**
     * 重新审批
     *
     * @param id
     * @param dto
     */
    void reApproval(String id, SaveTransferReq dto);

    PageInfo<TransferPositionDto> getAppPageList(AppQueryTransferListReq req);

    /**
     * web 我的调岗审批列表
     *
     * @param req
     * @return
     */
    PageInfo<TransferPositionDto> pageQueryMyCheckList(MyWebTransferCheckListReq req);

    /**
     * 我的审批统计 app
     * @return
     */
    TransferPositionCountDto queryAppMyCheckCount();

    /**
     * 我的抄送统计 app
     * @return
     */
    TransferPositionCountDto queryAppMySendCount();

    FtbPersonnelsBubbleCountVO getListCont(String flag);

    /**
     * 清除调岗数据
     * @param userIds
     */
    void clearJobTransferData(List<String> userIds);

    ActionResult<Void> dealTransferForOA(SaveTransferReq req);

    ActionResult<Void> approvalForOA(EmploymentApplyCheckDto dto);
}
