From 55d23efc30f7db5ec2d9b8a0f04a268a10f3e855 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期二, 23 十二月 2025 16:53:25 +0800
Subject: [PATCH] 优化了地块管理页面

---
 dikuai.properties                        |   16 +++++
 src/dikuai/addzhangaiwu.java             |    3 -
 src/lujing/MowingPathGenerationPage.java |   90 +++++++++++++++++++----------
 set.properties                           |   10 +-
 src/dikuai/Dikuaiguanli.java             |   22 +++++-
 5 files changed, 95 insertions(+), 46 deletions(-)

diff --git a/dikuai.properties b/dikuai.properties
index c58b35e..46f76fa 100644
--- a/dikuai.properties
+++ b/dikuai.properties
@@ -1,2 +1,16 @@
 #Dikuai Properties
-#Tue Dec 23 16:12:08 CST 2025
+#Tue Dec 23 16:39:12 CST 2025
+LAND1.baseStationCoordinates=3949.89151752,N,11616.79267501,E
+LAND1.boundaryCoordinates=42.327,2.469;39.527,1.769;35.235,0.943;33.800,0.591;32.427,0.156;31.148,-0.377;30.259,-1.257;30.032,-2.368;30.124,-3.806;30.592,-6.598;31.331,-10.769
+LAND1.boundaryOriginalCoordinates=39.831547,116.280373,49.32;39.831544,116.280357,49.33;39.831541,116.280340,49.29;39.831539,116.280324,49.27;39.831536,116.280307,49.24;39.831534,116.280290,49.25;39.831531,116.280273,49.26;39.831527,116.280257,49.28;39.831522,116.280242,49.21;39.831514,116.280232,49.28;39.831504,116.280229,49.24;39.831491,116.280230,49.33;39.831478,116.280233,49.34;39.831466,116.280236,49.31;39.831454,116.280239,49.31;39.831441,116.280242,49.26;39.831429,116.280244,49.23
+LAND1.boundaryOriginalXY=42.323,2.417;40.955,2.083;39.502,1.749;38.134,1.526;36.681,1.192;35.227,0.969;33.774,0.635;32.406,0.190;31.124,-0.366;30.269,-1.257;30.013,-2.370;30.098,-3.817;30.355,-5.265;30.611,-6.600;30.868,-7.936;31.124,-9.383;31.295,-10.719
+LAND1.createTime=2025-12-23 16\:39\:12
+LAND1.landArea=66.72
+LAND1.landName=12123
+LAND1.landNumber=LAND1
+LAND1.mowingBladeWidth=0.50
+LAND1.mowingPattern=骞宠绾�
+LAND1.mowingSafetyDistance=0.53
+LAND1.mowingWidth=43.00
+LAND1.plannedPath=30.655,-1.967;31.684,-0.728;32.539,-0.371;30.586,-2.723;30.626,-3.348;33.306,-0.122;34.055,0.108;30.685,-3.949;30.779,-4.509;34.757,0.280;35.454,0.445;30.873,-5.069;30.967,-5.629;36.119,0.573;36.784,0.701;31.061,-6.189;31.157,-6.747;37.450,0.829;38.115,0.958;31.255,-7.301;31.353,-7.856;38.780,1.086;39.446,1.214;31.451,-8.411;31.550,-8.965;40.139,1.376;40.845,1.552;31.648,-9.520
+LAND1.updateTime=2025-12-23 16\:39\:12
diff --git a/set.properties b/set.properties
index 4b9dfc1..adde679 100644
--- a/set.properties
+++ b/set.properties
@@ -1,19 +1,19 @@
 #Mower Configuration Properties - Updated
-#Tue Dec 23 16:12:22 CST 2025
+#Tue Dec 23 16:52:57 CST 2025
 appVersion=-1
 boundaryLengthVisible=false
-currentWorkLandNumber=-1
+currentWorkLandNumber=LAND1
 cuttingWidth=200
 firmwareVersion=-1
 handheldMarkerId=1872
 idleTrailDurationSeconds=60
 manualBoundaryDrawingMode=false
-mapScale=15.41
+mapScale=24.33
 measurementModeEnabled=false
 mowerId=860
 serialAutoConnect=true
 serialBaudRate=115200
 serialPortName=COM15
 simCardNumber=-1
-viewCenterX=-14.71
-viewCenterY=5.21
+viewCenterX=-35.75
+viewCenterY=3.10
diff --git a/src/dikuai/Dikuaiguanli.java b/src/dikuai/Dikuaiguanli.java
index bd97f4a..dc9a431 100644
--- a/src/dikuai/Dikuaiguanli.java
+++ b/src/dikuai/Dikuaiguanli.java
@@ -20,6 +20,7 @@
 import java.util.Collections;
 import java.util.Objects;
 import java.util.Properties;
+import java.util.Locale;
 
 import lujing.Lunjingguihua;
 import lujing.MowingPathGenerationPage;
@@ -271,14 +272,17 @@
 		contentPanel.add(mowingPatternPanel);
 		contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
 
-		// 鍓茶崏鏈哄壊鍒�瀹藉害
+		// 鍓茶崏鏈哄壊鍒�瀹藉害锛堝崟浣嶏細绫筹紝淇濈暀2浣嶅皬鏁帮級
 		String mowingBladeWidthValue = dikuai.getMowingBladeWidth();
 		String displayBladeWidth = "鏈缃�";
 		if (mowingBladeWidthValue != null && !"-1".equals(mowingBladeWidthValue) && !mowingBladeWidthValue.trim().isEmpty()) {
 			try {
 				double bladeWidthMeters = Double.parseDouble(mowingBladeWidthValue.trim());
-				double bladeWidthCm = bladeWidthMeters * 100.0;
-				displayBladeWidth = String.format("%.2f鍘樼背", bladeWidthCm);
+				// 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
+				if (bladeWidthMeters > 100) {
+					bladeWidthMeters = bladeWidthMeters / 100.0;
+				}
+				displayBladeWidth = String.format(Locale.US, "%.2fm", bladeWidthMeters);
 			} catch (NumberFormatException e) {
 				displayBladeWidth = "鏈缃�";
 			}
@@ -287,10 +291,18 @@
 		contentPanel.add(mowingBladeWidthPanel);
 		contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
 
+		// 鍓茶崏瀹藉害锛堝崟浣嶏細绫筹紝淇濈暀2浣嶅皬鏁帮級
 		String mowingWidthValue = dikuai.getMowingWidth();
 		String displayWidth = "鏈缃�";
 		if (mowingWidthValue != null && !"-1".equals(mowingWidthValue) && !mowingWidthValue.trim().isEmpty()) {
-			displayWidth = mowingWidthValue + "鍘樼背";
+			try {
+				double widthCm = Double.parseDouble(mowingWidthValue.trim());
+				// 灏嗗帢绫宠浆鎹负绫筹紝淇濈暀2浣嶅皬鏁�
+				double widthMeters = widthCm / 100.0;
+				displayWidth = String.format(Locale.US, "%.2fm", widthMeters);
+			} catch (NumberFormatException e) {
+				displayWidth = "鏈缃�";
+			}
 		}
 		JPanel mowingWidthPanel = createCardInfoItem("鍓茶崏瀹藉害:", displayWidth);
 		contentPanel.add(mowingWidthPanel);
@@ -306,7 +318,7 @@
 				if (distanceMeters > 100) {
 					distanceMeters = distanceMeters / 100.0;
 				}
-				displaySafetyDistance = String.format("%.2f绫�", distanceMeters);
+				displaySafetyDistance = String.format(Locale.US, "%.2fm", distanceMeters);
 			} catch (NumberFormatException e) {
 				displaySafetyDistance = "鏈缃�";
 			}
diff --git a/src/dikuai/addzhangaiwu.java b/src/dikuai/addzhangaiwu.java
index bc0056e..f914ce4 100644
--- a/src/dikuai/addzhangaiwu.java
+++ b/src/dikuai/addzhangaiwu.java
@@ -52,12 +52,9 @@
 import zhuye.Coordinate;
 import zhuye.MapRenderer;
 import zhuye.Shouye;
-import zhangaiwu.AddDikuai;
 import zhangaiwu.Obstacledge;
 import zhangaiwu.yulanzhangaiwu;
 import bianjie.Bianjieyouhuatoxy;
-import bianjie.ThreePointCircle;
-
 /**
  * 闅滅鐗╂柊澧�/缂栬緫瀵硅瘽妗嗐�傝璁¤瑷�鍙傝�� {@link AddDikuai}锛屾敮鎸侀�氳繃瀹炲湴缁樺埗閲囬泦闅滅鐗╁潗鏍囥��
  */
diff --git a/src/lujing/MowingPathGenerationPage.java b/src/lujing/MowingPathGenerationPage.java
index de7c608..ad0dcc4 100644
--- a/src/lujing/MowingPathGenerationPage.java
+++ b/src/lujing/MowingPathGenerationPage.java
@@ -133,24 +133,37 @@
         
         // 鍓茶崏瀹藉害
         widthField = createInfoTextField(widthValue != null ? widthValue : "", true);
-        contentPanel.add(createTextFieldSection("鍓茶崏瀹藉害 (鍘樼背)", widthField));
+        contentPanel.add(createTextFieldSection("鍓茶崏瀹藉害 (cm)", widthField));
         
         // 鍓茶崏瀹夊叏璺濈锛堝彧璇绘樉绀猴級
+        // 浼樺厛浠嶥ikuai瀵硅薄鑾峰彇锛屽鏋淒ikuai涓病鏈夛紝鍐嶄粠Device鑾峰彇
         String displaySafetyDistance = "鏈缃�";
-        Device device = Device.getActiveDevice();
-        if (device != null) {
-            String safetyDistanceValue = device.getMowingSafetyDistance();
-            if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
-                try {
-                    double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
-                    // 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
-                    if (distanceMeters > 100) {
-                        distanceMeters = distanceMeters / 100.0;
-                    }
-                    displaySafetyDistance = String.format("%.2f绫�", distanceMeters);
-                } catch (NumberFormatException e) {
-                    displaySafetyDistance = "鏈缃�";
+        String safetyDistanceValue = null;
+        
+        // 棣栧厛灏濊瘯浠嶥ikuai瀵硅薄鑾峰彇
+        if (dikuai != null) {
+            safetyDistanceValue = dikuai.getMowingSafetyDistance();
+        }
+        
+        // 濡傛灉Dikuai涓病鏈夛紝浠嶥evice鑾峰彇
+        if ((safetyDistanceValue == null || "-1".equals(safetyDistanceValue) || safetyDistanceValue.trim().isEmpty())) {
+            Device device = Device.getActiveDevice();
+            if (device != null) {
+                safetyDistanceValue = device.getMowingSafetyDistance();
+            }
+        }
+        
+        // 鏍煎紡鍖栨樉绀哄��
+        if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
+            try {
+                double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
+                // 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
+                if (distanceMeters > 100) {
+                    distanceMeters = distanceMeters / 100.0;
                 }
+                displaySafetyDistance = String.format(Locale.US, "%.2fm", distanceMeters);
+            } catch (NumberFormatException e) {
+                displaySafetyDistance = "鏈缃�";
             }
         }
         contentPanel.add(createInfoValueSection("鍓茶崏瀹夊叏璺濈", displaySafetyDistance));
@@ -372,7 +385,7 @@
         String rawWidthInput = widthField.getText() != null ? widthField.getText().trim() : "";
         String widthSanitized = sanitizeWidthString(widthField.getText());
         if (widthSanitized == null) {
-            String message = rawWidthInput.isEmpty() ? "璇峰厛璁剧疆鍓茶崏瀹藉害(鍘樼背)" : "鍓茶崏瀹藉害鏍煎紡涓嶆纭�";
+                String message = rawWidthInput.isEmpty() ? "璇峰厛璁剧疆鍓茶崏瀹藉害(cm)" : "鍓茶崏瀹藉害鏍煎紡涓嶆纭�";
             JOptionPane.showMessageDialog(this, message, "鎻愮ず", JOptionPane.WARNING_MESSAGE);
             return;
         }
@@ -459,7 +472,7 @@
         String widthStr = sanitizeWidthString(widthCmInput);
         if (widthStr == null) {
             if (showMessages) {
-                String message = rawWidth.isEmpty() ? "璇峰厛璁剧疆鍓茶崏瀹藉害(鍘樼背)" : "鍓茶崏瀹藉害鏍煎紡涓嶆纭�";
+                String message = rawWidth.isEmpty() ? "璇峰厛璁剧疆鍓茶崏瀹藉害(cm)" : "鍓茶崏瀹藉害鏍煎紡涓嶆纭�";
                 JOptionPane.showMessageDialog(parentComponent, message, "鎻愮ず", JOptionPane.WARNING_MESSAGE);
             }
             return null;
@@ -664,25 +677,38 @@
     
     /**
      * 鑾峰彇瀹夊叏璺濈瀛楃涓诧紙绫筹級
+     * 浼樺厛浠嶥ikuai瀵硅薄鑾峰彇锛屽鏋淒ikuai涓病鏈夛紝鍐嶄粠Device鑾峰彇
      */
     private String getSafetyDistanceString() {
-        Device device = Device.getActiveDevice();
-        if (device != null) {
-            String safetyDistanceValue = device.getMowingSafetyDistance();
-            if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
-                try {
-                    double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
-                    // 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
-                    if (distanceMeters > 100) {
-                        distanceMeters = distanceMeters / 100.0;
-                    }
-                    return BigDecimal.valueOf(distanceMeters)
-                        .setScale(3, RoundingMode.HALF_UP)
-                        .stripTrailingZeros()
-                        .toPlainString();
-                } catch (NumberFormatException e) {
-                    // 瑙f瀽澶辫触锛岃繑鍥瀗ull锛屼娇鐢ㄩ粯璁ゅ��
+        String safetyDistanceValue = null;
+        
+        // 棣栧厛灏濊瘯浠嶥ikuai瀵硅薄鑾峰彇
+        if (dikuai != null) {
+            safetyDistanceValue = dikuai.getMowingSafetyDistance();
+        }
+        
+        // 濡傛灉Dikuai涓病鏈夛紝浠嶥evice鑾峰彇
+        if ((safetyDistanceValue == null || "-1".equals(safetyDistanceValue) || safetyDistanceValue.trim().isEmpty())) {
+            Device device = Device.getActiveDevice();
+            if (device != null) {
+                safetyDistanceValue = device.getMowingSafetyDistance();
+            }
+        }
+        
+        // 鏍煎紡鍖栧苟杩斿洖
+        if (safetyDistanceValue != null && !"-1".equals(safetyDistanceValue) && !safetyDistanceValue.trim().isEmpty()) {
+            try {
+                double distanceMeters = Double.parseDouble(safetyDistanceValue.trim());
+                // 濡傛灉鍊煎ぇ浜�100锛岃涓烘槸鍘樼背锛岄渶瑕佽浆鎹负绫�
+                if (distanceMeters > 100) {
+                    distanceMeters = distanceMeters / 100.0;
                 }
+                return BigDecimal.valueOf(distanceMeters)
+                    .setScale(3, RoundingMode.HALF_UP)
+                    .stripTrailingZeros()
+                    .toPlainString();
+            } catch (NumberFormatException e) {
+                // 瑙f瀽澶辫触锛岃繑鍥瀗ull锛屼娇鐢ㄩ粯璁ゅ��
             }
         }
         return null;

--
Gitblit v1.10.0