@echo off chcp 65001 >nul setlocal EnableDelayedExpansion :: 设置窗口标题 title MES制造执行系统 - 启动控制台 echo. echo ================================================ echo MES制造执行系统 v1.5.3 启动程序 echo ================================================ echo. :: 检查是否为首次运行 if not exist "db-config.txt" ( echo ⚠️ 检测到首次运行,需要配置数据库 echo. echo 选择配置方式: echo [1] 运行数据库配置向导 (推荐) echo [2] 手动配置后继续启动 echo [3] 退出 echo. set /p "choice=请输入选择 [1-3]: " if "!choice!"=="1" ( echo. echo 正在启动数据库配置向导... call setup-database.bat if errorlevel 1 ( echo ❌ 数据库配置失败,启动中止 pause exit /b 1 ) ) else if "!choice!"=="2" ( echo. echo ⚠️ 请先手动配置数据库后重新运行此脚本 echo 配置文件位置: Back\mes-sorter\src\main\resources\application.properties pause exit /b 0 ) else ( echo 启动已取消 exit /b 0 ) ) :: 显示启动信息 echo [系统信息] echo 版本: v1.5.3 echo 更新时间: 2025-12-20 23:15 echo 特性: 最终优化完善版本 echo. :: 环境检查 echo [1/6] 检查运行环境... :: 检查Java echo 检查Java环境... java -version >nul 2>&1 if errorlevel 1 ( echo ❌ 错误: 未检测到Java环境,请安装JDK 8或更高版本 echo 下载地址: https://adoptium.net/ pause exit /b 1 ) echo ✅ Java环境检测成功 :: 检查Node.js echo 检查Node.js环境... node --version >nul 2>&1 if errorlevel 1 ( echo ❌ 错误: 未检测到Node.js环境,请安装Node.js 18或更高版本 echo 下载地址: https://nodejs.org/ pause exit /b 1 ) echo ✅ Node.js环境检测成功 :: 检查MySQL echo 检查MySQL连接... if exist "db-config.txt" ( :: 读取数据库配置 for /f "tokens=2 delims==" %%i in ('findstr "DB_HOST=" db-config.txt') do set "DB_HOST=%%i" for /f "tokens=2 delims==" %%i in ('findstr "DB_PORT=" db-config.txt') do set "DB_PORT=%%i" for /f "tokens=2 delims==" %%i in ('findstr "DB_USER=" db-config.txt') do set "DB_USER=%%i" for /f "tokens=2 delims==" %%i in ('findstr "DB_PASSWORD=" db-config.txt') do set "DB_PASSWORD=%%i" for /f "tokens=2 delims==" %%i in ('findstr "DB_NAME=" db-config.txt') do set "DB_NAME=%%i" mysql -h!DB_HOST! -P!DB_PORT! -u!DB_USER! -p!DB_PASSWORD! -e "USE !DB_NAME!; SELECT 1;" >nul 2>&1 if errorlevel 1 ( echo ❌ 警告: 数据库连接失败,请检查MySQL服务状态 echo 如需重新配置数据库,请运行: setup-database.bat echo. set /p "continue=是否继续启动?(Y/N) [默认: Y]: " if /i "!continue!"=="N" exit /b 1 ) else ( echo ✅ 数据库连接正常 ) ) else ( echo ⚠️ 数据库配置文件不存在,将尝试使用默认配置 ) :: 检查项目文件 echo. echo [2/6] 检查项目文件... if not exist "Back\mes-sorter\pom.xml" ( echo ❌ 错误: 后端项目文件不存在 pause exit /b 1 ) if not exist "Front\mes-frontend\package.json" ( echo ❌ 错误: 前端项目文件不存在 pause exit /b 1 ) echo ✅ 项目文件检查完成 :: 检查端口占用 echo. echo [3/6] 检查端口占用... netstat -an | findstr ":8080.*LISTENING" >nul 2>&1 if not errorlevel 1 ( echo ⚠️ 端口8080已被占用 set /p "kill8080=是否终止占用进程?(Y/N) [默认: Y]: " if /i not "!kill8080!"=="N" ( for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":8080.*LISTENING"') do ( echo 正在终止进程 %%i... taskkill /F /PID %%i >nul 2>&1 ) ) ) netstat -an | findstr ":3001.*LISTENING" >nul 2>&1 if not errorlevel 1 ( echo ⚠️ 端口3001已被占用 set /p "kill3001=是否终止占用进程?(Y/N) [默认: Y]: " if /i not "!kill3001!"=="N" ( for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":3001.*LISTENING"') do ( echo 正在终止进程 %%i... taskkill /F /PID %%i >nul 2>&1 ) ) ) echo ✅ 端口检查完成 :: 安装前端依赖 echo. echo [4/6] 检查前端依赖... cd Front\mes-frontend if not exist "node_modules" ( echo 首次运行,正在安装前端依赖... echo 这可能需要几分钟时间,请耐心等待... npm install if errorlevel 1 ( echo ❌ 前端依赖安装失败,尝试使用淘宝镜像... npm config set registry https://registry.npmmirror.com npm install if errorlevel 1 ( echo ❌ 依赖安装失败,请检查网络连接 cd ..\.. pause exit /b 1 ) ) echo ✅ 前端依赖安装完成 ) else ( echo ✅ 前端依赖已存在 ) cd ..\.. :: 编译后端项目 echo. echo [5/6] 编译后端项目... cd Back\mes-sorter echo 正在编译Java项目,请稍候... mvn clean compile -q >nul 2>&1 if errorlevel 1 ( echo ❌ 后端编译失败,尝试详细编译... mvn clean compile if errorlevel 1 ( echo ❌ 后端编译失败,请检查代码或网络连接 cd ..\.. pause exit /b 1 ) ) echo ✅ 后端编译完成 cd ..\.. :: 启动服务 echo. echo [6/6] 启动服务... echo. echo ================================================ echo 正在启动MES系统... echo ================================================ echo. echo 🚀 后端服务启动中... (端口:8080) echo 🚀 前端服务启动中... (端口:3001) echo. echo 📝 访问地址: echo 前端界面: http://localhost:3001 echo 后端API: http://localhost:8080 echo API文档: http://localhost:8080/swagger-ui/index.html echo. echo ⚠️ 首次启动可能需要1-2分钟,请耐心等待... echo ⚠️ 启动完成后会自动打开浏览器 echo. echo 📋 操作说明: echo - Ctrl+C: 停止服务 echo - 关闭此窗口: 停止所有服务 echo. :: 创建日志目录 if not exist "logs" mkdir logs :: 启动后端 (后台运行) echo %date% %time% - 启动后端服务 >> logs\startup.log start "MES后端服务" /min cmd /c "cd Back\mes-sorter && mvn spring-boot:run >> ..\..\logs\backend.log 2>&1" :: 等待后端启动 echo 等待后端服务启动... set "backend_ready=false" for /L %%i in (1,1,60) do ( timeout /t 2 /nobreak >nul curl -s http://localhost:8080/actuator/health >nul 2>&1 if not errorlevel 1 ( set "backend_ready=true" goto :backend_started ) echo 后端启动中... (%%i/60) ) :backend_started if "%backend_ready%"=="true" ( echo ✅ 后端服务启动成功 ) else ( echo ⚠️ 后端服务启动超时,但将继续启动前端 ) :: 启动前端 echo %date% %time% - 启动前端服务 >> logs\startup.log start "MES前端服务" /min cmd /c "cd Front\mes-frontend && npm run dev >> ..\..\logs\frontend.log 2>&1" :: 等待前端启动 echo 等待前端服务启动... for /L %%i in (1,1,30) do ( timeout /t 2 /nobreak >nul curl -s http://localhost:3001 >nul 2>&1 if not errorlevel 1 goto :frontend_started echo 前端启动中... (%%i/30) ) :frontend_started echo ✅ 前端服务启动成功 :: 自动打开浏览器 timeout /t 3 /nobreak >nul start http://localhost:3001 :: 显示状态监控 echo. echo ================================================ echo 系统启动完成! echo ================================================ echo. echo 🎉 MES制造执行系统已成功启动 echo 📅 启动时间: %date% %time% echo 🌐 前端地址: http://localhost:3001 echo 🔗 后端地址: http://localhost:8080 echo 📚 API文档: http://localhost:8080/swagger-ui/index.html echo. echo 💡 系统特性: echo ✅ 玻璃态现代化界面设计 echo ✅ 响应式布局 (320px-2560px) echo ✅ 工位实时监控和全屏展开 echo ✅ 生产计划和工件管理 echo ✅ 企业级稳定性和性能 echo. echo 📊 监控信息: echo 📁 日志目录: logs\ echo 📄 启动日志: logs\startup.log echo 🖥️ 后端日志: logs\backend.log echo 🌐 前端日志: logs\frontend.log echo. echo ⚠️ 重要提醒: echo - 请保持此窗口打开以维持服务运行 echo - 关闭此窗口将停止所有服务 echo - 如遇问题请查看日志文件 echo. :: 服务监控循环 :monitor_loop timeout /t 30 /nobreak >nul :: 检查服务状态 curl -s http://localhost:8080/actuator/health >nul 2>&1 if errorlevel 1 ( echo %date% %time% - 后端服务异常 >> logs\startup.log echo ❌ 后端服务连接失败 ) else ( echo %date% %time% - 服务运行正常 >> logs\startup.log ) curl -s http://localhost:3001 >nul 2>&1 if errorlevel 1 ( echo %date% %time% - 前端服务异常 >> logs\startup.log echo ❌ 前端服务连接失败 ) goto :monitor_loop