package com.openhis.administration.service;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.administration.domain.ChangePriceRecord;
import com.openhis.administration.dto.ChangePriceDataDto;

/**
 * 修改价格记录Service接口
 *
 * @author system
 * @date 2025-10-15
 */
public interface IChangePriceRecordService extends IService<ChangePriceRecord> {
    /**
     * Desc: 根据单据号 进行提交审核操作
     * 
     * @param busNo
     * @Author raymond
     * @Date 23:08 2025/11/1
     * @return boolean
     **/
    boolean submitApproval(String busNo);

    /**
     * Desc: 根据单据号 查询列表
     * 
     * @param busNo
     * @Author raymond
     * @Date 08:44 2025/11/2
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceRecord> searchChangePriceDataForBusNo(String busNo);

    /**
     * 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(String busNo, Integer categoryEnum, 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(Long itemId, Integer categoryEnum, 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(String busNo, Integer categoryEnum, 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(Long itemId, Integer categoryEnum, 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(String busNo, Integer categoryEnum, 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(Long itemId, Integer categoryEnum, 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(String busNo, Integer categoryEnum, 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(Long itemId, Integer categoryEnum, Integer statusEnum);

    /**
     * Desc: 审核通过操作
     * 
     * @param busNo
     * @param now
     * @Author raymond
     * @Date 10:13 2025/11/2
     * @return void
     **/
    void agreeRequest(String busNo, Date now);

    /**
     * Desc: 审核驳回操作
     * 
     * @param busNo
     * @Author raymond
     * @Date 18:43 2025/11/3
     * @return boolean
     **/
    boolean rejectRequest(String busNo);

    /**
     * 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(String busNo, Integer statusEnum);

    /**
     * Desc: 根据编号分组查询 数据
     * 
     * @param busNo
     * @Author raymond
     * @Date 09:39 2025/11/5
     * @return java.util.List<com.openhis.administration.dto.ChangePriceDataDto>
     **/
    List<ChangePriceRecord> searchChangePriceDataGroupByBusNo(String busNo);

}