package cn.lihu.jh.module.ecg.dal.mysql.room; 
 | 
  
 | 
import java.util.*; 
 | 
  
 | 
import cn.lihu.jh.framework.common.pojo.PageResult; 
 | 
import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX; 
 | 
import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX; 
 | 
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; 
 | 
import org.apache.ibatis.annotations.*; 
 | 
  
 | 
import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; 
 | 
import cn.lihu.jh.module.ecg.enums.BedStatusEnum; 
 | 
  
 | 
/** 
 | 
 * 诊室和诊疗床 Mapper 
 | 
 * 
 | 
 * @author 芋道源码 
 | 
 */ 
 | 
@Mapper 
 | 
public interface RoomMapper extends BaseMapperX<RoomDO> { 
 | 
  
 | 
    default PageResult<RoomDO> selectPage(RoomPageReqVO reqVO) { 
 | 
        return selectPage(reqVO, new LambdaQueryWrapperX<RoomDO>() 
 | 
                .eqIfPresent(RoomDO::getRoomId, reqVO.getRoomId()) 
 | 
                .eqIfPresent(RoomDO::getBedNo, reqVO.getBedNo()) 
 | 
                .betweenIfPresent(RoomDO::getCreateTime, reqVO.getCreateTime()) 
 | 
                .orderByDesc(RoomDO::getId)); 
 | 
    } 
 | 
  
 | 
    @Select("select * from lihu.clinic_room where ip = #{ip}") 
 | 
    List<RoomDO> queueByIp(@Param("ip") String ip); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus}, doc_id=null, doc_name=null " + 
 | 
            " where deleted = 0 " + 
 | 
            "</script>") 
 | 
    Integer resetRoom(@Param("newStatus") Integer newStatus); 
 | 
  
 | 
    @Select("<script> " + 
 | 
            "SELECT * FROM lihu.clinic_room " + 
 | 
            "where status in ( " + 
 | 
                    " <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
                    "  #{curStatus.status} " + 
 | 
                    " </foreach> )" + 
 | 
            " and deleted = 0" + 
 | 
            " order by room_id;" + 
 | 
            "</script>") 
 | 
    @Results({ 
 | 
            @Result(property = "checkTypes", column = "check_types", typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class) 
 | 
    }) 
 | 
    List<RoomDO> simpleRoomList(@Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
  
 | 
    @Select("SELECT * FROM lihu.clinic_room where room_id=#{roomId} and bed_no=#{bedNo}") 
 | 
    @Results({ 
 | 
        @Result(property = "checkTypes", column = "check_types", typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class) 
 | 
    }) 
 | 
    RoomDO getRoom(@Param("roomId")Long roomId, @Param("bedNo")String bedNo); 
 | 
  
 | 
    @Select("SELECT * FROM lihu.clinic_room where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId}") 
 | 
    RoomDO getRoomByRoomBedDoc(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId); 
 | 
  
 | 
    @Select("SELECT * FROM lihu.clinic_room where doc_id=#{docId}") 
 | 
    List<RoomDO> getRoomByDocId(@Param("docId")Long docId); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus.status} " + 
 | 
            " where room_id=#{roomId} and bed_no=#{bedNo} and isNull(doc_id) " + 
 | 
            " and status in ( " + 
 | 
            "  <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
            "   #{curStatus.status} " + 
 | 
            "  </foreach> );" + 
 | 
            "</script>") 
 | 
    Integer setBedOpeningOpening(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus.status}, doc_id=null, doc_name=null " + 
 | 
            " where room_id=#{roomId} and bed_no=#{bedNo} and isNull(doc_id) " + 
 | 
            " and status in ( " + 
 | 
            "  <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
            "   #{curStatus.status} " + 
 | 
            "  </foreach> );" + 
 | 
            "</script>") 
 | 
    Integer setBedOpeningClosed(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus.status} " + 
 | 
            "where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId} " + 
 | 
            "and status in ( " + 
 | 
            " <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
            "  #{curStatus.status} " + 
 | 
            " </foreach> );" + 
 | 
            "</script>") 
 | 
    Integer setBedDoctorStatus(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus.status}, doc_id=#{docId}, doc_name=#{docName} " + 
 | 
            "where room_id=#{roomId} and bed_no=#{bedNo} and isNull(doc_id)" + 
 | 
            "and status in ( " + 
 | 
            " <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
            "  #{curStatus.status} " + 
 | 
            " </foreach> );" + 
 | 
            "</script>") 
 | 
    Integer setBedDoctorOn(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("docName")String docName, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
  
 | 
    @Update("<script> " + 
 | 
            "update lihu.clinic_room set status=#{newStatus.status}, doc_id=null, doc_name=null " + 
 | 
            "where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId} " + 
 | 
            "and status in ( " + 
 | 
            " <foreach collection='curStatusList' separator=',' item='curStatus'>" + 
 | 
            "  #{curStatus.status} " + 
 | 
            " </foreach> );" + 
 | 
            "</script>") 
 | 
    Integer setBedDoctorOff(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); 
 | 
} 
 |