Newer
Older
sensorhub-plus / casic-iot-dao / src / resource / mapper / DeviceGroupMapper.xml
chaizhuang on 22 Nov 2023 3 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",belong_project AS "belongProject",deptid,
        count(d.id) AS "deviceCount",count(s.id) AS "subscribeCount",descn,count(d.id) AS "deviceCount"
        FROM (
            SELECT *
            FROM DEVICE_GROUP
            WHERE valid=1
            <if test="request.groupNo!='' AND request.groupNo != null">
                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 createTime <![CDATA[  >=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.beginTime}"/>
                </include>
            </if>
            <if test="request.endTime!='' and request.endTime!=null">
                AND createTime <![CDATA[  <=  ]]>
                <include refid="char_toDate">
                    <property name="paramStr" value="#{request.endTime}"/>
                </include>
            </if>
        )dg
        JOIN (
            SELECT id,group_id as "groupId"
            FROM DEVICE d
            WHERE VALID=1
        )d N d.groupId=dg.id
        JOIN (
            SELECT id,group_id as "groupId"
            FROM subscribe d
        )s ON s.groupId=dg.id
        group by dg.id
    </select>


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

</mapper>