管道基础大数据平台系统开发-【后端】-Server
13693261870
2024-03-25 b6b0cb226fcf184525ee7b36af3a09471e9c0057
src/main/resources/mapper/sys/ReportMapper.xml
@@ -323,52 +323,162 @@
        order by code;
    </select>
    <!-- 按项目统计各类数据 -->
    <!-- 项目数据分类统计 -->
    <select id="countVariousDataByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        (select '数字线划图' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_line_buffer where code like #{code})
            from lf.sys_line_buffer
            <where>
                <if test="null != code">
                    code like #{code})
                </if>
            </where>
        union all
        (select '数字高程模型' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_meta b inner join lf.sys_dir c on b.dircode = c.code
            where c.name = '数字高程模型' and b.type in ('dem', 'tif', 'tiff') and b.dircode like #{code})
            <where>
                c.name = '数字高程模型' and b.type in ('dem', 'tif', 'tiff')
                <if test="null != code">
                    and b.dircode like #{code}
                </if>
            </where>
        )
        union all
        (select '数字正射影像图' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_meta b inner join lf.sys_dir c on b.dircode = c.code
            where c.name = '数字正射影像图' and b.type in ('img', 'tif', 'tiff') and b.dircode like #{code})
            <where>
                c.name = '数字正射影像图' and b.type in ('img', 'tif', 'tiff')
                <if test="null != code">
                    and b.dircode like #{code}
                </if>
            </where>
        )
        union all
        (select '倾斜摄影模型' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_meta b where b.type = 'osgb' and b.dircode like #{code})
            from lf.sys_meta b
            <where>
                b.type = 'osgb'
                <if test="null != code">
                    and b.dircode like #{code}
                </if>
            </where>
        )
        union all
        (select '激光点云模型' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_meta b where b.type in ('las', 'laz') and b.dircode like #{code})
            from lf.sys_meta b
            <where>
                b.type in ('las', 'laz')
                <if test="null != code">
                    and b.dircode like #{code}
                </if>
            </where>
        )
        union all
        (select '管线长度' "m1", 'len' "m2", 0 "count", 0 "area", cast( coalesce(sum( ST_Length( ST_GeographyFromText( ST_AsText(geom) ) ) ) / 1000, 0) as decimal(20, 2) ) "len"
            from bs.m_pipeline b where b.dirid like #{code})
        (select '管线长度' "m1", 'len' "m2", 0 "count", 0 "area",
                cast( coalesce(sum( ST_Length( ST_GeographyFromText( ST_AsText(geom) ) ) ) / 1000, 0) as decimal(20, 2) ) "len"
            from bs.m_pipeline b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '勘探点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.s_explorationpoint b where b.dirid like #{code})
        (select '勘探点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.s_explorationpoint b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '勘察工点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.s_surveyworksite b where b.dirid like #{code})
        (select '勘察工点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.s_surveyworksite b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '勘察报告' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.s_explorationpoint b
            inner join lf.sys_attach c on b.eventid = c.tab_guid where b.dirid like #{code})
            inner join lf.sys_attach c on b.eventid = c.tab_guid
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '三维地质模型' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len"
            from lf.sys_meta b where b.type in ('fbx', 'ifc') and b.dircode like #{code})
        (select '三维地质模型' "m1", 'area' "m2", 0 "count", cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) "area", 0 "len" from lf.sys_meta b
            <where>
                b.type in ('fbx', 'ifc')
                <if test="null != code">
                    and b.dircode like #{code}
                </if>
            </where>
        )
        union all
        (select '地灾点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bd.b_geologic_hazard b where b.dirid like #{code})
        (select '地灾点' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bd.b_geologic_hazard b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '崩塌' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_collapse b where b.dirid like #{code})
        (select '崩塌' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_collapse b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '泥石流' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_debrisflow b where b.dirid like #{code})
        (select '泥石流' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_debrisflow b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '地面塌陷' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_ground_collapse b where b.dirid like #{code})
        (select '地面塌陷' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_ground_collapse b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '高陡边坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_highandsteep_slope b where b.dirid like #{code})
        (select '高陡边坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_highandsteep_slope b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '滑坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_landslide b where b.dirid like #{code})
        (select '滑坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_landslide b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '不稳定斜坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_unstable_slope b where b.dirid like #{code})
        (select '不稳定斜坡' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_unstable_slope b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        )
        union all
        (select '水毁' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_water_damage b where b.dirid like #{code});
        (select '水毁' "m1", 'count' "m2", count(*), 0 "area", 0 "len" from bs.g_water_damage b
            <where>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        );
    </select>
</mapper>