Newer
Older
sensorhub-plus / casic-iot-dao / src / main / resources / mapper / DeviceDataMapper.xml
<?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.casic.missiles.mapper.DeviceDataMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.DeviceData">
        <id column="id" property="id"/>
        <result column="devcode" property="devcode"/>
        <result column="device_type" property="deviceType"/>
        <result column="cell" property="cell"/>
        <result column="data_json" property="dataJson"/>
        <result column="decrypt_before_data" property="decryptBeforeData"/>
        <result column="decrypt_after_data" property="decryptAfterData"/>
        <result column="uptime" property="uptime"/>
        <result column="logtime" property="logtime"/>
    </resultMap>

    <sql id="char_toDate" databaseId="mysql">
        ${paramStr}
    </sql>

    <sql id="char_toDate" databaseId="pgsql">
       TO_TIMESTAMP(${paramStr},'yyyy-MM-dd hh24:mi:ss')::timestamp without time zone
    </sql>

    <sql id="char_toDate" databaseId="oracle">
        TO_DATE(${paramStr},'yyyy-mm-dd hh24:mi')
    </sql>

    <sql id="timestampToChar" databaseId="mysql">
        DATA_FORMAT(#{column}, '%Y-m%-d% H%:i%:s%')
    </sql>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, devcode, device_type, cell, data_json, decrypt_before_data, decrypt_after_data, uptime, logtime
    </sql>

    <sql id="Base_Biz_Data">
        id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
    </sql>

    <select id="listPage" resultType="com.casic.missiles.dto.data.DeviceDataListVO">
          SELECT  	dd.id,
                    dd.devcode,
                    dd.device_type AS "deviceType",
                    deptid,
                    dd.cell,
                    dd.data_json AS "dataJson",
                    decrypt_before_data AS "decryptBeforeData",
                    decrypt_after_data AS "decryptAfterData",
                    uptime,
                    logtime,
                    d.STATUS,
                    d.group_id AS "groupId",
                    dg.group_name AS "groupName"
        FROM (
               SELECT *
               FROM device_data
               WHERE  1=1
                <if test="request.devcode!='' and request.devcode != null">
                    AND devcode like CONCAT('%',#{request.devcode},'%')
                </if>
                <if test="request.deviceType!='' and request.deviceType != null">
                    AND device_type =#{request.deviceType}
                </if>
                <if test="request.beginTime!='' and request.beginTime!=null">
                    AND logtime <![CDATA[  >=  ]]>
                    <include refid="char_toDate">
                        <property name="paramStr" value="#{request.beginTime}"/>
                    </include>
                </if>
                <if test="request.endTime!='' and request.endTime!=null">
                    AND logtime <![CDATA[  <=  ]]>
                    <include refid="char_toDate">
                        <property name="paramStr" value="#{request.endTime}"/>
                    </include>
                </if>
                <if test="request.ids != null">
                    and id in
                    <foreach collection="request.ids" index="index" item="id" open="(" separator="," close=")">
                        #{id}
                    </foreach>
                </if>

          )dd
          JOIN (
                SELECT id, group_id,status,devcode
                FROM device
                WHERE valid=1
                <if test="request.devcode!='' and request.devcode != null">
                    AND devcode like CONCAT('%',#{request.devcode},'%')
                </if>
                <if test="request.deviceType!='' and request.deviceType != null">
                    AND device_type =#{request.deviceType}
                </if>
                <if test="request.groupId!='' and request.groupId != null">
                    AND group_id=#{request.groupId}
                </if>
          )d ON d.devcode=dd.devcode
          JOIN (
                SELECT   deptid,id,group_name
                FROM device_group
                WHERE valid=1
                <if test="request.groupId!='' and request.groupId != null">
                    AND id=#{request.groupId}
                </if>
          ) dg ON dg.id=d.group_id
          order by logtime desc

    </select>

    <select id="latestBizData" resultType="com.casic.missiles.dto.data.DeviceBizDataDTO">
        SELECT
            <include refid="Base_Biz_Data"></include>
        FROM
            device_biz_data dbd
        WHERE
            dbd.devcode = #{devCode}
        ORDER BY
            dbd.logtime DESC,
            dbd.id DESC
        LIMIT 1
    </select>

    <select id="listPageBizData" resultType="com.casic.missiles.dto.data.DeviceBizDataDTO">
        SELECT
            dbd.id, dbd.frame_log_id, dbd.devcode, dbd.device_type, dbd.cell, dbd.pci, dbd.rsrp, dbd.snr, dbd.biz_type, dbd.value, dbd.uptime, dbd.logtime
        FROM
            device_biz_data dbd
        LEFT JOIN
            device d
        ON d.devcode = dbd.devcode
        JOIN
            device_group dg
        ON dg.id = d.group_id
        WHERE d.valid = 1
            <if test="request.devCode!='' and request.devCode != null">
                AND dbd.devcode like CONCAT('%',#{request.devCode},'%')
            </if>
            <if test="request.bizType!='' and request.bizType != null">
                AND dbd.biz_type =#{request.bizType}
            </if>
        <if test="request.groupId!='' and request.groupId != null">
            AND d.group_id =#{request.groupId}
        </if>
            <if test="request.beginTime!='' and request.beginTime!=null">
                AND dbd.logtime <![CDATA[  >=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.beginTime}"/>
                </include>
            </if>
            <if test="request.endTime!='' and request.endTime!=null">
                AND dbd.logtime <![CDATA[  <=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.endTime}"/>
                </include>
            </if>
            <if test="request.ids != null">
                and dbd.id in
                <foreach collection="request.ids" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
        ORDER BY
            dbd.logtime DESC,
            dbd.id DESC
    </select>


</mapper>