From d7e3011a44a85f32aaab975f603f17a9bec198c5 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 20 十一月 2022 14:54:36 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/entity/md/MdZxcgEntity.java         |   59 -----------
 src/main/java/com/lf/server/entity/md/MdGdcgEntity.java         |   59 -----------
 src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java      |   12 ++
 data/db_tab.sql                                                 |    9 +
 src/main/java/com/lf/server/entity/all/BaseEntity.java          |   63 ++++++++++++
 src/main/java/com/lf/server/service/data/DataLoaderService.java |   39 +++++++
 src/main/java/com/lf/server/mapper/md/MdZxcgMapper.java         |    4 
 src/main/java/com/lf/server/entity/all/BaseGeoEntity.java       |   20 ++++
 8 files changed, 149 insertions(+), 116 deletions(-)

diff --git a/data/db_tab.sql b/data/db_tab.sql
index 64a20b4..5393048 100644
--- a/data/db_tab.sql
+++ b/data/db_tab.sql
@@ -970,10 +970,17 @@
   create_user integer,
   create_time timestamp(6) without time zone default now(),
   update_user integer,
-  update_time timestamp(6) without time zone
+  update_time timestamp(6) without time zone,
+  geom geometry(Point, 4490)
 );
+create index if not exists md_zxcg_geom_idx on md.md_zxcg using gist (geom);
+drop index if exists md_zxcg_geom_idx cascade;
 comment on table md.md_zxcg is '涓嚎鎴愭灉琛�';
+vacuum analyze md.md_zxcg;
+insert into md.md_zxcg (zh, geom) values ('A01', ST_GeomFromText('POINT(95.80461853400004 34.13862467200005)'));
+insert into md.md_zxcg (zh, geom) values ('A02', ST_GeomFromText('POINT(119.873000 39.392000)'));
 
+select gid,zh,ST_ASText(geom) from md.md_zxcg;
 select * from md.md_zxcg;
 
 -- drop table if exists md.md_gdcg;
diff --git a/src/main/java/com/lf/server/entity/all/BaseEntity.java b/src/main/java/com/lf/server/entity/all/BaseEntity.java
new file mode 100644
index 0000000..a060f51
--- /dev/null
+++ b/src/main/java/com/lf/server/entity/all/BaseEntity.java
@@ -0,0 +1,63 @@
+package com.lf.server.entity.all;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.sql.Timestamp;
+
+/**
+ * 鍩虹瀹炰綋绫�
+ * @author WWW
+ */
+public class BaseEntity {
+    @TableId(type = IdType.AUTO)
+    private Integer gid;
+
+    private Integer createUser;
+
+    private Timestamp createTime;
+
+    private Integer updateUser;
+
+    private Timestamp updateTime;
+
+    public Integer getGid() {
+        return gid;
+    }
+
+    public void setGid(Integer gid) {
+        this.gid = gid;
+    }
+
+    public Integer getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(Integer createUser) {
+        this.createUser = createUser;
+    }
+
+    public Timestamp getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Timestamp createTime) {
+        this.createTime = createTime;
+    }
+
+    public Integer getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(Integer updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+}
diff --git a/src/main/java/com/lf/server/entity/all/BaseGeoEntity.java b/src/main/java/com/lf/server/entity/all/BaseGeoEntity.java
new file mode 100644
index 0000000..74dd489
--- /dev/null
+++ b/src/main/java/com/lf/server/entity/all/BaseGeoEntity.java
@@ -0,0 +1,20 @@
+package com.lf.server.entity.all;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+
+/**
+ * 绌洪棿鍩虹瀹炰綋绫�
+ * @author WWW
+ */
+public class BaseGeoEntity extends BaseEntity {
+    @TableField(select = false)
+    private String geom;
+
+    public String getGeom() {
+        return geom;
+    }
+
+    public void setGeom(String geom) {
+        this.geom = geom;
+    }
+}
diff --git a/src/main/java/com/lf/server/entity/md/MdGdcgEntity.java b/src/main/java/com/lf/server/entity/md/MdGdcgEntity.java
index 429dff9..7f1a481 100644
--- a/src/main/java/com/lf/server/entity/md/MdGdcgEntity.java
+++ b/src/main/java/com/lf/server/entity/md/MdGdcgEntity.java
@@ -1,16 +1,15 @@
 package com.lf.server.entity.md;
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.lf.server.annotation.ExcelHead;
+import com.lf.server.entity.all.BaseEntity;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.sql.Timestamp;
 
 /**
  * 绠¢亾鎴愭灉琛�
@@ -21,11 +20,9 @@
 @AllArgsConstructor
 @TableName("md.md_gdcg")
 @ExcelHead(headRows = 3,excludeSheets = "灏侀潰,鐩綍")
-public class MdGdcgEntity implements Serializable {
+@EqualsAndHashCode(callSuper = true)
+public class MdGdcgEntity extends BaseEntity implements Serializable {
     private static final long serialVersionUID = -221347663194025408L;
-
-    @TableId(type = IdType.AUTO)
-    private Integer gid;
 
     @ExcelProperty(index = 0)
     private String bh;
@@ -80,14 +77,6 @@
 
     @ExcelProperty(index = 17)
     private String bz;
-
-    private Integer createUser;
-
-    private Timestamp createTime;
-
-    private Integer updateUser;
-
-    private Timestamp updateTime;
 
     public String getBh() {
         return bh;
@@ -231,45 +220,5 @@
 
     public void setBz(String bz) {
         this.bz = bz;
-    }
-
-    public Integer getGid() {
-        return gid;
-    }
-
-    public void setGid(Integer gid) {
-        this.gid = gid;
-    }
-
-    public Integer getCreateUser() {
-        return createUser;
-    }
-
-    public void setCreateUser(Integer createUser) {
-        this.createUser = createUser;
-    }
-
-    public Timestamp getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Timestamp createTime) {
-        this.createTime = createTime;
-    }
-
-    public Integer getUpdateUser() {
-        return updateUser;
-    }
-
-    public void setUpdateUser(Integer updateUser) {
-        this.updateUser = updateUser;
-    }
-
-    public Timestamp getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Timestamp updateTime) {
-        this.updateTime = updateTime;
     }
 }
diff --git a/src/main/java/com/lf/server/entity/md/MdZxcgEntity.java b/src/main/java/com/lf/server/entity/md/MdZxcgEntity.java
index 325ccdc..49f9750 100644
--- a/src/main/java/com/lf/server/entity/md/MdZxcgEntity.java
+++ b/src/main/java/com/lf/server/entity/md/MdZxcgEntity.java
@@ -1,16 +1,15 @@
 package com.lf.server.entity.md;
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.lf.server.annotation.ExcelHead;
+import com.lf.server.entity.all.BaseGeoEntity;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.sql.Timestamp;
 
 /**
  * 涓嚎鎴愭灉琛�
@@ -21,11 +20,9 @@
 @AllArgsConstructor
 @TableName("md.md_zxcg")
 @ExcelHead(headRows = 1)
-public class MdZxcgEntity implements Serializable {
+@EqualsAndHashCode(callSuper = true)
+public class MdZxcgEntity extends BaseGeoEntity implements Serializable {
     private static final long serialVersionUID = 686714648588893312L;
-
-    @TableId(type = IdType.AUTO)
-    private Integer gid;
 
     @ExcelProperty(index = 0)
     private String zh;
@@ -44,14 +41,6 @@
 
     @ExcelProperty(index = 5)
     private Double z;
-
-    private Integer createUser;
-
-    private Timestamp createTime;
-
-    private Integer updateUser;
-
-    private Timestamp updateTime;
 
     public String getZh() {
         return zh;
@@ -99,45 +88,5 @@
 
     public void setZ(Double z) {
         this.z = z;
-    }
-
-    public Integer getGid() {
-        return gid;
-    }
-
-    public void setGid(Integer gid) {
-        this.gid = gid;
-    }
-
-    public Integer getCreateUser() {
-        return createUser;
-    }
-
-    public void setCreateUser(Integer createUser) {
-        this.createUser = createUser;
-    }
-
-    public Timestamp getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Timestamp createTime) {
-        this.createTime = createTime;
-    }
-
-    public Integer getUpdateUser() {
-        return updateUser;
-    }
-
-    public void setUpdateUser(Integer updateUser) {
-        this.updateUser = updateUser;
-    }
-
-    public Timestamp getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Timestamp updateTime) {
-        this.updateTime = updateTime;
     }
 }
diff --git a/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java b/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
index dbcefd9..03e93c5 100644
--- a/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
+++ b/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -2,6 +2,7 @@
 
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 /**
  * 绌洪棿鍩虹Mapper
@@ -27,4 +28,15 @@
      */
     @Select("select ST_SRID(geom) from ${tab} limit 1")
     public Integer selectSrid(@Param("tab") String tab);
+
+    /**
+     * 鏇存柊绌洪棿浣嶇疆
+     *
+     * @param tab  琛ㄥ悕
+     * @param gid  GID
+     * @param geom 绌洪棿浣嶇疆
+     * @return 褰卞搷琛屾暟
+     */
+    @Update("update ${tab} set geom = ST_GeomFromText('${geom}') where gid = #{gid}")
+    public Integer updateGeom(@Param("tab") String tab, @Param("gid") Integer gid, @Param("geom") String geom);
 }
diff --git a/src/main/java/com/lf/server/mapper/md/MdZxcgMapper.java b/src/main/java/com/lf/server/mapper/md/MdZxcgMapper.java
index 4840b00..359225b 100644
--- a/src/main/java/com/lf/server/mapper/md/MdZxcgMapper.java
+++ b/src/main/java/com/lf/server/mapper/md/MdZxcgMapper.java
@@ -1,7 +1,7 @@
 package com.lf.server.mapper.md;
 
 import com.lf.server.entity.md.MdZxcgEntity;
-import com.lf.server.mapper.all.BasicMapper;
+import com.lf.server.mapper.all.GeomBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
@@ -11,5 +11,5 @@
  */
 @Mapper
 @Repository
-public interface MdZxcgMapper extends BasicMapper<MdZxcgEntity> {
+public interface MdZxcgMapper extends GeomBaseMapper<MdZxcgEntity> {
 }
diff --git a/src/main/java/com/lf/server/service/data/DataLoaderService.java b/src/main/java/com/lf/server/service/data/DataLoaderService.java
index aba8341..97c2edd 100644
--- a/src/main/java/com/lf/server/service/data/DataLoaderService.java
+++ b/src/main/java/com/lf/server/service/data/DataLoaderService.java
@@ -7,6 +7,7 @@
 import com.lf.server.helper.ClassHelper;
 import com.lf.server.helper.ExcelHelper;
 import com.lf.server.helper.FileHelper;
+import com.lf.server.mapper.all.GeomBaseMapper;
 import com.lf.server.service.all.BaseUploadService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -211,6 +212,11 @@
             rows += baseMapper.insert(list.get(i));
         }
 
+        if (baseMapper instanceof GeomBaseMapper) {
+            GeomBaseMapper geomBaseMapper = (GeomBaseMapper) baseMapper;
+            updateGeom(geomBaseMapper, list);
+        }
+
         return rows;
     }
 
@@ -224,9 +230,36 @@
                 cuField.setAccessible(true);
                 cuField.set(t, mfe.getCreateUser());
 
-                Field cuTime = t.getClass().getDeclaredField("createTime");
-                cuTime.setAccessible(true);
-                cuTime.set(t, mfe.getCreateTime());
+                Field ctField = t.getClass().getDeclaredField("createTime");
+                ctField.setAccessible(true);
+                ctField.set(t, mfe.getCreateTime());
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    /**
+     * 璁剧疆绌洪棿淇℃伅
+     */
+    private <T> void updateGeom(GeomBaseMapper geomBaseMapper, List<T> list) {
+        try {
+            for (T t : list) {
+                Field xField = t.getClass().getDeclaredField("x");
+                xField.setAccessible(true);
+                double x = (double) xField.get(t);
+
+                Field yField = t.getClass().getDeclaredField("y");
+                yField.setAccessible(true);
+                double y = (double) yField.get(t);
+
+                String wkt = String.format("POINT(%f %f)", x, y);
+
+                Field gField = t.getClass().getDeclaredField("geom");
+                gField.setAccessible(true);
+                gField.set(t, wkt);
+
+                //Integer gid=
             }
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);

--
Gitblit v1.9.3