package cn.iocoder.yudao.module.system.service.biz;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedChangeRecordOneReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyChangeRecordDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 床位变更记录 Service 接口
 *
 * @author 系统管理员
 */
public interface ElderlyChangeRecordService {

    /**
     * 创建床位变更记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBedChangeRecord(@Valid BedChangeRecordSaveReqVO createReqVO);

    /**
     * 更新床位变更记录
     *
     * @param updateReqVO 更新信息
     */
    void updateBedChangeRecord(@Valid BedChangeRecordSaveReqVO updateReqVO);

    /**
     * 删除床位变更记录
     *
     * @param id 编号
     */
    void deleteBedChangeRecord(Long id);

    /**
     * 获得床位变更记录
     *
     * @param id 编号
     * @return 床位变更记录
     */
    ElderlyChangeRecordDO getBedChangeRecord(Long id);

    /**
     * 获得床位变更记录分页
     *
     * @param pageReqVO 分页查询
     * @return 床位变更记录分页
     */
    PageResult<ElderlyChangeRecordDO> getBedChangeRecordPage(BedChangeRecordPageReqVO pageReqVO);


    BedChangeRecordRespVO detail(Long id, Integer status, Boolean isDetail);

    PageResult<BedChangeElderlyRespVO> findElderlyPage(ElderlyInfoPageReqVO pageVO);

    BedChangeElderlyRespVO getElderlyById(Long elderId);

    Boolean checkPrivateRoom(Long bedId, Long elderId);

    List<NurseChangeyEvaluationRespVO> getEvaluationByElderId(Long elderId);

    NurseChangeDetailRespVO getNurseDetail(Long id, Boolean isDetail);

    CateringChangeDetailRespVO getCateringDetail(Long id, Boolean isDetail);

    /**
     * 床位对调
     *
     * @param reqVO 请求参数
     */
    void swapBed(BedSwapReqVO reqVO);
}
