From 4c4a505ba4c0f10cededf701fc170c0c7b76fc5e Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 09 Feb 2026 14:16:06 +0800
Subject: [PATCH] 设备同步改造

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/config/GeometryTypeHandler.java |   38 +++++++++++++++++++++++++++++---------
 1 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/config/GeometryTypeHandler.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/config/GeometryTypeHandler.java
index 0d46756..b7db202 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/config/GeometryTypeHandler.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/config/GeometryTypeHandler.java
@@ -24,21 +24,27 @@
 
 	@Override
 	public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
-
+		if (s == null || s.isEmpty()) {
+			preparedStatement.setNull(i, jdbcType.TYPE_CODE);
+			return;
+		}
 
 		Geometry geo = null;
 		try {
 			// String转Geometry
 			geo = new WKTReader(new GeometryFactory(new PrecisionModel())).read(s);
-			// Geometry转WKB
-			byte[] geometryBytes = new WKBWriter(2, ByteOrderValues.LITTLE_ENDIAN, false).write(geo);
-			// 设置SRID为mysql默认的 0
-			byte[] wkb = new byte[geometryBytes.length + 4];
-			wkb[0] = wkb[1] = wkb[2] = wkb[3] = 0;
-			System.arraycopy(geometryBytes, 0, wkb, 4, geometryBytes.length);
+			if (geo == null) {
+				preparedStatement.setNull(i, jdbcType.TYPE_CODE);
+				return;
+			}
+			// 设置SRID为WGS84 (4326)
+			geo.setSRID(4326);
+			// Geometry转WKB,使用大端序(PostgreSQL 期望的格式),并包含SRID信息(EWKB格式)
+			byte[] wkb = new WKBWriter(2, ByteOrderValues.BIG_ENDIAN, true).write(geo);
 			preparedStatement.setBytes(i, wkb);
 		} catch (ParseException e) {
-
+			// 解析失败时设置为null
+			preparedStatement.setNull(i, jdbcType.TYPE_CODE);
 		}
 	}
 
@@ -71,7 +77,21 @@
 
 	@Override
 	public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
-		return "";
+		try {
+			// 使用 getBlob 方法获取 Blob 对象
+			java.sql.Blob blob = callableStatement.getBlob(i);
+			if (blob != null) {
+				try (InputStream inputStream = blob.getBinaryStream()) {
+					Geometry geo = getGeometryFromInputStream(inputStream);
+					if (geo != null) {
+						return geo.toString();
+					}
+				}
+			}
+		} catch (Exception e) {
+			// 处理异常
+		}
+		return null;
 	}
 
 	/**

--
Gitblit v1.9.3