<?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.converge.dao.ibatis.ConvergeAppsDaoImpl">

    <!-- 字段和属性映射 -->
    <resultMap type="ConvergeAppsEntity" id="ConvergeAppsEntity-Map">
        <id  property="id" column="id" />
        <result property="equipmentId" column="equipmentId" />
        <result property="appEname" column="appEname" />
        <result property="appName" column="appName" />
        <result property="appSimpleName" column="appSimpleName" />
        <result property="provider" column="provider" />
        <result property="origin" column="origin" />
        <result property="pv" column="pv" />
        <result property="uv" column="uv" />
        <result property="opr" column="opr" />
        <result property="siteId" column="siteId" />

    </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('equipmentId') or colPickMode == 1 and data.containsKey('equipmentId')))">
                a.equipmentId,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appEname') or colPickMode == 1 and data.containsKey('appEname')))">
                a.appEname,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
                a.appName,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appSimpleName') or colPickMode == 1 and data.containsKey('appSimpleName')))">
                a.appSimpleName,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('provider') or colPickMode == 1 and data.containsKey('provider')))">
                a.provider,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('origin') or colPickMode == 1 and data.containsKey('origin')))">
                a.origin,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('pv') or colPickMode == 1 and data.containsKey('pv')))">
                a.pv,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('uv') or colPickMode == 1 and data.containsKey('uv')))">
                a.uv,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('opr') or colPickMode == 1 and data.containsKey('opr')))">
                a.opr,
            </if>
            <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteId') or colPickMode == 1 and data.containsKey('siteId')))">
                a.siteId,
            </if>
        </trim>
    </sql>
    <!-- 新增 区分主键自增加还是业务插入 -->
    <insert id="insert" parameterType="ConvergeAppsEntity"  useGeneratedKeys="true" keyProperty="id">
        insert into mortals_xhx_converge_apps
        (equipmentId,appEname,appName,appSimpleName,provider,origin,pv,uv,opr,siteId)
        VALUES
        (#{equipmentId},#{appEname},#{appName},#{appSimpleName},#{provider},#{origin},#{pv},#{uv},#{opr},#{siteId})
    </insert>

    <!-- 批量新增 -->
    <insert id="insertBatch" parameterType="paramDto">
        insert into mortals_xhx_converge_apps
        (equipmentId,appEname,appName,appSimpleName,provider,origin,pv,uv,opr,siteId)
        VALUES
        <foreach collection="data.dataList" item="item" index="index" separator="," >
            (#{item.equipmentId},#{item.appEname},#{item.appName},#{item.appSimpleName},#{item.provider},#{item.origin},#{item.pv},#{item.uv},#{item.opr},#{item.siteId})
        </foreach>
    </insert>


    <!-- 根据ParamDto更新 -->
    <update id="update" parameterType="paramDto">
        update mortals_xhx_converge_apps as a
        set
        <trim suffixOverrides="," suffix="">
            <if test="(colPickMode==0 and data.containsKey('equipmentId')) or (colPickMode==1 and !data.containsKey('equipmentId'))">
                a.equipmentId=#{data.equipmentId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('equipmentIdIncrement')) or (colPickMode==1 and !data.containsKey('equipmentIdIncrement'))">
                a.equipmentId=ifnull(a.equipmentId,0) + #{data.equipmentIdIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('appEname')) or (colPickMode==1 and !data.containsKey('appEname'))">
                a.appEname=#{data.appEname},
            </if>
            <if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
                a.appName=#{data.appName},
            </if>
            <if test="(colPickMode==0 and data.containsKey('appSimpleName')) or (colPickMode==1 and !data.containsKey('appSimpleName'))">
                a.appSimpleName=#{data.appSimpleName},
            </if>
            <if test="(colPickMode==0 and data.containsKey('provider')) or (colPickMode==1 and !data.containsKey('provider'))">
                a.provider=#{data.provider},
            </if>
            <if test="(colPickMode==0 and data.containsKey('origin')) or (colPickMode==1 and !data.containsKey('origin'))">
                a.origin=#{data.origin},
            </if>
            <if test="(colPickMode==0 and data.containsKey('pv')) or (colPickMode==1 and !data.containsKey('pv'))">
                a.pv=#{data.pv},
            </if>
            <if test="(colPickMode==0 and data.containsKey('pvIncrement')) or (colPickMode==1 and !data.containsKey('pvIncrement'))">
                a.pv=ifnull(a.pv,0) + #{data.pvIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('uv')) or (colPickMode==1 and !data.containsKey('uv'))">
                a.uv=#{data.uv},
            </if>
            <if test="(colPickMode==0 and data.containsKey('uvIncrement')) or (colPickMode==1 and !data.containsKey('uvIncrement'))">
                a.uv=ifnull(a.uv,0) + #{data.uvIncrement},
            </if>
            <if test="(colPickMode==0 and data.containsKey('opr')) or (colPickMode==1 and !data.containsKey('opr'))">
                a.opr=#{data.opr},
            </if>
            <if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))">
                a.siteId=#{data.siteId},
            </if>
            <if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))">
                a.siteId=ifnull(a.siteId,0) + #{data.siteIdIncrement},
            </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_converge_apps as a
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="equipmentId=(case" suffix="ELSE equipmentId end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <choose>
                        <when test="(colPickMode==0 and item.containsKey('equipmentId')) or (colPickMode==1 and !item.containsKey('equipmentId'))">
                            when a.id=#{item.id} then #{item.equipmentId}
                        </when>
                        <when test="(colPickMode==0 and item.containsKey('equipmentIdIncrement')) or (colPickMode==1 and !item.containsKey('equipmentIdIncrement'))">
                            when a.id=#{item.id} then ifnull(a.equipmentId,0) + #{item.equipmentIdIncrement}
                        </when>
                    </choose>
                </foreach>
            </trim>
            <trim prefix="appEname=(case" suffix="ELSE appEname end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('appEname')) or (colPickMode==1 and !item.containsKey('appEname'))">
                        when a.id=#{item.id} then #{item.appEname}
                    </if>
                </foreach>
            </trim>
            <trim prefix="appName=(case" suffix="ELSE appName end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
                        when a.id=#{item.id} then #{item.appName}
                    </if>
                </foreach>
            </trim>
            <trim prefix="appSimpleName=(case" suffix="ELSE appSimpleName end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('appSimpleName')) or (colPickMode==1 and !item.containsKey('appSimpleName'))">
                        when a.id=#{item.id} then #{item.appSimpleName}
                    </if>
                </foreach>
            </trim>
            <trim prefix="provider=(case" suffix="ELSE provider end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('provider')) or (colPickMode==1 and !item.containsKey('provider'))">
                        when a.id=#{item.id} then #{item.provider}
                    </if>
                </foreach>
            </trim>
            <trim prefix="origin=(case" suffix="ELSE origin end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('origin')) or (colPickMode==1 and !item.containsKey('origin'))">
                        when a.id=#{item.id} then #{item.origin}
                    </if>
                </foreach>
            </trim>
            <trim prefix="pv=(case" suffix="ELSE pv end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <choose>
                        <when test="(colPickMode==0 and item.containsKey('pv')) or (colPickMode==1 and !item.containsKey('pv'))">
                            when a.id=#{item.id} then #{item.pv}
                        </when>
                        <when test="(colPickMode==0 and item.containsKey('pvIncrement')) or (colPickMode==1 and !item.containsKey('pvIncrement'))">
                            when a.id=#{item.id} then ifnull(a.pv,0) + #{item.pvIncrement}
                        </when>
                    </choose>
                </foreach>
            </trim>
            <trim prefix="uv=(case" suffix="ELSE uv end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <choose>
                        <when test="(colPickMode==0 and item.containsKey('uv')) or (colPickMode==1 and !item.containsKey('uv'))">
                            when a.id=#{item.id} then #{item.uv}
                        </when>
                        <when test="(colPickMode==0 and item.containsKey('uvIncrement')) or (colPickMode==1 and !item.containsKey('uvIncrement'))">
                            when a.id=#{item.id} then ifnull(a.uv,0) + #{item.uvIncrement}
                        </when>
                    </choose>
                </foreach>
            </trim>
            <trim prefix="opr=(case" suffix="ELSE opr end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <if test="(colPickMode==0 and item.containsKey('opr')) or (colPickMode==1 and !item.containsKey('opr'))">
                        when a.id=#{item.id} then #{item.opr}
                    </if>
                </foreach>
            </trim>
            <trim prefix="siteId=(case" suffix="ELSE siteId end),">
                <foreach collection="data.dataList" item="item" index="index" separator="" >
                    <choose>
                        <when test="(colPickMode==0 and item.containsKey('siteId')) or (colPickMode==1 and !item.containsKey('siteId'))">
                            when a.id=#{item.id} then #{item.siteId}
                        </when>
                        <when test="(colPickMode==0 and item.containsKey('siteIdIncrement')) or (colPickMode==1 and !item.containsKey('siteIdIncrement'))">
                            when a.id=#{item.id} then ifnull(a.siteId,0) + #{item.siteIdIncrement}
                        </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="ConvergeAppsEntity-Map">
        select <include refid="_columns"/>
        from mortals_xhx_converge_apps as a
        where a.id=#{condition.id}
    </select>
    <!-- 根据主健删除 -->
    <delete id="deleteByKey" parameterType="paramDto">
        delete a.* from mortals_xhx_converge_apps as a where a.id=#{condition.id}
    </delete>
    <!-- 根据主健删除一批,针对单一主健有效 -->
    <delete id="deleteByKeys">
        delete from mortals_xhx_converge_apps where id in
        <foreach collection="array" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>
    <!-- 根据主健列表删除一批,针对单一主健有效 -->
    <delete id="deleteByKeyList">
        delete from mortals_xhx_converge_apps where id in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

    <!-- 根据对象列表删除一批,针对单一主健有效 -->
    <delete id="deleteByEntityList">
        delete from mortals_xhx_converge_apps 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_converge_apps as a
        <trim suffixOverrides="where" suffix="">
            where
            <trim prefixOverrides="and" prefix="">
                <include refid="_condition_"/>
            </trim>
        </trim>
    </delete>
    <!-- 获取列表 -->
    <select id="getList" parameterType="paramDto" resultMap="ConvergeAppsEntity-Map">
        select <include refid="_columns"/>
        from mortals_xhx_converge_apps 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_converge_apps 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('equipmentId')">
            <if test="conditionParamRef.equipmentId != null ">
                ${_conditionType_} a.equipmentId = #{${_conditionParam_}.equipmentId}
            </if>
            <if test="conditionParamRef.equipmentId == null">
                ${_conditionType_} a.equipmentId is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('equipmentIdList') and conditionParamRef.equipmentIdList.size() > 0">
            ${_conditionType_} a.equipmentId in
            <foreach collection="conditionParamRef.equipmentIdList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('equipmentIdNotList') and conditionParamRef.equipmentIdNotList.size() > 0">
            ${_conditionType_} a.equipmentId not in
            <foreach collection="conditionParamRef.equipmentIdNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('equipmentIdStart') and conditionParamRef.equipmentIdStart != null">
            ${_conditionType_} a.equipmentId <![CDATA[ >= ]]> #{${_conditionParam_}.equipmentIdStart}
        </if>
        <if test="conditionParamRef.containsKey('equipmentIdEnd') and conditionParamRef.equipmentIdEnd != null">
            ${_conditionType_} a.equipmentId <![CDATA[ <= ]]> #{${_conditionParam_}.equipmentIdEnd}
        </if>


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

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

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

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

        <if test="conditionParamRef.containsKey('origin')">
            <if test="conditionParamRef.origin != null and conditionParamRef.origin != ''">
                ${_conditionType_} a.origin like #{${_conditionParam_}.origin}
            </if>
            <if test="conditionParamRef.origin == null">
                ${_conditionType_} a.origin is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('originList') and conditionParamRef.originList.size() > 0">
            ${_conditionType_} a.origin in
            <foreach collection="conditionParamRef.originList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('originNotList') and conditionParamRef.originNotList.size() > 0">
            ${_conditionType_} a.origin not in
            <foreach collection="conditionParamRef.originNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('pv')">
            <if test="conditionParamRef.pv != null ">
                ${_conditionType_} a.pv = #{${_conditionParam_}.pv}
            </if>
            <if test="conditionParamRef.pv == null">
                ${_conditionType_} a.pv is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('pvList') and conditionParamRef.pvList.size() > 0">
            ${_conditionType_} a.pv in
            <foreach collection="conditionParamRef.pvList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('pvNotList') and conditionParamRef.pvNotList.size() > 0">
            ${_conditionType_} a.pv not in
            <foreach collection="conditionParamRef.pvNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('pvStart') and conditionParamRef.pvStart != null">
            ${_conditionType_} a.pv <![CDATA[ >= ]]> #{${_conditionParam_}.pvStart}
        </if>
        <if test="conditionParamRef.containsKey('pvEnd') and conditionParamRef.pvEnd != null">
            ${_conditionType_} a.pv <![CDATA[ <= ]]> #{${_conditionParam_}.pvEnd}
        </if>

        <if test="conditionParamRef.containsKey('uv')">
            <if test="conditionParamRef.uv != null ">
                ${_conditionType_} a.uv = #{${_conditionParam_}.uv}
            </if>
            <if test="conditionParamRef.uv == null">
                ${_conditionType_} a.uv is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('uvList') and conditionParamRef.uvList.size() > 0">
            ${_conditionType_} a.uv in
            <foreach collection="conditionParamRef.uvList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('uvNotList') and conditionParamRef.uvNotList.size() > 0">
            ${_conditionType_} a.uv not in
            <foreach collection="conditionParamRef.uvNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('uvStart') and conditionParamRef.uvStart != null">
            ${_conditionType_} a.uv <![CDATA[ >= ]]> #{${_conditionParam_}.uvStart}
        </if>
        <if test="conditionParamRef.containsKey('uvEnd') and conditionParamRef.uvEnd != null">
            ${_conditionType_} a.uv <![CDATA[ <= ]]> #{${_conditionParam_}.uvEnd}
        </if>


        <if test="conditionParamRef.containsKey('opr')">
            <if test="conditionParamRef.opr != null and conditionParamRef.opr != ''">
                ${_conditionType_} a.opr like #{${_conditionParam_}.opr}
            </if>
            <if test="conditionParamRef.opr == null">
                ${_conditionType_} a.opr is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('oprList') and conditionParamRef.oprList.size() > 0">
            ${_conditionType_} a.opr in
            <foreach collection="conditionParamRef.oprList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('oprNotList') and conditionParamRef.oprNotList.size() > 0">
            ${_conditionType_} a.opr not in
            <foreach collection="conditionParamRef.oprNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('siteId')">
            <if test="conditionParamRef.siteId != null ">
                ${_conditionType_} a.siteId = #{${_conditionParam_}.siteId}
            </if>
            <if test="conditionParamRef.siteId == null">
                ${_conditionType_} a.siteId is null
            </if>
        </if>
        <if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
            ${_conditionType_} a.siteId in
            <foreach collection="conditionParamRef.siteIdList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('siteIdNotList') and conditionParamRef.siteIdNotList.size() > 0">
            ${_conditionType_} a.siteId not in
            <foreach collection="conditionParamRef.siteIdNotList" open="(" close=")" index="index" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="conditionParamRef.containsKey('siteIdStart') and conditionParamRef.siteIdStart != null">
            ${_conditionType_} a.siteId <![CDATA[ >= ]]> #{${_conditionParam_}.siteIdStart}
        </if>
        <if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
            ${_conditionType_} a.siteId <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
        </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('equipmentId')">
                    a.equipmentId
                    <if test='orderCol.equipmentId != null and "DESC".equalsIgnoreCase(orderCol.equipmentId)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('appEname')">
                    a.appEname
                    <if test='orderCol.appEname != null and "DESC".equalsIgnoreCase(orderCol.appEname)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('appName')">
                    a.appName
                    <if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('appSimpleName')">
                    a.appSimpleName
                    <if test='orderCol.appSimpleName != null and "DESC".equalsIgnoreCase(orderCol.appSimpleName)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('provider')">
                    a.provider
                    <if test='orderCol.provider != null and "DESC".equalsIgnoreCase(orderCol.provider)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('origin')">
                    a.origin
                    <if test='orderCol.origin != null and "DESC".equalsIgnoreCase(orderCol.origin)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('pv')">
                    a.pv
                    <if test='orderCol.pv != null and "DESC".equalsIgnoreCase(orderCol.pv)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('uv')">
                    a.uv
                    <if test='orderCol.uv != null and "DESC".equalsIgnoreCase(orderCol.uv)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('opr')">
                    a.opr
                    <if test='orderCol.opr != null and "DESC".equalsIgnoreCase(orderCol.opr)'>DESC</if>
                    ,
                </if>
                <if test="orderCol.containsKey('siteId')">
                    a.siteId
                    <if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>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>