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