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

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.DeviceGroup">
        <id column="id" property="id" />
        <result column="group_name" property="groupName" />
        <result column="group_no" property="groupNo" />
        <result column="descn" property="descn" />
        <result column="deptid" property="deptid" />
        <result column="create_time" property="createTime" />
        <result column="create_user_id" property="createUserId" />
        <result column="owner" property="owner" />
        <result column="valid" property="valid" />
    </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="Base_Column_List">
        id, name, owner, subcribe_ids, descn, dept, create_time, create_user_id
    </sql>

    <select id="listPage" resultType="com.casic.missiles.dto.group.DeviceGroupListVO">
        SELECT
            dg.id,
            group_no AS "groupNo",
            deptid,
            count( d.id ) AS "deviceCount",
            count( s.id ) AS "subscribeCount",
            descn
        FROM
          (
             SELECT *
             FROM device_group
             WHERE valid = 1
            <if test="request.groupNo != null and request.groupNo != '' ">
                AND group_no =#{request.groupNo}
            </if>
            <if test="request.groupName != '' and request.groupName != null">
                AND group_name =#{request.groupName}
            </if>
            <if test="request.ids != null">
                and id in
                <foreach collection="request.ids" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            <if test="request.beginTime!='' and request.beginTime!=null">
                AND create_time <![CDATA[  >=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.beginTime}"/>
                </include>
            </if>
            <if test="request.endTime!='' and request.endTime!=null">
                AND create_time <![CDATA[  <=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.endTime}"/>
                </include>
            </if>
          ) dg
            LEFT JOIN (
                   SELECT id, group_id AS "groupId"
                   FROM device d
                   WHERE VALID = 1
          ) d ON d.groupId = dg.id
            LEFT JOIN (
                   SELECT id, group_id AS "groupId"
                   FROM subscribe_store
           ) s ON s.groupId = dg.id
         GROUP BY dg.id
         order by create_time desc
    </select>


    <select id="selectMaxNo" resultType="java.lang.Long">
        SELECT IFNULL(max(RIGHT(group_no, 12)), 0)
        from device_group
    </select>

</mapper>