package com.kcim.dao.mapper;


import com.kcim.dao.model.Allocation;
import com.kcim.vo.AfterAllocationVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 成本分摊后表
 *
 * @author huangrui
 * @date 2021-08-25 08:45:06
 */
@Mapper
public interface AllocationMapper extends GenericBatchMapper<Allocation> {

    /**
     * 分摊后查询列表
     *
     * @param dateYear           年
     * @param dateMonth          月
     * @param responsibilityCode 责任中心
     * @param startIndex         开始索引
     * @param pageSize           页数
     * @param hospId             医院id
     * @return List
     */
    List<AfterAllocationVO> queryAfterAllocationList(@Param("dateYear") Integer dateYear,
                                                     @Param("dateMonth") Integer dateMonth,
                                                     @Param("responsibilityCode") String responsibilityCode,
                                                     @Param("startIndex") Integer startIndex,
                                                     @Param("pageSize") Integer pageSize, Long hospId);

    /**
     * 总数
     *
     * @param dateYear           年
     * @param dateMonth          月
     * @param responsibilityCode 责任中心
     * @param hospId             医院id
     * @return 总数
     */
    int queryAfterAllocationListCount(@Param("dateYear") Integer dateYear,
                                      @Param("dateMonth") Integer dateMonth,
                                      @Param("responsibilityCode") String responsibilityCode,
                                      @Param("hospId") Long hospId);

    /**
     * 总金额
     *
     * @param dateYear           年
     * @param dateMonth          月
     * @param responsibilityCode 责任中心
     * @param hospId             医院id
     * @return 总数
     */
    BigDecimal queryAfterAllocationListSum(@Param("dateYear") Integer dateYear,
                                           @Param("dateMonth") Integer dateMonth,
                                           @Param("responsibilityCode") String responsibilityCode,
                                           @Param("hospId") Long hospId);

    /**
     * 得到这个月的分摊过的分摊层级
     *
     * @param hospId 医院id
     * @param year   年
     * @param month  月
     * @return
     */
    List<Allocation> getAllSortLevel(@Param("hospId") Long hospId,
                                     @Param("year") int year,
                                     @Param("month") int month);

    List<Allocation> getLevelSortAllocation(@Param("hospId") Long hospId,
                                     @Param("year") int year,
                                     @Param("month") int month,
                                     @Param("shareLevelId") Long shareLevelId);
}
