package cn.iocoder.yudao.module.system.dal.mysql.biz;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.system.api.bpm.vo.ElderlyCheckinInfoRespVO;
import cn.iocoder.yudao.module.system.api.bpm.vo.ElderlyCheckinRecordPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyCheckInRecordDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 收费项目分类表
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2024-06-06 09:18:51
 */
@Mapper
public interface ElderlyInfoMapper extends BaseMapperX<ElderlyInfoDO> {


    List<ElderlyInfoDO> findPage(Page<ElderlyInfoDO> page, @Param("pageVO") ElderlyInfoPageReqVO pageVO);

    List<ElderlyCheckinInfoRespVO> findBpmPage(Page<ElderlyCheckinInfoRespVO> page, @Param("pageVO") ElderlyCheckinRecordPageReqVO pageVO);

    List<ElderlyCheckInRecordDO> elderlyCheckInRecordPage(Page<ElderlyInfoDO> page, @Param("params") ElderlyInfoPageReqVO pageVO);

    List<ElderlyInfoDO> getElderListByBuild(@Param("buildId") Long buildId, @Param("floorId") Long floorId,@Param("roomId") Long roomId,@Param("tenantIds") Long[] tenantIds);

    List<ElderlyMedicationExecutionRespVO> getElderlyMedicationExecutionPage(Page<ElderlyMedicationExecutionRespVO> page,@Param("params") MedicationExecutionPageReqVO pageReqVO);

    CheckInRecordDetailRespVO getCheckInDetail(Long id);

    Integer selectCountByParam(@Param("tenantId") Long tenantId,
                               @Param("inStatus") Integer inStatus,
                               @Param("checkInTime") String checkInTime,
                               @Param("checkOutTime") String checkOutTime,
                               @Param("checkOutFlag") Integer checkOutFlag);

    Integer selectTryStayCount(@Param("reqVO") ElderlyInfoHomeDataReqVO reqVO);

    Integer selectGoOutCount(@Param("reqVO") ElderlyInfoHomeDataReqVO reqVO);

    Integer selectCurrentCheckInCount(@Param("reqVO") ElderlyInfoHomeDataReqVO reqVO);

    List<ElderlyVitalSignsStatisticsRespVO> selectVitalSignsList(@Param("page") Page<BedChangeRecordRespVO> page,
                                                                 @Param("pageReqVO") ElderlyVitalSignsMainPageReqVO pageReqVO);

    List<ElderlyVitalSignsStatisticsTodayRespVO> selectVitalSignsTodayList(@Param("page") Page<BedChangeRecordRespVO> page,
                                                                           @Param("pageReqVO") ElderlyVitalSignsMainPageReqVO pageReqVO);
}
