From e002c67732b571f0b20cca8321ca8ee1ddba2e05 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 14 八月 2023 17:05:23 +0800
Subject: [PATCH] 修改文件上传、GDB/Shp数据读取、数据入库、元数据管理等接口

---
 src/main/java/com/moon/server/entity/data/MetaFileEntity.java              |   10 
 src/main/resources/mapper/all/BaseQueryMapper.xml                          |    6 
 src/main/java/com/moon/server/entity/ctrl/PubEntity.java                   |   36 +
 src/main/java/com/moon/server/helper/GdbHelper.java                        |   88 +++-
 src/main/java/com/moon/server/service/data/PublishService.java             |  119 ++++++
 src/main/java/com/moon/server/helper/ShpHelper.java                        |    4 
 src/main/java/com/moon/server/mapper/sys/ReportMapper.java                 |   14 
 src/main/java/com/moon/server/service/all/BaseUploadService.java           |  143 +++++--
 src/main/java/com/moon/server/service/sys/ProxyService.java                |    2 
 src/main/java/com/moon/server/helper/PathHelper.java                       |    5 
 src/main/java/com/moon/server/config/RestTemplateConfig.java               |    6 
 src/main/java/com/moon/server/helper/MdbHelper.java                        |    2 
 src/main/java/com/moon/server/service/show/InquiryService.java             |    8 
 src/main/java/com/moon/server/service/all/BaseQueryService.java            |    8 
 src/main/resources/mapper/data/PublishMapper.xml                           |   39 ++
 src/main/java/com/moon/server/controller/all/BaseQueryController.java      |   52 ++
 src/main/java/com/moon/server/entity/all/StaticData.java                   |   37 +
 src/main/java/com/moon/server/controller/data/MetaController.java          |   20 +
 src/main/java/com/moon/server/service/sys/ReportService.java               |   10 
 src/main/resources/mapper/sys/ReportMapper.xml                             |   17 
 src/main/java/com/moon/server/service/data/UploadService.java              |   64 ++
 src/main/java/com/moon/server/controller/sys/TokenController.java          |    4 
 src/main/java/com/moon/server/mapper/data/PublishMapper.java               |   25 +
 src/main/java/com/moon/server/mapper/all/BaseQueryMapper.java              |   20 
 src/main/java/com/moon/server/service/data/MetaService.java                |   10 
 src/main/java/com/moon/server/controller/data/PublishController.java       |  134 ++++++
 src/main/resources/mapper/data/MetaMapper.xml                              |   10 
 src/main/java/com/moon/server/service/all/UploadAttachService.java         |    7 
 src/main/java/com/moon/server/helper/StringHelper.java                     |   17 
 src/main/java/com/moon/server/mapper/data/MetaMapper.java                  |    8 
 src/main/java/com/moon/server/service/show/DataLibService.java             |   74 +++-
 src/main/java/com/moon/server/config/PropertiesConfig.java                 |    4 
 src/main/java/com/moon/server/controller/data/upload/UploadController.java |    6 
 src/main/java/com/moon/server/controller/data/DataCountController.java     |   26 +
 src/main/java/com/moon/server/helper/FileHelper.java                       |    6 
 src/main/resources/mapper/show/OneMapMapper.xml                            |    4 
 36 files changed, 864 insertions(+), 181 deletions(-)

diff --git a/src/main/java/com/moon/server/config/PropertiesConfig.java b/src/main/java/com/moon/server/config/PropertiesConfig.java
index c43e9c0..1d786f3 100644
--- a/src/main/java/com/moon/server/config/PropertiesConfig.java
+++ b/src/main/java/com/moon/server/config/PropertiesConfig.java
@@ -51,4 +51,8 @@
     public String getTilePath() {
         return tilePath;
     }
+
+    public String getLfData() {
+        return tilePath.replace("2d\\tiles", "");
+    }
 }
diff --git a/src/main/java/com/moon/server/config/RestTemplateConfig.java b/src/main/java/com/moon/server/config/RestTemplateConfig.java
index bafce30..dbea731 100644
--- a/src/main/java/com/moon/server/config/RestTemplateConfig.java
+++ b/src/main/java/com/moon/server/config/RestTemplateConfig.java
@@ -25,7 +25,7 @@
 @ConditionalOnClass(value = {RestTemplate.class, HttpClient.class})
 public class RestTemplateConfig {
     /**
-     * 杩炴帴姹犵殑鏈�澶ц繛鎺ユ暟榛樿涓�0
+     * 杩炴帴姹犵殑鏈�澶ц繛鎺ユ暟榛樿涓�0锛屼笉闄愬埗
      */
     @Value("${remote.maxTotalConnect:0}")
     private int maxTotalConnect;
@@ -37,13 +37,13 @@
     private int maxConnectPerRoute;
 
     /**
-     * 杩炴帴瓒呮椂榛樿5s
+     * 杩炴帴瓒呮椂榛樿5s锛�-1涓轰笉闄愬埗
      */
     @Value("${remote.connectTimeout:5000}")
     private int connectTimeout;
 
     /**
-     * 璇诲彇瓒呮椂榛樿30s
+     * 璇诲彇瓒呮椂榛樿30s锛�-1涓轰笉闄愬埗
      */
     @Value("${remote.readTimeout:30000}")
     private int readTimeout;
diff --git a/src/main/java/com/moon/server/controller/all/BaseQueryController.java b/src/main/java/com/moon/server/controller/all/BaseQueryController.java
index 31f4206..c6ab13b 100644
--- a/src/main/java/com/moon/server/controller/all/BaseQueryController.java
+++ b/src/main/java/com/moon/server/controller/all/BaseQueryController.java
@@ -200,7 +200,7 @@
             if (StringHelper.isEmpty(wkt)) {
                 return fail("WKT涓嶈兘涓虹┖", null);
             }
-            if (null == limit || limit < 1 || limit > StaticData.ONE_HUNDRED) {
+            if (null == limit || limit < 1 || limit > StaticData.I100) {
                 limit = 20;
             }
             if (null == buffer || buffer < 0 || buffer > StaticData.ONE_HUNDRED_THOUSAND) {
@@ -424,11 +424,12 @@
             @ApiImplicitParam(name = "depcode", value = "鍗曚綅缂栫爜", dataType = "String", paramType = "query", example = "00"),
             @ApiImplicitParam(name = "dirs", value = "鐩綍缂栫爜", dataType = "String", paramType = "query", example = "00,01"),
             @ApiImplicitParam(name = "tab", value = "琛ㄥ悕", dataType = "String", paramType = "query", example = "dlg_"),
+            @ApiImplicitParam(name = "types", value = "绫诲埆", dataType = "String", paramType = "query", example = "娴嬬粯锛圗SV锛�"),
             @ApiImplicitParam(name = "hasGeom", value = "鍚湁Geom瀛楁", dataType = "Boolean", paramType = "query", example = "false"),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
-    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
+    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, String types, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
         try {
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
@@ -445,14 +446,15 @@
             if (dirs != null) {
                 filters += String.format(" and %s", dirs);
             }
+            String typesFilter = getTypesFilter(types);
 
             String field = null == hasGeom || !hasGeom ? "gid" : "geom";
-            int count = baseQueryService.selectTabsForCount(tab, field);
+            int count = baseQueryService.selectTabsForCount(tab, typesFilter, field);
             if (count == 0) {
                 return success(0, null);
             }
 
-            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, field, filters, pageSize, pageSize * (pageIndex - 1));
+            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, typesFilter, field, filters, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
         } catch (Exception ex) {
@@ -460,6 +462,48 @@
         }
     }
 
+    /**
+     * 鑾峰彇绫诲埆杩囨护鏉′欢
+     */
+    private String getTypesFilter(String types) {
+        if (StringHelper.isEmpty(types)) {
+            return null;
+        }
+
+        List<String> list = new ArrayList<>();
+        for (String type : types.split(StaticData.COMMA)) {
+            switch (type) {
+                case "娴嬬粯锛圗SV锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/娴嬬粯%'");
+                    break;
+                case "鍕樺療锛圗GE锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/鍕樺療%'");
+                    break;
+                case "鍦扮伨锛圗GD锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/鍦扮伨%'");
+                    break;
+                case "娲炲簱锛圗GD锛�":
+                    list.add("bak like '宸ョ▼鏁版嵁/娲炲簱%'");
+                    break;
+                case "鍩虹娴嬬粯":
+                    list.add("bak like '鍩虹鏁版嵁/娴嬬粯%'");
+                    break;
+                case "鍩虹鍦扮伨":
+                    list.add("bak like '鍩虹鏁版嵁/鍦扮伨%'");
+                    break;
+                case "鍩虹鍕樺療":
+                    list.add("bak like '鍩虹鏁版嵁/鍕樺療%'");
+                    break;
+                case "鍚堣鏁版嵁":
+                case "绠$悊鏁版嵁":
+                default:
+                    break;
+            }
+        }
+
+        return list.isEmpty() ? null : StringHelper.join(list, " or ");
+    }
+
     @SysLog()
     @ApiOperation(value = "鏌ヨ瀛楁淇℃伅")
     @ApiImplicitParams({
diff --git a/src/main/java/com/moon/server/controller/data/DataCountController.java b/src/main/java/com/moon/server/controller/data/DataCountController.java
index 220a787..67333ed 100644
--- a/src/main/java/com/moon/server/controller/data/DataCountController.java
+++ b/src/main/java/com/moon/server/controller/data/DataCountController.java
@@ -80,6 +80,19 @@
     }
 
     @SysLog()
+    @ApiOperation(value = "鎸夋枃浠剁被鍨嬬粺璁�")
+    @GetMapping(value = "/countSizesByType")
+    public ResponseMsg<Object> countSizesByType() {
+        try {
+            List<CountEntity> list = reportService.countSizesByType();
+
+            return success(list);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
     @ApiOperation(value = "鏌ヨ鏈嶅姟璋冪敤閲忕粺璁�")
     @GetMapping(value = "/selectCountServices")
     public ResponseMsg<Object> selectCountServices() {
@@ -106,6 +119,19 @@
     }
 
     @SysLog()
+    @ApiOperation(value = "鎸夐」鐩粺璁℃暟鎹�")
+    @GetMapping(value = "/countSizesByPrj")
+    public ResponseMsg<Object> countSizesByPrj() {
+        try {
+            List<CountEntity> list = reportService.countSizesByPrj();
+
+            return success(list);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
     @ApiOperation(value = "涓嬭浇鎶ュ憡")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "鎶ュ憡ID", dataType = "Integer", paramType = "7")
diff --git a/src/main/java/com/moon/server/controller/data/MetaController.java b/src/main/java/com/moon/server/controller/data/MetaController.java
index a3bfa9a..e93d318 100644
--- a/src/main/java/com/moon/server/controller/data/MetaController.java
+++ b/src/main/java/com/moon/server/controller/data/MetaController.java
@@ -100,6 +100,26 @@
     }
 
     @SysLog()
+    @ApiOperation(value = "鏍规嵁GUID鏌ヨGDB")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "guid", value = "GUID", dataType = "String", paramType = "query", example = "d58e66d9606a4b85e7c8ab43b3db0b55")
+    })
+    @GetMapping(value = "/selectGdbByGuid")
+    public ResponseMsg<Object> selectGdbByGuid(String guid) {
+        try {
+            if (StringHelper.isEmpty(guid)) {
+                return fail("鏂囦欢GUID鍊间笉鑳戒负绌�", null);
+            }
+
+            List<MetaEntity> rs = metaService.selectGdbByGuid(guid);
+
+            return success(null == rs ? 0 : rs.size(), rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
     @ApiOperation(value = "鏍规嵁鐖禝D鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "metaid", value = "鐖禝D", dataType = "String", paramType = "query", example = "0"),
diff --git a/src/main/java/com/moon/server/controller/data/PublishController.java b/src/main/java/com/moon/server/controller/data/PublishController.java
index 0027314..706c24c 100644
--- a/src/main/java/com/moon/server/controller/data/PublishController.java
+++ b/src/main/java/com/moon/server/controller/data/PublishController.java
@@ -9,16 +9,18 @@
 import com.moon.server.entity.sys.UserEntity;
 import com.moon.server.helper.StringHelper;
 import com.moon.server.helper.WebHelper;
+import com.moon.server.service.all.PermsService;
 import com.moon.server.service.data.PublishService;
 import com.moon.server.service.sys.TokenService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -29,11 +31,14 @@
 @RestController
 @RequestMapping("/publish")
 public class PublishController extends BaseController {
-    @Autowired
+    @Resource
     PublishService publishService;
 
-    @Autowired
+    @Resource
     TokenService tokenService;
+
+    @Resource
+    PermsService permsService;
 
     @SysLog()
     @ApiOperation(value = "鍒嗛〉鏌ヨ鍏冩暟鎹�")
@@ -56,7 +61,7 @@
                 return fail("鏁版嵁绫诲埆涓虹┖", null);
             }
 
-            String types = getType(type);
+            String types = getType(dircode, type);
             int count = publishService.selectMetasByCount(depcode, dircode, verid, types, name);
             if (count == 0) {
                 return success(0, null);
@@ -73,47 +78,114 @@
     /**
      * 鑾峰彇绫诲瀷
      */
-    private String getType(String type) throws Exception {
+    private String getType(String dircode, String type) throws Exception {
         switch (type) {
             case "DOM":
-                return "type in ('tif', 'tiff', 'img')";
+                return "type in ('tif', 'tiff', 'img')" + getFilter(dircode, type);
             case "DEM":
-                return "type in ('tif', 'tiff')";
+                return "type in ('tif', 'tiff')" + getFilter(dircode, type);
             case "MPT":
                 return "type = 'mpt'";
             case "3DML":
                 return "type = '3dml'";
+            case "CPT":
+                return "type = 'cpt'";
             case "BIM":
                 return "type in ('ifc', 'fbx', 'rvt')";
+            case "LAS":
+                return "type in ('las', 'laz')";
+            case "OSGB":
+                return "type = 'osgb'";
             default:
                 throw new Exception("鏁版嵁绫诲瀷涓嶅尮閰�");
         }
+    }
+
+    /**
+     * 鑾峰彇杩囨护鏉′欢
+     */
+    private String getFilter(String dircode, String type) {
+        dircode = StringHelper.isEmpty(dircode) ? "" : StringHelper.getRightLike(dircode);
+
+        List<String> list = null;
+        switch (type) {
+            case "DOM":
+                list = publishService.selectCodesForDir(dircode, 0);
+                break;
+            case "DEM":
+                list = publishService.selectCodesForDir(dircode, 1);
+                break;
+            default:
+                break;
+        }
+        if (null == list || list.isEmpty()) {
+            return "";
+        }
+
+        for (int i = 0, c = list.size(); i < c; i++) {
+            list.set(i, "'" + list.get(i) + "'");
+        }
+
+        return " and dircode not in (" + StringHelper.join(list, ",") + ")";
     }
 
     @SysLog()
     @ApiOperation(value = "鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "name", value = "鍚嶇О", dataType = "String", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "dircode", value = "鐩綍", dataType = "String", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "type", value = "绫诲埆", dataType = "String", paramType = "query", example = ""),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
     @GetMapping(value = "/selectByPageAndCount")
-    public ResponseMsg<List<PublishEntity>> selectByPageAndCount(String name, Integer pageSize, Integer pageIndex) {
+    public ResponseMsg<List<PublishEntity>> selectByPageAndCount(String name, String dircode, String type, Integer pageSize, Integer pageIndex) {
         try {
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
             }
+            type = getPubType(type);
 
-            int count = publishService.selectCount(name);
+            int count = publishService.selectCount(name, dircode, type);
             if (count == 0) {
                 return success(0, null);
             }
 
-            List<PublishEntity> rs = publishService.selectByPage(name, pageSize, pageSize * (pageIndex - 1));
+            List<PublishEntity> rs = publishService.selectByPage(name, dircode, type, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
         } catch (Exception ex) {
             return fail(ex.getMessage(), null);
+        }
+    }
+
+    /**
+     * 鑾峰彇鍙戝竷绫诲瀷
+     */
+    private String getPubType(String type) {
+        if (StringHelper.isEmpty(type)) {
+            return null;
+        }
+
+        switch (type) {
+            case "DOM":
+                return "type = 'DOM'";
+            case "DEM":
+                return "type = 'DEM'";
+            case "MPT":
+                return "type = 'mpt'";
+            case "3DML":
+                return "type = '3dml'";
+            case "CPT":
+                return "type = 'cpt'";
+            case "BIM":
+                return "type in ('ifc', 'fbx', 'rvt')";
+            case "LAS":
+                return "type in ('las', 'laz')";
+            case "OSGB":
+                return "type = 'osgb'";
+            default:
+                return null;
         }
     }
 
@@ -128,6 +200,31 @@
             PublishEntity entity = publishService.selectById(id);
 
             return success(entity);
+        } catch (Exception ex) {
+            return fail(ex.getMessage(), null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏌ヨLas鏂囦欢鍧愭爣绯籌D")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "ids", value = "鍏冩暟鎹甀D闆嗗悎", dataType = "Integer[]", paramType = "query", example = "10483,10481,10456,10285")
+    })
+    @GetMapping(value = "/selectLasCs")
+    public ResponseMsg<Object> selectLasCs(Integer[] ids, HttpServletRequest req) {
+        try {
+            if (null == ids || ids.length == 0) {
+                return fail("鍏冩暟鎹甀D闆嗗悎涓嶈兘涓虹┖");
+            }
+
+            PubEntity entity = new PubEntity();
+            entity.setIds(Arrays.asList(ids));
+            entity.setDircode("00");
+            entity.setToken(WebHelper.getToken(req));
+
+            List<Integer> list = publishService.selectLasCs(entity, "/Convert/ReadLasCs", req);
+
+            return success(list);
         } catch (Exception ex) {
             return fail(ex.getMessage(), null);
         }
@@ -154,6 +251,7 @@
                 entity.setToken(WebHelper.getToken(req));
             }
 
+            permsService.clearLayerCache();
             String method = getConvertMethod(entity.getType());
             long count = publishService.postForPub(entity, method, req);
 
@@ -174,9 +272,14 @@
                 return "/Convert/ToTerra";
             case "MPT":
             case "3DML":
+            case "CPT":
                 return "/Convert/ToSG";
             case "BIM":
                 return "/Convert/ToTileset";
+            case "LAS":
+                return "/Convert/ToLasByPy";
+            case "OSGB":
+                return "/Convert/ToOsgb";
             default:
                 throw new Exception("鏁版嵁绫诲瀷涓嶅尮閰�");
         }
@@ -193,6 +296,16 @@
             if (ids == null || ids.isEmpty()) {
                 return fail("id鏁扮粍涓嶈兘涓虹┖", -1);
             }
+
+            String strs = StringHelper.join(ids, ",");
+            List<PublishEntity> list = publishService.selectByIds(strs);
+            if (null == list || list.isEmpty()) {
+                return fail("娌℃湁鎵惧埌瑕佸垹闄ょ殑鏁版嵁", -1);
+            }
+
+            // publishService.deleteFiles(list)
+            permsService.clearLayerCache();
+            publishService.deleteFiles(ids, req);
 
             int count = publishService.deletes(ids, req);
 
@@ -216,6 +329,7 @@
                 entity.setUpdateUser(ue.getId());
             }
 
+            permsService.clearLayerCache();
             int count = publishService.update(entity);
 
             return success(count);
diff --git a/src/main/java/com/moon/server/controller/data/upload/UploadController.java b/src/main/java/com/moon/server/controller/data/upload/UploadController.java
index 2bc670c..4fa9262 100644
--- a/src/main/java/com/moon/server/controller/data/upload/UploadController.java
+++ b/src/main/java/com/moon/server/controller/data/upload/UploadController.java
@@ -125,7 +125,7 @@
     @GetMapping(value = "/selectFiles")
     public ResponseMsg<List<MetaFileEntity>> selectFiles(String path) {
         try {
-            List<MetaFileEntity> list = uploadService.selectFiles(path);
+            List<MetaFileEntity> list = uploadService.selectFiles(path, false);
 
             return success(list);
         } catch (Exception ex) {
@@ -161,8 +161,8 @@
     @SysLog()
     @ApiOperation(value = "鏌ヨ鏄犲皠")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20230110010101"),
-            @ApiImplicitParam(name = "dirid", value = "鐩綍ID", dataType = "Integer", paramType = "query", example = "163"),
+            @ApiImplicitParam(name = "path", value = "璺緞", dataType = "String", paramType = "query", example = "20230722"),
+            @ApiImplicitParam(name = "dirid", value = "鐩綍ID", dataType = "Integer", paramType = "query", example = "1"),
             @ApiImplicitParam(name = "verid", value = "鐗堟湰ID", dataType = "Integer", paramType = "query", example = "0"),
             @ApiImplicitParam(name = "epsgCode", value = "鍧愭爣缂栫爜", dataType = "String", paramType = "query", example = "EPSG:4490")
     })
diff --git a/src/main/java/com/moon/server/controller/sys/TokenController.java b/src/main/java/com/moon/server/controller/sys/TokenController.java
index 3ccfe6f..f92b3de 100644
--- a/src/main/java/com/moon/server/controller/sys/TokenController.java
+++ b/src/main/java/com/moon/server/controller/sys/TokenController.java
@@ -43,11 +43,11 @@
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
             }
-            int count = tokenService.selectCount(name,type);
+            int count = tokenService.selectCount(name, type);
             if (count == 0) {
                 return success(0, null);
             }
-            List<TokenEntity> rs = tokenService.selectByPage(name,type, pageSize, pageSize * (pageIndex - 1));
+            List<TokenEntity> rs = tokenService.selectByPage(name, type, pageSize, pageSize * (pageIndex - 1));
             return success(count, rs);
         } catch (Exception ex) {
             return fail(ex, null);
diff --git a/src/main/java/com/moon/server/entity/all/StaticData.java b/src/main/java/com/moon/server/entity/all/StaticData.java
index 1ed135e..f71beb6 100644
--- a/src/main/java/com/moon/server/entity/all/StaticData.java
+++ b/src/main/java/com/moon/server/entity/all/StaticData.java
@@ -34,6 +34,10 @@
 
     public final static int ONE_HUNDRED_THOUSAND = 100000;
 
+    public static final double D90 = 90.0;
+
+    public static final double D100 = 100.0;
+
     public static final double D1024 = 1024.0;
 
     public static final double D1050 = 1050.0;
@@ -46,11 +50,15 @@
 
     public static final int I31 = 31;
 
+    public static final int I50 = 50;
+
     public static final int I60 = 60;
 
     public static final int I90 = 90;
 
     public static final int I90_NEG = -90;
+
+    public final static int I100 = 100;
 
     public static final int I120 = 120;
 
@@ -61,6 +69,8 @@
     public static final int I1000 = 1000;
 
     public static final int I2050 = 2050;
+
+    public static final int I4326 = 4326;
 
     public static final int I4490 = 4490;
 
@@ -86,9 +96,10 @@
      */
     public final static String COMMA = ",";
 
-    public final static String AK = "?ak=";
-
-    public final static String REST_LAYER = "/v6/rest/";
+    /**
+     * 娉㈡氮鍙�
+     */
+    public final static String TILDE = "~";
 
     /**
      * 鍗曞紩鍙�
@@ -96,6 +107,10 @@
     public final static String SINGLE_QUOTES = "'";
 
     public final static String BBOREHOLE = "bborehole";
+
+    public final static String AK = "?ak=";
+
+    public final static String REST_LAYER = "/v6/rest/";
 
     public final static String TEXT_XML = "text/xml";
 
@@ -116,6 +131,8 @@
 
     public final static String SHP = ".shp";
 
+    public final static String NGDB = "gdb";
+
     public final static String GDB = ".gdb";
 
     public final static String JPG = ".jpg";
@@ -129,6 +146,10 @@
     public final static String TIF = ".tif";
 
     public final static String TIFF = ".tiff";
+
+    public final static String LAS = ".las";
+
+    public final static String OSGB = ".osgb";
 
     public static String ADMIN = "admin";
 
@@ -191,6 +212,10 @@
 
     public final static String MULTIPOLYGON = "MULTIPOLYGON";
 
+    public final static String MULTICURVE = "MULTICURVE";
+
+    public final static String COMPOUNDCURVE = "COMPOUNDCURVE";
+
     public static final String NO_FILE = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NOT_FOUND, "鏂囦欢鎵句笉鍒�"));
 
     /**
@@ -221,12 +246,12 @@
     /**
      * TIF鏂囦欢鎵╁睍鍚�
      */
-    public final static List<String> TIF_EXT = new ArrayList<>(Arrays.asList(".prj", ".tfw", ".tif.ovr", ".tif.aux.xml", ".tif.enp", ".tif.xml"));
+    public final static List<String> TIF_EXT = new ArrayList<>(Arrays.asList(".prj", ".tfw", ".aux", ".tif.ovr", ".tif.aux.xml", ".tif.xml"));
 
     /**
      * TIFF鏂囦欢鎵╁睍鍚�
      */
-    public final static List<String> TIFF_EXT = new ArrayList<>(Arrays.asList(".prj", ".tfw", ".tiff.ovr", ".tiff.aux.xml", ".tiff.enp", ".tiff.xml"));
+    public final static List<String> TIFF_EXT = new ArrayList<>(Arrays.asList(".prj", ".tfw", ".aux", ".tiff.ovr", ".tiff.aux.xml", ".tiff.xml"));
 
     /**
      * SHP鏂囦欢鎵╁睍鍚�
@@ -236,7 +261,7 @@
     /**
      * Mapper鎺掗櫎鎵╁睍鍚�
      */
-    public final static List<String> MAPPER_EXCLUDE_EXT = new ArrayList<>(Arrays.asList(".img.aux.xml", ".img.xml", ".tif.aux.xml", ".tif.xml", ".tiff.aux.xml", ".tiff.xml", ".shp.xml"));
+    public final static List<String> MAPPER_EXCLUDE_EXT = new ArrayList<>(Arrays.asList(".jpg.aux.xml", ".jpg.xml", ".img.aux.xml", ".img.xml", ".tif.aux.xml", ".tif.xml", ".tiff.aux.xml", ".tiff.xml", ".shp.xml"));
 
     /**
      * 鎵�鏈夋枃浠舵墿灞曞悕
diff --git a/src/main/java/com/moon/server/entity/ctrl/PubEntity.java b/src/main/java/com/moon/server/entity/ctrl/PubEntity.java
index e201046..21652ab 100644
--- a/src/main/java/com/moon/server/entity/ctrl/PubEntity.java
+++ b/src/main/java/com/moon/server/entity/ctrl/PubEntity.java
@@ -30,7 +30,13 @@
 
     private String depcode;
 
-    private List<String> ids;
+    private List<Integer> ids;
+
+    private List<Integer> models;
+
+    private List<Integer> srids;
+
+    private List<Double> zs;
 
     public String getType() {
         return type;
@@ -104,11 +110,35 @@
         this.depcode = depcode;
     }
 
-    public List<String> getIds() {
+    public List<Integer> getIds() {
         return ids;
     }
 
-    public void setIds(List<String> ids) {
+    public void setIds(List<Integer> ids) {
         this.ids = ids;
     }
+
+    public List<Integer> getModels() {
+        return models;
+    }
+
+    public void setModels(List<Integer> models) {
+        this.models = models;
+    }
+
+    public List<Integer> getSrids() {
+        return srids;
+    }
+
+    public void setSrids(List<Integer> srids) {
+        this.srids = srids;
+    }
+
+    public List<Double> getZs() {
+        return zs;
+    }
+
+    public void setZs(List<Double> zs) {
+        this.zs = zs;
+    }
 }
diff --git a/src/main/java/com/moon/server/entity/data/MetaFileEntity.java b/src/main/java/com/moon/server/entity/data/MetaFileEntity.java
index e492942..b8c8473 100644
--- a/src/main/java/com/moon/server/entity/data/MetaFileEntity.java
+++ b/src/main/java/com/moon/server/entity/data/MetaFileEntity.java
@@ -42,6 +42,8 @@
 
     private int rows;
 
+    private int records;
+
     private String msg;
 
     private Boolean isMeta;
@@ -176,6 +178,14 @@
         this.rows = rows;
     }
 
+    public int getRecords() {
+        return records;
+    }
+
+    public void setRecords(int records) {
+        this.records = records;
+    }
+
     public String getMsg() {
         return msg;
     }
diff --git a/src/main/java/com/moon/server/helper/FileHelper.java b/src/main/java/com/moon/server/helper/FileHelper.java
index 730056f..8157d98 100644
--- a/src/main/java/com/moon/server/helper/FileHelper.java
+++ b/src/main/java/com/moon/server/helper/FileHelper.java
@@ -401,7 +401,7 @@
     /**
      * 鏍规嵁璺緞鑾峰彇鏂囦欢
      */
-    public static void getFilesByPath(List<File> list, String path) {
+    public static void getFilesByPath(List<String> list, String path) {
         File file = new File(path);
         if (file.isDirectory()) {
             File[] files = file.listFiles();
@@ -413,11 +413,11 @@
                 if (f.isDirectory()) {
                     getFilesByPath(list, f.getPath());
                 } else {
-                    list.add(f);
+                    list.add(f.getPath());
                 }
             }
         } else {
-            list.add(file);
+            list.add(file.getPath());
         }
     }
 
diff --git a/src/main/java/com/moon/server/helper/GdbHelper.java b/src/main/java/com/moon/server/helper/GdbHelper.java
index fd780e8..4f2448d 100644
--- a/src/main/java/com/moon/server/helper/GdbHelper.java
+++ b/src/main/java/com/moon/server/helper/GdbHelper.java
@@ -8,7 +8,9 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.gdal.ogr.*;
+import org.gdal.osr.CoordinateTransformation;
 import org.gdal.osr.SpatialReference;
+import org.gdal.osr.osr;
 
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
@@ -107,7 +109,7 @@
     /**
      * 璇诲彇鏁版嵁
      */
-    public static <T> List<T> readData(Class clazz, String filePath, String layerName) {
+    public static <T> List<T> readData(Class clazz, String filePath, String layerName, boolean isTransform) {
         List<T> list = new ArrayList<>();
 
         Driver driver = null;
@@ -127,7 +129,7 @@
             for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) {
                 Layer layer = dataSource.GetLayer(i);
                 if (layer.GetName().equals(layerName)) {
-                    GdbHelper.readLayer(clazz, layer, list);
+                    GdbHelper.readLayer(clazz, layer, list, isTransform);
                     break;
                 }
 
@@ -145,7 +147,7 @@
     /**
      * 璇诲彇鍥惧眰
      */
-    public static <T> void readLayer(Class clazz, Layer layer, List<T> list) {
+    public static <T> void readLayer(Class clazz, Layer layer, List<T> list, boolean isTransform) {
         try {
             Field gField = getGeomField(clazz);
 
@@ -155,6 +157,8 @@
                 return;
             }
 
+            CoordinateTransformation ct = getCoordinateTransformation(layer, isTransform);
+
             do {
                 Feature f = layer.GetNextFeature();
                 if (null == f) {
@@ -162,7 +166,7 @@
                 }
 
                 T t = (T) clazz.newInstance();
-                readFeature(t, f, map, gField);
+                readFeature(t, f, map, gField, ct);
                 list.add(t);
             } while (true);
         } catch (Exception ex) {
@@ -170,6 +174,33 @@
         } finally {
             GdbHelper.delete(layer);
         }
+    }
+
+    /**
+     * 鑾峰彇鍧愭爣杞崲鍣�
+     */
+    private static CoordinateTransformation getCoordinateTransformation(Layer layer, boolean isTransform) {
+        if (!isTransform) {
+            return null;
+        }
+
+        String epsg = layer.GetSpatialRef().GetAttrValue("AUTHORITY", 1);
+        if (StringHelper.isEmpty(epsg)) {
+            return null;
+        }
+
+        int epsgId = Integer.parseInt(epsg);
+        if (StaticData.I4326 == epsgId || StaticData.I4490 == epsgId) {
+            return null;
+        }
+
+        SpatialReference srTarget = new SpatialReference();
+        srTarget.ImportFromEPSG(StaticData.I4490);
+
+        layer.GetSpatialRef().SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER);
+        srTarget.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER);
+
+        return CoordinateTransformation.CreateCoordinateTransformation(layer.GetSpatialRef(), srTarget);
     }
 
     /**
@@ -193,14 +224,13 @@
         try {
             FeatureDefn fd = layer.GetLayerDefn();
             for (int i = 0, count = fd.GetFieldCount(); i < count; i++) {
-                FieldDefn fieldDefn = fd.GetFieldDefn(i);
                 try {
-                    String name = fieldDefn.GetName().toLowerCase();
+                    String name = fd.GetFieldDefn(i).GetName().toLowerCase();
                     if (StaticData.READ_EXCLUDE_FIELDS.contains(name)) {
                         continue;
                     }
 
-                    Field field = clazz.getDeclaredField(name);
+                    Field field = clazz.getDeclaredField("gbcode".equals(name) ? "gb" : name);
                     field.setAccessible(true);
 
                     map.put(i, field);
@@ -213,14 +243,14 @@
                 getFieldMapper(clazz.getSuperclass(), layer, map);
             }
         } catch (Exception ex) {
-            //
+            log.error(ex);
         }
     }
 
     /**
      * 璇诲彇Feature
      */
-    private static <T> void readFeature(T t, Feature f, Map<Integer, Field> map, Field gField) {
+    private static <T> void readFeature(T t, Feature f, Map<Integer, Field> map, Field gField, CoordinateTransformation ct) {
         for (Integer i : map.keySet()) {
             try {
                 Field field = map.get(i);
@@ -231,7 +261,7 @@
         }
 
         if (null != gField) {
-            setGeom(t, f, gField);
+            setGeom(t, gField, f.GetGeometryRef(), ct);
         }
     }
 
@@ -288,24 +318,32 @@
      * wkbNone = 100,
      * wkbLinearRing = 101
      */
-    private static <T> void setGeom(T t, Feature f, Field gField) {
+    private static <T> void setGeom(T t, Field gField, Geometry geometry, CoordinateTransformation ct) {
         try {
-            String geo = "null";
-            if (null != f.GetGeometryRef()) {
-                String wkt = f.GetGeometryRef().ExportToWkt();
-                // f.GetGeometryRef().GetGeometryType()
-                if (wkt.contains(StaticData.LINESTRING) && !wkt.contains(StaticData.MULTILINESTRING)) {
-                    wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")";
-                }
-                if (wkt.contains(StaticData.POLYGON) && !wkt.contains(StaticData.MULTIPOLYGON)) {
-                    wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")";
-                }
-                wkt = wkt.replace(" 0,", ",").replace(" 0)", ")");
-
-                geo = String.format("ST_GeomFromText('%s')", wkt);
+            if (null == geometry) {
+                gField.set(t, "null");
+                return;
+            }
+            if (null != ct) {
+                int flag = geometry.Transform(ct);
             }
 
-            gField.set(t, geo);
+            String wkt = geometry.ExportToWkt();
+            if (wkt.contains(StaticData.LINESTRING) && !wkt.contains(StaticData.MULTILINESTRING)) {
+                wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")";
+            }
+            if (wkt.contains(StaticData.POLYGON) && !wkt.contains(StaticData.MULTIPOLYGON)) {
+                wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")";
+            }
+            wkt = wkt.replace(" 0,", ",").replace(" 0)", ")");
+            if (wkt.contains(StaticData.MULTICURVE)) {
+                wkt = wkt.replace("MULTICURVE (", "MULTILINESTRING (").replace("CIRCULARSTRING ", "");
+                if (wkt.contains(StaticData.COMPOUNDCURVE)) {
+                    wkt = wkt.replace("COMPOUNDCURVE (", "").replace(")))", "))");
+                }
+            }
+
+            gField.set(t, String.format("ST_GeomFromText('%s')", wkt));
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
         }
diff --git a/src/main/java/com/moon/server/helper/MdbHelper.java b/src/main/java/com/moon/server/helper/MdbHelper.java
index 1c33390..65178be 100644
--- a/src/main/java/com/moon/server/helper/MdbHelper.java
+++ b/src/main/java/com/moon/server/helper/MdbHelper.java
@@ -75,7 +75,7 @@
             for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) {
                 Layer layer = dataSource.GetLayer(i);
                 if (layer.GetName().equals(layerName)) {
-                    GdbHelper.readLayer(clazz, layer, list);
+                    GdbHelper.readLayer(clazz, layer, list, true);
                     break;
                 }
 
diff --git a/src/main/java/com/moon/server/helper/PathHelper.java b/src/main/java/com/moon/server/helper/PathHelper.java
index 74c4033..0c2604e 100644
--- a/src/main/java/com/moon/server/helper/PathHelper.java
+++ b/src/main/java/com/moon/server/helper/PathHelper.java
@@ -2,6 +2,7 @@
 
 import com.moon.server.config.PropertiesConfig;
 import com.moon.server.entity.all.SettingData;
+import com.moon.server.entity.all.StaticData;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,8 +23,6 @@
     private static int downloadPath = 1;
 
     private static int uploadPath = 1;
-
-    private final static double D90 = 90;
 
     private final static Log log = LogFactory.getLog(PathHelper.class);
 
@@ -142,7 +141,7 @@
     public void deleteOldPath(String tempPath) {
         try {
             double ran = Math.random() * 99;
-            if (ran < D90) {
+            if (ran < StaticData.D90) {
                 return;
             }
 
diff --git a/src/main/java/com/moon/server/helper/ShpHelper.java b/src/main/java/com/moon/server/helper/ShpHelper.java
index aba74c0..218a67a 100644
--- a/src/main/java/com/moon/server/helper/ShpHelper.java
+++ b/src/main/java/com/moon/server/helper/ShpHelper.java
@@ -214,7 +214,7 @@
     /**
      * 璇诲彇鏁版嵁
      */
-    public static <T> List<T> readData(Class clazz, String filePath) {
+    public static <T> List<T> readData(Class clazz, String filePath, boolean isTransform) {
         List<T> list = new ArrayList<>();
 
         Driver driver = null;
@@ -231,7 +231,7 @@
             }
 
             Layer layer = dataSource.GetLayer(0);
-            GdbHelper.readLayer(clazz, layer, list);
+            GdbHelper.readLayer(clazz, layer, list, isTransform);
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
         } finally {
diff --git a/src/main/java/com/moon/server/helper/StringHelper.java b/src/main/java/com/moon/server/helper/StringHelper.java
index e2a4fff..b720865 100644
--- a/src/main/java/com/moon/server/helper/StringHelper.java
+++ b/src/main/java/com/moon/server/helper/StringHelper.java
@@ -3,6 +3,7 @@
 import com.moon.server.entity.all.StaticData;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -226,4 +227,20 @@
 
         return sb.toString();
     }
+
+    /**
+     * 瀛楃涓茶浆鏁存暟闆嗗悎
+     */
+    public static List<Integer> strToIntegers(String str) {
+        if (StringHelper.isEmpty(str)) {
+            return null;
+        }
+
+        List<Integer> list = new ArrayList<>();
+        for (String s : str.split(StaticData.COMMA)) {
+            list.add(Integer.parseInt(s));
+        }
+
+        return list;
+    }
 }
diff --git a/src/main/java/com/moon/server/mapper/all/BaseQueryMapper.java b/src/main/java/com/moon/server/mapper/all/BaseQueryMapper.java
index ceca52e..0a9fe3e 100644
--- a/src/main/java/com/moon/server/mapper/all/BaseQueryMapper.java
+++ b/src/main/java/com/moon/server/mapper/all/BaseQueryMapper.java
@@ -37,23 +37,25 @@
     /**
      * 鏍规嵁琛ㄥ悕鏌ヨ璁板綍鏁�
      *
-     * @param tab   琛ㄥ悕
-     * @param field 瀛楁
+     * @param tab         琛ㄥ悕
+     * @param typesFilter 绫诲埆
+     * @param field       瀛楁
      * @return
      */
-    public Integer selectTabsForCount(String tab, String field);
+    public Integer selectTabsForCount(String tab, String typesFilter, String field);
 
     /**
      * 鏍规嵁琛ㄥ悕鍒嗛〉鏌ヨ
      *
-     * @param tab     琛ㄥ悕
-     * @param field   瀛楁
-     * @param filters 杩囨护鏉′欢
-     * @param limit   璁板綍鏁�
-     * @param offset  鍋忕Щ閲�
+     * @param tab         琛ㄥ悕
+     * @param typesFilter 绫诲埆
+     * @param field       瀛楁
+     * @param filters     杩囨护鏉′欢
+     * @param limit       璁板綍鏁�
+     * @param offset      鍋忕Щ閲�
      * @return
      */
-    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset);
+    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset);
 
     /**
      * 鏌ヨ瀛楁淇℃伅
diff --git a/src/main/java/com/moon/server/mapper/data/MetaMapper.java b/src/main/java/com/moon/server/mapper/data/MetaMapper.java
index a38c393..90a4dcc 100644
--- a/src/main/java/com/moon/server/mapper/data/MetaMapper.java
+++ b/src/main/java/com/moon/server/mapper/data/MetaMapper.java
@@ -38,6 +38,14 @@
     public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset);
 
     /**
+     * 鏍规嵁GUID鏌ヨGDB
+     *
+     * @param guid
+     * @return
+     */
+    public List<MetaEntity> selectGdbByGuid(String guid);
+
+    /**
      * 鏌ヨ璁板綍鏁�
      *
      * @param depcode
diff --git a/src/main/java/com/moon/server/mapper/data/PublishMapper.java b/src/main/java/com/moon/server/mapper/data/PublishMapper.java
index 0499a8e..207a84f 100644
--- a/src/main/java/com/moon/server/mapper/data/PublishMapper.java
+++ b/src/main/java/com/moon/server/mapper/data/PublishMapper.java
@@ -17,20 +17,24 @@
     /**
      * 鏌ヨ璁板綍鏁�
      *
-     * @param name 鍚嶇О
+     * @param name    鍚嶇О
+     * @param dircode 鐩綍缂栫爜
+     * @param type    绫诲埆
      * @return 璁板綍鏁�
      */
-    public Integer selectCount(String name);
+    public Integer selectCount(String name, String dircode, String type);
 
     /**
      * 鍒嗛〉鏌ヨ
      *
-     * @param name   鍚嶇О
-     * @param limit  璁板綍鏁�
-     * @param offset 鍋忕Щ閲�
+     * @param name    鍚嶇О
+     * @param dircode 鐩綍缂栫爜
+     * @param type    绫诲埆
+     * @param limit   璁板綍鏁�
+     * @param offset  鍋忕Щ閲�
      * @return 鍒楄〃
      */
-    public List<PublishEntity> selectByPage(String name, Integer limit, Integer offset);
+    public List<PublishEntity> selectByPage(String name, String dircode, String type, Integer limit, Integer offset);
 
     /**
      * 鏌ヨ鎵�鏈�
@@ -56,6 +60,15 @@
     public List<PublishEntity> selectByIds(String ids);
 
     /**
+     * 鏍规嵁鐩綍鏌ヨDOM鍜孌EM鐨勭紪鐮�
+     *
+     * @param dircode 鐩綍
+     * @param isDom   1-DOM锛�0-DEM
+     * @return
+     */
+    public List<String> selectCodesForDir(String dircode, Integer isDom);
+
+    /**
      * 鎻掑叆涓�鏉�
      *
      * @param entity
diff --git a/src/main/java/com/moon/server/mapper/sys/ReportMapper.java b/src/main/java/com/moon/server/mapper/sys/ReportMapper.java
index c7d7173..fe77531 100644
--- a/src/main/java/com/moon/server/mapper/sys/ReportMapper.java
+++ b/src/main/java/com/moon/server/mapper/sys/ReportMapper.java
@@ -105,6 +105,13 @@
     public List<CountEntity> countSizes();
 
     /**
+     * 鎸夋枃浠剁被鍨嬬粺璁�
+     *
+     * @return
+     */
+    public List<CountEntity> countSizesByType();
+
+    /**
      * 鏈嶅姟璋冪敤閲忕粺璁�
      *
      * @return
@@ -117,4 +124,11 @@
      * @return
      */
     public List<CountEntity> countOperates();
+
+    /**
+     * 鎸夐」鐩粺璁℃暟鎹�
+     *
+     * @return
+     */
+    public List<CountEntity> countSizesByPrj();
 }
diff --git a/src/main/java/com/moon/server/service/all/BaseQueryService.java b/src/main/java/com/moon/server/service/all/BaseQueryService.java
index ab65401..f4e2e2e 100644
--- a/src/main/java/com/moon/server/service/all/BaseQueryService.java
+++ b/src/main/java/com/moon/server/service/all/BaseQueryService.java
@@ -265,17 +265,17 @@
     }
 
     @Override
-    public Integer selectTabsForCount(String tab, String field) {
+    public Integer selectTabsForCount(String tab, String typesFilter, String field) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsForCount(tab, field);
+        return baseQueryMapper.selectTabsForCount(tab, typesFilter, field);
     }
 
     @Override
-    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) {
+    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) {
         tab = StringHelper.getLikeUpperStr(tab);
 
-        return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset);
+        return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset);
     }
 
     @Override
diff --git a/src/main/java/com/moon/server/service/all/BaseUploadService.java b/src/main/java/com/moon/server/service/all/BaseUploadService.java
index 6813b85..119977f 100644
--- a/src/main/java/com/moon/server/service/all/BaseUploadService.java
+++ b/src/main/java/com/moon/server/service/all/BaseUploadService.java
@@ -129,7 +129,7 @@
     /**
      * 鏌ヨ鏂囦欢
      */
-    public List<MetaFileEntity> selectFiles(String subPath) {
+    public List<MetaFileEntity> selectFiles(String subPath, boolean hasMd5) {
         String root = pathHelper.getConfig().getTempPath() + File.separator + subPath;
 
         File file = new File(root);
@@ -145,7 +145,7 @@
         for (File f : files) {
             String fileName = FileHelper.getFileName(f.getPath());
             String extName = FileHelper.getExtension(fileName);
-            if (!isExtValid(extName)) {
+            if (!isFileValid(f.getName())) {
                 continue;
             }
 
@@ -154,7 +154,7 @@
             mf.setExtName(extName);
             mf.setSizes(FileHelper.sizeToMb(f.length()));
             mf.setPath(subPath + File.separator + fileName);
-            if (!StaticData.ZIP.equals(extName)) {
+            if (hasMd5 && !StaticData.ZIP.equals(extName)) {
                 mf.setGuid(FileHelper.getFileMd5(f.getPath()));
             }
 
@@ -190,7 +190,7 @@
      * 鏌ヨ鏄犲皠
      */
     public List<MetaFileEntity> selectMappers(UserEntity ue, String path, DirEntity dir, VerEntity ver, String epsgCode) {
-        List<MetaFileEntity> metas = selectFiles(path);
+        List<MetaFileEntity> metas = selectFiles(path, true);
         if (null == metas || metas.isEmpty()) {
             return null;
         }
@@ -252,14 +252,13 @@
     private void getFilesByPath(List<File> list, String path) {
         File file = new File(path);
         if (!file.isDirectory()) {
-            String extName = FileHelper.getExtension(file);
-            if (isExtValid(extName)) {
+            if (isFileValid(file.getName())) {
                 list.add(file);
             }
             return;
         }
 
-        if (isGdbFile(file)) {
+        if (isGdbFile(file) || isOsgbFile(file)) {
             list.add(file);
             return;
         }
@@ -272,8 +271,7 @@
             if (f.isDirectory()) {
                 getFilesByPath(list, f.getPath());
             } else {
-                String extName = FileHelper.getExtension(f);
-                if (isExtValid(extName)) {
+                if (isFileValid(f.getName())) {
                     list.add(f);
                 }
             }
@@ -281,10 +279,22 @@
     }
 
     /**
-     * 鎵╁睍鏄惁鏈夋晥
+     * 鏂囦欢鏄�/鍚︽湁鏁�
      */
-    private boolean isExtValid(String extName) {
-        return StaticData.ALL_EXTENSION.contains(extName) && !StaticData.MAPPER_EXCLUDE_EXT.contains(extName);
+    private boolean isFileValid(String fileName) {
+        String extName = FileHelper.getExtension(fileName);
+        if (fileName.startsWith(StaticData.TILDE) || !StaticData.ALL_EXTENSION.contains(extName)) {
+            return false;
+        }
+
+        fileName = fileName.toLowerCase();
+        for (String ext : StaticData.MAPPER_EXCLUDE_EXT) {
+            if (fileName.contains(ext)) {
+                return false;
+            }
+        }
+
+        return true;
     }
 
     /**
@@ -294,18 +304,19 @@
         List<MetaFileEntity> list = new ArrayList<>();
         for (File f : files) {
             boolean isGdb = isGdbFile(f);
-            if (!isGdb && f.isDirectory()) {
+            boolean isOsgb = isOsgbFile(f);
+            boolean isFile = isGdb || isOsgb;
+            if (f.isDirectory() && !isFile) {
                 continue;
             }
 
             String fileName = FileHelper.getFileName(f.getPath());
-            String extName = FileHelper.getExtension(fileName);
-            if (!isExtValid(extName) || fileName.startsWith("~")) {
+            String extName = isOsgb ? StaticData.OSGB : FileHelper.getExtension(fileName);
+            if (!isFileValid(f.getName())) {
                 continue;
             }
 
             String dircode = getDirByPath(f.getPath(), fileName, dir, dirs);
-            boolean isShp = StaticData.SHP.equals(extName);
             if (isGdb) {
                 List<MetaFileEntity> rs = getGdbMappers(f, meta, dircode, start);
                 if (null != rs && rs.size() > 0) {
@@ -313,27 +324,42 @@
                 }
                 continue;
             }
-
-            MetaFileEntity mf = createMetaFileEntity(meta);
-            mf.setDircode(dircode);
-            mf.setEventid(StringHelper.getGuid());
-            mf.setName(fileName);
-            mf.setExtName(extName);
-            mf.setPath(f.getPath().substring(start));
-
-            if (isShp) {
-                List<String> shpFiles = getShpFiles(f.getPath());
-                mf.setTab(fileName.replace(StaticData.SHP, ""));
-                mf.setSizes(getFilesSize(shpFiles));
-                mf.setGuid(getFilesMd5(shpFiles));
-            } else {
-                mf.setSizes(FileHelper.sizeToMb(f.length()));
-                mf.setGuid(FileHelper.getFileMd5(f.getPath()));
+            if (isOsgb) {
+                list.add(getOsgbMapper(f, meta, dircode, start));
+                continue;
             }
+
+            MetaFileEntity mf = createMetaFileEntity(f, meta, fileName, extName);
+            mf.setPath(f.getPath().substring(start));
+            mf.setDircode(dircode);
             list.add(mf);
         }
 
         return list;
+    }
+
+    /**
+     * 鍒涘缓鍏冩暟鎹枃浠跺疄浣撶被
+     */
+    private MetaFileEntity createMetaFileEntity(File f, MetaFileEntity meta, String fileName, String extName) {
+        boolean isShp = StaticData.SHP.equals(extName);
+
+        MetaFileEntity mf = createMetaFileEntity(meta);
+        mf.setEventid(StringHelper.getGuid());
+        mf.setName(fileName);
+        mf.setExtName(extName);
+
+        if (isShp) {
+            List<String> shpFiles = getShpFiles(f.getPath());
+            mf.setTab(fileName.replace(StaticData.SHP, ""));
+            mf.setSizes(getFilesSize(shpFiles));
+            mf.setGuid(getFilesMd5(shpFiles));
+        } else {
+            mf.setSizes(FileHelper.sizeToMb(f.length()));
+            mf.setGuid(FileHelper.getFileMd5(f.getPath()));
+        }
+
+        return mf;
     }
 
     /**
@@ -464,7 +490,7 @@
             MetaFileEntity mf = createMetaFileEntity(meta);
             mf.setDircode(dircode);
             mf.setEventid(StringHelper.getGuid());
-            mf.setName(fileName);
+            mf.setName(fileName + "\\" + tab);
             mf.setExtName(extName);
             mf.setSizes(FileHelper.sizeToMb(f.length()));
             mf.setPath(f.getPath().substring(start));
@@ -482,16 +508,9 @@
      */
     private boolean isGdbFile(File f) {
         if (f.isDirectory() && f.getName().toLowerCase().endsWith(StaticData.GDB)) {
-            File[] files = f.listFiles();
-            if (null == files || files.length == 0) {
-                return false;
-            }
+            File gdb = new File(f.getPath() + File.separator + "gdb");
 
-            for (File file : files) {
-                if ("gdb".equals(file.getName())) {
-                    return true;
-                }
-            }
+            return gdb.exists() && !gdb.isDirectory();
         }
 
         return false;
@@ -519,6 +538,46 @@
     }
 
     /**
+     * 鏄�/鍚︿负OSGB鏂囦欢
+     */
+    private boolean isOsgbFile(File f) {
+        if (f.isDirectory()) {
+            File meta = new File(f.getPath() + File.separator + "metadata.xml");
+            File data = new File(f.getPath() + File.separator + "Data");
+
+            return meta.exists() && !meta.isDirectory() && data.exists() && data.isDirectory();
+        }
+
+        return false;
+    }
+
+
+    /**
+     * 鑾峰彇OSGB鏂囦欢鏄犲皠
+     */
+    private MetaFileEntity getOsgbMapper(File f,  MetaFileEntity meta, String dircode, int start) {
+        String fileName = FileHelper.getFileName(f.getPath());
+
+        List<String> files = new ArrayList<>();
+        FileHelper.getFilesByPath(files, f.getPath());
+
+        String md5 = getFilesMd5(files);
+        double sizes = getFilesSize(files);
+
+        MetaFileEntity mf = createMetaFileEntity(meta);
+        mf.setDircode(dircode);
+        mf.setEventid(StringHelper.getGuid());
+        mf.setName(fileName);
+        mf.setExtName(StaticData.OSGB);
+        mf.setSizes(FileHelper.sizeToMb(f.length()));
+        mf.setPath(f.getPath().substring(start));
+        mf.setSizes(sizes);
+        mf.setGuid(md5);
+
+        return mf;
+    }
+
+    /**
      * 鑾峰彇鍙傛暟 *
      * Enumeration<String> headers = req.getHeaderNames();
      * Enumeration<String> attributes = req.getAttributeNames();
diff --git a/src/main/java/com/moon/server/service/all/UploadAttachService.java b/src/main/java/com/moon/server/service/all/UploadAttachService.java
index ff752c5..0780ff3 100644
--- a/src/main/java/com/moon/server/service/all/UploadAttachService.java
+++ b/src/main/java/com/moon/server/service/all/UploadAttachService.java
@@ -2,20 +2,17 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moon.server.controller.all.BaseController;
-import com.moon.server.entity.all.ResponseMsg;
-import com.moon.server.entity.all.SettingData;
+import com.moon.server.entity.all.*;
 import com.moon.server.entity.ctrl.KeyValueEntity;
 import com.moon.server.entity.data.DownloadEntity;
 import com.moon.server.entity.data.MetaEntity;
 import com.moon.server.entity.data.MetaFileEntity;
 import com.moon.server.entity.sys.AttachEntity;
 import com.moon.server.entity.sys.UserEntity;
+import com.moon.server.helper.*;
 import com.moon.server.mapper.all.BasicMapper;
 import com.moon.server.mapper.data.DownloadMapper;
 import com.moon.server.service.sys.AttachService;
-import com.moon.server.entity.all.BaseEntity;
-import com.moon.server.entity.all.StaticData;
-import com.moon.server.helper.*;
 import net.lingala.zip4j.ZipFile;
 import net.lingala.zip4j.model.FileHeader;
 import net.lingala.zip4j.model.ZipParameters;
diff --git a/src/main/java/com/moon/server/service/data/MetaService.java b/src/main/java/com/moon/server/service/data/MetaService.java
index 6c3d997..ec46830 100644
--- a/src/main/java/com/moon/server/service/data/MetaService.java
+++ b/src/main/java/com/moon/server/service/data/MetaService.java
@@ -66,6 +66,11 @@
     }
 
     @Override
+    public List<MetaEntity> selectGdbByGuid(String guid) {
+        return metaMapper.selectGdbByGuid(guid);
+    }
+
+    @Override
     public Integer selectMetasForCount(String depcode, String dirs, String name) {
         depcode = StringHelper.getRightLike(depcode);
         name = StringHelper.getLikeUpperStr(name);
@@ -238,6 +243,9 @@
             }
             if (str.contains("bs.s_explorationpoint ")) {
                 list.add(str.replace("bs.s_explorationpoint ", "bs.s_surveyworksite "));
+            }
+            if (str.contains("bs.m_surface_deformation_data ")) {
+                list.add(str.replace("bs.m_surface_deformation_data ", "bs.m_surface_deformation_data_date "));
             }
 
             i++;
@@ -524,6 +532,8 @@
                         addMultiFile(uploadPath, mf, zip, params, StaticData.SHP_EXT);
                         break;
                     case StaticData.GDB:
+                        continue;
+                    case StaticData.OSGB:
                         addFolderFile(uploadPath, mf, zip, params);
                         break;
                     default:
diff --git a/src/main/java/com/moon/server/service/data/PublishService.java b/src/main/java/com/moon/server/service/data/PublishService.java
index f3fae53..cb0e886 100644
--- a/src/main/java/com/moon/server/service/data/PublishService.java
+++ b/src/main/java/com/moon/server/service/data/PublishService.java
@@ -7,16 +7,21 @@
 import com.moon.server.entity.ctrl.RegisterEntity;
 import com.moon.server.entity.data.MetaEntity;
 import com.moon.server.entity.data.PublishEntity;
+import com.moon.server.entity.sys.UserEntity;
+import com.moon.server.helper.PathHelper;
 import com.moon.server.helper.RestHelper;
 import com.moon.server.helper.StringHelper;
+import com.moon.server.helper.WebHelper;
 import com.moon.server.mapper.data.PublishMapper;
+import com.moon.server.service.sys.TokenService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.io.File;
 import java.lang.reflect.Field;
 import java.util.HashMap;
 import java.util.List;
@@ -34,26 +39,34 @@
     @Value("${sys.iisHost}")
     private String iisHost;
 
-    @Autowired
+    @Resource
     PublishMapper publishMapper;
 
-    @Autowired
+    @Resource
     FmeService fmeService;
+
+    @Resource
+    PathHelper pathHelper;
+
+    @Resource
+    TokenService tokenService;
 
     private final static Log log = LogFactory.getLog(PublishService.class);
 
     @Override
-    public Integer selectCount(String name) {
+    public Integer selectCount(String name, String dircode, String type) {
         name = StringHelper.getLikeUpperStr(name);
+        dircode = StringHelper.getRightLike(dircode);
 
-        return publishMapper.selectCount(name);
+        return publishMapper.selectCount(name, dircode, type);
     }
 
     @Override
-    public List<PublishEntity> selectByPage(String name, Integer limit, Integer offset) {
+    public List<PublishEntity> selectByPage(String name, String dircode, String type, Integer limit, Integer offset) {
         name = StringHelper.getLikeUpperStr(name);
+        dircode = StringHelper.getRightLike(dircode);
 
-        return publishMapper.selectByPage(name, limit, offset);
+        return publishMapper.selectByPage(name, dircode, type, limit, offset);
     }
 
     @Override
@@ -69,6 +82,11 @@
     @Override
     public List<PublishEntity> selectByIds(String ids) {
         return publishMapper.selectByIds(ids);
+    }
+
+    @Override
+    public List<String> selectCodesForDir(String dircode, Integer isDom) {
+        return publishMapper.selectCodesForDir(dircode, isDom);
     }
 
     @Override
@@ -122,6 +140,27 @@
         name = StringHelper.getLikeUpperStr(name);
 
         return publishMapper.selectMetasByPage(depcode, dircode, verid, types, name, limit, offset);
+    }
+
+    public List<Integer> selectLasCs(PubEntity entity, String method, HttpServletRequest req) {
+        Map<String, Object> map = getMapData(entity);
+
+        String str = RestHelper.postForRest(exportServer + method, map);
+        if (StringHelper.isEmpty(str)) {
+            return null;
+        }
+
+        ResponseMsg<String> msg = JSON.parseObject(str, ResponseMsg.class);
+        if (msg == null || msg.getCode() != StaticData.TWO_HUNDRED) {
+            return null;
+        }
+
+        String rs = msg.getResult();
+        if (StringHelper.isEmpty(rs)) {
+            return null;
+        }
+
+        return StringHelper.strToIntegers(rs);
     }
 
     /**
@@ -182,6 +221,11 @@
         }
 
         for (PublishEntity entity : list) {
+            // 閬垮厤閲嶅娉ㄥ唽
+            if (null != entity.getUpdateTime()) {
+                continue;
+            }
+
             String url = entity.getUrl().replace("{host}", iisHost);
             String type = getServerType(entity);
 
@@ -208,6 +252,10 @@
                 return "涓夌淮鍦板舰鏈嶅姟";
             case "mpt":
                 return "涓夌淮鍦烘櫙鏈嶅姟";
+            case "las":
+            case "laz":
+            case "cpt":
+                return "涓夌淮鐐逛簯鏈嶅姟";
             default:
                 return "涓夌淮妯″瀷鏈嶅姟";
         }
@@ -245,4 +293,61 @@
             }
         }
     }
+
+    /**
+     * 鍒犻櫎鍙戝竷鏂囦欢
+     */
+    public void deleteFiles(List<PublishEntity> list) {
+        String lfData = pathHelper.getConfig().getLfData();
+        for (PublishEntity pub : list) {
+            if (null != pub.getUrl() && pub.getUrl().contains("/SG/")) {
+                continue;
+            }
+
+            String path = lfData + pub.getPath().replace("\\tileset.json", "");
+            File file = new File(path);
+            if (!file.exists() || !file.isDirectory()) {
+                continue;
+            }
+
+            String cmd = String.format("cmd /c rd \"%s\" /s /q", path);
+            WebHelper.exec(cmd);
+        }
+    }
+
+    /**
+     * 鍒犻櫎鍙戝竷鏂囦欢
+     */
+    public void deleteFiles(List<Integer> ids, HttpServletRequest req) {
+        PubEntity entity = new PubEntity();
+        entity.setIds(ids);
+        entity.setDircode("00");
+
+        UserEntity ue = tokenService.getCurrentUser(req);
+        if (ue != null) {
+            entity.setUserId(ue.getId());
+            entity.setToken(WebHelper.getToken(req));
+        }
+
+        long rows = postForPub(entity, "/Convert/DeleteFiles");
+    }
+
+    /**
+     * 鍙戦�佸彂甯冭姹�
+     */
+    public long postForPub(PubEntity entity, String method) {
+        Map<String, Object> map = getMapData(entity);
+
+        String str = RestHelper.postForRest(exportServer + method, map);
+        if (StringHelper.isEmpty(str)) {
+            return 0;
+        }
+
+        ResponseMsg<String> msg = JSON.parseObject(str, ResponseMsg.class);
+        if (msg == null || msg.getCode() != StaticData.TWO_HUNDRED) {
+            return 0;
+        }
+
+        return msg.getCount();
+    }
 }
diff --git a/src/main/java/com/moon/server/service/data/UploadService.java b/src/main/java/com/moon/server/service/data/UploadService.java
index bb5e2b4..2ecae47 100644
--- a/src/main/java/com/moon/server/service/data/UploadService.java
+++ b/src/main/java/com/moon/server/service/data/UploadService.java
@@ -1,15 +1,16 @@
 package com.moon.server.service.data;
 
+import com.google.common.collect.Lists;
 import com.moon.server.entity.all.BaseEntity;
 import com.moon.server.entity.all.StaticData;
+import com.moon.server.entity.data.*;
 import com.moon.server.entity.sys.UserEntity;
+import com.moon.server.helper.*;
 import com.moon.server.mapper.all.BasicMapper;
 import com.moon.server.mapper.data.UploadMapper;
 import com.moon.server.service.all.BaseQueryService;
 import com.moon.server.service.all.BaseUploadService;
 import com.moon.server.service.sys.DepService;
-import com.moon.server.entity.data.*;
-import com.moon.server.helper.*;
 import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -93,6 +94,9 @@
             File f = new File(mf.getPath());
             if (!f.exists()) {
                 mf.setMsg("鏂囦欢涓㈠け");
+            }
+            if (f.exists() && StringHelper.isNull(mf.getGuid())) {
+                mf.setGuid(FileHelper.getFileMd5(f.getPath()));
             }
 
             MetaEntity old = metaService.selectByGuid(mf.getGuid(), getDirCode(mf), null);
@@ -227,21 +231,40 @@
 
         List<?> list;
         if (StaticData.SHP.equals(mf.getExtName())) {
-            list = ShpHelper.readData(clazz, mf.getPath());
+            list = ShpHelper.readData(clazz, mf.getPath(), true);
         } else {
-            list = GdbHelper.readData(clazz, mf.getPath(), mf.getTab());
+            list = GdbHelper.readData(clazz, mf.getPath(), mf.getTab(), true);
         }
         if (null == list || list.isEmpty()) {
             return;
         }
+        mf.setRecords(list.size());
         setCreateInfo(list, mf);
 
-        int rows = basicMapper.insertBatch(list);
+        int rows = batchInserts(basicMapper, list);
         if (rows > 0) {
             mf.setEntity(mf.getTab());
             mf.setTab(tabName);
             mf.setRows(rows);
         }
+    }
+
+    /**
+     * 鎵归噺鎻掑叆
+     */
+    private <T> int batchInserts(BasicMapper basicMapper, List<T> list) {
+        int rows = 0;
+        //int count = (int) Math.ceil(list.size() / StaticData.D100)
+        List<List<T>> subLists = Lists.partition(list, StaticData.I50);
+        for (List<T> sub : subLists) {
+            try {
+                rows += basicMapper.insertBatch(sub);
+            } catch (Exception ex) {
+                log.error(ex);
+            }
+        }
+
+        return rows;
     }
 
     /**
@@ -296,6 +319,9 @@
                     break;
                 case StaticData.SHP:
                     copyMultiFile(mf, StaticData.SHP_EXT);
+                    break;
+                case StaticData.OSGB:
+                    copyFolderFile(mf);
                     break;
                 case StaticData.GDB:
                     if (gdbList.contains(mf.getPath())) {
@@ -425,15 +451,11 @@
             return;
         }
 
-        newFile.mkdirs();
-        File[] files = file.listFiles();
-        if (null == files || files.length == 0) {
-            return;
-        }
-
-        for (File f : files) {
-            String subFile = targetPath + File.separator + FileHelper.getFileName(f.getPath());
-            f.renameTo(new File(subFile));
+        try {
+            // newFile.mkdirs()
+            FileUtils.moveDirectory(file, newFile);
+        } catch (Exception ex) {
+            log.error(ex);
         }
         mf.setPath(subPath);
     }
@@ -464,15 +486,25 @@
      */
     private void insertMetas(List<MetaFileEntity> list) {
         int metaId = insertParentMeta(list);
+
+        List<String> guids = new ArrayList<>();
         for (MetaFileEntity mf : list) {
             if (null != mf.getMsg()) {
                 continue;
             }
 
             MetaEntity me = createMeta(mf, metaId);
-            metaService.insert(me);
+            if (StaticData.NGDB.equals(me.getType())) {
+                if (guids.contains(me.getGuid())) {
+                    me.setIsmeta((short)-1);
+                } else {
+                    guids.add(me.getGuid());
+                }
+            }
 
-            mf.setMsg(me.getId() > 0 ? "鎴愬姛" : "澶辫触");
+            metaService.insert(me);
+            String err = mf.getRows() < mf.getRecords() ? "(" + (mf.getRecords() - mf.getRows()) + " 鏉″け璐�)" : "";
+            mf.setMsg(me.getId() > 0 ? String.format("鎴愬姛%s", err) : "澶辫触");
         }
     }
 
diff --git a/src/main/java/com/moon/server/service/show/DataLibService.java b/src/main/java/com/moon/server/service/show/DataLibService.java
index c763e10..cac2014 100644
--- a/src/main/java/com/moon/server/service/show/DataLibService.java
+++ b/src/main/java/com/moon/server/service/show/DataLibService.java
@@ -285,7 +285,7 @@
         }
 
         List<String> list = codesAsList(codes);
-        removeDuplicate(list);
+        list = copeDirCodes(list);
         setRightLike(list, field);
 
         return "(" + StringHelper.join(list, " or ") + ")";
@@ -305,39 +305,75 @@
     }
 
     /**
-     * 鍘婚櫎閲嶅
+     * 澶勭悊鐩綍缂栫爜
      */
-    private static void removeDuplicate(List<String> list) {
-        int i = 0;
-        while (i < list.size()) {
-            int j = findStr(list, i);
-            if (j > -1) {
-                list.remove(j);
-                continue;
-            }
-
-            i++;
+    private static List<String> copeDirCodes(List<String> list) {
+        List<String> prjList = getDirCodesByLen(list, 0, 2);
+        List<String> appList = getDirCodesByLen(list, 3, 30);
+        if (prjList.isEmpty() && appList.isEmpty()) {
+            return list;
         }
+        if (prjList.isEmpty()) {
+            return appList;
+        }
+        if (appList.isEmpty()) {
+            return prjList;
+        }
+
+        return filterCodes(prjList, appList);
     }
 
     /**
-     * 鏌ユ壘瀛楃涓�
+     * 鏍规嵁闀垮害鑾峰彇鍗曚綅缂栫爜
      */
-    private static int findStr(List<String> list, int i) {
-        String source = list.get(i);
-        for (int j = i + 1, c = list.size(); j < c; j++) {
-            if (list.get(j).startsWith(source)) {
-                return j;
+    private static List<String> getDirCodesByLen(List<String> list, int start, int end) {
+        List<String> rs = new ArrayList<>();
+        for (String code : list) {
+            if (StringHelper.isEmpty(code)) {
+                continue;
+            }
+
+            if (code.length() >= start && code.length() <= end) {
+                rs.add(code);
             }
         }
 
-        return -1;
+        return rs;
+    }
+
+    /**
+     * 杩囨护椤圭洰缂栫爜
+     */
+    private static List<String> filterCodes(List<String> prjList, List<String> appList) {
+        int i = 0;
+        while (i < appList.size()) {
+            boolean flag = false;
+            for (String prj : prjList) {
+                if (appList.get(i).startsWith(prj)) {
+                    flag = true;
+                    break;
+                }
+            }
+
+            if (!flag) {
+                appList.remove(i);
+                continue;
+            }
+            i++;
+        }
+
+        return appList;
     }
 
     /**
      * 璁剧疆 鍙砽ike
      */
     private static void setRightLike(List<String> list, String field) {
+        if (list.isEmpty()) {
+            list.add("1 = 2");
+            return;
+        }
+
         for (int i = 0, c = list.size(); i < c; i++) {
             String str = String.format("%s like '%s%%'", field, list.get(i));
             list.set(i, str);
diff --git a/src/main/java/com/moon/server/service/show/InquiryService.java b/src/main/java/com/moon/server/service/show/InquiryService.java
index d9c8e1b..9feec70 100644
--- a/src/main/java/com/moon/server/service/show/InquiryService.java
+++ b/src/main/java/com/moon/server/service/show/InquiryService.java
@@ -95,7 +95,7 @@
      * 鐡︾墖璺緞鏄惁瀛樺湪
      */
     private boolean isTilePathExist(PublishEntity pub) {
-        String tilePath = pathHelper.getConfig().getTilePath().replace("2d\\tiles", "") + pub.getPath();
+        String tilePath = pathHelper.getConfig().getTilePath() + pub.getPath();
 
         File f = new File(tilePath);
         if (!f.exists() || !f.isDirectory()) {
@@ -112,6 +112,12 @@
      */
     private List<File> findTiles(DownloadTileEntity dt, PublishEntity pub) {
         List<File> list = new ArrayList<>();
+
+        File view = new File(pub.getPath() + File.separator + "view.htm");
+        if (view.exists() && !view.isDirectory()) {
+            list.add(view);
+        }
+
         for (int i = 0; i < StaticData.I23; i++) {
             List<File> files = findTilesByZoom(dt, pub, i);
             if (files.size() > 0) {
diff --git a/src/main/java/com/moon/server/service/sys/ProxyService.java b/src/main/java/com/moon/server/service/sys/ProxyService.java
index 36cc0de..454dcbe 100644
--- a/src/main/java/com/moon/server/service/sys/ProxyService.java
+++ b/src/main/java/com/moon/server/service/sys/ProxyService.java
@@ -56,7 +56,7 @@
 
         // 9.鑾峰彇璧勬簮瀹炰綋
         ResEntity entity = getResEntity(ue, resId);
-        if (null == entity || StaticData.TWO != entity.getType() || StringHelper.isNull(entity.getProxy()) || StringHelper.isNull(entity.getUrl())) {
+        if (null == entity || StaticData.TWO != entity.getStatus() || StringHelper.isNull(entity.getProxy()) || StringHelper.isNull(entity.getUrl())) {
             WebHelper.writeStr2Page(res, ILLEGAL_RESOURCE);
             return;
         }
diff --git a/src/main/java/com/moon/server/service/sys/ReportService.java b/src/main/java/com/moon/server/service/sys/ReportService.java
index 8cafc99..0ac0c20 100644
--- a/src/main/java/com/moon/server/service/sys/ReportService.java
+++ b/src/main/java/com/moon/server/service/sys/ReportService.java
@@ -94,6 +94,11 @@
     }
 
     @Override
+    public List<CountEntity> countSizesByType() {
+        return reportMapper.countSizesByType();
+    }
+
+    @Override
     public List<CountEntity> countServices() {
         return reportMapper.countServices();
     }
@@ -103,6 +108,11 @@
         return reportMapper.countOperates();
     }
 
+    @Override
+    public List<CountEntity> countSizesByPrj() {
+        return reportMapper.countSizesByPrj();
+    }
+
     /**
      * 鍒涘缓鎶ュ憡
      */
diff --git a/src/main/resources/mapper/all/BaseQueryMapper.xml b/src/main/resources/mapper/all/BaseQueryMapper.xml
index cd273f0..141ddac 100644
--- a/src/main/resources/mapper/all/BaseQueryMapper.xml
+++ b/src/main/resources/mapper/all/BaseQueryMapper.xml
@@ -28,6 +28,9 @@
             <if test="tab != null">
                 and upper(tab) like #{tab} or upper(tab_desc) like #{tab}
             </if>
+            <if test="typesFilter != null">
+                and (${typesFilter})
+            </if>
         </where>
     </select>
 
@@ -39,6 +42,9 @@
             <if test="tab != null">
                 and (upper(tab) like #{tab} or upper(tab_desc) like #{tab})
             </if>
+            <if test="typesFilter != null">
+                and (${typesFilter})
+            </if>
         </where>
         order by id
         limit #{limit} offset #{offset};
diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml
index bbec10c..1abc389 100644
--- a/src/main/resources/mapper/data/MetaMapper.xml
+++ b/src/main/resources/mapper/data/MetaMapper.xml
@@ -4,7 +4,7 @@
     <select id="selectCount" resultType="java.lang.Integer">
         select count(*) from lf.sys_meta
         <where>
-            1 = 1
+            ismeta between 0 and 1
             <if test="depcode != null">
                 and depcode like #{depcode}
             </if>
@@ -24,7 +24,7 @@
         select a.*,fn_uname(a.create_user) uname,fn_get_fullname(a.depcode, 1) depName,fn_ver(a.verid) verName,fn_get_fullname(a.dircode, 2) dirName
         from lf.sys_meta a
         <where>
-            1 = 1
+            ismeta between 0 and 1
             <if test="depcode != null">
 				and depcode like #{depcode}
 			</if>
@@ -42,6 +42,12 @@
         limit #{limit} offset #{offset}
     </select>
 
+    <select id="selectGdbByGuid" resultType="com.moon.server.entity.data.MetaEntity">
+        select a.*,fn_uname(a.create_user) uname,fn_get_fullname(a.depcode, 1) depName,fn_ver(a.verid) verName,fn_get_fullname(a.dircode, 2) dirName
+        from lf.sys_meta a
+        where type = 'gdb' and guid = #{guid};
+    </select>
+
     <select id="selectMetasForCount" resultType="java.lang.Integer">
         select count(*) from lf.sys_meta
         <where>
diff --git a/src/main/resources/mapper/show/PublishMapper.xml b/src/main/resources/mapper/data/PublishMapper.xml
similarity index 82%
rename from src/main/resources/mapper/show/PublishMapper.xml
rename to src/main/resources/mapper/data/PublishMapper.xml
index e0a72ac..10ce798 100644
--- a/src/main/resources/mapper/show/PublishMapper.xml
+++ b/src/main/resources/mapper/data/PublishMapper.xml
@@ -48,8 +48,15 @@
     <select id="selectCount" resultType="java.lang.Integer">
         select count(*) from lf.sys_publish
         <where>
+            1 = 1
             <if test="name != null">
-                upper(name) like #{name}
+                and upper(name) like #{name}
+            </if>
+            <if test="dircode != null">
+                and dirid like #{dircode}
+            </if>
+            <if test="type != null">
+                and ${type}
             </if>
         </where>
     </select>
@@ -58,11 +65,18 @@
         select ST_AsText(geom) "geom", a.*, fn_get_fullname(a.depid, 1) depName, fn_get_fullname(a.dirid, 2) dirName, fn_uname(create_user) createName, fn_uname(update_user) updateName
         from lf.sys_publish a
         <where>
+            1 = 1
             <if test="name != null">
-                upper(name) like #{name}
+                and upper(name) like #{name}
+            </if>
+            <if test="dircode != null">
+                and dirid like #{dircode}
+            </if>
+            <if test="type != null">
+                and ${type}
             </if>
         </where>
-        order by id desc
+        order by a.update_time desc, a.create_time desc
         limit #{limit} offset #{offset}
     </select>
 
@@ -80,6 +94,25 @@
         select * from lf.sys_publish where id in (${ids}) order by id desc;
     </select>
 
+    <select id="selectCodesForDir" resultType="java.lang.String">
+        select code
+        from lf.sys_dir
+        <where>
+            <choose>
+                <when test="isDom > 0">
+                    name in ('DOM', '鏁板瓧姝e皠褰卞儚鍥�')
+                </when>
+                <otherwise>
+                    name in ('DEM', '鏁板瓧楂樼▼妯″瀷')
+                </otherwise>
+            </choose>
+            <if test="dircode != null">
+                and code like #{dircode}
+            </if>
+        </where>
+        order by code;
+    </select>
+
     <insert id="insert" parameterType="com.moon.server.entity.data.PublishEntity">
         insert into lf.sys_publish
         (regid,name,url,path,type,status,dirid,depid,min,max,json,create_user,create_time,bak)
diff --git a/src/main/resources/mapper/show/OneMapMapper.xml b/src/main/resources/mapper/show/OneMapMapper.xml
index 8c6c43a..cd78d5f 100644
--- a/src/main/resources/mapper/show/OneMapMapper.xml
+++ b/src/main/resources/mapper/show/OneMapMapper.xml
@@ -128,7 +128,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>
 
diff --git a/src/main/resources/mapper/sys/ReportMapper.xml b/src/main/resources/mapper/sys/ReportMapper.xml
index dc7d636..1e2e06a 100644
--- a/src/main/resources/mapper/sys/ReportMapper.xml
+++ b/src/main/resources/mapper/sys/ReportMapper.xml
@@ -86,6 +86,14 @@
         order by depcode;
     </select>
 
+    <!-- 鎸夋枃浠剁被鍨嬬粺璁� -->
+    <select id="countSizesByType" resultType="com.moon.server.entity.ctrl.CountEntity">
+        select type "m1", cast(sum(sizes) as decimal(18, 3)) "sizes", count(*) "count"
+        from lf.sys_meta
+        group by type
+        order by type;
+    </select>
+
     <!-- 鏈嶅姟璋冪敤閲忕粺璁� -->
     <select id="countServices" resultType="com.moon.server.entity.ctrl.CountEntity">
         select name "m1", count(*) "count"
@@ -101,4 +109,13 @@
         group by modular1,modular2
         order by modular1 desc,modular2;
     </select>
+
+    <!-- 鎸夐」鐩粺璁℃暟鎹� -->
+    <select id="countSizesByPrj" resultType="com.moon.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"
+        from lf.sys_dir a
+        where pid = 0
+        order by a.code;
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3