/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.reportmanage.mapper;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.openhis.web.reportmanage.dto.MedDevUseReportDto;
import com.openhis.web.reportmanage.dto.MedUseReportInfoDto;

/**
 * 药品耗材统计查询用 mapper
 *
 * @author liuhr
 * @date 2025-05-21
 */
@Repository
public interface MedicationDeviceReportMapper {

    /**
     * 药品耗材日结/周结/月结算 明细清单
     *
     * @param orgId 科室
     * @param dispenseDateSTime 开始时间
     * @param dispenseDateSTime 结束时间
     * @param medReqTableName 结束时间
     * @param devReqTableName 结束时间
     * @param medDefTableName 结束时间
     * @param devDefTableName 结束时间
     * @param completed 请求状态:已完成
     * @param eventStatus 事件状态:已完成
     * @param issueInventory 单据类型:领用出库
     * @param returnIssue 单据类型:领用退货
     * @return 药品耗材日结/周结/月结算单
     */
    Page<MedUseReportInfoDto> selectMedDdevInfo(@Param("page") Page<MedUseReportInfoDto> page,
        @Param("medReqTableName") String medReqTableName, @Param("devReqTableName") String devReqTableName,
        @Param("medDefTableName") String medDefTableName, @Param("devDefTableName") String devDefTableName,
        @Param("completed") Integer completed, @Param("eventStatus") Integer eventStatus,
        @Param("issueInventory") Integer issueInventory, @Param("returnIssue") Integer returnIssue,
        @Param("orgId") Long orgId, @Param("name") String name, @Param("dispenseDateSTime") String dispenseDateSTime,
        @Param("dispenseDateETime") String dispenseDateETime);

    /**
     * 药品耗材日结/周结/月结算（统计筛选时间区内）
     *
     * @param dispenseDateSTime 开始时间
     * @param dispenseDateSTime 结束时间
     * @param dispenseDateSTime 开始时间
     * @param dispenseDateSTime 结束时间
     * @param medReqTableName 结束时间
     * @param devReqTableName 结束时间
     * @param medDefTableName 结束时间
     * @param devDefTableName 结束时间
     * @param completed 请求状态:已完成
     * @param eventStatus 事件状态:已完成
     * @return 药品耗材日结/周结/月结算单
     */
    List<MedDevUseReportDto> selectMedDevReport(@Param("medReqTableName") String medReqTableName,
        @Param("devReqTableName") String devReqTableName, @Param("medDefTableName") String medDefTableName,
        @Param("devDefTableName") String devDefTableName, @Param("completed") Integer completed,
        @Param("eventStatus") Integer eventStatus, @Param("dispenseDateSTime") String dispenseDateSTime,
        @Param("dispenseDateETime") String dispenseDateETime);

}
