Newer
Older
sensorhub-plus / casic-iot-dao / src / main / resources / mapper / DeviceGroupMapper.xml
chaizhuang on 31 Jan 2024 5 KB 结构修改
<?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,
             deviceCount,
            subscribeCount,
            descn,
            create_time AS "createTime",
            group_name AS "groupName",
            create_user_id AS "createUserId",
            create_user_name AS "createUserName"
        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 count(id)  AS "deviceCount",group_id as groupId
                   FROM device d
                   WHERE VALID = 1
                   GROUP BY group_id
        ) d ON d.groupId = dg.id
            LEFT JOIN (
                 SELECT count(id)  AS "subscribeCount",group_id AS groupId
                 FROM subscribe_store GROUP BY group_id
           ) s ON s.groupId = dg.id
         order by create_time desc
    </select>

    <select id="list" 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,
        create_time AS "createTime",
        group_name AS "groupName"
        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>