826220679@qq.com
15 小时以前 ea135161eff1dd7c71c159be948e93b50fd1db81
0824
已添加1个文件
已修改6个文件
165 ■■■■ 文件已修改
src/publicsWay/GUIUtils.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicsWay/PacketProcessingSystemB.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicsWay/TrackDataBatchInserter.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/scheduled_task/TrackTableManager.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/window/ContentPanelFactory.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/window/NavigationTreeFactory.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
systemfile/logfile/openlog.txt 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicsWay/GUIUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package publicsWay;
import javax.swing.*;
import java.awt.*;
public class GUIUtils {
    /**
     * åˆ›å»ºä¸€ä¸ªå¸¦æœ‰æ‰‹åž‹å…‰æ ‡çš„居中JLabel
     * @param text æ ‡ç­¾æ–‡æœ¬
     * @return é…ç½®å¥½çš„JLabel
     */
    public static JLabel createClickableLabel(String text) {
        JLabel label = new JLabel(text, SwingConstants.CENTER);
        label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        return label;
    }
    /**
     * åˆ›å»ºä¸€ä¸ªå¸¦æœ‰æ‰‹åž‹å…‰æ ‡å’ŒæŒ‡å®šå¯¹é½æ–¹å¼çš„JLabel
     * @param text æ ‡ç­¾æ–‡æœ¬
     * @param alignment å¯¹é½æ–¹å¼
     * @return é…ç½®å¥½çš„JLabel
     */
    public static JLabel createClickableLabel(String text, int alignment) {
        JLabel label = new JLabel(text, alignment);
        label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        return label;
    }
}
src/publicsWay/PacketProcessingSystemB.java
@@ -9,6 +9,7 @@
import java.util.regex.Matcher;
import dell_system.MessageViewPanel;
import dell_targets.Dell_tag;
import targets.LocationTag;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -211,20 +212,30 @@
        Dell_tag.updateLocationTagProperty(deviceId, "differentialTime",differentialTime);
        
        // åˆ›å»ºTrackData对象并添加到批量插入器
        LocationTag tag = Dell_tag.getTagByDeviceId(deviceId);
        String deviceName = tag != null ? tag.getDeviceName() : "";
        String company = tag != null ? tag.getCompany() : "";
        TrackData trackData = new TrackData(
            parser.getDeviceId(),
            parser.getUtcTime(),
            parser.getLatitude(),
            parser.getLongitude(),
            parser.getQuality(),
            parser.getSatellites(),
            parser.getHdop(),
            parser.getAltitude(),
            parser.getGeoidHeight(),
            parser.getDifferentialTime(),
            parser.getBattery()
        );
                deviceId,
                deviceName,
                "",
                "",
                "",
                "",
                battery,
                utcTime,
                longitude,
                latitude,
                quality,
                satellites,
                hdop,
                altitude,
                geoidHeight,
                differentialTime,
                "GNGGA",
                company,
                time
            );
        TrackDataBatchInserter.addTrackData(trackData);
    }
src/publicsWay/TrackDataBatchInserter.java
@@ -7,7 +7,6 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import databases.DBConnector;
import scheduled_task.TrackTableManager;
src/scheduled_task/TrackTableManager.java
@@ -32,6 +32,9 @@
    // ä¸»ç®¡ç†é€»è¾‘
    private static void manageTables() {
        try {
            // 0. åˆ›å»ºå½“天的表(如果不存在)
            createTodayTableIfNotExists();
            // 1. åˆ›å»ºæœªæ¥3天的表
            createFutureTables();
            
@@ -43,6 +46,15 @@
        }
    }
    // åˆ›å»ºå½“天的表(如果不存在)
    private static void createTodayTableIfNotExists() throws SQLException {
        String today = LocalDate.now().format(DATE_FORMATTER);
        String tableName = TABLE_PREFIX + today;
        if (!tableExists(tableName)) {
            DBConnector.executeUpdate(getcreateSQL(tableName));
        }
    }
    // åˆ›å»ºæœªæ¥3天的表(包括明天、后天和大后天)
    private static void createFutureTables() throws SQLException {
        for (int i = 1; i <= 3; i++) {
src/window/ContentPanelFactory.java
@@ -18,6 +18,8 @@
import dell_targets.SatelliteDevicePanel;
import dell_targets.TagManagementPanel;
import dell_targets.TagTypeManagementPanel;
import publicsWay.GUIUtils;
import javax.swing.*;
import dell_Fence.FenceDrawerFrame;
@@ -35,8 +37,7 @@
            // æ ¹æ®èŠ‚ç‚¹åç§°åˆ›å»ºå¯¹åº”çš„å†…å®¹é¢æ¿
            if (nodeName.equals(messages.getString("MAP_DISPLAY"))) {
                // è¿™é‡Œè¿”回一个占位面板,实际打开地图的操作在Windows类中处理
                JLabel label = new JLabel(messages.getString("CLICK_TO_OPEN_MAP"), SwingConstants.CENTER);
                panel.add(label, BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(messages.getString("CLICK_TO_OPEN_MAP")), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("TAG_MANAGEMENT"))) {
                // æ ‡ç­¾ç®¡ç†é¢æ¿
                panel.add(new TagManagementPanel(messages), BorderLayout.CENTER);
@@ -45,7 +46,7 @@
                panel.add(new BaseStationManagementPanel(messages), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("GATEWAY_MANAGEMENT"))) {
                // ç½‘关管理面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("DIFF_BASE"))) {
                // å·®åˆ†åŸºç«™é¢æ¿
                panel.add(new DifferentialBaseStationManagementPanel(messages), BorderLayout.CENTER);
@@ -75,25 +76,25 @@
                panel.add(new FenceListPanel(messages), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("DEVICE_OFFLINE"))) {
                // è®¾å¤‡è„±æœºé¢æ¿ï¼ˆå ä½ç¬¦ï¼‰
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("TRACK_RECORD"))) {
                // è½¨è¿¹è®°å½•面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("ACCESS_RECORD"))) {
                // è¿›å‡ºè®°å½•面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("ALARM_RECORD"))) {
                // æŠ¥è­¦è®°å½•面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("HEALTH_RECORD"))) {
                // å¥åº·è®°å½•面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("TAG_POWER"))) {
                // æ ‡ç­¾ç”µé‡é¢æ¿ï¼ˆå ä½ç¬¦ï¼‰
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("BASE_POWER"))) {
                // åŸºç«™ç”µé‡é¢æ¿ï¼ˆå ä½ç¬¦ï¼‰
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("SYSTEM_SETTINGS"))) {
                // ç³»ç»Ÿè®¾ç½®é¢æ¿
                panel.add(new SystemSettingsPanel(messages), BorderLayout.CENTER);
@@ -102,7 +103,7 @@
                panel.add(new MessageViewPanel(messages), BorderLayout.CENTER);                
            } else if (nodeName.equals(messages.getString("SYSTEM_DEBUG"))) {
                // ç³»ç»Ÿè°ƒè¯•面板(占位符)
                panel.add(new JLabel(nodeName, SwingConstants.CENTER), BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(nodeName), BorderLayout.CENTER);
            } else if (nodeName.equals(messages.getString("COMPANY_MANAGEMENT"))) {
                // å…¬å¸ç®¡ç†é¢æ¿
                panel.add(new CompanyManagementPanel(messages), BorderLayout.CENTER);
@@ -125,8 +126,7 @@
                panel.add(new SatelliteDevicePanel(messages), BorderLayout.CENTER);
            } else {
                // å¯¹äºŽæœªå®žçŽ°åŠŸèƒ½ï¼Œæ˜¾ç¤ºå¼€å‘ä¸­æç¤º
                JLabel label = new JLabel(messages.getString("DEVELOPING") + ": " + nodeName, SwingConstants.CENTER);
                panel.add(label, BorderLayout.CENTER);
                panel.add(GUIUtils.createClickableLabel(messages.getString("DEVELOPING") + ": " + nodeName), BorderLayout.CENTER);
            }
        } catch (Exception e) {
            // å¼‚常处理,显示错误信息
src/window/NavigationTreeFactory.java
@@ -1,18 +1,19 @@
package window;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import dell_map.Dell_Map;
import java.util.ResourceBundle;
import java.awt.Font;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class NavigationTreeFactory {
    public static JTree createNavigationTree(ResourceBundle messages) {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(messages.getString("NAVIGATION"));
        
     // åœ°å›¾èŠ‚ç‚¹
        // åœ°å›¾èŠ‚ç‚¹
        DefaultMutableTreeNode mapNode = new DefaultMutableTreeNode(messages.getString("MAP")); // åœ°å›¾èŠ‚ç‚¹ (一级)
        
        String[] mapNames = Dell_Map.getAllMapNames();  
@@ -83,6 +84,27 @@
        tree.setFont(new Font("微软雅黑", Font.PLAIN, 14));
        tree.setShowsRootHandles(true);
        
        // æ·»åŠ é¼ æ ‡ç§»åŠ¨ç›‘å¬å™¨æ¥æ”¹å˜å…‰æ ‡
        tree.addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                int row = tree.getRowForLocation(e.getX(), e.getY());
                if (row >= 0) {
                    tree.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                } else {
                    tree.setCursor(Cursor.getDefaultCursor());
                }
            }
        });
        // æ·»åŠ é¼ æ ‡é€€å‡ºç›‘å¬å™¨ï¼Œæ¢å¤é»˜è®¤å…‰æ ‡
        tree.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseExited(MouseEvent e) {
                tree.setCursor(Cursor.getDefaultCursor());
            }
        });
        // å±•开所有节点
        for (int i = 0; i < tree.getRowCount(); i++) {
            tree.expandRow(i);
systemfile/logfile/openlog.txt
@@ -1254,3 +1254,34 @@
工作时长: 0小时 5分钟 52秒
-----------------------------------
程序启动: 2025-08-24 17:02:01
程序关闭: 2025-08-24 22:05:36
工作时长: 5小时 3分钟 35秒
-----------------------------------
程序启动: 2025-08-24 22:05:39
程序关闭: 2025-08-24 22:05:44
工作时长: 0小时 0分钟 4秒
-----------------------------------
程序启动: 2025-08-24 22:23:47
程序关闭: 2025-08-24 22:28:28
工作时长: 0小时 4分钟 40秒
-----------------------------------
程序启动: 2025-08-24 22:28:30
程序关闭: 2025-08-24 22:29:02
工作时长: 0小时 0分钟 32秒
-----------------------------------
程序启动: 2025-08-24 22:30:18
程序关闭: 2025-08-24 22:31:37
工作时长: 0小时 1分钟 19秒
-----------------------------------
程序启动: 2025-08-24 22:31:39
程序关闭: 2025-08-24 22:31:51
工作时长: 0小时 0分钟 12秒
-----------------------------------
程序启动: 2025-08-24 22:34:30
程序关闭: 2025-08-24 22:38:56
工作时长: 0小时 4分钟 26秒
-----------------------------------
程序启动: 2025-08-24 22:38:58
程序关闭: 2025-08-24 22:39:41
工作时长: 0小时 0分钟 42秒
-----------------------------------