吉安感知网项目-后端
linwei
2026-04-02 618ece4b9b22c2b9a4e85b46f0b3ec99c53e200b
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml
@@ -58,35 +58,39 @@
    <select id="selectGdManageDevice" resultType="org.sxkj.gd.workorder.vo.GdManageDeviceVO">
        select
            md.id,
            md.device_sn,
            md.device_name,
            md.nickname,
            md.device_payload,
            md.longitude,
            md.latitude,
            md.geom,
            d2.height as height
        md.id,
        md.device_sn,
        md.device_name,
        md.nickname,
        md.device_payload,
        md.longitude,
        md.latitude,
        md.geom,
        d2.height as height
        from
            ja_gd_manage_device md
        left join ja_gd_manage_device d2 on md.device_sn::VARCHAR = d2.device_sn::VARCHAR and d2.device_type = '0'
        ja_gd_manage_device md
        left join ja_gd_manage_device d2
        on md.device_sn::text = d2.device_sn::text
        and d2.device_type = '0'
        <where>
            <if test="deviceIds != null and deviceIds.size() > 0">
                and md.id in
                and md.id::text in
                <foreach item="item" collection="deviceIds" index="index" open="(" close=")" separator=",">
                    #{item}
                    #{item}::text
                </foreach>
            </if>
            <if test="devicePayload != null and devicePayload != ''">
                and md.device_payload like concat('%',#{devicePayload},'%')
                and md.device_payload like concat('%', #{devicePayload}, '%')
            </if>
            <if test="geom != null and geom != ''">
                and ST_Intersects(md.geom, ST_GeomFromText(#{geom}))
                /* 确保这里是第一个条件时,and 能被 MyBatis 正确处理,或者直接去掉这个 and */
                and ST_Intersects(md.geom, ST_GeomFromText(#{geom}::text))
            </if>
            <if test="deviceType != null and deviceType != '' ">
                and md.device_type = #{deviceType}
                and md.device_type::text = #{deviceType}::text
            </if>
                and md.is_deleted = 0
            /* 将固定条件放在最前面或最后面,确保逻辑严健 */
            and md.is_deleted = 0
        </where>
    </select>