Newer
Older
sensorhub-plus / casic-iot-dao / src / resource / mapper / DeviceMapper.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.DeviceMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.Device">
        <id column="id" property="id" />
        <result column="group_id" property="groupId" />
        <result column="product_id" property="productId" />
        <result column="devcode" property="devcode" />
        <result column="device_type" property="deviceType" />
        <result column="unit" property="unit" />
        <result column="model" property="model" />
        <result column="name" property="name" />
        <result column="status" property="status" />
        <result column="imei" property="imei" />
        <result column="create_time" property="createTime" />
        <result column="create_user_name" property="createUserName" />
        <result column="valid" property="valid" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, devcode, device_type, unit, name, product_id, status, imei, create_time, create_user_id
    </sql>

    <select id="listPage" resultType="com.casic.missiles.dto.device.DeviceListVO">
        SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode,uptime,
        data_value AS "dataValue",model,imei,dd.cell
        FROM (
            SELECT *
            FROM device
            WHERE VALID=1
            <if test="request.groupId!='' and request.groupId != null">
                AND group_id =#{request.groupId}
            </if>
            <if test="request.devcode!='' and request.devcode != null">
                AND devcode like CONCAT('%',#{request.devcode},'%')
            </if>
            <if test="request.imei!='' and request.imei != null">
                AND imei like CONCAT('%',#{request.imei},'%')
            </if>
            <if test="request.deviceType!='' and request.deviceType != null">
                AND device_type =#{request.deviceType}
            </if>
            <if test="request.status!='' and request.status != null">
                AND status =#{request.status}
            </if>
            <if test="request.productId!='' and request.productId != null">
                AND product_id =#{request.productId}
            </if>
            <if test="request.beginCell!='' and request.beginCell!=null">
                AND cell <![CDATA[  >=  ]]> beginCell
            </if>
            <if test="request.endCell!='' and request.endCell!=null">
                AND cell <![CDATA[  <=  ]]> endCell
            </if>
            <if test="request.ids != null">
                and id in
                <foreach collection="request.ids" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            order by create_time desc
        )d JOIN (
            SELECT deptid,id
            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
        LEFT JOIN(
              SELECT max(uptime) AS uptime,data_value,devcode,cell
              FROM device_data
              GROUP BY devcode,data_value,cell
        )dd ON dd.devcode=d.devcode
        order by create_time desc
    </select>

</mapper>