package com.jeeplus.test.reimbursementsys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementDTO;
import com.jeeplus.test.reimbursementsys.domain.dto.WuHanReimbursementDTO;

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 WuHanReimbursementSysService {


    IPage<WuHanReimbursementDTO> findList(Page<WuHanReimbursementDTO> page, WuHanReimbursementDTO reimbursement);
    /**
     * 查询业务具体信息
     * @param id
     * @return
     */
    WuHanReimbursementDTO queryBusinessById(String id);
    /**
     * 查询业务具体信息
     * @param id
     * @return
     */
    WuHanReimbursementDTO queryInvoiceById(String id);

    /**
     * 根据发票id查询业务具体信息
     * @param id
     * @return
     */
    WuHanReimbursementDTO queryBusinessByInvoiceId(String id);

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

    List<WuHanReimbursementDTO> findPage(Page<WuHanReimbursementDTO> page, WuHanReimbursementDTO reimbursement);

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

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

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

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

    /**
     * 修改发票信息
     * @param reimbursement
     */
    void modifyInvoice(WuHanReimbursementDTO 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(WuHanReimbursementDTO reimbursement);

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