package com.jeeplus.test.reimbursementAssess.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.sys.service.dto.UserDTO;
import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
import org.apache.ibatis.annotations.Mapper;
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
 */
@Mapper
public interface AssessReimbursementUserMapper extends BaseMapper<AssessReimbursementUserDTO> {
    /**
     * 根据条件查询数据信息
     * @param page
     * @param reimbursementUser
     * @return
     */
    IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);
    /**
     * 根据条件查询数据信息
     * @param page
     * @param reimbursementUser
     * @return
     */
    IPage<AssessReimbursementUserDTO> getYearList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);

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

    /**
     * 保存人员报销信息
     * @param reimbursementUserList
     */
    void saveList(@Param("reimbursementUserList")List<AssessReimbursementUserDTO> reimbursementUserList);

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

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

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

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

    /**
     * 根据部门和人员名称查询人员信息
     * @param reimbursementUserDTO
     * @return
     */
    List<UserDTO> getUserByNameAndOfficeName(AssessReimbursementUserDTO reimbursementUserDTO);

    /**
     * 根据人员id集合和年份查询已存在的人员信息
     * @param userIdList
     * @param year
     * @param officeType 1:中审众环；2：兴光会计；3：兴光项目；4：兴光评估
     * @return
     */
    List<AssessReimbursementUserDTO> getExistReimbursementUserList(@Param("userIdList") List<String> userIdList, @Param("year") String year,@Param("officeType") String officeType);

}
