package com.kcim.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.kcim.common.util.PageUtils;
import com.kcim.common.util.Result;
import com.kcim.dao.model.ShareParamValue;
import com.kcim.dao.model.dto.CopyShareParamValueDTO;
import com.kcim.dao.model.dto.ShareParamValueEditDTO;
import com.kcim.dao.model.dto.ShareParamValueSaveDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 成本分摊参数值设置
 *
 * @author huangrui
 * @email  fantaandcolo@gmail.com
 * @date 2021-08-17 10:03:48
 */
public interface ShareParamValueService extends IService<ShareParamValue> {

    /**
     * 成本分摊参数导入
     *
     * @param read
     * @param file
     * @param dateTime
     * @param fileType
     * @return
     */
    Result importShareParamGroup(List<List<Object>> read, MultipartFile file, String dateTime, Integer fileType);

    /**
     * 添加分摊参数值
     * @param shareParamValueSaveDTO {@link ShareParamValueSaveDTO}
     * @param hospId 医院id
     */
    public void addData(ShareParamValueSaveDTO shareParamValueSaveDTO, Long hospId);

    /**
     * 分摊参数值列表
     *
     * @param current 当前页
     * @param pageSize 每页数据量大小
     * @param date 日期
     * @param shareParamCode 分摊参数代码
     * @param responsibilityCode 责任中心代码
     * @param hospId 医院id
     * @return {@link PageUtils} 分页对象
     */
    PageUtils selectList(Integer current, Integer pageSize, String date, String shareParamCode, String responsibilityCode, Long hospId);

    /**
     * 复制数据从某年月到某年月
     * @param copyShareParamValueDTO {@link CopyShareParamValueDTO}
     * @param hospId 医院id
     */
    void copyData(CopyShareParamValueDTO copyShareParamValueDTO, Long hospId) ;

    /**
     * 编辑某条数据
     * @param shareParamValueEditDTO {@link ShareParamValueEditDTO}
     * @param hospId 医院id
     */
    void editParamValue(ShareParamValueEditDTO shareParamValueEditDTO, Long hospId);


    /**
     * 计算数值
     *
     * @param date 日期 yyyyMM
     * @param hospId 医院id
     */
    void calcData(String date, Long hospId);

    /**
     * 得到这个月导入的成本分摊参数值列表 ,聚合过
     * @param year 年
     * @param month 月
     * @param hospId 医院id
     * @return 某月成本分摊参数值
     */
    List<ShareParamValue> getListByYearAndMonth(Integer year, Integer month, Long hospId);

    /**
     * 成本分摊参数值批量删除
     * @param asList id集合
     */
    void deleteByIds(List<Long> asList);

    void removeShareParam(String computeDate);
}

