cjl
2023-08-22 58fdbd07beae496c4c3b0744efe86a7d82e382b7
screen-api/src/main/resources/mapper/DeviceMapper.xml
@@ -43,23 +43,149 @@
        AND `time` <![CDATA[<]]> #{end}
        ORDER BY `time`
    </select>
    <select id="deviceList" resultMap="BaseResultMap">
    <select id="deviceList" resultType="java.util.Map">
        SELECT
            t.latitude,
            t.longitude,
            t.mac,
            t.state
            t.latitude as latitude,
            t.longitude as longitude,
            t.mac as mac,
            t.state,(hf.value ->> #{type} )+0 as ${sensorCode}
        FROM
            device t
                inner JOIN monitor_point p on p.id = t.monitor_point_id and p.is_delete = 0
        inner JOIN monitor_point p on p.id = t.monitor_point_id and p.is_delete = 0
                and p.organization_id in (
                    SELECT t1.id FROM organization t1
                    where t1.id = #{organizationId} or t1.parent_id = #{organizationId})
                    SELECT id FROM (
                    SELECT id, parent_id, name FROM organization  WHERE id = #{organizationId}
                    UNION ALL
                    SELECT i.id, i.parent_id, i.name
                    FROM organization  i
                    INNER JOIN (
                    SELECT * FROM (
                    SELECT id, parent_id, name FROM organization  WHERE id = #{organizationId}
                    UNION ALL
                    SELECT id, parent_id, name FROM organization WHERE parent_id = #{organizationId}
                    ) t1
                    ) t2 ON i.parent_id = t2.id
                    where i.is_delete = 0
                    ) t3
                    )
        <if test="region != null">
            and ${region} = #{regionCode}
            and p.${region} = #{regionCode}
        </if>
        <if test="endHourlyTime !=null and endHourlyTime != ''">
            left join history_hourly_${times} hf on hf.time =#{endHourlyTime}  and t.mac = hf.mac
        </if>
        <if test="endHourlyTime ==null">
            left join history_five_minutely_${times} hf on hf.time = (select max(time) from history_five_minutely_${times} LIMIT 1
            ) and t.mac = hf.mac
        </if>
        WHERE
            t.state <![CDATA[ <> ]]> '0'  and t.is_delete = 0
        order by t.id desc
    </select>
    <select id="deviceIdList" resultType="java.lang.Integer">
        SELECT
            t.id
        FROM
            device t
                INNER JOIN monitor_point p ON p.id = t.monitor_point_id
                AND p.is_delete = 0
                AND p.organization_id IN (
                    SELECT
                        id
                    FROM
                        (
                            SELECT
                                id,
                                parent_id,
                                NAME
                            FROM
                                organization
                            WHERE
                                id = #{organizationId} UNION ALL
                            SELECT
                                i.id,
                                i.parent_id,
                                i.NAME
                            FROM
                                organization i
                                    INNER JOIN (
                                    SELECT
                                        *
                                    FROM
                                        (
                                            SELECT
                                                id,
                                                parent_id,
                                                NAME
                                            FROM
                                                organization
                                            WHERE
                                                id = #{organizationId} UNION ALL
                                            SELECT
                                                id,
                                                parent_id,
                                                NAME
                                            FROM
                                                organization
                                            WHERE
                                                parent_id = #{organizationId}
                                        ) t1
                                ) t2 ON i.parent_id = t2.id
                            WHERE
                                i.is_delete = 0
                        ) t3
                )
        WHERE
            t.is_delete = 0
    </select>
    <select id="deviceOrgIdList" resultType="java.lang.Integer">
        SELECT
            id
        FROM
            (
                SELECT
                    id,
                    parent_id,
                    NAME
                FROM
                    organization
                WHERE
                    id = #{organizationId} UNION ALL
                SELECT
                    i.id,
                    i.parent_id,
                    i.NAME
                FROM
                    organization i
                        INNER JOIN (
                        SELECT
                            *
                        FROM
                            (
                                SELECT
                                    id,
                                    parent_id,
                                    NAME
                                FROM
                                    organization
                                WHERE
                                    id = #{organizationId} UNION ALL
                                SELECT
                                    id,
                                    parent_id,
                                    NAME
                                FROM
                                    organization
                                WHERE
                                    parent_id = #{organizationId}
                            ) t1
                    ) t2 ON i.parent_id = t2.id
                WHERE
                    i.is_delete = 0
            ) t3
    </select>
</mapper>