package com.jeeplus.test.reimbursementsys.service;

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.reimbursementsys.domain.dto.ReimbursementBusinessReturnDTO;
import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementUserDTO;

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

/**
 * @author li-peike
 * @version 1.0.0
 * @ClassName ReimbursementSysService.java
 * @Description TODO
 * @createTime 2022年05月06日 10:25:00
 */

public interface ReimbursementUserService {
    /**
     * 查询报销人员信息
     * @param id
     * @return
     */
    ReimbursementUserDTO queryById(String id);
    /**
     * 查询报销信息(根据人员id和年份)
     * @param reimbursementUser
     * @return
     */
    ReimbursementUserDTO queryByUserIdAndYear(ReimbursementUserDTO reimbursementUser);

    /**
     * 查询列表信息
     * @param page
     * @param reimbursementUser
     * @return
     */
    IPage<ReimbursementUserDTO> findList(Page<ReimbursementUserDTO> page, ReimbursementUserDTO reimbursementUser);

    /**
     * 保存方法
     * @param reimbursementUser
     */
    Map<String,Object> save(ReimbursementUserDTO reimbursementUser);

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

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

    /**
     * 根据id删除人员报销信息（物理删除）
     * @param idList
     */
    Map<String,Object> deleteWuHan(List<String> idList);

    /**
     * 查询人员报销信息列表
     * @param reimbursementUserDTO
     * @return
     */
    ReimbursementBusinessReturnDTO findListByUserId(ReimbursementUserDTO reimbursementUserDTO,ReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO);

    /**
     * 查询武汉人员报销信息列表
     * @param reimbursementUserDTO
     * @return
     */
    ReimbursementBusinessReturnDTO findWuHanListByUserId(ReimbursementUserDTO reimbursementUserDTO);

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


    /**
     * 保存方法(批量导入)
     * @param reimbursementUserList
     */
    Map<String,Object> saveList(List<ReimbursementUserDTO> reimbursementUserList);

    /**
     * 初始化部门人员报销数据信息（当年）
     * @param officeName 部门名称
     */
    Map<String,Object> initialize(String officeName,String officeType);
}
