package com.openhis.web.adjustprice.appservice;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.core.common.core.domain.R;
import com.openhis.web.adjustprice.dto.AdjustPriceDataVo;
import com.openhis.web.adjustprice.dto.AdjustPriceManagerSearchParam;

/**
 * Desc: 调价业务接口
 * 
 * @Author raymond
 * @Date 08:42 2025/10/16
 * @return
 **/
public interface IAdjustPriceService {
    /**
     * Desc: 保存调价数据
     * 
     * @param dataVoList 前端数据集合
     * @Author raymond
     * @Date 08:57 2025/10/16
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> submitChangePriceData(List<AdjustPriceDataVo> dataVoList);

    /**
     * Desc: 保存并提交审核调价数据
     * 
     * @param dataVoList
     * @Author raymond
     * @Date 16:22 2025/10/23
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> submitExamineChangePriceData(List<AdjustPriceDataVo> dataVoList);

    /**
     * Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
     * 
     * @param searchKey
     * @Author raymond
     * @Date 09:32 2025/10/20
     * @return java.util.List<?>
     **/
    R<?> searchKeyWordDataListByMed(String searchKey);

    /**
     * Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
     * 
     * @param searchKey
     * @Author raymond
     * @Date 09:32 2025/10/20
     * @return java.util.List<?>
     **/
    R<?> searchKeyWordDataListByDevice(String searchKey);

    /**
     * Desc: 根据关键词查询 药品|耗材|诊疗 集合的最后价格
     * 
     * @param searchKey
     * @Author raymond
     * @Date 09:32 2025/10/20
     * @return java.util.List<?>
     **/
    R<?> searchKeyWordDataListByActivity(String searchKey);

    /**
     * Desc: 查询提交的改价数据
     * 
     * @param adjustPriceManagerSearchParam
     * @param pageNo
     * @param pageSize
     * @param searchKey
     * @param request
     * @Author raymond
     * @Date 23:39 2025/11/1
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchChangePriceSubmitDataToPage(AdjustPriceManagerSearchParam adjustPriceManagerSearchParam, Integer pageNo,
        Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * Desc: 根据busNo 查询调价单详情 med
     * 
     * @param busNo
     * @Author raymond
     * @Date 13:15 2025/10/21
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchChangePriceDataByMed(String busNo);

    /**
     * Desc: 根据busNo 查询调价单详情 med
     * 
     * @param busNo
     * @Author raymond
     * @Date 13:15 2025/10/21
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchChangePriceDataByDevice(String busNo);

    /**
     * Desc: 根据busNo 查询调价单详情 Activity
     * 
     * @param busNo
     * @Author raymond
     * @Date 13:15 2025/10/21
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchChangePriceDataByActivity(String busNo);

    /**
     * Desc: 根据busNo 查询调价单详情 Health
     * 
     * @param busNo
     * @Author raymond
     * @Date 13:15 2025/10/21
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchChangePriceDataByHealth(String busNo);

    /**
     * Desc: 修改调价原因 和 价格
     * 
     * @param busNo
     * @Author raymond
     * @Date 15:21 2025/10/21
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> cancelChangePriceData(String busNo);

    /**
     * Desc: 查询有挂号信息的科室
     * 
     * @param
     * @Author raymond
     * @Date 16:38 2025/10/22
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchAllOrgData();

    /**
     * Desc: 根据科室id 加载挂号数据
     * 
     * @param orgId
     * @Author raymond
     * @Date 16:45 2025/10/22
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> searchHealthData(Long orgId);

    /**
     * Desc: 根据业务单据号 进行单据提交操作
     * 
     * @param busNo
     * @Author raymond
     * @Date 09:25 2025/10/23
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> updateExamineByApproval(String busNo);

    /**
     * Desc: 根据药品ID 是否在审核中
     * 
     * @param itemId
     * @Author raymond
     * @Date 17:48 2025/11/3
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> checkMedApprovalExist(Long itemId);

    /**
     * Desc: 根据耗材ID 是否在审核中
     * 
     * @param itemId
     * @Author raymond
     * @Date 17:48 2025/11/3
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> checkDeviceApprovalExist(Long itemId);

    /**
     * Desc: 根据诊疗ID 是否在审核中
     * 
     * @param itemId
     * @Author raymond
     * @Date 17:48 2025/11/3
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> checkActivityApprovalExist(Long itemId);

    /**
     * Desc: 根据挂号ID 是否在审核中
     * 
     * @param itemId
     * @Author raymond
     * @Date 17:48 2025/11/3
     * @return com.core.common.core.domain.R<?>
     **/
    R<?> checkHealthApprovalExist(Long itemId);

}
