From 7a481b56048d2356ed1b0e3eaef3e44a3d610f64 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 28 三月 2023 09:28:40 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/show/DataLibService.java |   69 ++++++++++++++++++++++++++++++++--
 src/main/resources/mapper/sys/AttachMapper.xml               |    3 +
 2 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/lf/server/service/show/DataLibService.java b/src/main/java/com/lf/server/service/show/DataLibService.java
index 24a644a..9e7b76c 100644
--- a/src/main/java/com/lf/server/service/show/DataLibService.java
+++ b/src/main/java/com/lf/server/service/show/DataLibService.java
@@ -104,7 +104,7 @@
     }
 
     /**
-     * 鏌ヨDB涓孩鍑哄崟浣嶇紪鐮佺殑鏌ヨ鍖呰
+     * 鏌ヨDB涓孩鍑哄崟浣嶇紪鐮佺殑鏌ヨ鍖呰鍣�
      */
     private <T> QueryWrapper<T> getWrapper4DbOverflow(UserEntity ue, DownloadReqEntity dr) {
         QueryWrapper<T> wrapper = new QueryWrapper<T>();
@@ -147,12 +147,71 @@
     /**
      * 璇锋眰DB鏁版嵁涓嬭浇
      */
-    public String downloadDbReq(UserEntity ue, DownloadReqEntity dr) throws Exception {
-        if (!StringHelper.isEmpty(dr.getWkt())) {
-            return downloadDbReq4Wkt(ue, dr);
+    public String downloadDbReq(UserEntity ue, DownloadReqEntity dr) {
+        Map<String, List<?>> map = queryData(dr);
+        if (map.size() == 0) {
+            return null;
         }
 
-        return downloadDbReq4Prop(ue, dr);
+        return null;
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁
+     */
+    private Map<String, List<?>> queryData(DownloadReqEntity dr) {
+        Map<String, List<?>> map = new HashMap<>(3);
+        for (String enity : dr.getEntities()) {
+            try {
+                BasicMapper baseMapper = ClassHelper.getBasicMapper(enity);
+                if (null == baseMapper) {
+                    continue;
+                }
+
+                QueryWrapper wrapper = createQueryWrapper(baseMapper, dr);
+                List<?> list = baseMapper.selectList(wrapper);
+                if (null == list || list.size() == 0) {
+                    continue;
+                }
+
+                if (!map.containsKey(enity)) {
+                    map.put(enity, list);
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+
+        return map;
+    }
+
+    /**
+     * 鍒涘缓鏌ヨ鍖呰鍣�
+     */
+    private <T> QueryWrapper<T> createQueryWrapper(BasicMapper baseMapper, DownloadReqEntity dr) {
+        QueryWrapper<T> wrapper = new QueryWrapper<T>();
+
+        String dirs = copeCodes(dr.getDirs(), "dirid");
+        if (!StringHelper.isEmpty(dirs)) {
+            wrapper.apply(dirs);
+        }
+        if (!StringHelper.isEmpty(dr.getDepcode())) {
+            wrapper.likeRight("depid", dr.getDepcode());
+        }
+        if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(dr.getWkt())) {
+            wrapper.select("ST_AsText(geom) as geom, *");
+            Integer srid = baseQueryService.getSrid((GeomBaseMapper) baseMapper);
+            if (null != srid) {
+                wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", dr.getWkt(), srid));
+            }
+        }
+        if (null != dr.getIds() && dr.getIds().size() > 0) {
+            wrapper.apply(String.format("gid in (%s)", StringHelper.join(dr.getIds(), ",")));
+        } else {
+            baseQueryService.addFilterWrapper(wrapper, dr.getFilter());
+        }
+
+        return wrapper;
     }
 
     /**
diff --git a/src/main/resources/mapper/sys/AttachMapper.xml b/src/main/resources/mapper/sys/AttachMapper.xml
index 546a008..a81c821 100644
--- a/src/main/resources/mapper/sys/AttachMapper.xml
+++ b/src/main/resources/mapper/sys/AttachMapper.xml
@@ -113,11 +113,12 @@
         update lf.sys_fme_log set update_time = now() where id = #{id};
     </update>
 
+    <!-- and create_time > now()::timestamp + '-15 min' -->
     <insert id="insertAttachByMeta">
         insert into lf.sys_attach (name, guid, path, sizes, create_user, tab, tab_guid)
 		select name, guid, path, sizes, create_user, #{tab}, #{tabGuid}
 		from lf.sys_meta
-		where name = #{metaName} and create_time > now()::timestamp + '-15 min'
+		where name = #{metaName}
 		order by id desc
 		limit 1;
     </insert>

--
Gitblit v1.9.3