package com.jeeplus.test.reimbursementAssess.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.test.reimbursementAccountant.domain.dto.AccountantReimbursementDTO;
import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
import com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO;

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 AssessReimbursementSysService {
    /**
     * 查询业务具体信息
     * @param id
     * @return
     */
    AssessReimbursementDTO queryBusinessById(String id);
    /**
     * 根据发票id查询业务具体信息
     * @param id
     * @return
     */
    AssessReimbursementDTO queryBusinessByInvoiceId(String id);
    /**
     * 查询业务具体信息
     * @param id
     * @return
     */
    AssessReimbursementDTO queryInvoiceById(String id);

    IPage<AssessReimbursementDTO> findList(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement);

    /**
     * 导出数据获取
     * @param page
     * @param reimbursement
     * @return
     */
    List<AssessReimbursementDTO> findPage(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement);

    IPage<AssessReimbursementDTO> treeData(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement);

    /**
     * 保存方法
     * @param reimbursementList
     */
    Map<String,Object> save(List<AssessReimbursementDTO> reimbursementList);

    /**
     * 保存业务编码
     * @param reimbursement
     */
    void saveBusiness(AssessReimbursementDTO reimbursement);

    /**
     * 保存收款时间信息
     * @param reimbursement
     */
    Map<String,Object> saveGatheringTime(AssessReimbursementDTO reimbursement);

    /**
     * 保存发票收款时间
     * @param reimbursement
     */
    void saveInvoice(AssessReimbursementDTO reimbursement);

    /**
     * 修改发票信息
     * @param reimbursement
     */
    void modifyInvoice(AssessReimbursementDTO reimbursement);

    /**
     * 批量删除（逻辑删除）
     * @param idList
     */
    void removeByIds(List <String> idList);

    /**
     * 根据业务id删除对应的业务信息以及发票信息（逻辑删除）
     * @param idList
     */
    void removeBusinessByIds(List <String> idList);

    /**
     * 根据发票id删除发票信息（逻辑删除）
     * @param idList
     */
    void removeInvoiceByIds(List <String> idList);

    /**
     * 修改业务报销比例
     * @param reimbursement
     */
    void updateReimbursementRatio(AssessReimbursementDTO reimbursement);

    /**
     * 根据发票id删除发票信息（逻辑删除）
     * @param idList
     */
    Map<String,Object>  addBatchReimbursement(List <String> idList);
}
