package com.xinelu.manage.service.appointmentorder;


import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.appointmentorder.AppointmentOrder;
import com.xinelu.manage.vo.appointmentorder.AppointmentOrderVO;
import com.xinelu.manage.vo.appointmentorder.PersonAndDepartmentVO;

import java.util.List;

/**
 * 预约订单信息Service接口
 *
 * @author 纪寒
 * @date 2022-09-05
 */
public interface IAppointmentOrderService {
    /**
     * 查询预约订单信息
     *
     * @param id 预约订单信息主键
     * @return 预约订单信息
     */
    AppointmentOrder selectAppointmentOrderById(Long id);

    /**
     * 查询预约订单信息列表
     *
     * @param appointmentOrder 预约订单信息
     * @return 预约订单信息集合
     */
    List<AppointmentOrderVO> selectAppointmentOrderList(AppointmentOrderVO appointmentOrder);

    /**
     * 新增预约订单信息
     *
     * @param appointmentOrder 预约订单信息
     * @return 结果
     */
    int insertAppointmentOrder(AppointmentOrder appointmentOrder);

    /**
     * 修改预约订单信息
     *
     * @param appointmentOrder 预约订单信息
     * @return 结果
     */
    int updateAppointmentOrder(AppointmentOrder appointmentOrder);

    /**
     * 逻辑批量删除预约订单信息
     *
     * @param ids 需要删除的预约订单信息主键集合
     * @return 结果
     */
    AjaxResult updateAppointmentOrderByIds(Long[] ids);

    /**
     * 删除预约订单信息信息
     *
     * @param id 预约订单信息主键
     * @return 结果
     */
    int deleteAppointmentOrderById(Long id);

    /**
     * 通过订单id，护理站人员id修改订单信息
     *
     * @param appointmentOrder 订单信息
     * @return 结果
     */
    AjaxResult updateOrderStatusByOrderNo(AppointmentOrder appointmentOrder);

    /**
     * 通过订单id查询护理所属护理站人员
     *
     * @param personAndDepartment 人员信息
     * @return AjaxResult
     */
    List<PersonAndDepartmentVO> getNurseStationPerson(PersonAndDepartmentVO personAndDepartment);


    /**
     * 通过护理员id查询护理所属护理站人员
     *
     * @param nurseStationPersonId 护理员id
     * @return AjaxResult
     */
    AjaxResult getNurseStationPersonInfo(Long nurseStationPersonId);

    /**
     * 确认取消订单
     *
     * @param appointmentOrderId 订单id
     * @return AjaxResult
     */
    AjaxResult updateAppointmentOrder(Long appointmentOrderId);

    /**
     * 院内陪护确认完成
     *
     * @param orderNo     订单编号
     * @param orderStatus 订单状态
     * @return AjaxResult
     */
    AjaxResult updateCompanionOrderStatus(String orderNo, String orderStatus);
}
