| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package com.mes;
- import com.mes.core.StationConfig;
- import com.mes.ui.LoginFrame;
- import com.mes.ui.MainFrame;
- import com.mes.util.LockUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.swing.*;
- import java.awt.*;
- /**
- * 通用MES客户端启动入口
- */
- public class App {
- private static final Logger log = LoggerFactory.getLogger(App.class);
- private static MainFrame mainFrame;
- public static void main(String[] args) {
- try {
- if (LockUtil.getInstance().isAppActive()) {
- log.warn("已有一个MES客户端实例正在运行,当前实例退出");
- return;
- }
- } catch (Exception e) {
- log.error("无法建立客户端单实例锁,程序退出", e);
- return;
- }
- log.info("========================================");
- log.info("通用MES客户端启动");
- log.info("========================================");
- // 加载配置
- StationConfig config;
- try {
- config = StationConfig.getInstance();
- // 应用项目配置:将运行时保存的设备IP覆盖到所有设备连接
- com.mes.core.ProjectConfigManager projectConfig = com.mes.core.ProjectConfigManager.getInstance();
- // 工位号/线体覆盖(单工位场景仅覆盖第一个)
- String lineOverride = projectConfig.getLineSnOverride();
- if (lineOverride != null && !lineOverride.isEmpty()) {
- log.info("应用线体覆盖: {} -> {}", config.getLineSn(), lineOverride);
- config.setLineSn(lineOverride);
- }
- String codeOverride = projectConfig.getStationCodeOverride();
- if (codeOverride != null && !codeOverride.isEmpty() && !config.getStations().isEmpty()) {
- StationConfig.StationInfo first = config.getStations().get(0);
- log.info("应用工位号覆盖: {} -> {}", first.getCode(), codeOverride);
- first.setCode(codeOverride);
- }
- String serverIpOverride = projectConfig.getServerIpOverride();
- if (serverIpOverride != null && !serverIpOverride.isEmpty()) {
- log.info("应用服务器IP覆盖: {} -> {}", config.getServerIp(), serverIpOverride);
- config.setServerIp(serverIpOverride);
- }
- String runtimeIp = projectConfig.getDeviceIp();
- if (runtimeIp != null && !runtimeIp.isEmpty()) {
- for (StationConfig.DeviceConnection conn : config.getDeviceConnections()) {
- if (!runtimeIp.equals(conn.getIp())) {
- log.info("应用项目配置IP覆盖: station_index={}, {} -> {}",
- conn.getStationIndex(), conn.getIp(), runtimeIp);
- conn.setIp(runtimeIp);
- }
- }
- }
- log.info("配置加载成功:");
- log.info(" - 模式: {}", config.getMode());
- log.info(" - 工位数: {}", config.getStationCount());
- for (int i = 0; i < config.getStationCount(); i++) {
- StationConfig.StationInfo station = config.getStation(i);
- log.info(" - 工位{}: {}", i + 1, station.getCode());
- }
- log.info(" - 服务器: {}:{}", config.getServerIp(), config.getTcpPort());
- log.info(" - 设备: {} ({})", config.isDeviceEnabled() ? "启用" : "禁用", config.getDeviceType());
- log.info(" - 当前项目: {} ({})", projectConfig.getCurrentProjectId(),
- projectConfig.getCurrentProject() != null ? projectConfig.getCurrentProject().getName() : "?");
- // 客户端类型由 ClientType.CODE 硬编码(此处 RIVETING),不再由此处传入
- com.mes.util.ClientRuntimeAgent.start(config.getServerIp(), config.getStationCode(0), config.getLineSn(), "com.mes.App");
- } catch (Exception e) {
- log.error("配置加载失败: {}", e.getMessage(), e);
- JOptionPane.showMessageDialog(null,
- "配置文件加载失败: " + e.getMessage(),
- "错误",
- JOptionPane.ERROR_MESSAGE);
- return;
- }
- // 启动UI
- EventQueue.invokeLater(() -> {
- try {
- // 创建主窗口
- mainFrame = new MainFrame(config);
- mainFrame.setVisible(false);
- // 显示登录窗口
- LoginFrame loginFrame = new LoginFrame(mainFrame);
- loginFrame.setVisible(true);
- } catch (Exception e) {
- log.error("启动失败: {}", e.getMessage(), e);
- JOptionPane.showMessageDialog(null,
- "程序启动失败: " + e.getMessage(),
- "错误",
- JOptionPane.ERROR_MESSAGE);
- }
- });
- }
- /**
- * 获取主窗口
- */
- public static MainFrame getMainFrame() {
- return mainFrame;
- }
- }
|