From 7bfbdcdab10c58ecf96b45543c0d0df948af4ba5 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 12 三月 2024 16:43:18 +0800
Subject: [PATCH] 修改根据类型查询元数据方法

---
 src/main/resources/mapper/show/OneMapMapper.xml |  263 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 242 insertions(+), 21 deletions(-)

diff --git a/src/main/resources/mapper/show/OneMapMapper.xml b/src/main/resources/mapper/show/OneMapMapper.xml
index 61b6ce8..c19e372 100644
--- a/src/main/resources/mapper/show/OneMapMapper.xml
+++ b/src/main/resources/mapper/show/OneMapMapper.xml
@@ -1,44 +1,83 @@
 <?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">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lf.server.mapper.show.OneMapMapper">
-
+    <resultMap type="com.lf.server.entity.show.OneMapEntity" id="OneMapResult">
+        <result property="value" column="value" />
+        <result property="key" column="key" />
+    </resultMap>
 
     <!--  椤圭洰绫诲埆 select * from bs.bs_project;  -->
     <select id="projectCategoryCount" resultType="java.util.Map">
         select projtype,count(*) from bs.bs_project group by projtype;
     </select>
 
-
     <!--  椤圭洰浣嶇疆鍒嗗竷 select a.*,st_astext(geom) from bs.bs_project a  -->
     <select id="projectLocationCount" resultType="java.util.Map">
         select a.*,st_astext(geom) AS wkt from bs.bs_project a;
     </select>
 
-    <!--  椤圭洰绫诲埆 鍥藉缁村害-鏁伴噺  -->
+    <!-- 鍏ㄧ悆 椤圭洰绫诲埆 鍥藉缁村害-鏁伴噺  -->
     <select id="countryDimensionCount" resultType="java.util.Map">
         select country,count(*) from bs.bs_project group by country;
     </select>
 
-    <!--  椤圭洰绫诲埆 鐪佺淮搴�-鏁伴噺  -->
+    <!-- 鍏ㄥ浗 椤圭洰绫诲埆 鐪佺淮搴�-鏁伴噺  -->
     <select id="provinceDimensionCount" resultType="java.util.Map">
         select province,count(*) from bs.bs_project where country like '%涓浗%' group by province ;
+    </select>
+
+    <!-- 鍏ㄥ浗 鎸夌収椤硅嚜绫诲瀷缁熻涓嶅悓椤圭洰涓暟  -->
+    <select id="countProjectTypeNumber" resultType="java.util.Map">
+        select projtype,count(*) from bs.bs_project where country like '%涓浗%' group by projtype ;
     </select>
 
     <!--  鏁版嵁缁熻 鏁版嵁瀛樺偍  -->
     <select id="dataStorageCount" resultType="java.util.Map">
         select name "鍚嶇О", (select count(*) from lf.sys_meta b where b.dircode like a.code || '%') "鏂囦欢鏁�",
-               (select count(sizes) from lf.sys_meta b where b.dircode like a.code || '%') "鏁伴噺(MB)"
+               (select sum(sizes) from lf.sys_meta b where b.dircode like a.code || '%') "鏁伴噺(MB)"
         from lf.sys_dir a where id > 1 and pid = 0;
     </select>
 
-    <!--  鏁版嵁缁熻 鏂囦欢鏍煎紡缁村害-鏂囦欢涓暟 select type,count(*),count(sizes) from lf.sys_meta group by type;  -->
-    <select id="fileFormatCount" resultType="java.util.Map">
-        select type,count(type) AS number,count(sizes) AS capacity from lf.sys_meta group by type;
+    <!--  鏁版嵁澶х被缁熻  -->
+    <select id="statisticalDataCategories" resultType="java.util.Map">
+        SELECT name,
+               (SELECT count(b.id)
+                FROM lf.sys_meta b
+                WHERE dircode similar to '(' ||
+        (SELECT string_agg(code,
+         '|')
+        FROM lf.sys_dir c
+        WHERE c.name = a.name) || ')%') "count",
+        (SELECT coalesce(sum(b.sizes),
+            0)
+        FROM lf.sys_meta b
+        WHERE dircode similar to '(' ||
+            (SELECT string_agg(code,
+            '|')
+            FROM lf.sys_dir c
+            WHERE c.name = a.name) || ')%') "sizes"
+        FROM lf.sys_dir a
+        WHERE name IN ('鍩虹娴嬬粯', '鍩虹鍦扮伨', '鍩虹鍕樺療', '鍚堣鏁版嵁', '绠$悊鏁版嵁', '娴嬬粯锛圗SV锛�', '鍕樺療锛圗GE锛�', '鍦扮伨锛圗GD锛�', '娲炲簱锛圗GD锛�')
+        GROUP BY  name
+        ORDER BY  name;
     </select>
 
-    <!--  鏁版嵁缁熻 鏁版嵁鐢宠 select * from lf.sys_apply a inner join lf.sys_user b on a.userid = b.id;  -->
+    <!--  缁熻鏁版嵁鏈嶅姟绫诲瀷  -->
+    <select id="statisticalDataServiceType" resultType="java.util.Map">
+        SELECT COUNT(*),TYPE FROM lf.sys_serve_log GROUP BY TYPE;
+    </select>
+
+    <!-- 鐧诲綍娆℃暟缁熻 -->
+    <select id="loginNumberStatistics" resultType="java.util.Map">
+        select b.uname, count(*) from lf.sys_login a inner join lf.sys_user b on a.userid = b.id group by uname;
+    </select>
+
+    <!-- 鏁版嵁缁熻 鏂囦欢鏍煎紡缁村害-鏂囦欢涓暟 select type,count(*),count(sizes) from lf.sys_meta group by type; -->
+    <select id="fileFormatCount" resultType="java.util.Map">
+        select type,count(type) AS number,sum(sizes) AS capacity from lf.sys_meta group by type;
+    </select>
+
+    <!-- 鏁版嵁缁熻 鏁版嵁鐢宠 select * from lf.sys_apply a inner join lf.sys_user b on a.userid = b.id; -->
     <select id="dataApplyCount" resultType="java.util.Map">
         SELECT
             count(c.name) AS number,
@@ -56,9 +95,22 @@
         select modular1,count(*) from lf.sys_operate group by modular1 order by modular1;
     </select>
 
-    <!--  鏁版嵁缁熻 涓嬭浇閲忕粺璁� type绫诲瀷锛�1-Shp鏂囦欢锛�2-涓撻鍥撅紝3-婧愭暟鎹紝4-涓氬姟鏁版嵁锛�5-绠¢亾鍒嗘瀽锛�6-缁熻鎶ュ憡 -->
+    <!--  鏁版嵁缁熻 涓嬭浇閲忕粺璁� type绫诲瀷锛�1-Shp鏂囦欢锛�2-涓撻鍥撅紝3-鍏冩暟鎹紝4-涓氬姟鏁版嵁锛�5-绠¢亾鍒嗘瀽锛�6-缁熻鎶ュ憡 -->
+    <!--  鏁版嵁缁熻 select type,count(*) from lf.sys_download group by type; -->
     <select id="countDownloads" resultType="java.util.Map">
-        select type,count(*) from lf.sys_download group by type;
+        SELECT type,
+               count(*),
+               case type
+                   WHEN '1' THEN 'Shp鏂囦欢'
+                   WHEN '2' THEN '涓撻鍥�'
+                   WHEN '3' THEN '鍏冩暟鎹�'
+                   WHEN '4' THEN '涓氬姟鏁版嵁'
+                   WHEN '5' THEN '绠¢亾鍒嗘瀽'
+                   WHEN '6' THEN '缁熻鎶ュ憡'
+                   ELSE '0'
+                   END as typename
+        FROM
+            lf.sys_download GROUP BY type;
     </select>
 
     <!--  缁熻椤圭洰鏄剧ず  -->
@@ -70,7 +122,9 @@
     <select id="countProjectTour" resultType="java.util.Map">
         SELECT st_astext(geom) AS wkt,* FROM bs.m_pipeline
         <where>
-            <if test="pipename != null  and pipename != ''"> and pipename = #{pipename}</if>
+            <if test="pipename != null and pipename != ''">
+                pipename = #{pipename}
+            </if>
         </where>
     </select>
 
@@ -79,18 +133,30 @@
         SELECT DISTINCT pipename  FROM bs.m_pipeline;
     </select>
 
-
     <!--  缁熻椤圭洰绫诲瀷 1  -->
-    <select id="selectProjectType1" resultType="java.util.Map">
-        select (select string_agg(code, ',') from lf.sys_dir where name = a.name) "key", name "value" from lf.sys_dir a
-        where name in ('娴嬮噺锛圗SV锛�', '鍕樺療锛圗GE锛�', '鍦扮伨锛圗GD锛�', '娲炲簱锛圗GD锛�') group by name order by name;
+    <!-- select (select string_agg(code, ',') from lf.sys_dir where name = a.name) "key", name "value" from lf.sys_dir a
+    where name in ('娴嬬粯锛圗SV锛�', '鍕樺療锛圗GE锛�', '鍦扮伨锛圗GD锛�', '娲炲簱锛圗GD锛�') group by name order by name;-->
+    <select id="selectProjectType1"  resultMap="OneMapResult">
+        SELECT
+            (SELECT string_agg(code,
+                               ',')
+             FROM lf.sys_dir
+             WHERE name = a.name) "key", name "value"
+        FROM lf.sys_dir a
+        WHERE name IN ('鍩虹鍦扮伨', '鍩虹鍕樺療', '鍚堣鏁版嵁', '绠$悊鏁版嵁', '鍕樺療锛圗GE锛�', '鍦扮伨锛圗GD锛�', '娲炲簱锛圗GD锛�')
+        GROUP BY  name
+        ORDER BY  key;
     </select>
 
     <!--  缁熻椤圭洰绫诲瀷 2  -->
-    <select id="selectProjectType2" resultType="java.util.Map">
-        select modular1,count(*) from lf.sys_operate group by modular1 order by modular1;
+    <select id="selectProjectTypeOne"   resultType="com.lf.server.entity.show.OneMapEntity">
+        select * from lf.sys_meta ${endSql}
     </select>
 
+    <!--  缁熻椤圭洰绫诲瀷 2  -->
+    <select id="selectProjectType2"   resultType="com.lf.server.entity.show.OneMapEntity">
+        select modular1,count(*) from lf.sys_operate group by modular1 order by modular1;
+    </select>
 
     <!--  鏌ヨ琛ㄤ俊鎭�  -->
     <select id="queryTableInfo" resultType="java.util.Map">
@@ -107,9 +173,164 @@
           AND d.objsubid=a.attnum;
     </select>
 
+    <!--  缁熻璁$畻鍏ㄧ悆绠¢亾鍥�  -->
+    <select id="countGlobalPipeMap" resultType="java.util.Map">
+        SELECT projname,count(*) AS count FROM  bs.m_pipesegment group by projname ;
+    </select>
 
+    <!--  缁熻璁$畻鍏ㄥ浗绠¢亾鍥�  -->
+    <select id="countNationalPipeMap" resultType="java.util.Map">
+        SELECT projname,count(*) AS count FROM  bs.m_pipesegment group by projname ;
+    </select>
 
+    <!--  缁熻鍏ㄥ浗绠$綉鍥捐緭閫佷粙璐ㄩ暱搴�  -->
+    <!--select id="countZhPipeMapLenByMed" resultType="java.util.Map">
+        SELECT medium AS type,count(*) AS count,sum(length)AS length FROM bs.m_pipesegment GROUP BY medium ;
+    </select-->
+    <select id="countZhPipeMapLenByMed" resultType="java.util.Map">
+        select case medium when 'CO' then '鍘熸补' when 'RP' then '鎴愬搧娌�' when 'GS' then '澶╃劧姘�' else '鍏跺畠' end "type",
+            count(*) "count", round(sum(ST_Length(geom)::numeric), 2) "length"
+        from bs.m_pipeline
+        group by medium;
+    </select>
 
+    <!--  缁熻鍏ㄥ浗绔欏満搴ф暟銆侀榾瀹ゃ�佺閬撴暟閲�  -->
+    <select id="countZhPipeStations" resultType="java.util.Map">
+        select
+            case medium when 'CO' then '鍘熸补' when 'RP' then '鎴愬搧娌�' when 'GS' then '澶╃劧姘�' else '鍏跺畠' end "杈撻�佷粙璐�",
+            round(sum(st_length(geom))::numeric, 2) "鎬婚噷绋�",
+            count(*) "绠¢亾鏁伴噺",
+            (select count(*) from bs.m_sitepoint b inner join bs.m_pipeline c on b.pipename = c.pipename where c.medium = a.medium) "绔欏満鏁伴噺",
+            (select count(*) from bs.m_valvehousepoint d inner join bs.m_pipeline e on d.pipename = e.pipename where e.medium = a.medium) "闃�瀹ゆ暟閲�"
+        from bs.m_pipeline a
+        group by medium;
+    </select>
 
+    <!--  鎸夐」鐩粺璁¢」鐩瓨鍌ㄩ噺  -->
+    <select id="countStorageByProject" resultType="java.util.Map">
+        with rs as (
+            select a.dircode, c.dcount, c.sizes
+            from lf.sys_meta a
+                     inner join lf.sys_meta_down b on a.id = b.metaid
+                     inner join lf.sys_download c on b.downid = c.id
+        )
+        select
+            d.name "椤圭洰鍚嶇О",
+            (select count(*) from rs where rs.dircode like d.code || '%') "涓嬭浇涓暟",
+            (select coalesce(sum(rs.dcount), 0) from rs where rs.dircode like d.code || '%') "涓嬭浇鏁伴噺",
+            (select round(coalesce(sum(rs.dcount * rs.sizes), 0)::numeric, 3) from rs where rs.dircode like d.code || '%') "鏁伴噺鎬婚噺(MB)"
+        from lf.sys_dir d
+        where pid = 0 order by d.code;
+    </select>
 
+    <!--  鏌ヨ椤圭洰淇℃伅 select PROJNAME,* from bs.bs_project WHERE PROJNAME LIKE '${projectName}%' AND PROJNAME IS NOT NULL ; -->
+    <select id="selectProjectInfo" resultType="java.util.Map">
+        select PROJNAME,* from bs.bs_project WHERE dirid LIKE '${projectCode}%' AND PROJNAME IS NOT NULL ;
+    </select>
+
+    <select id="selectProjectInfo1" resultType="java.util.Map">
+        select PROJNAME,* from bs.bs_project
+        <where>
+            <if test="projname != null  and projname != ''"> and projname like concat('%', #{projectName}, '%')</if>
+        </where>
+        AND PROJNAME IS NOT NULL ;
+    </select>
+
+    <!--  鏌ヨ椤圭洰鏂囦欢鍒楄〃 -->
+    <select id="selectProjectFileList" resultType="java.util.Map">
+        select name, code,st_astext(b.geom) AS wkt
+        from lf.sys_dir a inner join bs.bs_project b on a.code = b.dirid
+        where pid = 0 and id > 1 order by code;
+    </select>
+
+    <select id="countProjectStorage" resultType="java.util.Map">
+        select name,
+               (select count(b.id) from lf.sys_meta b where dircode similar to '(' || (select string_agg(code, '|') from lf.sys_dir c where c.name = a.name) || ')%') "count",
+ (select coalesce(sum(b.sizes), 0) from lf.sys_meta b where dircode similar to '(' || (select string_agg(code, '|') from lf.sys_dir c where c.name = a.name) || ')%') "sizes"
+        from lf.sys_dir a
+        where code like '${projectCode}%' and name in ('鍩虹娴嬬粯', '鍩虹鍦扮伨', '鍩虹鍕樺療', '鍚堣鏁版嵁', '绠$悊鏁版嵁', '娴嬬粯锛圗SV锛�', '鍕樺療锛圗GE锛�', '鍦扮伨锛圗GD锛�', '娲炲簱锛圗GD锛�')
+        group by name
+        order by name;
+    </select>
+
+    <!--  鍗曚釜椤圭洰鏂囦欢鏁伴噺-->
+    <select id="countProjectType" resultType="java.util.Map">
+        SELECT a.type,
+               count(a.type) AS number,
+               coalesce( cast(sum(a.sizes) as decimal(12, 2) ), 0)  AS capacity
+        FROM lf.sys_meta a
+                 INNER JOIN lf.sys_dir b ON a.dircode = b.code
+        WHERE a.dircode LIKE '${projectCode}%'
+        GROUP BY a.type;
+    </select>
+
+    <!--  鍗曚釜椤圭洰鐨勪笅杞戒釜鏁般�佷笅杞芥鏁板拰鏁版嵁閲�-->
+    <!--  select count(*) "number", sum(c.dcount) "count", sum(c.sizes) "size"
+            from lf.sys_meta a inner join lf.sys_meta_down b on a.id = b.metaid
+                               inner join lf.sys_download c on b.downid = c.id
+            where dircode like '${projectCode}%';  -->
+    <select id="countProjectDown" resultType="java.util.Map">
+        select
+            d.name "椤圭洰鍚嶇О",
+            (select count(*) "number"
+             from lf.sys_meta a inner join lf.sys_meta_down b on a.id = b.metaid
+                                inner join lf.sys_download c on b.downid = c.id
+             where dircode like '${projectCode}%') "涓嬭浇涓暟",
+            (select  sum(c.dcount) "count"
+             from lf.sys_meta a inner join lf.sys_meta_down b on a.id = b.metaid
+                                inner join lf.sys_download c on b.downid = c.id
+             where dircode like '${projectCode}%') "涓嬭浇鏁伴噺",
+            (select  sum(c.sizes) "size"
+             from lf.sys_meta a inner join lf.sys_meta_down b on a.id = b.metaid
+                                inner join lf.sys_download c on b.downid = c.id
+             where dircode like '${projectCode}%') "鏁伴噺鎬婚噺(MB)"
+        from lf.sys_dir d
+        where pid = 0 AND d.code like '${projectCode}%'
+    </select>
+
+    <!-- 鎸夊ぇ绫荤粺璁� -->
+    <select id="countByMajor" resultType="com.lf.server.entity.ctrl.CountEntity">
+		select '娴嬬粯锛圗SV锛�' "m1", '鏁板瓧绾垮垝鍥�' "m2", '骞虫柟鍗冪背' "m3", coalesce(sum(area), 0) "sizes" from lf.sys_line_buffer
+        union all
+        select '娴嬬粯锛圗SV锛�' "m1", '鏁板瓧姝e皠褰卞儚鍥�' "m2", '骞虫柟鍗冪背' "m3", (
+			select coalesce(sum(b.area), 0) from lf.sys_meta b
+		    inner join lf.sys_dir c on b.dircode = c.code
+		    where c.name = '鏁板瓧姝e皠褰卞儚鍥�' and b.type in ('img', 'tif', 'tiff') ) "sizes"
+        union all
+        select '娴嬬粯锛圗SV锛�' "m1", '绠$嚎鏁版嵁' "m2", '鍗冪背' "m3",
+			cast( coalesce(sum( ST_Length( ST_GeographyFromText( ST_AsText(geom) ) ) ) / 1000, 0) as decimal(12, 2) ) "sizes" from bs.m_pipeline
+        union all
+        select '鍕樺療锛圗GE锛�' "m1", '鍕樻帰鐐�' "m2", '涓�' "m3", count(*) "sizes" from bs.s_explorationpoint
+        union all
+        select '鍕樺療锛圗GE锛�' "m1", '涓夌淮鍦拌川妯″瀷' "m2", '骞虫柟绫�' "m3", (
+			select coalesce(sum(b.area), 0) from lf.sys_meta b
+		    inner join lf.sys_dir c on b.dircode = c.code
+		    where b.type in ('fbx', 'ifc') ) "sizes"
+        union all
+        select '鍦扮伨锛圗GD锛�' "m1", '鍦扮伨鐐�' "m2", '涓�' "m3", count(*) "sizes" from bd.b_geologic_hazard;
+    </select>
+
+    <!-- 鏌ヨ涓嚎缂撳啿鍖� -->
+    <select id="selectLineBuffer" resultType="java.lang.Integer">
+        select fn_line_buffer();
+    </select>
+
+    <!-- 鏍规嵁绫诲瀷鏌ヨ鍏冩暟鎹紙鐢ㄤ簬璁$畻闈㈢Н锛� -->
+    <select id="selectMetaByType" resultType="java.util.Map">
+        (select a.id, a.path, 'DOM' name from lf.sys_meta a
+            inner join lf.sys_dir b on a.dircode = b.code
+            where a.area is null and a.type in ('img', 'tif', 'tiff') and b.name = '鏁板瓧姝e皠褰卞儚鍥�')
+        union all
+        (select a.id, a.path, 'DEM' name from lf.sys_meta a
+            inner join lf.sys_dir b on a.dircode = b.code
+            where a.area is null and a.type in ('dem', 'tif', 'tiff') and b.name = '鏁板瓧楂樼▼妯″瀷')
+        union all
+        (select id, path, 'OSGB' name from lf.sys_meta where area is null and type = 'osgb')
+        union all
+        (select id, path, 'LAS' name from lf.sys_meta where area is null and type = 'las' or type = 'laz')
+        union all
+        (select id, path, 'IFC' name from lf.sys_meta where area is null and type = 'ifc')
+        union all
+        (select id, path, 'FBX' name from lf.sys_meta where area is null and type = 'fbx')
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3