package com.fs.his.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.his.domain.*;
import com.fs.his.param.*;
import com.fs.his.vo.*;

/**
 * 问诊订单Service接口
 *
 * @author fs
 * @date 2023-06-12
 */
public interface IFsInquiryOrderService
{
    /**
     * 查询问诊订单
     *
     * @param orderId 问诊订单主键
     * @return 问诊订单
     */
    public FsInquiryOrder selectFsInquiryOrderByOrderId(Long orderId);

    /**
     * 查询问诊订单列表
     *
     * @param fsInquiryOrder 问诊订单
     * @return 问诊订单集合
     */
    public List<FsInquiryOrder> selectFsInquiryOrderList(FsInquiryOrder fsInquiryOrder);

    /**
     * 新增问诊订单
     *
     * @param fsInquiryOrder 问诊订单
     * @return 结果
     */
    public int insertFsInquiryOrder(FsInquiryOrder fsInquiryOrder);

    /**
     * 修改问诊订单
     *
     * @param fsInquiryOrder 问诊订单
     * @return 结果
     */
    public int updateFsInquiryOrder(FsInquiryOrder fsInquiryOrder);

    /**
     * 批量删除问诊订单
     *
     * @param orderIds 需要删除的问诊订单主键集合
     * @return 结果
     */
    public int deleteFsInquiryOrderByOrderIds(Long[] orderIds);

    /**
     * 删除问诊订单信息
     *
     * @param orderId 问诊订单主键
     * @return 结果
     */
    public int deleteFsInquiryOrderByOrderId(Long orderId);

    List<FsInquiryOrderListVO> selectFsInquiryOrderVOList(FsInquiryOrderParam fsInquiryOrder);

    FsInquiryOrderVO selectFsInquiryOrderVOByOrderId(Long orderId);

    List<FsInquiryOrderMsg> selectFsInquiryOrderMsgByOrderId(Long orderId);

    List<FsInquiryOrderListUVO> selectFsInquiryOrderListUVO(FsInquiryOrderListUParam param);

    R cancelOrder(FsInquiryOrderCancelParam param);

    R createOrder(FsInquiryOrderCreateParam param);

    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);

    R confirmOrder(FsInquiryOrderConfirmParam param);

    List<FsInquiryOrderListDVO> selectFsInquiryOrderListDVO(FsInquiryOrderListDParam param);

    R acceptOrder(FsInquiryOrderAcceptParam param);

    R receiveOrder(FsInquiryOrderReceiveParam param);

    R refuseOrder(FsInquiryOrderRefuseParam param);

    R finishOrder(FsInquiryOrderFinishParam param);

    R autoFinishOrder(FsInquiryOrderFinishParam param);

    R pingOrder(FsInquiryOrderPingParam param);

    R refundOrder(FsInquiryOrderRefundParam param);


    Integer getDoctorDoReceiveOrder(String doctorId);

    List<FsStoreOrderLogs> selectFsInquiryOrderLogsList(String orderId);

    R createOrderByPackageOrder(FsPackageOrder order);

    List<FsInquiryOrderExeclListVO> selectFsInquiryOrderExcelListVO(FsInquiryOrderParam fsInquiryOrder);


    List<FsInquiryFeedbackExportListVO> selectFsInquiryFeedbackExportListVO(FsInquiryOrderParam fsInquiryOrder);

    R createOrderByPackageOrderStatus4(FsPackageOrder packageOrder);

    String sendStartMsg(Long orderId);

    R computeOrder(FsInquiryOrderComputeParam param, FsInquiryOrder order, FsUser user);

    List<FsInquiryOrderListPDVO> selectFsInquiryOrderListPDVO(FsInquiryOrderListPDParam param);

    Boolean isEntityNull(FsInquiryOrderParam fsInquiryOrder);

    String selectFsInquiryOrderSnByOrderId(long orderId);

    Long selectFsInquiryOrderExcelListVOCount(FsInquiryOrderParam fsInquiryOrder);

    Long selectFsInquiryFeedbackExportListVOCount(FsInquiryOrderParam fsInquiryOrder);

    void exportData(FsInquiryOrderParam fsInquiryOrder);

    void exportFeedbackData(FsInquiryOrderParam fsInquiryOrder);
}
