From c33441493c8a2111998de4be47c4b52a03f28e87 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 28 二月 2023 18:10:09 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/helper/GdbHelper.java |   75 ++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/lf/server/helper/GdbHelper.java b/src/main/java/com/lf/server/helper/GdbHelper.java
index 90d6b51..2483133 100644
--- a/src/main/java/com/lf/server/helper/GdbHelper.java
+++ b/src/main/java/com/lf/server/helper/GdbHelper.java
@@ -163,9 +163,8 @@
                 }
 
                 T t = (T) clazz.newInstance();
-                if (readFeature(t, f, map, gField)) {
-                    list.add(t);
-                }
+                readFeature(t, f, map, gField);
+                list.add(t);
             } while (true);
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
@@ -222,21 +221,18 @@
     /**
      * 璇诲彇Feature
      */
-    private static <T> boolean readFeature(T t, Feature f, Map<Integer, Field> map, Field gField) {
-        try {
-            for (Integer i : map.keySet()) {
+    private static <T> void readFeature(T t, Feature f, Map<Integer, Field> map, Field gField) {
+        for (Integer i : map.keySet()) {
+            try {
                 Field field = map.get(i);
                 setValue(t, f, field, i);
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
             }
+        }
 
-            if (null != gField) {
-                setGeom(t, f, gField);
-            }
-
-            return true;
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-            return false;
+        if (null != gField) {
+            setGeom(t, f, gField);
         }
     }
 
@@ -287,28 +283,32 @@
      * wkbNone = 100,
      * wkbLinearRing = 101
      */
-    private static <T> void setGeom(T t, Feature f, Field gField) throws Exception {
-        String geo = "null";
-        if (null != f.GetGeometryRef()) {
-            String wkt = f.GetGeometryRef().ExportToWkt();
-            // noinspection AlibabaRemoveCommentedCode
-            switch (f.GetGeometryRef().GetGeometryType()) {
-                //case 1:
-                //    wkt = wkt.replace("POINT", "MULTIPOINT");
-                //    break;
-                case 2:
-                    wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")";
-                    break;
-                case 3:
-                    wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")";
-                    break;
-                default:
-                    break;
+    private static <T> void setGeom(T t, Feature f, Field gField) {
+        try {
+            String geo = "null";
+            if (null != f.GetGeometryRef()) {
+                String wkt = f.GetGeometryRef().ExportToWkt();
+                // noinspection AlibabaRemoveCommentedCode
+                switch (f.GetGeometryRef().GetGeometryType()) {
+                    //case 1:
+                    //    wkt = wkt.replace("POINT", "MULTIPOINT");
+                    //    break;
+                    case 2:
+                        wkt = wkt.replace("LINESTRING (", "MULTILINESTRING ((") + ")";
+                        break;
+                    case 3:
+                        wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")";
+                        break;
+                    default:
+                        break;
+                }
+                geo = String.format("ST_GeomFromText('%s')", wkt);
             }
-            geo = String.format("ST_GeomFromText('%s')", wkt);
-        }
 
-        gField.set(t, geo);
+            gField.set(t, geo);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
     }
 
     /**
@@ -328,6 +328,10 @@
         float fSecond = pfSecond[0];
         int s = (int) fSecond;
         int ns = (int) (1000000000 * fSecond - s);
+
+        if (pnYear[0] > StaticData.I2050 || pnMonth[0] > StaticData.I12 || pnDay[0] > StaticData.I31 || pnHour[0] > StaticData.I24 || pnMinute[0] > StaticData.I60) {
+            return null;
+        }
 
         LocalDateTime localDateTime = LocalDateTime.of(
                 LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]),
@@ -350,6 +354,9 @@
         int[] pnTzFlag = new int[1];
 
         f.GetFieldAsDateTime(index, pnYear, pnMonth, pnDay, pnHour, pnMinute, pfSecond, pnTzFlag);
+        if (pnYear[0] > StaticData.I2050 || pnMonth[0] > StaticData.I12 || pnDay[0] > StaticData.I31) {
+            return null;
+        }
 
         return LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]);
     }

--
Gitblit v1.9.3