| <?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> |