From 7a525a0d577642cc6b89dcfd93e58ffc44a09c6b Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 10 九月 2023 11:31:57 +0800
Subject: [PATCH] 添加自动创建图层功能

---
 src/main/java/com/moon/server/service/data/DirService.java           |    6 --
 src/main/resources/mapper/data/DirMapper.xml                         |    4 -
 src/main/java/com/moon/server/mapper/sys/LayerMapper.java            |   24 ++++++++
 src/main/java/com/moon/server/service/sys/LayerService.java          |   18 +++++
 src/main/java/com/moon/server/mapper/data/DirMapper.java             |    8 --
 src/main/resources/mapper/sys/LayerMapper.xml                        |   12 ++++
 src/main/resources/mapper/sys/ResMapper.xml                          |    4 +
 src/main/java/com/moon/server/service/data/ShuJianService.java       |   56 +++++++++++++++++-
 src/main/java/com/moon/server/controller/data/PublishController.java |    3 +
 9 files changed, 112 insertions(+), 23 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 58a524f..7cec1ee 100644
--- a/src/main/java/com/moon/server/controller/data/PublishController.java
+++ b/src/main/java/com/moon/server/controller/data/PublishController.java
@@ -290,6 +290,9 @@
             if (ue != null) {
                 entity.setUpdateUser(ue.getId());
             }
+            if (StringHelper.isEmpty(entity.getGeom())) {
+                entity.setGeom("null");
+            }
 
             permsService.clearPermsCache();
             int count = publishService.update(entity);
diff --git a/src/main/java/com/moon/server/mapper/data/DirMapper.java b/src/main/java/com/moon/server/mapper/data/DirMapper.java
index 5be37ca..b69d475 100644
--- a/src/main/java/com/moon/server/mapper/data/DirMapper.java
+++ b/src/main/java/com/moon/server/mapper/data/DirMapper.java
@@ -115,12 +115,4 @@
      * @return
      */
     public List<DirEntity> selectDirsForPrj();
-
-    /**
-     * 鏍规嵁鍚嶇О鏌ヨID
-     *
-     * @param name 鍚嶇О
-     * @return ID
-     */
-    public Integer selectIdByName(String name);
 }
diff --git a/src/main/java/com/moon/server/mapper/sys/LayerMapper.java b/src/main/java/com/moon/server/mapper/sys/LayerMapper.java
index 6305198..54b0544 100644
--- a/src/main/java/com/moon/server/mapper/sys/LayerMapper.java
+++ b/src/main/java/com/moon/server/mapper/sys/LayerMapper.java
@@ -64,6 +64,30 @@
     public LayerEntity selectById(int id);
 
     /**
+     * 鏍规嵁鍚嶇О鏌ヨID
+     *
+     * @param name 鍚嶇О
+     * @return ID
+     */
+    public Integer selectIdByName(String name);
+
+    /**
+     * 鏍规嵁pid鏌ヨ鏈�澶ф帓搴忔暟
+     *
+     * @param pid 鐖剁被ID
+     * @return 鏈�澶ф帓搴忔暟
+     */
+    public Integer selectMaxOrderNumByPid(Integer pid);
+
+    /**
+     * 鏍规嵁璧勬簮ID鏌ヨ鍥惧眰
+     *
+     * @param resid 璧勬簮ID
+     * @return 鍥惧眰
+     */
+    public LayerEntity selectByResId(Integer resid);
+
+    /**
      * 鎻掑叆涓�鏉�
      *
      * @param entity
diff --git a/src/main/java/com/moon/server/service/data/DirService.java b/src/main/java/com/moon/server/service/data/DirService.java
index e3ca975..61ed8db 100644
--- a/src/main/java/com/moon/server/service/data/DirService.java
+++ b/src/main/java/com/moon/server/service/data/DirService.java
@@ -94,12 +94,6 @@
         return dirMapper.selectDirsForPrj();
     }
 
-    @Override
-    public Integer selectIdByName(String name) {
-        Integer id = dirMapper.selectIdByName(name);
-        return null == id ? 0 : id;
-    }
-
     /**
      * 鍒涘缓鏁版嵁鐩綍
      */
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 000489c..e56fec5 100644
--- a/src/main/java/com/moon/server/service/data/ShuJianService.java
+++ b/src/main/java/com/moon/server/service/data/ShuJianService.java
@@ -7,10 +7,12 @@
 import com.moon.server.entity.data.MetaPubEntity;
 import com.moon.server.entity.data.PublishEntity;
 import com.moon.server.entity.shujian.*;
+import com.moon.server.entity.sys.LayerEntity;
 import com.moon.server.entity.sys.ResEntity;
 import com.moon.server.helper.HttpHelper;
 import com.moon.server.helper.RestHelper;
 import com.moon.server.helper.StringHelper;
+import com.moon.server.service.sys.LayerService;
 import com.moon.server.service.sys.ResService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -51,6 +53,9 @@
 
     @Resource
     PublishService publishService;
+
+    @Resource
+    LayerService layerService;
 
     private final static Log log = LogFactory.getLog(ShuJianService.class);
 
@@ -117,7 +122,10 @@
         ResEntity resEntity = createResEntity(publishEntity);
         resService.insert(resEntity);
 
-        return insertMetaPub(pub, publishEntity.getId());
+        insertMetaPub(pub, publishEntity.getId());
+        layerService.insert(createLayerEntity(resEntity, StaticData.I3));
+
+        return rows;
     }
 
     /**
@@ -308,6 +316,39 @@
     }
 
     /**
+     * 鍒涘缓鍥惧眰
+     */
+    private LayerEntity createLayerEntity(ResEntity resEntity, Integer category) {
+        Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? "DOM" : "DEM");
+        Integer orderNum = layerService.selectMaxOrderNumByPid(pid);
+        LayerEntity layer = layerService.selectById(pid);
+
+        LayerEntity entity = new LayerEntity();
+        entity.setPid(pid);
+        entity.setCnName(resEntity.getCnName());
+        entity.setEnName(resEntity.getEnName());
+        entity.setUrl(resEntity.getProxy());
+        // 鏄惁涓哄浘灞傦細0-鍥惧眰缁�,1-鍥惧眰
+        entity.setIsLayer(1);
+        entity.setLevel(null == layer ? 1 : layer.getLevel() + 1);
+        entity.setOrderNum(orderNum);
+        // 鐘舵�侊細0-鍋滄锛�1-鍚敤
+        entity.setStatus(1);
+        entity.setCreateUser(resEntity.getCreateUser());
+        entity.setResid(resEntity.getId());
+        // 绫诲埆锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WMS锛�4-WFS锛�5-Tileset
+        entity.setType(StaticData.I1 == resEntity.getData() ? 2 : 0);
+        // 鏁版嵁绫诲瀷锛�0-URL锛�1-DOM锛�2-DEM
+        entity.setData(resEntity.getData());
+        // 鏈嶅姟绫诲埆锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝
+        entity.setCategory(category);
+        // 鏄�/鍚﹂粯璁ゆ樉绀�
+        entity.setIsShow(0);
+
+        return entity;
+    }
+
+    /**
      * 鑾峰彇棰滆壊琛ㄧ被鍨�
      */
     private String getColorTableType(PubEntity pub) {
@@ -398,13 +439,22 @@
         ResEntity resEntity = resService.selectByPubid(entity.getId());
         if (null == resEntity) {
             resEntity = createResEntity(entity);
-            return resService.insert(resEntity);
+            resService.insert(resEntity);
         } else {
             resEntity.setUpdateUser(pub.getUserId());
             resEntity.setCnName(entity.getName());
             resEntity.setUrl(entity.getUrl());
-            return resService.update(resEntity);
+            resService.update(resEntity);
         }
+
+        LayerEntity lyrEntity = layerService.selectByResId(resEntity.getId());
+        if (null != lyrEntity) {
+            lyrEntity.setCnName(resEntity.getCnName());
+            lyrEntity.setUpdateUser(pub.getUserId());
+            layerService.update(lyrEntity);
+        }
+
+        return entity.getId();
     }
 
     /**
diff --git a/src/main/java/com/moon/server/service/sys/LayerService.java b/src/main/java/com/moon/server/service/sys/LayerService.java
index 640c95f..a879f52 100644
--- a/src/main/java/com/moon/server/service/sys/LayerService.java
+++ b/src/main/java/com/moon/server/service/sys/LayerService.java
@@ -3,11 +3,9 @@
 import com.moon.server.entity.all.RedisCacheKey;
 import com.moon.server.entity.all.SettingData;
 import com.moon.server.entity.sys.LayerEntity;
-import com.moon.server.entity.sys.ResEntity;
 import com.moon.server.helper.StringHelper;
 import com.moon.server.mapper.sys.LayerMapper;
 import com.moon.server.service.all.RedisService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -83,6 +81,22 @@
     }
 
     @Override
+    public Integer selectIdByName(String name) {
+        Integer id = layerMapper.selectIdByName(name);
+        return null == id ? 0 : id;
+    }
+
+    @Override
+    public Integer selectMaxOrderNumByPid(Integer pid) {
+        return layerMapper.selectMaxOrderNumByPid(pid);
+    }
+
+    @Override
+    public LayerEntity selectByResId(Integer resid) {
+        return layerMapper.selectByResId(resid);
+    }
+
+    @Override
     public Integer insert(LayerEntity entity) {
         return layerMapper.insert(entity);
     }
diff --git a/src/main/resources/mapper/data/DirMapper.xml b/src/main/resources/mapper/data/DirMapper.xml
index 67ce590..89253c9 100644
--- a/src/main/resources/mapper/data/DirMapper.xml
+++ b/src/main/resources/mapper/data/DirMapper.xml
@@ -53,10 +53,6 @@
         select a.* from lf.sys_dir a where code not like '00%' order by code;
     </select>
 
-    <select id="selectIdByName" resultType="java.lang.Integer">
-        select id from lf.sys_dir where name = #{name};
-    </select>
-
     <!-- 鎻掑叆涓�鏉� -->
     <insert id="insert" parameterType="com.moon.server.entity.data.DirEntity">
         <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
diff --git a/src/main/resources/mapper/sys/LayerMapper.xml b/src/main/resources/mapper/sys/LayerMapper.xml
index 6723498..3fa6425 100644
--- a/src/main/resources/mapper/sys/LayerMapper.xml
+++ b/src/main/resources/mapper/sys/LayerMapper.xml
@@ -68,6 +68,18 @@
         select * from lf.sys_layer where id = #{id}
     </select>
 
+    <select id="selectIdByName" resultType="java.lang.Integer">
+        select id from lf.sys_dir where name = #{name};
+    </select>
+
+    <select id="selectOrderNumByPid" resultType="java.lang.Integer">
+        select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = #{pid};
+    </select>
+
+    <select id="selectByResId" resultType="com.moon.server.entity.sys.LayerEntity">
+        select * from lf.sys_layer where resid = #{resid} limit 1;
+    </select>
+
     <insert id="insert" parameterType="com.moon.server.entity.sys.LayerEntity">
         insert into lf.sys_layer
         (pid,cn_name,en_name,url,is_layer,is_show,icon,level,order_num,status,create_user,create_time,bak,elev,resid,type,data,tab,category,flag)
diff --git a/src/main/resources/mapper/sys/ResMapper.xml b/src/main/resources/mapper/sys/ResMapper.xml
index 6e93a9a..25cd1a8 100644
--- a/src/main/resources/mapper/sys/ResMapper.xml
+++ b/src/main/resources/mapper/sys/ResMapper.xml
@@ -88,6 +88,10 @@
     </select>
 
     <insert id="insert" parameterType="com.moon.server.entity.sys.ResEntity">
+        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
+            select currval('lf.sys_res_id_seq'::regclass) as id
+        </selectKey>
+
         insert into lf.sys_res
         (cn_name,en_name,status,type,data,category,url,test,descr,depid,dirid,img,create_user,create_time,bak,tab,args,pubid)
         values

--
Gitblit v1.9.3