From c9b1d33979b3972fe6a82fa427b4ba9a20989112 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 24 十二月 2025 18:56:28 +0800
Subject: [PATCH] 新增mqtt相关功能

---
 src/dikuai/Dikuaiguanli.java |   75 ++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 34 deletions(-)

diff --git a/src/dikuai/Dikuaiguanli.java b/src/dikuai/Dikuaiguanli.java
index 70bc5b1..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 = "鏈缃�";
 			}
@@ -337,8 +349,9 @@
 		contentPanel.add(obstaclePanel);
 	contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
 
-		// 鍦板潡杈圭晫鍧愭爣锛堝甫鏄剧ず椤剁偣鎸夐挳锛�
-		JPanel boundaryPanel = createBoundaryInfoItem(dikuai);
+		// 鍦板潡杈圭晫鍧愭爣锛堝甫鏌ョ湅鎸夐挳锛�
+		JPanel boundaryPanel = createCardInfoItemWithIconButton("鍦板潡杈圭晫:",
+			createViewButton(e -> editBoundaryCoordinates(dikuai)));
 		configureInteractiveLabel(getInfoItemTitleLabel(boundaryPanel),
 			() -> editBoundaryCoordinates(dikuai),
 			"鐐瑰嚮鏌ョ湅/缂栬緫鍦板潡杈圭晫鍧愭爣");
@@ -362,14 +375,6 @@
 	contentPanel.add(baseStationPanel);
 	contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
 
-	JPanel boundaryOriginalPanel = createCardInfoItemWithIconButton("杈圭晫鍘熷鍧愭爣:",
-		createViewButton(e -> editBoundaryOriginalCoordinates(dikuai)));
-	configureInteractiveLabel(getInfoItemTitleLabel(boundaryOriginalPanel),
-		() -> editBoundaryOriginalCoordinates(dikuai),
-		"鐐瑰嚮鏌ョ湅/缂栬緫杈圭晫鍘熷鍧愭爣");
-	contentPanel.add(boundaryOriginalPanel);
-		contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
-
 		JPanel completedTrackPanel = createCardInfoItemWithButton("宸插畬鎴愬壊鑽夎矾寰�:",
 			getTruncatedValue(dikuai.getMowingTrack(), 12, "鏈褰�"),
 			createViewButton(e -> showCompletedMowingTrackDialog(dikuai)));
@@ -1035,17 +1040,35 @@
 		if (dikuai == null) {
 			return;
 		}
-		String edited = promptCoordinateEditing("鏌ョ湅 / 缂栬緫鍦板潡杈圭晫鍧愭爣", dikuai.getBoundaryCoordinates());
+		Window owner = SwingUtilities.getWindowAncestor(this);
+		
+		// 鑾峰彇鍦板潡绠$悊瀵硅瘽妗嗭紝鍑嗗鍦ㄦ墦寮�杈圭晫缂栬緫椤甸潰鏃跺叧闂�
+		Window managementWindow = null;
+		if (owner instanceof JDialog) {
+			managementWindow = owner;
+		}
+		
+		// 鎵撳紑杈圭晫缂栬緫椤甸潰
+		Dikuanbianjipage page = new Dikuanbianjipage(owner, "杈圭晫绠$悊椤甸潰", dikuai.getBoundaryCoordinates(), dikuai);
+		page.setVisible(true);
+		
+		// 鍏抽棴鍦板潡绠$悊椤甸潰
+		if (managementWindow != null) {
+			managementWindow.dispose();
+		}
+		
+		// 鑾峰彇缂栬緫缁撴灉骞朵繚瀛�
+		String edited = page.getResult();
 		if (edited == null) {
 			return;
 		}
 		String normalized = normalizeCoordinateInput(edited);
 		if (!saveFieldAndRefresh(dikuai, "boundaryCoordinates", normalized)) {
-			JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊鍦板潡杈圭晫鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
+			JOptionPane.showMessageDialog(null, "鏃犳硶鏇存柊鍦板潡杈圭晫鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
 			return;
 		}
 		String message = "-1".equals(normalized) ? "鍦板潡杈圭晫鍧愭爣宸叉竻绌�" : "鍦板潡杈圭晫鍧愭爣宸叉洿鏂�";
-		JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
+		JOptionPane.showMessageDialog(null, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
 	}
 
 	private void editPlannedPath(Dikuai dikuai) {
@@ -1082,22 +1105,6 @@
 		JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
 	}
 
-	private void editBoundaryOriginalCoordinates(Dikuai dikuai) {
-		if (dikuai == null) {
-			return;
-		}
-		String edited = promptCoordinateEditing("鏌ョ湅 / 缂栬緫杈圭晫鍘熷鍧愭爣", dikuai.getBoundaryOriginalCoordinates());
-		if (edited == null) {
-			return;
-		}
-		String normalized = normalizeCoordinateInput(edited);
-		if (!saveFieldAndRefresh(dikuai, "boundaryOriginalCoordinates", normalized)) {
-			JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊杈圭晫鍘熷鍧愭爣", "閿欒", JOptionPane.ERROR_MESSAGE);
-			return;
-		}
-		String message = "-1".equals(normalized) ? "杈圭晫鍘熷鍧愭爣宸叉竻绌�" : "杈圭晫鍘熷鍧愭爣宸叉洿鏂�";
-		JOptionPane.showMessageDialog(this, message, "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
-	}
 
 	private void editMowingPattern(Dikuai dikuai) {
 		if (dikuai == null) {

--
Gitblit v1.10.0