<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.monitor.dao.ibatis.MonitorAlarmRecordDaoImpl">

    <!-- 字段和属性映射 -->
    <resultMap type="MonitorAlarmRecordEntity" id="MonitorAlarmRecordEntity-Map">
            <id  property="id" column="id" />
            <result property="alarmId" column="alarmId" />
            <result property="reservationService" column="reservationService" />
            <result property="reservationNumber" column="reservationNumber" />
            <result property="monitorTime" column="monitorTime" />
            <result property="monitorDeviceId" column="monitorDeviceId" />
            <result property="monitorDevice" column="monitorDevice" />
            <result property="checkInMethod" column="checkInMethod" />
            <result property="monitorCertificate" column="monitorCertificate" />
            <result property="picUri" column="picUri" />
            <result property="serverIndexCode" column="serverIndexCode" />
            <result property="createTime" column="createTime" />
            <result property="createUserId" column="createUserId" />
            <result property="updateTime" column="updateTime" />
            <result property="updateUserId" column="updateUserId" />
            
    </resultMap>


    <!-- 表所有列 -->
    <sql id="_columns">
        <trim suffixOverrides="," suffix="">
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
                    a.id,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmId') or colPickMode == 1 and data.containsKey('alarmId')))">
                    a.alarmId,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('reservationService') or colPickMode == 1 and data.containsKey('reservationService')))">
                    a.reservationService,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('reservationNumber') or colPickMode == 1 and data.containsKey('reservationNumber')))">
                    a.reservationNumber,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('monitorTime') or colPickMode == 1 and data.containsKey('monitorTime')))">
                    a.monitorTime,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('monitorDeviceId') or colPickMode == 1 and data.containsKey('monitorDeviceId')))">
                    a.monitorDeviceId,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('monitorDevice') or colPickMode == 1 and data.containsKey('monitorDevice')))">
                    a.monitorDevice,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('checkInMethod') or colPickMode == 1 and data.containsKey('checkInMethod')))">
                    a.checkInMethod,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('monitorCertificate') or colPickMode == 1 and data.containsKey('monitorCertificate')))">
                    a.monitorCertificate,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('picUri') or colPickMode == 1 and data.containsKey('picUri')))">
                    a.picUri,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('serverIndexCode') or colPickMode == 1 and data.containsKey('serverIndexCode')))">
                    a.serverIndexCode,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
                    a.createTime,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
                    a.createUserId,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
                    a.updateTime,
                </if>
                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateUserId') or colPickMode == 1 and data.containsKey('updateUserId')))">
                    a.updateUserId,
                </if>
        </trim>
    </sql>
    <!-- 新增 区分主键自增加还是业务插入 -->
    <insert id="insert" parameterType="MonitorAlarmRecordEntity"  useGeneratedKeys="true" keyProperty="id">
        insert into mortals_xhx_monitor_alarm_record
        (alarmId,reservationService,reservationNumber,monitorTime,monitorDeviceId,monitorDevice,checkInMethod,monitorCertificate,picUri,serverIndexCode,createTime,createUserId,updateTime,updateUserId)
        VALUES
        (#{alarmId},#{reservationService},#{reservationNumber},#{monitorTime},#{monitorDeviceId},#{monitorDevice},#{checkInMethod},#{monitorCertificate},#{picUri},#{serverIndexCode},#{createTime},#{createUserId},#{updateTime},#{updateUserId})
    </insert>

    <!-- 批量新增 -->
    <insert id="insertBatch" parameterType="paramDto">
        insert into mortals_xhx_monitor_alarm_record
        (alarmId,reservationService,reservationNumber,monitorTime,monitorDeviceId,monitorDevice,checkInMethod,monitorCertificate,picUri,serverIndexCode,createTime,createUserId,updateTime,updateUserId)
        VALUES
        <foreach collection="data.dataList" item="item" index="index" separator="," >
            (#{item.alarmId},#{item.reservationService},#{item.reservationNumber},#{item.monitorTime},#{item.monitorDeviceId},#{item.monitorDevice},#{item.checkInMethod},#{item.monitorCertificate},#{item.picUri},#{item.serverIndexCode},#{item.createTime},#{item.createUserId},#{item.updateTime},#{item.updateUserId})
        </foreach>
    </insert>


    <!-- 根据ParamDto更新 -->
    <update id="update" parameterType="paramDto">
        update mortals_xhx_monitor_alarm_record as a
        set
        <trim suffixOverrides="," suffix="">
            <if test="(colPickMode==0 and data.containsKey('alarmId')) or (colPickMode==1 and !data.containsKey('alarmId'))">
                a.alarmId=#{data.alarmId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('alarmIdIncrement')) or (colPickMode==1 and !data.containsKey('alarmIdIncrement'))">
                a.alarmId=ifnull(a.alarmId,0) + #{data.alarmIdIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('reservationService')) or (colPickMode==1 and !data.containsKey('reservationService'))">
                a.reservationService=#{data.reservationService},
            </if>
            <if test="(colPickMode==0 and data.containsKey('reservationNumber')) or (colPickMode==1 and !data.containsKey('reservationNumber'))">
                a.reservationNumber=#{data.reservationNumber},
            </if>
            <if test="(colPickMode==0 and data.containsKey('monitorTime')) or (colPickMode==1 and !data.containsKey('monitorTime'))">
                a.monitorTime=#{data.monitorTime},
            </if>
            <if test="(colPickMode==0 and data.containsKey('monitorDeviceId')) or (colPickMode==1 and !data.containsKey('monitorDeviceId'))">
                a.monitorDeviceId=#{data.monitorDeviceId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('monitorDeviceIdIncrement')) or (colPickMode==1 and !data.containsKey('monitorDeviceIdIncrement'))">
                a.monitorDeviceId=ifnull(a.monitorDeviceId,0) + #{data.monitorDeviceIdIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('monitorDevice')) or (colPickMode==1 and !data.containsKey('monitorDevice'))">
                a.monitorDevice=#{data.monitorDevice},
            </if>
            <if test="(colPickMode==0 and data.containsKey('checkInMethod')) or (colPickMode==1 and !data.containsKey('checkInMethod'))">
                a.checkInMethod=#{data.checkInMethod},
            </if>
            <if test="(colPickMode==0 and data.containsKey('checkInMethodIncrement')) or (colPickMode==1 and !data.containsKey('checkInMethodIncrement'))">
                a.checkInMethod=ifnull(a.checkInMethod,0) + #{data.checkInMethodIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('monitorCertificate')) or (colPickMode==1 and !data.containsKey('monitorCertificate'))">
                a.monitorCertificate=#{data.monitorCertificate},
            </if>
            <if test="(colPickMode==0 and data.containsKey('picUri')) or (colPickMode==1 and !data.containsKey('picUri'))">
                a.picUri=#{data.picUri},
            </if>
            <if test="(colPickMode==0 and data.containsKey('serverIndexCode')) or (colPickMode==1 and !data.containsKey('serverIndexCode'))">
                a.serverIndexCode=#{data.serverIndexCode},
            </if>
            <if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
                a.createTime=#{data.createTime},
            </if>
            <if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
                a.createUserId=#{data.createUserId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
                a.createUserId=ifnull(a.createUserId,0) + #{data.createUserIdIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
                a.updateTime=#{data.updateTime},
            </if>
            <if test="(colPickMode==0 and data.containsKey('updateUserId')) or (colPickMode==1 and !data.containsKey('updateUserId'))">
                a.updateUserId=#{data.updateUserId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !data.containsKey('updateUserIdIncrement'))">
                a.updateUserId=ifnull(a.updateUserId,0) + #{data.updateUserIdIncrement},
            </if>
        </trim>
        <trim suffixOverrides="where" suffix="">
            where
            <trim prefixOverrides="and" prefix="">
                <include refid="_condition_"/>
            </trim>
        </trim>
    </update>
    <!-- 批量更新 -->
    <update id="updateBatch" parameterType="paramDto">
        update mortals_xhx_monitor_alarm_record as a
        <trim prefix="set" suffixOverrides=",">
                        <trim prefix="alarmId=(case" suffix="ELSE alarmId end),">
                            <foreach collection="data.dataList" item="item" index="index" separator="" >
                                <choose>
                                    <when test="(colPickMode==0 and item.containsKey('alarmId')) or (colPickMode==1 and !item.containsKey('alarmId'))">
                                        when a.id=#{item.id} then #{item.alarmId}
                                    </when>
                                    <when test="(colPickMode==0 and item.containsKey('alarmIdIncrement')) or (colPickMode==1 and !item.containsKey('alarmIdIncrement'))">
                                        when a.id=#{item.id} then ifnull(a.alarmId,0) + #{item.alarmIdIncrement}
                                    </when>
                                </choose>
                            </foreach>
                        </trim>
                <trim prefix="reservationService=(case" suffix="ELSE reservationService end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('reservationService')) or (colPickMode==1 and !item.containsKey('reservationService'))">
                            when a.id=#{item.id} then #{item.reservationService}
                        </if>
                    </foreach>
                </trim>
                <trim prefix="reservationNumber=(case" suffix="ELSE reservationNumber end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('reservationNumber')) or (colPickMode==1 and !item.containsKey('reservationNumber'))">
                            when a.id=#{item.id} then #{item.reservationNumber}
                        </if>
                    </foreach>
                </trim>
                <trim prefix="monitorTime=(case" suffix="ELSE monitorTime end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('monitorTime')) or (colPickMode==1 and !item.containsKey('monitorTime'))">
                            when a.id=#{item.id} then #{item.monitorTime}
                        </if>
                    </foreach>
                </trim>
                        <trim prefix="monitorDeviceId=(case" suffix="ELSE monitorDeviceId end),">
                            <foreach collection="data.dataList" item="item" index="index" separator="" >
                                <choose>
                                    <when test="(colPickMode==0 and item.containsKey('monitorDeviceId')) or (colPickMode==1 and !item.containsKey('monitorDeviceId'))">
                                        when a.id=#{item.id} then #{item.monitorDeviceId}
                                    </when>
                                    <when test="(colPickMode==0 and item.containsKey('monitorDeviceIdIncrement')) or (colPickMode==1 and !item.containsKey('monitorDeviceIdIncrement'))">
                                        when a.id=#{item.id} then ifnull(a.monitorDeviceId,0) + #{item.monitorDeviceIdIncrement}
                                    </when>
                                </choose>
                            </foreach>
                        </trim>
                <trim prefix="monitorDevice=(case" suffix="ELSE monitorDevice end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('monitorDevice')) or (colPickMode==1 and !item.containsKey('monitorDevice'))">
                            when a.id=#{item.id} then #{item.monitorDevice}
                        </if>
                    </foreach>
                </trim>
                        <trim prefix="checkInMethod=(case" suffix="ELSE checkInMethod end),">
                            <foreach collection="data.dataList" item="item" index="index" separator="" >
                                <choose>
                                    <when test="(colPickMode==0 and item.containsKey('checkInMethod')) or (colPickMode==1 and !item.containsKey('checkInMethod'))">
                                        when a.id=#{item.id} then #{item.checkInMethod}
                                    </when>
                                    <when test="(colPickMode==0 and item.containsKey('checkInMethodIncrement')) or (colPickMode==1 and !item.containsKey('checkInMethodIncrement'))">
                                        when a.id=#{item.id} then ifnull(a.checkInMethod,0) + #{item.checkInMethodIncrement}
                                    </when>
                                </choose>
                            </foreach>
                        </trim>
                <trim prefix="monitorCertificate=(case" suffix="ELSE monitorCertificate end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('monitorCertificate')) or (colPickMode==1 and !item.containsKey('monitorCertificate'))">
                            when a.id=#{item.id} then #{item.monitorCertificate}
                        </if>
                    </foreach>
                </trim>
                <trim prefix="picUri=(case" suffix="ELSE picUri end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('picUri')) or (colPickMode==1 and !item.containsKey('picUri'))">
                            when a.id=#{item.id} then #{item.picUri}
                        </if>
                    </foreach>
                </trim>
                <trim prefix="serverIndexCode=(case" suffix="ELSE serverIndexCode end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('serverIndexCode')) or (colPickMode==1 and !item.containsKey('serverIndexCode'))">
                            when a.id=#{item.id} then #{item.serverIndexCode}
                        </if>
                    </foreach>
                </trim>
                <trim prefix="createTime=(case" suffix="ELSE createTime end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
                            when a.id=#{item.id} then #{item.createTime}
                        </if>
                    </foreach>
                </trim>
                        <trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
                            <foreach collection="data.dataList" item="item" index="index" separator="" >
                                <choose>
                                    <when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
                                        when a.id=#{item.id} then #{item.createUserId}
                                    </when>
                                    <when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
                                        when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
                                    </when>
                                </choose>
                            </foreach>
                        </trim>
                <trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
                    <foreach collection="data.dataList" item="item" index="index" separator="" >
                        <if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
                            when a.id=#{item.id} then #{item.updateTime}
                        </if>
                    </foreach>
                </trim>
                        <trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
                            <foreach collection="data.dataList" item="item" index="index" separator="" >
                                <choose>
                                    <when test="(colPickMode==0 and item.containsKey('updateUserId')) or (colPickMode==1 and !item.containsKey('updateUserId'))">
                                        when a.id=#{item.id} then #{item.updateUserId}
                                    </when>
                                    <when test="(colPickMode==0 and item.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !item.containsKey('updateUserIdIncrement'))">
                                        when a.id=#{item.id} then ifnull(a.updateUserId,0) + #{item.updateUserIdIncrement}
                                    </when>
                                </choose>
                            </foreach>
                        </trim>
        </trim>
        where id in
        <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
            #{item.id}
        </foreach>
    </update>
    <!-- 根据主健查询 -->
    <select id="getByKey" parameterType="paramDto" resultMap="MonitorAlarmRecordEntity-Map">
        select <include refid="_columns"/>
        from mortals_xhx_monitor_alarm_record as a
        where a.id=#{condition.id}
    </select>
    <!-- 根据主健删除 -->
    <delete id="deleteByKey" parameterType="paramDto">
        delete a.* from mortals_xhx_monitor_alarm_record as a where a.id=#{condition.id}
    </delete>
    <!-- 根据主健删除一批，针对单一主健有效 -->
    <delete id="deleteByKeys">
        delete from mortals_xhx_monitor_alarm_record where id in
        <foreach collection="array" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>
    <!-- 根据主健列表删除一批，针对单一主健有效 -->
    <delete id="deleteByKeyList">
        delete from mortals_xhx_monitor_alarm_record where id in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

    <!-- 根据对象列表删除一批，针对单一主健有效 -->
    <delete id="deleteByEntityList">
        delete from mortals_xhx_monitor_alarm_record where id in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
            #{item.id}
        </foreach>
    </delete>
    <!-- 根据paramDto删除一批 -->
    <delete id="deleteByMap" parameterType="paramDto">
        delete a.* from mortals_xhx_monitor_alarm_record as a
        <trim suffixOverrides="where" suffix="">
            where
            <trim prefixOverrides="and" prefix="">
                <include refid="_condition_"/>
            </trim>
        </trim>
    </delete>
    <!-- 获取列表 -->
    <select id="getList" parameterType="paramDto" resultMap="MonitorAlarmRecordEntity-Map">
        select <include refid="_columns"/>
        from mortals_xhx_monitor_alarm_record as a
        <trim suffixOverrides="where" suffix="">
            where
            <trim prefixOverrides="and" prefix="">
                <include refid="_condition_"/>
            </trim>
        </trim>
        <include refid="_orderCols_"/>
    </select>



    <!-- 获取 -->
    <select id="getListCount" parameterType="paramDto" resultType="int">
        select count(1)
        from mortals_xhx_monitor_alarm_record as a
        <trim suffixOverrides="where" suffix="">
            where
            <trim prefixOverrides="and" prefix="">
                <include refid="_condition_"/>
            </trim>
        </trim>
    </select>
    <!-- 条件映射 -->
    <sql id="_condition_">
        <if test="condition != null and !condition.isEmpty()">
            <!-- 条件映射-普通条件 -->
            <include refid="_condition_param_">
                <property name="_conditionParam_" value="condition"/>
                <property name="_conditionType_" value="and"/>
            </include>
            <!-- 条件映射-集合之间使用AND，集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
            <if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
                and
                <foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
                    <trim prefixOverrides="or" prefix="(" suffix=")">
                        <include refid="_condition_param_">
                            <property name="_conditionParam_" value="andCondition"/>
                            <property name="_conditionType_" value="or"/>
                        </include>
                    </trim>
                </foreach>
            </if>
            <!-- 条件映射-集合之间使用OR，集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
            <if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
                and
                <foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
                    <trim prefixOverrides="and" prefix="(" suffix=")">
                        <include refid="_condition_param_">
                            <property name="_conditionParam_" value="orCondition"/>
                            <property name="_conditionType_" value="and"/>
                        </include>
                    </trim>
                </foreach>
            </if>
        </if>
    </sql>
    <!-- 条件映射-代参数 -->
    <sql id="_condition_param_">
        <bind name="conditionParamRef" value="${_conditionParam_}"/>
        <if test="conditionParamRef.containsKey('id')">
            <if test="conditionParamRef.id != null">
                ${_conditionType_} a.id=#{${_conditionParam_}.id}
            </if>
        </if>
            <if test="conditionParamRef.containsKey('id')">
                <if test="conditionParamRef.id != null ">
                    ${_conditionType_} a.id = #{${_conditionParam_}.id}
                </if>
                <if test="conditionParamRef.id == null">
                    ${_conditionType_} a.id is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
                ${_conditionType_} a.id in
                <foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
                ${_conditionType_} a.id not in
                <foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
                ${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
            </if>
            <if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
                ${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
            </if>

            <if test="conditionParamRef.containsKey('alarmId')">
                <if test="conditionParamRef.alarmId != null ">
                    ${_conditionType_} a.alarmId = #{${_conditionParam_}.alarmId}
                </if>
                <if test="conditionParamRef.alarmId == null">
                    ${_conditionType_} a.alarmId is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('alarmIdList') and conditionParamRef.alarmIdList.size() > 0">
                ${_conditionType_} a.alarmId in
                <foreach collection="conditionParamRef.alarmIdList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('alarmIdNotList') and conditionParamRef.alarmIdNotList.size() > 0">
                ${_conditionType_} a.alarmId not in
                <foreach collection="conditionParamRef.alarmIdNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('alarmIdStart') and conditionParamRef.alarmIdStart != null">
                ${_conditionType_} a.alarmId <![CDATA[ >= ]]> #{${_conditionParam_}.alarmIdStart}
            </if>
            <if test="conditionParamRef.containsKey('alarmIdEnd') and conditionParamRef.alarmIdEnd != null">
                ${_conditionType_} a.alarmId <![CDATA[ <= ]]> #{${_conditionParam_}.alarmIdEnd}
            </if>


            <if test="conditionParamRef.containsKey('reservationService')">
                <if test="conditionParamRef.reservationService != null and conditionParamRef.reservationService != ''">
                    ${_conditionType_} a.reservationService like #{${_conditionParam_}.reservationService}
                </if>
                <if test="conditionParamRef.reservationService == null">
                    ${_conditionType_} a.reservationService is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('reservationServiceList') and conditionParamRef.reservationServiceList.size() > 0">
                ${_conditionType_} a.reservationService in
                <foreach collection="conditionParamRef.reservationServiceList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('reservationServiceNotList') and conditionParamRef.reservationServiceNotList.size() > 0">
                ${_conditionType_} a.reservationService not in
                <foreach collection="conditionParamRef.reservationServiceNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>

            <if test="conditionParamRef.containsKey('reservationNumber')">
                <if test="conditionParamRef.reservationNumber != null and conditionParamRef.reservationNumber != ''">
                    ${_conditionType_} a.reservationNumber like #{${_conditionParam_}.reservationNumber}
                </if>
                <if test="conditionParamRef.reservationNumber == null">
                    ${_conditionType_} a.reservationNumber is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('reservationNumberList') and conditionParamRef.reservationNumberList.size() > 0">
                ${_conditionType_} a.reservationNumber in
                <foreach collection="conditionParamRef.reservationNumberList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('reservationNumberNotList') and conditionParamRef.reservationNumberNotList.size() > 0">
                ${_conditionType_} a.reservationNumber not in
                <foreach collection="conditionParamRef.reservationNumberNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>

            <if test="conditionParamRef.containsKey('monitorTime')">
                <if test="conditionParamRef.monitorTime != null ">
                    ${_conditionType_} a.monitorTime = #{${_conditionParam_}.monitorTime}
                </if>
                <if test="conditionParamRef.monitorTime == null">
                    ${_conditionType_} a.monitorTime is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('monitorTimeStart') and conditionParamRef.monitorTimeStart != null and conditionParamRef.monitorTimeStart!=''">
                ${_conditionType_} a.monitorTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.monitorTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('monitorTimeEnd') and conditionParamRef.monitorTimeEnd != null and conditionParamRef.monitorTimeEnd!=''">
                ${_conditionType_} a.monitorTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.monitorTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceId')">
                <if test="conditionParamRef.monitorDeviceId != null ">
                    ${_conditionType_} a.monitorDeviceId = #{${_conditionParam_}.monitorDeviceId}
                </if>
                <if test="conditionParamRef.monitorDeviceId == null">
                    ${_conditionType_} a.monitorDeviceId is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceIdList') and conditionParamRef.monitorDeviceIdList.size() > 0">
                ${_conditionType_} a.monitorDeviceId in
                <foreach collection="conditionParamRef.monitorDeviceIdList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceIdNotList') and conditionParamRef.monitorDeviceIdNotList.size() > 0">
                ${_conditionType_} a.monitorDeviceId not in
                <foreach collection="conditionParamRef.monitorDeviceIdNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceIdStart') and conditionParamRef.monitorDeviceIdStart != null">
                ${_conditionType_} a.monitorDeviceId <![CDATA[ >= ]]> #{${_conditionParam_}.monitorDeviceIdStart}
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceIdEnd') and conditionParamRef.monitorDeviceIdEnd != null">
                ${_conditionType_} a.monitorDeviceId <![CDATA[ <= ]]> #{${_conditionParam_}.monitorDeviceIdEnd}
            </if>


            <if test="conditionParamRef.containsKey('monitorDevice')">
                <if test="conditionParamRef.monitorDevice != null and conditionParamRef.monitorDevice != ''">
                    ${_conditionType_} a.monitorDevice like #{${_conditionParam_}.monitorDevice}
                </if>
                <if test="conditionParamRef.monitorDevice == null">
                    ${_conditionType_} a.monitorDevice is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceList') and conditionParamRef.monitorDeviceList.size() > 0">
                ${_conditionType_} a.monitorDevice in
                <foreach collection="conditionParamRef.monitorDeviceList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('monitorDeviceNotList') and conditionParamRef.monitorDeviceNotList.size() > 0">
                ${_conditionType_} a.monitorDevice not in
                <foreach collection="conditionParamRef.monitorDeviceNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('checkInMethod')">
                <if test="conditionParamRef.checkInMethod != null ">
                    ${_conditionType_} a.checkInMethod = #{${_conditionParam_}.checkInMethod}
                </if>
                <if test="conditionParamRef.checkInMethod == null">
                    ${_conditionType_} a.checkInMethod is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('checkInMethodList') and conditionParamRef.checkInMethodList.size() > 0">
                ${_conditionType_} a.checkInMethod in
                <foreach collection="conditionParamRef.checkInMethodList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('checkInMethodNotList') and conditionParamRef.checkInMethodNotList.size() > 0">
                ${_conditionType_} a.checkInMethod not in
                <foreach collection="conditionParamRef.checkInMethodNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('checkInMethodStart') and conditionParamRef.checkInMethodStart != null">
                ${_conditionType_} a.checkInMethod <![CDATA[ >= ]]> #{${_conditionParam_}.checkInMethodStart}
            </if>
            <if test="conditionParamRef.containsKey('checkInMethodEnd') and conditionParamRef.checkInMethodEnd != null">
                ${_conditionType_} a.checkInMethod <![CDATA[ <= ]]> #{${_conditionParam_}.checkInMethodEnd}
            </if>


            <if test="conditionParamRef.containsKey('monitorCertificate')">
                <if test="conditionParamRef.monitorCertificate != null and conditionParamRef.monitorCertificate != ''">
                    ${_conditionType_} a.monitorCertificate like #{${_conditionParam_}.monitorCertificate}
                </if>
                <if test="conditionParamRef.monitorCertificate == null">
                    ${_conditionType_} a.monitorCertificate is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('monitorCertificateList') and conditionParamRef.monitorCertificateList.size() > 0">
                ${_conditionType_} a.monitorCertificate in
                <foreach collection="conditionParamRef.monitorCertificateList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('monitorCertificateNotList') and conditionParamRef.monitorCertificateNotList.size() > 0">
                ${_conditionType_} a.monitorCertificate not in
                <foreach collection="conditionParamRef.monitorCertificateNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>

            <if test="conditionParamRef.containsKey('picUri')">
                <if test="conditionParamRef.picUri != null and conditionParamRef.picUri != ''">
                    ${_conditionType_} a.picUri like #{${_conditionParam_}.picUri}
                </if>
                <if test="conditionParamRef.picUri == null">
                    ${_conditionType_} a.picUri is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('picUriList') and conditionParamRef.picUriList.size() > 0">
                ${_conditionType_} a.picUri in
                <foreach collection="conditionParamRef.picUriList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('picUriNotList') and conditionParamRef.picUriNotList.size() > 0">
                ${_conditionType_} a.picUri not in
                <foreach collection="conditionParamRef.picUriNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>

            <if test="conditionParamRef.containsKey('serverIndexCode')">
                <if test="conditionParamRef.serverIndexCode != null and conditionParamRef.serverIndexCode != ''">
                    ${_conditionType_} a.serverIndexCode like #{${_conditionParam_}.serverIndexCode}
                </if>
                <if test="conditionParamRef.serverIndexCode == null">
                    ${_conditionType_} a.serverIndexCode is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('serverIndexCodeList') and conditionParamRef.serverIndexCodeList.size() > 0">
                ${_conditionType_} a.serverIndexCode in
                <foreach collection="conditionParamRef.serverIndexCodeList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('serverIndexCodeNotList') and conditionParamRef.serverIndexCodeNotList.size() > 0">
                ${_conditionType_} a.serverIndexCode not in
                <foreach collection="conditionParamRef.serverIndexCodeNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>

            <if test="conditionParamRef.containsKey('createTime')">
                <if test="conditionParamRef.createTime != null ">
                    ${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
                </if>
                <if test="conditionParamRef.createTime == null">
                    ${_conditionType_} a.createTime is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
                ${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
                ${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('createUserId')">
                <if test="conditionParamRef.createUserId != null ">
                    ${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
                </if>
                <if test="conditionParamRef.createUserId == null">
                    ${_conditionType_} a.createUserId is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
                ${_conditionType_} a.createUserId in
                <foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0">
                ${_conditionType_} a.createUserId not in
                <foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
                ${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
            </if>
            <if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
                ${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
            </if>


            <if test="conditionParamRef.containsKey('updateTime')">
                <if test="conditionParamRef.updateTime != null ">
                    ${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
                </if>
                <if test="conditionParamRef.updateTime == null">
                    ${_conditionType_} a.updateTime is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
                ${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
                ${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
            </if>
            <if test="conditionParamRef.containsKey('updateUserId')">
                <if test="conditionParamRef.updateUserId != null ">
                    ${_conditionType_} a.updateUserId = #{${_conditionParam_}.updateUserId}
                </if>
                <if test="conditionParamRef.updateUserId == null">
                    ${_conditionType_} a.updateUserId is null
                </if>
            </if>
            <if test="conditionParamRef.containsKey('updateUserIdList') and conditionParamRef.updateUserIdList.size() > 0">
                ${_conditionType_} a.updateUserId in
                <foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('updateUserIdNotList') and conditionParamRef.updateUserIdNotList.size() > 0">
                ${_conditionType_} a.updateUserId not in
                <foreach collection="conditionParamRef.updateUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="conditionParamRef.containsKey('updateUserIdStart') and conditionParamRef.updateUserIdStart != null">
                ${_conditionType_} a.updateUserId <![CDATA[ >= ]]> #{${_conditionParam_}.updateUserIdStart}
            </if>
            <if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
                ${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
            </if>

    </sql>
    <sql id="_orderCols_">
        <if test="orderColList != null and !orderColList.isEmpty()">
            order by
            <trim suffixOverrides=","  suffix="">
                <foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
                     ${item.colName} ${item.sortKind}
                </foreach>
            </trim>
        </if>
        <if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
            order by
            <trim suffixOverrides=","  suffix="">
                    <if test="orderCol.containsKey('id')">
                        a.id
                        <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('alarmId')">
                        a.alarmId
                        <if test='orderCol.alarmId != null and "DESC".equalsIgnoreCase(orderCol.alarmId)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('reservationService')">
                        a.reservationService
                        <if test='orderCol.reservationService != null and "DESC".equalsIgnoreCase(orderCol.reservationService)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('reservationNumber')">
                        a.reservationNumber
                        <if test='orderCol.reservationNumber != null and "DESC".equalsIgnoreCase(orderCol.reservationNumber)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('monitorTime')">
                        a.monitorTime
                        <if test='orderCol.monitorTime != null and "DESC".equalsIgnoreCase(orderCol.monitorTime)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('monitorDeviceId')">
                        a.monitorDeviceId
                        <if test='orderCol.monitorDeviceId != null and "DESC".equalsIgnoreCase(orderCol.monitorDeviceId)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('monitorDevice')">
                        a.monitorDevice
                        <if test='orderCol.monitorDevice != null and "DESC".equalsIgnoreCase(orderCol.monitorDevice)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('checkInMethod')">
                        a.checkInMethod
                        <if test='orderCol.checkInMethod != null and "DESC".equalsIgnoreCase(orderCol.checkInMethod)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('monitorCertificate')">
                        a.monitorCertificate
                        <if test='orderCol.monitorCertificate != null and "DESC".equalsIgnoreCase(orderCol.monitorCertificate)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('picUri')">
                        a.picUri
                        <if test='orderCol.picUri != null and "DESC".equalsIgnoreCase(orderCol.picUri)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('serverIndexCode')">
                        a.serverIndexCode
                        <if test='orderCol.serverIndexCode != null and "DESC".equalsIgnoreCase(orderCol.serverIndexCode)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('createTime')">
                        a.createTime
                        <if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('createUserId')">
                        a.createUserId
                        <if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('updateTime')">
                        a.updateTime
                        <if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
                        ,
                    </if>
                    <if test="orderCol.containsKey('updateUserId')">
                        a.updateUserId
                        <if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
                        ,
                    </if>
            </trim>
        </if>
    </sql>
    <sql id="_group_by_">
        <if test="groupList != null and !groupList.isEmpty()">
            GROUP BY
            <trim suffixOverrides=","  suffix="">
                <foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
                    ${item}
                </foreach>
            </trim>
        </if>
    </sql>
</mapper>