826220679@qq.com
23 小时以前 ea135161eff1dd7c71c159be948e93b50fd1db81
0824
已添加1个文件
已修改6个文件
161 ■■■■ 文件已修改
src/publicsWay/GUIUtils.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicsWay/PacketProcessingSystemB.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicsWay/TrackDataBatchInserter.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/scheduled_task/TrackTableManager.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/window/ContentPanelFactory.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/window/NavigationTreeFactory.java 28 ●●●● 补丁 | 查看 | 原始文档 | 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,16 +1,17 @@
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")); // åœ°å›¾èŠ‚ç‚¹ (一级)
@@ -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秒
-----------------------------------