<?xml version="1.0" encoding="UTF-8"?> 
 | 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
 | 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
 | 
  
 | 
<mapper namespace="com.matrix.system.hive.dao.SysBedStateDao"> 
 | 
  
 | 
    <resultMap type="SysBedState" id="SysBedStateMap"> 
 | 
        <id property="id" column="ID" /> 
 | 
        <result property="bedId" column="BED_ID" /> 
 | 
        <result property="startTime" column="START_TIME" /> 
 | 
        <result property="endTime" column="END_TIME" /> 
 | 
        <result property="bedState" column="BED_STATE" /> 
 | 
        <result property="serviceId" column="SERVICE_ID" /> 
 | 
  
 | 
    </resultMap> 
 | 
    <!-- 插入方法 --> 
 | 
    <insert id="insert" parameterType="SysBedState" 
 | 
        useGeneratedKeys="true" keyProperty="id"> 
 | 
        INSERT INTO sys_bed_state ( 
 | 
        ID, 
 | 
        BED_ID, 
 | 
        START_TIME, 
 | 
        END_TIME, 
 | 
        BED_STATE, 
 | 
        SERVICE_ID 
 | 
        ) 
 | 
        VALUES ( 
 | 
        #{id}, 
 | 
        #{bedId}, 
 | 
        #{startTime}, 
 | 
        #{endTime}, 
 | 
        #{bedState}, 
 | 
        #{serviceId} 
 | 
        ) 
 | 
    </insert> 
 | 
  
 | 
  
 | 
    <!-- 根据id更新 部分更新 --> 
 | 
    <update id="update" > 
 | 
        UPDATE sys_bed_state 
 | 
        <set> 
 | 
            <if test="bedId != null and bedId !='' "> 
 | 
                BED_ID = #{bedId}, 
 | 
            </if> 
 | 
            <if test="startTime != null  "> 
 | 
                START_TIME = #{startTime}, 
 | 
            </if> 
 | 
            <if test="endTime != null   "> 
 | 
                END_TIME = #{endTime}, 
 | 
            </if> 
 | 
            <if test="bedState != null and bedState !='' "> 
 | 
                BED_STATE = #{bedState}, 
 | 
            </if> 
 | 
            <if test="serviceId != null and serviceId !='' "> 
 | 
                SERVICE_ID = #{serviceId} 
 | 
            </if> 
 | 
        </set> 
 | 
        WHERE ID=#{id} 
 | 
    </update> 
 | 
  
 | 
  
 | 
    <!-- 根据床位id与 服务单id查询 被占用的床-->  
 | 
    <select id="selectBySerIdAndBedId" resultMap="SysBedStateMap"> 
 | 
        <include refid="select"></include> 
 | 
        <include refid="from"></include> 
 | 
        <choose> 
 | 
         
 | 
        <when test="serId==null || bedId==null"> 
 | 
        where 1=2 
 | 
        </when> 
 | 
        <otherwise> 
 | 
        where ( a.BED_STATE='使用中' or a.BED_STATE='使用结束') 
 | 
         and a.SERVICE_ID =#{serId} 
 | 
         and a.BED_ID=#{bedId} 
 | 
        </otherwise> 
 | 
        </choose> 
 | 
   </select> 
 | 
     
 | 
     
 | 
    <!-- 批量删除 --> 
 | 
    <delete id="deleteByIds" parameterType="java.util.List"> 
 | 
        delete from sys_bed_state where ID in 
 | 
        <foreach collection="list" index="index" item="item" open="(" 
 | 
            separator="," close=")"> 
 | 
            #{item} 
 | 
        </foreach> 
 | 
    </delete> 
 | 
  
 | 
    <!-- 根据id删除 --> 
 | 
    <delete id="deleteById" > 
 | 
        DELETE FROM sys_bed_state 
 | 
        where ID=#{id} 
 | 
    </delete> 
 | 
  
 | 
    <delete id="deleteByServiceId"   > 
 | 
            DELETE FROM sys_bed_state where SERVICE_ID=#{serviceId} 
 | 
    </delete> 
 | 
  
 | 
    <!-- 查询指定时间里床位使用情况  --> 
 | 
<select id="selectByTimeAndBed" resultMap="SysBedStateMap"> 
 | 
        select  
 | 
        a.ID, 
 | 
        a.BED_ID, 
 | 
        a.START_TIME, 
 | 
        a.END_TIME, 
 | 
        a.BED_STATE, 
 | 
        a.SERVICE_ID 
 | 
        FROM 
 | 
        sys_bed_state a 
 | 
        LEFT JOIN sys_bed_info b ON b.ID = a.BED_ID 
 | 
        where a.BED_ID = #{bedId}  
 | 
         AND  a.START_TIME BETWEEN  #{minTime} and #{maxTime} 
 | 
         order by a.START_TIME  
 | 
    </select> 
 | 
     
 | 
  
 | 
    <!-- 分页查询 --> 
 | 
    <select id="selectInPage" resultMap="SysBedStateMap"> 
 | 
        <include refid="select"></include> 
 | 
        <include refid="from"></include> 
 | 
        <include refid="where"></include> 
 | 
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> 
 | 
            <if test="pageVo.sort !=null  and pageVo.order !=null"> 
 | 
                order by 
 | 
                ${pageVo.sort} ${pageVo.order} 
 | 
            </if> 
 | 
            <if test="pageVo.offset >=0  and pageVo.limit >0"> 
 | 
                limit 
 | 
                #{pageVo.offset},#{pageVo.limit} 
 | 
            </if> 
 | 
        </if> 
 | 
    </select> 
 | 
  
 | 
    <!-- 根据床使用的开始时间 和结束时间查看该时段是否冲突 --> 
 | 
    <select id="checkBedClash"  resultType="java.lang.Integer"> 
 | 
        SELECT 
 | 
        count(*) 
 | 
        FROM 
 | 
        sys_bed_state 
 | 
        WHERE 1=1 and BED_STATE='使用中' 
 | 
        <if test="record!=null"> 
 | 
            <if test="record.startTime != null  "> 
 | 
                AND  
 | 
                bed_ID=#{record.bedId}  
 | 
                AND 
 | 
                ( 
 | 
                #{record.startTime} BETWEEN START_TIME and END_TIME 
 | 
                OR 
 | 
                #{record.endTime} BETWEEN START_TIME and END_TIME 
 | 
                OR 
 | 
                START_TIME BETWEEN #{record.startTime} and #{record.endTime} 
 | 
                OR 
 | 
                END_TIME BETWEEN #{record.startTime} and #{record.endTime} 
 | 
                ) 
 | 
                AND 
 | 
                SERVICE_ID != #{record.serviceId} 
 | 
            </if> 
 | 
        </if> 
 | 
    </select> 
 | 
    <!-- 查询总条数 --> 
 | 
    <select id="selectTotalRecord"  resultType="java.lang.Integer"> 
 | 
        select count(*) 
 | 
        <include refid="from"></include> 
 | 
        <include refid="where"></include> 
 | 
    </select> 
 | 
  
 | 
    <!-- 根据id查询 --> 
 | 
    <select id="selectById" resultMap="SysBedStateMap"> 
 | 
        <include refid="select"></include> 
 | 
        <include refid="from"></include> 
 | 
        where a.ID=#{id} 
 | 
    </select> 
 | 
  
 | 
  
 | 
    <!-- 根据对象查询 --> 
 | 
    <select id="selectByModel" resultMap="SysBedStateMap"> 
 | 
     
 | 
        <include refid="select"></include> 
 | 
        <include refid="from"></include> 
 | 
        <include refid="where"></include> 
 | 
    </select> 
 | 
    <sql id="select"> 
 | 
        SELECT 
 | 
        a.ID, 
 | 
        a.BED_ID, 
 | 
        a.START_TIME, 
 | 
        a.END_TIME, 
 | 
        a.BED_STATE, 
 | 
        a.SERVICE_ID 
 | 
    </sql> 
 | 
    <sql id="from"> 
 | 
    FROM 
 | 
        sys_bed_state a 
 | 
    LEFT JOIN sys_bed_info b ON b.ID = a.BED_ID 
 | 
    </sql> 
 | 
    <sql id="where"> 
 | 
    where 1=1 
 | 
        <if test="record!=null"> 
 | 
            <if test="record.id != null and record.id !='' "> 
 | 
                and a.ID = #{record.id } 
 | 
            </if> 
 | 
            <if test="record.bedId != null and record.bedId !='' "> 
 | 
                and a.BED_ID = #{record.bedId} 
 | 
            </if> 
 | 
            <if test="record.startTime != null  "> 
 | 
                and a.START_TIME = #{record.startTime} 
 | 
            </if> 
 | 
            <if test="record.endTime != null  "> 
 | 
                and a.END_TIME = #{record.endTime} 
 | 
            </if> 
 | 
            <if test="record.bedState != null and record.bedState !='' "> 
 | 
                and a.BED_STATE = #{record.bedState} 
 | 
            </if> 
 | 
            <if test="record.serviceId != null and record.serviceId !='' "> 
 | 
                and a.SERVICE_ID = #{record.serviceId} 
 | 
            </if> 
 | 
            <if test="record.bedInfo != null and record.bedInfo.shopId !=null "> 
 | 
                and b.SHOP_ID = #{record.bedInfo.shopId} 
 | 
            </if>  
 | 
        </if>  
 | 
    </sql> 
 | 
</mapper> 
 |