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