package com.kcim.service;

import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kcim.common.util.PageUtils;
import com.kcim.dao.model.Allocation;
import com.kcim.dao.model.dto.StartDTO;
import com.kcim.vo.AfterAllocationFormVO;
import com.kcim.vo.CollectDataFormVO;
import org.apache.poi.ss.usermodel.Sheet;

import java.util.List;

/**
 * 成本分摊后表
 *
 * @author huangrui
 * @email 
 * @date 2021-08-24 16:05:16
 */
public interface AllocationService extends IService<Allocation> {

    /**
     * 分摊成本数据
     * @param startDTO {@link StartDTO}
     * @param hospId 医院id
     */
    void startAllocation(StartDTO startDTO, Long hospId);


    /**
     * 分摊后查询列表
     * @param year 年月 （yyyy-MM-dd)
     * @param responsibilityCode 责任中心代码
     * @param current 当前页
     * @param pageSize 当前页展示的数据大小
     * @param hospId 医院id
     * @return PageUtils
     */
    PageUtils queryAfterAllocation(String year, String responsibilityCode, Integer current, Integer pageSize, Long hospId);

    /**
     * 分摊后报表
     * @param year 年月（yyyy-MM-dd）
     * @param responsibilityCode 责任中心代码
     * @param hospId
     * @return List
     */
    CollectDataFormVO queryAfterAllocationForm(String year, String responsibilityCode, Long hospId);



    /**
     *  分摊报表导出
     * @param writer {@link ExcelWriter}
     * @param levelSort 分摊层级  就是第几次分摊
     * @param sheet 报表
     * @param year 年
     * @param month 月
     * @param shareLevelId
     * @return
     */
    ExcelWriter getShareReportTemplate(ExcelWriter writer, Integer levelSort, Sheet sheet, Integer year, Integer month, Long shareLevelId);

    /**
     * 分摊后报表输出
     * @param date yyyy-MM-dd
     * @param hospId 医院id
     * @return List
     */
    List<AfterAllocationFormVO> afterAllocationFormList(String date, Long hospId);

    /**
     * 按时间计算分摊数据
     * @param year 年月
     * @param month 月
     * @param hospId
     * @return
     */
    List<Allocation> getByDate(int year, int month, Long hospId);
}

