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.BedPlanRecordEffectiveQueryReqVO;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedPlanRecordEffectiveRespVO;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedPlanRecordPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.BedPlanRecordSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.BedPlanRecordDO;

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

/**
 * 床位计划记录 Service
 */
public interface BedPlanRecordService {

    /**
     * 新增床位计划记录
     *
     * @param createReqVO 创建参数
     * @return 记录主键
     */
    Integer createBedPlanRecord(@Valid BedPlanRecordSaveReqVO createReqVO);

    /**
     * 更新床位计划记录
     *
     * @param updateReqVO 更新参数
     */
    void updateBedPlanRecord(@Valid BedPlanRecordSaveReqVO updateReqVO);

    /**
     * 删除床位计划记录
     *
     * @param id 主键
     */
    void deleteBedPlanRecord(Long id);

    /**
     * 获取床位计划记录详情
     *
     * @param id 主键
     * @return 数据
     */
    BedPlanRecordDO getBedPlanRecord(Long id);

    /**
     * 分页查询床位计划记录
     *
     * @param pageReqVO 分页参数
     * @return 分页数据
     */
    PageResult<BedPlanRecordDO> getBedPlanRecordPage(BedPlanRecordPageReqVO pageReqVO);

    /**
     * 查询生效期内记录（返回结构与创建入参一致）
     */
    List<BedPlanRecordEffectiveRespVO> getEffectiveList(BedPlanRecordEffectiveQueryReqVO reqVO);
}


