From 3f39280a9b2b814f883a9b578939f421dd056fef Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 03 九月 2023 15:06:24 +0800
Subject: [PATCH] 根据id查询元数据,设置nodata

---
 src/main/java/com/moon/server/entity/ctrl/PubEntity.java             |   26 ++++++++
 src/main/java/com/moon/server/mapper/data/MetaMapper.java            |    8 ++
 src/main/java/com/moon/server/entity/shujian/CreateLayerEntity.java  |   16 ++---
 src/main/java/com/moon/server/service/data/MetaService.java          |    5 +
 src/main/java/com/moon/server/service/data/ShuJianService.java       |   61 ++++++++++++++-----
 src/main/java/com/moon/server/controller/data/PublishController.java |    3 +
 src/main/resources/mapper/data/MetaMapper.xml                        |    7 ++
 7 files changed, 99 insertions(+), 27 deletions(-)

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 b88a93a..777b104 100644
--- a/src/main/java/com/moon/server/controller/data/PublishController.java
+++ b/src/main/java/com/moon/server/controller/data/PublishController.java
@@ -193,6 +193,9 @@
             if (StringHelper.isEmpty(entity.getType())) {
                 return fail("鍙戝竷绫诲埆涓虹┖", null);
             }
+            if (!ShuJianService.TYPES.contains(entity.getType())) {
+                return fail("鍙戝竷绫诲埆涓嶆敮鎸�", null);
+            }
 
             UserEntity ue = tokenService.getCurrentUser(req);
             if (null != ue) {
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 8478e99..82342ba 100644
--- a/src/main/java/com/moon/server/entity/ctrl/PubEntity.java
+++ b/src/main/java/com/moon/server/entity/ctrl/PubEntity.java
@@ -66,6 +66,16 @@
     private String depcode;
 
     /**
+     * NoData
+     */
+    private Integer nodata;
+
+    /**
+     * 鎷変几鏂瑰紡 0锛氫笉鎷変几锛� 1 绾挎�ф媺浼革紝 2 鐩存柟鍥惧潎琛★紝 3 鏍囧噯宸媺浼革紝 4 浼介┈鎷変几
+     */
+    private Integer enhanceType;
+
+    /**
      * 鍏冩暟鎹甀D闆嗗悎
      */
     private List<Integer> ids;
@@ -152,6 +162,22 @@
         this.depcode = depcode;
     }
 
+    public Integer getNodata() {
+        return nodata;
+    }
+
+    public void setNodata(Integer nodata) {
+        this.nodata = nodata;
+    }
+
+    public Integer getEnhanceType() {
+        return enhanceType;
+    }
+
+    public void setEnhanceType(Integer enhanceType) {
+        this.enhanceType = enhanceType;
+    }
+
     public List<Integer> getIds() {
         return ids;
     }
diff --git a/src/main/java/com/moon/server/entity/shujian/CreateLayerEntity.java b/src/main/java/com/moon/server/entity/shujian/CreateLayerEntity.java
index 057d912..ab73ef5 100644
--- a/src/main/java/com/moon/server/entity/shujian/CreateLayerEntity.java
+++ b/src/main/java/com/moon/server/entity/shujian/CreateLayerEntity.java
@@ -46,10 +46,6 @@
         create_service = 0;
         layer = new Layer();
         image_ovr = new ImageOvr();
-    }
-
-    public CreateLayerEntity(int pathCount, int imageCount) {
-        this();
         image_list = new ArrayList<>();
         image_path_list = new ArrayList<>();
     }
@@ -106,7 +102,7 @@
         /**
          * nodata璁剧疆锛屾暟缁勶紝鏁扮粍澶у皬鍜屾尝娈垫暟绛夊悓
          */
-        private String[] nodata;
+        private List<String> nodata;
 
         /**
          * 鎶曞奖鎴栬�呭潗鏍囷細EPSG:4326
@@ -185,11 +181,11 @@
             this.name = name;
         }
 
-        public String[] getNodata() {
+        public List<String> getNodata() {
             return nodata;
         }
 
-        public void setNodata(String[] nodata) {
+        public void setNodata(List<String> nodata) {
             this.nodata = nodata;
         }
 
@@ -317,7 +313,7 @@
         /**
          * 杩囨护鍣ㄧ粍鍒楄〃锛歔"a.tif|b.tif"]
          */
-        private String[] filter;
+        private List<String> filter;
 
         /**
          * 灞炴�ц繃婊�
@@ -362,11 +358,11 @@
             this.image_time = image_time;
         }
 
-        public String[] getFilter() {
+        public List<String> getFilter() {
             return filter;
         }
 
-        public void setFilter(String[] filter) {
+        public void setFilter(List<String> filter) {
             this.filter = filter;
         }
 
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 789b703..e2b2c19 100644
--- a/src/main/java/com/moon/server/mapper/data/MetaMapper.java
+++ b/src/main/java/com/moon/server/mapper/data/MetaMapper.java
@@ -129,6 +129,14 @@
     public MetaEntity selectById(int id);
 
     /**
+     * 鏍规嵁id瀛楃涓叉煡璇�
+     *
+     * @param ids id瀛楃涓�
+     * @return 鍏冩暟鎹泦鍚�
+     */
+    public List<MetaEntity> selectByIds(String ids);
+
+    /**
      * 鏍规嵁GUID鏌ヨ
      *
      * @param guid    鏂囦欢GUID
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 605be1e..26001a3 100644
--- a/src/main/java/com/moon/server/service/data/MetaService.java
+++ b/src/main/java/com/moon/server/service/data/MetaService.java
@@ -120,6 +120,11 @@
     }
 
     @Override
+    public List<MetaEntity> selectByIds(String ids) {
+        return metaMapper.selectByIds(ids);
+    }
+
+    @Override
     public MetaEntity selectByGuid(String guid, String dircode, String tab) {
         return metaMapper.selectByGuid(guid, dircode, tab);
     }
diff --git a/src/main/java/com/moon/server/service/data/ShuJianService.java b/src/main/java/com/moon/server/service/data/ShuJianService.java
index 3e61d66..78ba2e9 100644
--- a/src/main/java/com/moon/server/service/data/ShuJianService.java
+++ b/src/main/java/com/moon/server/service/data/ShuJianService.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.moon.server.entity.all.StaticData;
 import com.moon.server.entity.ctrl.PubEntity;
+import com.moon.server.entity.data.MetaEntity;
 import com.moon.server.entity.data.MetaPubEntity;
 import com.moon.server.entity.data.PublishEntity;
 import com.moon.server.entity.shujian.*;
@@ -21,9 +22,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 鏁扮畝.鏈嶅姟
@@ -32,15 +31,20 @@
 @Service
 public class ShuJianService {
     @Value("${shujian.ak}")
-    private String ak;
+    String ak;
 
     @Value("${shujian.url}")
-    private String sjUrl;
+    String sjUrl;
+
+    @Resource
+    MetaService metaService;
 
     @Resource
     PublishService publishService;
 
     private final static Log log = LogFactory.getLog(ShuJianService.class);
+
+    public final static List<String> TYPES = new ArrayList<>(Arrays.asList("DOM", "DEM"));
 
     /**
      * 鍒嗛〉鏌ヨ鏁扮畝鐨勯鑹茶〃
@@ -84,21 +88,20 @@
     /**
      * 鍒涘缓鍥惧眰瀹炰綋绫�
      */
-    public CreateLayerEntity createLayerEntity(PubEntity pubEntity) {
-        CreateLayerEntity entity = new CreateLayerEntity(1, 3);
+    public CreateLayerEntity createLayerEntity(PubEntity pub) {
+        String epsg = getEpsg(pub);
+        String ids = StringHelper.join(pub.getIds(), ",");
+        List<MetaEntity> list = metaService.selectByIds(ids);
+
+        CreateLayerEntity entity = new CreateLayerEntity();
         entity.setCreate_service(0);
 
         CreateLayerEntity.Layer layer = entity.getLayer();
-        layer.setName("");
-        layer.setProjection("ESRI:" + StaticData.I104903);
-        layer.setType(0);
-        layer.setEnhance_type(0);
-
-        String[] noData = new String[3];
-        noData[0] = "0";
-        noData[1] = "0";
-        noData[2] = "0";
-        layer.setNodata(noData);
+        layer.setName(pub.getName());
+        layer.setProjection(epsg);
+        layer.setType(TYPES.indexOf(pub.getType()));
+        layer.setEnhance_type(pub.getEnhanceType());
+        layer.setNodata(getNoData(pub, list));
 
         CreateLayerEntity.ImagePathList imagePathList = entity.getImage_path_list().get(0);
         imagePathList.setPath("");
@@ -110,6 +113,30 @@
         return entity;
     }
 
+    private List<String> getNoData(PubEntity pub, List<MetaEntity> metas) {
+        int bands = 1;
+        for (MetaEntity meta : metas) {
+            if (StringHelper.isEmpty(meta.getBands())) {
+                continue;
+            }
+            try {
+                int b = Integer.parseInt(meta.getBands());
+                if (b > bands) {
+                    bands = b;
+                }
+            } catch (Exception e) {
+                //
+            }
+        }
+
+        List<String> list = new ArrayList<>();
+        for (int i = 0; i < bands; i++) {
+            list.add(String.valueOf(pub.getNodata()));
+        }
+
+        return list;
+    }
+
     /**
      * 鍙戦�佸浘灞傚疄浣撶被
      */
diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml
index a9683a2..75df9a2 100644
--- a/src/main/resources/mapper/data/MetaMapper.xml
+++ b/src/main/resources/mapper/data/MetaMapper.xml
@@ -173,6 +173,13 @@
         from lf.sys_meta a where id = #{id}
     </select>
 
+    <select id="selectByIds" resultType="com.moon.server.entity.data.MetaEntity">
+        select *
+        from lf.sys_meta
+        where id in (${ids})
+        order by id desc;
+    </select>
+
     <select id="selectByGuid" resultType="com.moon.server.entity.data.MetaEntity">
         select st_astext(geom) "geom", a.*, fn_uname(a.create_user) createName, fn_uname(a.update_user) updateName, fn_get_fullname(a.depcode, 1) depName, fn_ver(a.verid) verName, fn_get_fullname(a.dircode, 2) dirName
         from lf.sys_meta a

--
Gitblit v1.9.3