package com.openhis.web.adjustprice.mapper;

import com.openhis.web.adjustprice.dto.ChangePriceDataDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.adjustprice.dto.ChangePricePageDto;
import com.openhis.web.inventorymanage.dto.InventorySearchParam;
import com.openhis.web.inventorymanage.dto.ReceiptPageDto;

import java.util.List;

/**
 * Desc:
 * 
 * @Author raymond
 * @Date 14:37 2025/10/15
 * @return
 **/
@Component
public interface AdjustPriceMapper {
    /**
     * Desc: 查询单据审批分页列表
     * 
     * @param page
     * @param queryWrapper
     * @param medTypeEnum
     * @param deviceTypeEnum
     * @param activityTypeEnum
     * @param healthTypeEnum
     * @Author raymond
     * @Date 16:01 2025/10/24
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.openhis.web.inventorymanage.dto.ReceiptPageDto>
     **/
    Page<ReceiptPageDto> selectInventoryReceiptPage(@Param("page") Page<ReceiptPageDto> page,
        @Param(Constants.WRAPPER) QueryWrapper<InventorySearchParam> queryWrapper,
        @Param("medTypeEnum") Integer medTypeEnum, @Param("deviceTypeEnum") Integer deviceTypeEnum,
        @Param("activityTypeEnum") Integer activityTypeEnum, @Param("healthTypeEnum") Integer healthTypeEnum);

    /**
     * Desc: 根据当前人 ID 查询提交的调价申请记录
     * 
     * @param page
     * @param queryWrapper
     * @param medCategory
     * @param deviceCategory
     * @param activityCategory
     * @param healthCategory
     * @param applicantId
     * @Author raymond
     * @Date 00:59 2025/11/2
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.openhis.web.adjustprice.dto.ChangePricePageDto>
     **/
    Page<ChangePricePageDto> searchChangePriceDataToPage(@Param("page") Page<ReceiptPageDto> page,
        @Param(Constants.WRAPPER) QueryWrapper<InventorySearchParam> queryWrapper,
        @Param("medCategory") Integer medCategory, @Param("deviceCategory") Integer deviceCategory,
        @Param("activityCategory") Integer activityCategory, @Param("healthCategory") Integer healthCategory,
        @Param("applicantId") Long applicantId);

    /**
     * Desc: 根据条件 查询 药品调价单
     * @param busNo
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 09:46 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchMedChangePriceByBusNo(@Param("busNo") String busNo, @Param("categoryEnum") Integer categoryEnum, @Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 药品调价单
     * @param itemId
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 07:34 2025/11/4
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchMedChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 耗材调价单
     * @param busNo
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 09:46 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchDeviceChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 耗材调价单
     * @param itemId
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 07:33 2025/11/4
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchDeviceChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);

    /**
     * Desc: 根据条件 查询 诊疗调价单
     * @param busNo
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 09:46 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchActivityChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 诊疗调价单
     * @param itemId
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 07:32 2025/11/4
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchActivityChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);

    /**
     * Desc: 根据条件 查询 挂号调价单
     * @param busNo
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 09:46 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchHealthChangePriceByBusNo(@Param("busNo") String busNo,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 挂号调价单
     * @param itemId
     * @param categoryEnum
     * @param statusEnum
     * @Author raymond
     * @Date 07:31 2025/11/4
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchHealthChangePriceByItemId(@Param("itemId") Long itemId,@Param("categoryEnum") Integer categoryEnum,@Param("statusEnum") Integer statusEnum);
    /**
     * Desc: 根据条件 查询 审批单 审核中的数据
     * @param busNo
     * @param statusEnum
     * @Author raymond
     * @Date 10:36 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceDataDto> searchChangePriceRecordDataByBusNo(@Param("busNo") String busNo,@Param("statusEnum") Integer statusEnum);

}
