From f31782b273aeb8752b25d5467502e8ea38e083c7 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 20 十二月 2022 10:17:51 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/show/DataLibService.java    |   19 +++++++--
 src/main/java/com/lf/server/config/InitConfig.java              |    4 +-
 src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java      |    2 
 src/main/java/com/lf/server/entity/all/StaticData.java          |    2 
 src/main/java/com/lf/server/entity/all/BaseEntity.java          |    6 +-
 src/main/java/com/lf/server/service/data/DataLoaderService.java |    4 +-
 src/main/java/com/lf/server/helper/GdbHelper.java               |   45 ++++++++++------------
 7 files changed, 44 insertions(+), 38 deletions(-)

diff --git a/src/main/java/com/lf/server/config/InitConfig.java b/src/main/java/com/lf/server/config/InitConfig.java
index 5041d70..9b1efbf 100644
--- a/src/main/java/com/lf/server/config/InitConfig.java
+++ b/src/main/java/com/lf/server/config/InitConfig.java
@@ -96,11 +96,11 @@
 
     private void testBatchUpdate() {
         DlgagnpEntity d1 = new DlgagnpEntity();
-        d1.setGid(56);
+        d1.setGid(56L);
         d1.setGb("10");
         d1.setName("a01");
         DlgagnpEntity d2 = new DlgagnpEntity();
-        d2.setGid(57);
+        d2.setGid(57L);
         d2.setGb("20");
         d2.setName("a02");
 
diff --git a/src/main/java/com/lf/server/entity/all/BaseEntity.java b/src/main/java/com/lf/server/entity/all/BaseEntity.java
index b39df1e..1cdf7d8 100644
--- a/src/main/java/com/lf/server/entity/all/BaseEntity.java
+++ b/src/main/java/com/lf/server/entity/all/BaseEntity.java
@@ -13,7 +13,7 @@
  */
 public class BaseEntity implements Serializable {
     @TableId(type = IdType.AUTO)
-    private Integer gid;
+    private Long gid;
 
     private String eventid;
 
@@ -49,11 +49,11 @@
     public BaseEntity() {
     }
 
-    public Integer getGid() {
+    public Long getGid() {
         return gid;
     }
 
-    public void setGid(Integer gid) {
+    public void setGid(Long gid) {
         this.gid = gid;
     }
 
diff --git a/src/main/java/com/lf/server/entity/all/StaticData.java b/src/main/java/com/lf/server/entity/all/StaticData.java
index fdc7653..a6a7655 100644
--- a/src/main/java/com/lf/server/entity/all/StaticData.java
+++ b/src/main/java/com/lf/server/entity/all/StaticData.java
@@ -92,5 +92,5 @@
     /**
      * GDB鎺掗櫎瀛楁
      */
-    public final static List<String> GDB_EXCLUDE_FIELDS= new ArrayList<>(Arrays.asList("geom", "objectid", "shape_leng", "shape_area"));
+    public final static List<String> GDB_EXCLUDE_FIELDS= new ArrayList<>(Arrays.asList("geom", "objectid", "shape_leng", "shape_area", "serialVersionUID", "dirName", "depName", "verName", "createName", "updateName"));
 }
diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java
index 854a787..6b73111 100644
--- a/src/main/java/com/lf/server/helper/GdbHelper.java
+++ b/src/main/java/com/lf/server/helper/GdbHelper.java
@@ -330,12 +330,11 @@
         Driver driver = null;
         DataSource dataSource = null;
         try {
-            driver = ogr.GetDriverByName("OpenFileGDB");
+            driver = ogr.GetDriverByName("FileGDB");
             if (null == driver) {
                 return;
             }
-
-            dataSource = driver.CreateDataSource(filePath);
+            dataSource = driver.CreateDataSource(filePath, null);
             if (null == dataSource) {
                 return;
             }
@@ -354,12 +353,12 @@
 
                     String className = ClassHelper.getClassName(baseMapper);
                     Class clazz = ClassHelper.getEntityClass(className);
-                    Field gField = getGeomField(clazz);
-                    if (null == gField) {
+                    if (null == clazz) {
                         continue;
                     }
 
                     List<Field> fields = new ArrayList<>();
+                    fields.add(getGeomField(clazz));
                     getFields(clazz, fields);
                     addLayerField(layer, fields);
 
@@ -454,22 +453,14 @@
      * 娣诲姞鍥惧眰瀛楁
      */
     private static void addLayerField(Layer layer, List<Field> list) {
-        for (int i = 0, c = list.size(); i < c; i++) {
+        for (int i = 1, c = list.size(); i < c; i++) {
             Field f = list.get(i);
-            FieldDefn fd = getLayerField(f);
+
+            int fieldType = getFieldType(f);
+            FieldDefn fd = new FieldDefn(f.getName(), fieldType);
+
             layer.CreateField(fd, i);
         }
-    }
-
-    private static FieldDefn getLayerField(Field f ) {
-        int fieldType = getFieldType(f);
-        FieldDefn fd = new FieldDefn(f.getName(), fieldType);
-
-        if (fieldType == ogr.OFTString) {
-            // fd.SetWidth(100)
-        }
-
-        return fd;
     }
 
     /**
@@ -505,36 +496,40 @@
             Geometry geom = Geometry.CreateFromWkt(geoEntity.getGeom());
             f.SetGeometry(geom);
 
-            for (int i = 0, c = fields.size(); i < c; i++) {
+            for (int i = 1, c = fields.size(); i < c; i++) {
                 Field field = fields.get(i);
+                Object val = field.get(t);
+                if (null == val) {
+                    continue;
+                }
+
                 switch (field.getType().getName()) {
                     case "java.math.BigDecimal":
                     case "java.lang.Double":
                     case "double":
-                        Double d = field.getDouble(t);
+                        double d = (double) val;
                         f.SetField(i, d);
                         break;
                     case "java.lang.Long":
                     case "long":
-                        Long l = field.getLong(t);
+                        long l = (long) val;
                         f.SetField(i, l);
                         break;
                     case "java.lang.Integer":
                     case "int":
-                        Integer n = field.getInt(t);
+                        int n = (int) val;
                         f.SetField(i, n);
                         break;
                     case "java.sql.Timestamp":
-                        Timestamp time = null == field.get(t) ? null : (Timestamp) field.get(t);
+                        Timestamp time = (Timestamp) field.get(t);
                         setTimestamp(f, i, time);
                         break;
                     default:
-                        String str = null == field.get(t) ? null : (String) field.get(t);
+                        String str = (String) val;
                         f.SetField(i, str);
                         break;
                 }
             }
-
             layer.CreateFeature(f);
         }
     }
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 5cc4632..1b0e8d9 100644
--- a/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
+++ b/src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -47,5 +47,5 @@
      * @return 褰卞搷琛屾暟
      */
     @Update("update ${tab} set geom = ST_GeomFromText('${wkt}') where gid = #{gid}")
-    public Integer updateGeom(@Param("tab") String tab, @Param("gid") Integer gid, @Param("wkt") String wkt);
+    public Integer updateGeom(@Param("tab") String tab, @Param("gid") Long gid, @Param("wkt") String wkt);
 }
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 a5bcbcf..fe02c94 100644
--- a/src/main/java/com/lf/server/service/data/DataLoaderService.java
+++ b/src/main/java/com/lf/server/service/data/DataLoaderService.java
@@ -423,7 +423,7 @@
                 double y = (double) yField.get(t);
 
                 BaseEntity baseEntity = (BaseEntity) t;
-                Integer gid = baseEntity.getGid();
+                Long gid = baseEntity.getGid();
 
                 String wkt = String.format("POINT(%f %f)", x, y);
                 geomBaseMapper.updateGeom(tabName, gid, wkt);
@@ -482,7 +482,7 @@
             String tabName = BaseQueryService.getTabName(geomBaseMapper);
             for (T t : list) {
                 BaseEntity baseEntity = (BaseEntity) t;
-                Integer gid = baseEntity.getGid();
+                Long gid = baseEntity.getGid();
 
                 Field gField = t.getClass().getDeclaredField("geom");
                 gField.setAccessible(true);
diff --git a/src/main/java/com/lf/server/service/show/DataLibService.java b/src/main/java/com/lf/server/service/show/DataLibService.java
index 965b01c..ca31c11 100644
--- a/src/main/java/com/lf/server/service/show/DataLibService.java
+++ b/src/main/java/com/lf/server/service/show/DataLibService.java
@@ -39,9 +39,20 @@
             return null;
         }
 
-        String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date());
-        String tempPath = pathHelper.getTempPath(tempName);
-        String filePath = tempPath + File.separator + tempName + ".gdb";
+        //String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date());
+        //String tempPath = pathHelper.getTempPath(tempName);
+        //String filePath = tempPath + File.separator + tempName + ".gdb";
+
+        String filePath = "D:\\LF\\temp\\20221219202706\\20221219202705.gdb";
+        File file = new File(filePath);
+        if (!file.exists() || !file.isDirectory()) {
+            file.mkdirs();
+        }
+
+        filePath = "D:\\LF\\temp\\20221219202706\\2022.gdb";
+        if (file.exists() && file.isDirectory()) {
+            FileHelper.deleteDir(filePath);
+        }
         GdbHelper.createGdb(filePath, map);
 
         return null;
@@ -81,7 +92,7 @@
      */
     private QueryWrapper createWrapper(GeomBaseMapper baseMapper, String wkt) {
         QueryWrapper wrapper = new QueryWrapper();
-        wrapper.select("ST_AsText(geom) as geom");
+        wrapper.select("ST_AsText(geom) as geom, *");
         Integer srid = baseQueryService.getSrid(baseMapper);
         wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
 

--
Gitblit v1.9.3