package com.jeeplus.test.reimbursementsys.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.test.reimbursementsys.domain.dto.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author li-peike
 * @version 1.0.0
 * @ClassName ReimbursementSysMapper.java
 * @Description TODO
 * @createTime 2022年05月06日 10:40:00
 */
public interface ReimbursementBusinessMapper extends BaseMapper<ReimbursementUserDTO> {
    /**
     * 根据条件查询数据信息
     * @param page
     * @param reimbursementUser
     * @return
     */
    IPage<ReimbursementUserDTO> findList(Page<ReimbursementUserDTO> page, @Param("reimbursementUser")ReimbursementUserDTO reimbursementUser);
    /**
     * 根据条件查询数据信息
     * @param reimbursementBusiness
     * @return
     */
    List<ReimbursementBusinessDTO> findListByBusinessCodeId(ReimbursementBusinessDTO reimbursementBusiness);

    /**
     * 根据条件查询数据信息
     * @param reimbursementBusiness
     * @return
     */
    List<ReimbursementBusinessDTO> findListByUserIdAndYear(ReimbursementBusinessDTO reimbursementBusiness);

    /**
     * 根据人员和年份获取数据来源信息
     * @param reimbursementBusiness
     * @return
     */
    List<ReimbursementAddressDTO> getReimbursementAddressByUserIdAndYear(ReimbursementBusinessDTO reimbursementBusiness);

    /**
     * 根据条件查询武汉数据信息
     * @param reimbursementBusiness
     * @return
     */
    List<ReimbursementBusinessDTO> findWuHanListByUserIdAndYear(ReimbursementBusinessDTO reimbursementBusiness);

    /**
     * 根据条件查询数据信息
     * @param page
     * @param reimbursementUser
     * @return
     */
    IPage<ReimbursementUserDTO> getYearList(Page<ReimbursementUserDTO> page, @Param("reimbursementUser")ReimbursementUserDTO reimbursementUser);
    /**
     * 根据条件查询数据信息
     * @param reimbursementUser
     * @return
     */
    List<ReimbursementUserDTO> getReimbursementMoneyByYear(ReimbursementUserDTO reimbursementUser);

    /**
     * 保存人员报销信息
     * @param reimbursementUser
     */
    void save(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 修改人员报销信息
     * @param reimbursementUser
     */
    void update(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 查询业务信息
     * @param id
     * @return
     */
    ReimbursementBusinessDTO queryById(String id);

    /**
     * 查询业务信息
     * @param reimbursementUser
     * @return
     */
    ReimbursementUserDTO reimbursementUserByUserIdAndYear(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 查询报销信息(根据人员id和年份)
     * @param reimbursementUser
     * @return
     */
    ReimbursementUserDTO queryByUserIdAndYear(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 根据id删除人员报销信息（物理删除）
     * @param idList
     */
    void delete(@Param("idList") List<String> idList);

    /**
     * 根据人员id和年份查询该员工当年报销额度总额
     * @param reimbursementUser
     * @return
     */
    String getAlreadyReimbursementQuotaByUserIdAndYear(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 根据人员id和年份查询该员工当年报销额度总额
     * @param reimbursementUser
     * @return
     */
    String getAlreadyReimbursementQuotaByBusinessCodeId(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 根据业务id查询收款状态
     * @param reimbursementUser
     * @return
     */
    String getGatheringStatusById(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 根据武汉业务id查询收款状态
     * @param reimbursementUser
     * @return
     */
    String getWuHanGatheringStatusById(ReimbursementBusinessDTO reimbursementUser);

    /**
     * 修改业务报销是否完成状态
     * @param reimbursementDTO
     */
    void updateReimbursementInfo(ReimbursementDTO reimbursementDTO);

    /**
     * 修改武汉业务报销是否完成状态
     * @param wuHanReimbursementDTO
     */
    void updateWuHanReimbursementInfo(WuHanReimbursementDTO wuHanReimbursementDTO);

    /**
     * 根据人员和年份获取实发类型信息
     * @param reimbursementBusiness
     * @return
     */
    List<ReimbursementAddressDTO> getReimbursementFsalaryByUserIdAndYear(ReimbursementBusinessDTO reimbursementBusiness);
}
