From 5b685e9066ccfbc432c29739b5524f1d42a20891 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期一, 22 十二月 2025 19:37:30 +0800
Subject: [PATCH] 进一步优化边界管理页面功能

---
 src/dikuai/Dikuanbianjipage.java |   56 +++++++++++++++++++++-----------------------------------
 1 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/src/dikuai/Dikuanbianjipage.java b/src/dikuai/Dikuanbianjipage.java
index bceb6c2..f3d7ff8 100644
--- a/src/dikuai/Dikuanbianjipage.java
+++ b/src/dikuai/Dikuanbianjipage.java
@@ -105,43 +105,17 @@
                 JOptionPane.showMessageDialog(this, "鏈壘鍒板湴鍧椾俊鎭紝鏃犳硶浼樺寲", "閿欒", JOptionPane.ERROR_MESSAGE);
                 return;
             }
-            String baseStation = dikuai.getBaseStationCoordinates();
-            if (baseStation == null || baseStation.trim().isEmpty() || "-1".equals(baseStation)) {
-                JOptionPane.showMessageDialog(this, "鍩虹珯鍧愭爣鏈缃紝鏃犳硶浼樺寲", "閿欒", JOptionPane.ERROR_MESSAGE);
-                return;
-            }
             
-            // 鍑嗗 Coordinate 鍒楄〃
-            String originalCoords = dikuai.getBoundaryOriginalCoordinates();
-            if (originalCoords == null || originalCoords.trim().isEmpty() || "-1".equals(originalCoords)) {
-                JOptionPane.showMessageDialog(this, "鍘熷杈圭晫鍧愭爣涓虹┖锛屾棤娉曚紭鍖�", "閿欒", JOptionPane.ERROR_MESSAGE);
+            // 浠庡師濮嬭竟鐣孹Y鍧愭爣鏂囨湰鍩熻幏鍙栬緭鍏�
+            String inputXY = rawXYArea.getText();
+            if (inputXY == null || inputXY.trim().isEmpty() || "-1".equals(inputXY.trim())) {
+                JOptionPane.showMessageDialog(this, "鍘熷杈圭晫XY鍧愭爣涓虹┖锛屾棤娉曚紭鍖�", "閿欒", JOptionPane.ERROR_MESSAGE);
                 return;
             }
 
             try {
-                // 瑙f瀽鍘熷鍧愭爣鍒� Coordinate.coordinates
-                List<Coordinate> coords = new ArrayList<>();
-                String[] points = originalCoords.split(";");
-                for (String point : points) {
-                    String[] parts = point.split(",");
-                    if (parts.length >= 2) {
-                        double lonDecimal = Double.parseDouble(parts[0].trim());
-                        double latDecimal = Double.parseDouble(parts[1].trim());
-                        double alt = parts.length > 2 ? Double.parseDouble(parts[2].trim()) : 0.0;
-                        
-                        // 灏嗗崄杩涘埗搴﹁浆鎹负搴﹀垎鏍煎紡瀛楃涓�
-                        String latDM = decimalToDegreeMinute(latDecimal);
-                        String lonDM = decimalToDegreeMinute(lonDecimal);
-                        String latDir = latDecimal >= 0 ? "N" : "S";
-                        String lonDir = lonDecimal >= 0 ? "E" : "W";
-                        
-                        coords.add(new Coordinate(latDM, latDir, lonDM, lonDir, alt));
-                    }
-                }
-                Coordinate.coordinates = coords;
-
-                // 璋冪敤浼樺寲绠楁硶
-                String optimized = bianjieguihua2.processCoordinateListAuto(baseStation);
+                // 璋冪敤浼樺寲绠楁硶锛堢洿鎺ヤ娇鐢╔Y鍧愭爣瀛楃涓诧級
+                String optimized = bianjieguihua2.optimizeBoundaryXYString(inputXY.trim());
                 optTextArea.setText(optimized);
                 JOptionPane.showMessageDialog(this, "杈圭晫浼樺寲瀹屾垚", "鎻愮ず", JOptionPane.INFORMATION_MESSAGE);
             } catch (Exception ex) {
@@ -160,11 +134,22 @@
             // 鑾峰彇褰撳墠浼樺寲鍚庣殑杈圭晫
             String currentOptimized = optTextArea.getText();
             
+            // 淇濆瓨鍦板潡缂栧彿锛岀敤浜庤繑鍥炲洖璋�
+            final String targetLandNumber = dikuai.getLandNumber();
+            
             // 璋冪敤棣栭〉鏄剧ず棰勮
             SwingUtilities.invokeLater(() -> {
                 Shouye.showBoundaryPreview(dikuai, currentOptimized, () -> {
-                    // 杩斿洖鍥炶皟锛氶噸鏂版墦寮�姝ら〉闈�
-                    new Dikuanbianjipage(getOwner(), getTitle(), currentOptimized, dikuai).setVisible(true);
+                    // 杩斿洖鍥炶皟锛氶噸鏂版墦寮�姝ら〉闈紝浠庡湴鍧楀璞¢噸鏂拌鍙栨渶鏂扮殑杈圭晫鍧愭爣
+                    // 浠� dikuaiMap 閲嶆柊鑾峰彇鍦板潡瀵硅薄锛堢‘淇濊幏鍙栧埌鏈�鏂扮殑鍊硷級
+                    Dikuai updatedDikuai = Dikuai.getDikuai(targetLandNumber);
+                    if (updatedDikuai != null) {
+                        String latestBoundary = updatedDikuai.getBoundaryCoordinates();
+                        new Dikuanbianjipage(getOwner(), getTitle(), latestBoundary, updatedDikuai).setVisible(true);
+                    } else {
+                        // 濡傛灉鑾峰彇澶辫触锛屼娇鐢ㄥ綋鍓嶅��
+                        new Dikuanbianjipage(getOwner(), getTitle(), currentOptimized, dikuai).setVisible(true);
+                    }
                 });
             });
         });
@@ -189,7 +174,8 @@
             Dikuai.saveToProperties();
             this.result = trimmed;
             JOptionPane.showMessageDialog(this, "鍦板潡杈圭晫鍧愭爣宸叉洿鏂�", "鎴愬姛", JOptionPane.INFORMATION_MESSAGE);
-            dispose();
+            // 涓嶉��鍑洪〉闈紝鍙洿鏂版樉绀�
+            // dispose(); // 绉婚櫎閫�鍑洪�昏緫
         });
 
         closeBtn.addActionListener(e -> dispose());

--
Gitblit v1.10.0