管道基础大数据平台系统开发-【后端】-Server
13693261870
2024-03-25 1c285b38777e9f37ee8d112e994443d3640b78c1
src/main/resources/mapper/sys/ReportMapper.xml
@@ -112,8 +112,9 @@
    <!-- 按项目统计数据 -->
    <select id="countSizesByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1", coalesce((select sum(sizes) from lf.sys_meta b where b.dircode like a.code || '%'), 0) "sizes",
           (select count(*) from lf.sys_meta b where b.dircode like a.code || '%') "count"
        select name "m1",
        (select cast( coalesce(sum(sizes), 0) as decimal(18, 3) ) from lf.sys_meta b where b.dircode like a.code || '%') as  "sizes",
         (select count(*) from lf.sys_meta b where b.dircode like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by a.code;
@@ -122,7 +123,7 @@
    <!-- 按项目统计钻孔数据 -->
    <select id="countExplorationPoints" resultType="com.lf.server.entity.ctrl.CountEntity">
        select
            name "m1",
            name "m1", a.code "m3", 0.0 "area",
            (select count(*) from bs.s_explorationpoint b where dirid like a.code || '%') "count",
            (select coalesce(round(sum(sizes)::numeric, 3), 0)
                from bs.s_explorationpoint b
@@ -133,4 +134,352 @@
        where pid = 0
        order by code;
    </select>
    <!-- 根据项目编码查询钻孔数据坐标点 -->
    <select id="selectExplorationPoints" resultType="com.lf.server.entity.ctrl.CoordinateEntity">
        select ST_X(geom) "x", ST_Y(geom) "y"
        from bs.s_explorationpoint b
        <where>
            dirid like #{code} and geom is not null
        </where>
    </select>
    <!-- 按项目统计数字高程模型面积 -->
    <select id="countDemAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) 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 a.code || '%') "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计三维地形模型面积:mpt -->
    <select id="countMptAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1", 0.0 "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计倾斜摄影模型面积:osgb -->
    <select id="countOsgbAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select cast( coalesce(sum(area), 0) as decimal(20, 2) ) from lf.sys_meta b
           where b.type = 'osgb' and b.dircode like a.code || '%') "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计激光点云模型面积:las,laz -->
    <select id="countLasAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select cast( coalesce(sum(area), 0) as decimal(20, 2) ) from lf.sys_meta b
           where b.type in ('las', 'laz') and b.dircode like a.code || '%') "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计勘察工点个数 -->
    <select id="countSurveyWorksiteByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.s_surveyworksite b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计勘察报告个数 -->
    <select id="countExplorationReportByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.s_explorationpoint b
           inner join lf.sys_attach c on b.eventid = c.tab_guid
           where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计崩塌个数 -->
    <select id="countCollapseByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_collapse b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计泥石流个数 -->
    <select id="countDebrisFlowByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_debrisflow b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计地面塌陷个数 -->
    <select id="countGroundCollapseByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_ground_collapse b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计高陡边坡个数 -->
    <select id="countHighSteepSlopeByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_highandsteep_slope b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计滑坡个数 -->
    <select id="countLandSlideByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_landslide b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计不稳定斜坡个数 -->
    <select id="countUnstableSlopeByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_unstable_slope b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计水毁个数 -->
    <select id="countWaterDamageByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.g_water_damage b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 统计数字线划图面积 -->
    <select id="countDlgAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select dir "m1", cast( coalesce(sum(area), 0) as decimal(20, 2) ) "area"
        from lf.sys_line_buffer
        group by code, dir
        order by code;
    </select>
    <!-- 按项目统计数字正射影像图面积 -->
    <select id="countDomAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select cast( coalesce(sum(b.area), 0) as decimal(20, 2) ) 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 a.code || '%') "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计管线长度 -->
    <select id="countLineLength" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
        (select cast( coalesce(sum( ST_Length( ST_GeographyFromText( ST_AsText(geom) ) ) ) / 1000, 0) as decimal(20, 2) )
         from bs.m_pipeline b where b.dirid like a.code || '%') as  "len"
        from lf.sys_dir a
        where pid = 0
        order by a.code;
    </select>
    <!-- 按项目统计勘探点个数 -->
    <select id="countExplorationPointByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bs.s_explorationpoint b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计三维地质模型面积 -->
    <select id="countGeoModelAreaByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select cast( coalesce(sum(b.area), 0) as decimal(20, 2) )
           from lf.sys_meta b where b.type in ('fbx', 'ifc') and b.dircode like a.code || '%') "area"
        from lf.sys_dir a
        where pid = 0
        order by code;
    </select>
    <!-- 按项目统计地灾点个数 -->
    <select id="countGeologicHazardByPrj" resultType="com.lf.server.entity.ctrl.CountEntity">
        select name "m1",
          (select count(*) from bd.b_geologic_hazard b where b.dirid like a.code || '%') "count"
        from lf.sys_dir a
        where pid = 0
        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>
                <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')
                <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')
                <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'
                <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')
                <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>
                <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>
                <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>
                <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>
                <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')
                <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>
                <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>
                <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>
                <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>
                <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>
                <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>
                <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>
                <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>
                <if test="null != code">
                    b.dirid like #{code}
                </if>
            </where>
        );
    </select>
</mapper>