start.bat 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. @echo off
  2. chcp 65001 >nul
  3. setlocal EnableDelayedExpansion
  4. :: 设置窗口标题
  5. title MES制造执行系统 - 启动控制台
  6. echo.
  7. echo ================================================
  8. echo MES制造执行系统 v1.5.3 启动程序
  9. echo ================================================
  10. echo.
  11. :: 检查是否为首次运行
  12. if not exist "db-config.txt" (
  13. echo ⚠️ 检测到首次运行,需要配置数据库
  14. echo.
  15. echo 选择配置方式:
  16. echo [1] 运行数据库配置向导 (推荐)
  17. echo [2] 手动配置后继续启动
  18. echo [3] 退出
  19. echo.
  20. set /p "choice=请输入选择 [1-3]: "
  21. if "!choice!"=="1" (
  22. echo.
  23. echo 正在启动数据库配置向导...
  24. call setup-database.bat
  25. if errorlevel 1 (
  26. echo ❌ 数据库配置失败,启动中止
  27. pause
  28. exit /b 1
  29. )
  30. ) else if "!choice!"=="2" (
  31. echo.
  32. echo ⚠️ 请先手动配置数据库后重新运行此脚本
  33. echo 配置文件位置: Back\mes-sorter\src\main\resources\application.properties
  34. pause
  35. exit /b 0
  36. ) else (
  37. echo 启动已取消
  38. exit /b 0
  39. )
  40. )
  41. :: 显示启动信息
  42. echo [系统信息]
  43. echo 版本: v1.5.3
  44. echo 更新时间: 2025-12-20 23:15
  45. echo 特性: 最终优化完善版本
  46. echo.
  47. :: 环境检查
  48. echo [1/6] 检查运行环境...
  49. :: 检查Java
  50. echo 检查Java环境...
  51. java -version >nul 2>&1
  52. if errorlevel 1 (
  53. echo ❌ 错误: 未检测到Java环境,请安装JDK 8或更高版本
  54. echo 下载地址: https://adoptium.net/
  55. pause
  56. exit /b 1
  57. )
  58. echo ✅ Java环境检测成功
  59. :: 检查Node.js
  60. echo 检查Node.js环境...
  61. node --version >nul 2>&1
  62. if errorlevel 1 (
  63. echo ❌ 错误: 未检测到Node.js环境,请安装Node.js 18或更高版本
  64. echo 下载地址: https://nodejs.org/
  65. pause
  66. exit /b 1
  67. )
  68. echo ✅ Node.js环境检测成功
  69. :: 检查MySQL
  70. echo 检查MySQL连接...
  71. if exist "db-config.txt" (
  72. :: 读取数据库配置
  73. for /f "tokens=2 delims==" %%i in ('findstr "DB_HOST=" db-config.txt') do set "DB_HOST=%%i"
  74. for /f "tokens=2 delims==" %%i in ('findstr "DB_PORT=" db-config.txt') do set "DB_PORT=%%i"
  75. for /f "tokens=2 delims==" %%i in ('findstr "DB_USER=" db-config.txt') do set "DB_USER=%%i"
  76. for /f "tokens=2 delims==" %%i in ('findstr "DB_PASSWORD=" db-config.txt') do set "DB_PASSWORD=%%i"
  77. for /f "tokens=2 delims==" %%i in ('findstr "DB_NAME=" db-config.txt') do set "DB_NAME=%%i"
  78. mysql -h!DB_HOST! -P!DB_PORT! -u!DB_USER! -p!DB_PASSWORD! -e "USE !DB_NAME!; SELECT 1;" >nul 2>&1
  79. if errorlevel 1 (
  80. echo ❌ 警告: 数据库连接失败,请检查MySQL服务状态
  81. echo 如需重新配置数据库,请运行: setup-database.bat
  82. echo.
  83. set /p "continue=是否继续启动?(Y/N) [默认: Y]: "
  84. if /i "!continue!"=="N" exit /b 1
  85. ) else (
  86. echo ✅ 数据库连接正常
  87. )
  88. ) else (
  89. echo ⚠️ 数据库配置文件不存在,将尝试使用默认配置
  90. )
  91. :: 检查项目文件
  92. echo.
  93. echo [2/6] 检查项目文件...
  94. if not exist "Back\mes-sorter\pom.xml" (
  95. echo ❌ 错误: 后端项目文件不存在
  96. pause
  97. exit /b 1
  98. )
  99. if not exist "Front\mes-frontend\package.json" (
  100. echo ❌ 错误: 前端项目文件不存在
  101. pause
  102. exit /b 1
  103. )
  104. echo ✅ 项目文件检查完成
  105. :: 检查端口占用
  106. echo.
  107. echo [3/6] 检查端口占用...
  108. netstat -an | findstr ":8080.*LISTENING" >nul 2>&1
  109. if not errorlevel 1 (
  110. echo ⚠️ 端口8080已被占用
  111. set /p "kill8080=是否终止占用进程?(Y/N) [默认: Y]: "
  112. if /i not "!kill8080!"=="N" (
  113. for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":8080.*LISTENING"') do (
  114. echo 正在终止进程 %%i...
  115. taskkill /F /PID %%i >nul 2>&1
  116. )
  117. )
  118. )
  119. netstat -an | findstr ":3001.*LISTENING" >nul 2>&1
  120. if not errorlevel 1 (
  121. echo ⚠️ 端口3001已被占用
  122. set /p "kill3001=是否终止占用进程?(Y/N) [默认: Y]: "
  123. if /i not "!kill3001!"=="N" (
  124. for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":3001.*LISTENING"') do (
  125. echo 正在终止进程 %%i...
  126. taskkill /F /PID %%i >nul 2>&1
  127. )
  128. )
  129. )
  130. echo ✅ 端口检查完成
  131. :: 安装前端依赖
  132. echo.
  133. echo [4/6] 检查前端依赖...
  134. cd Front\mes-frontend
  135. if not exist "node_modules" (
  136. echo 首次运行,正在安装前端依赖...
  137. echo 这可能需要几分钟时间,请耐心等待...
  138. npm install
  139. if errorlevel 1 (
  140. echo ❌ 前端依赖安装失败,尝试使用淘宝镜像...
  141. npm config set registry https://registry.npmmirror.com
  142. npm install
  143. if errorlevel 1 (
  144. echo ❌ 依赖安装失败,请检查网络连接
  145. cd ..\..
  146. pause
  147. exit /b 1
  148. )
  149. )
  150. echo ✅ 前端依赖安装完成
  151. ) else (
  152. echo ✅ 前端依赖已存在
  153. )
  154. cd ..\..
  155. :: 编译后端项目
  156. echo.
  157. echo [5/6] 编译后端项目...
  158. cd Back\mes-sorter
  159. echo 正在编译Java项目,请稍候...
  160. mvn clean compile -q >nul 2>&1
  161. if errorlevel 1 (
  162. echo ❌ 后端编译失败,尝试详细编译...
  163. mvn clean compile
  164. if errorlevel 1 (
  165. echo ❌ 后端编译失败,请检查代码或网络连接
  166. cd ..\..
  167. pause
  168. exit /b 1
  169. )
  170. )
  171. echo ✅ 后端编译完成
  172. cd ..\..
  173. :: 启动服务
  174. echo.
  175. echo [6/6] 启动服务...
  176. echo.
  177. echo ================================================
  178. echo 正在启动MES系统...
  179. echo ================================================
  180. echo.
  181. echo 🚀 后端服务启动中... (端口:8080)
  182. echo 🚀 前端服务启动中... (端口:3001)
  183. echo.
  184. echo 📝 访问地址:
  185. echo 前端界面: http://localhost:3001
  186. echo 后端API: http://localhost:8080
  187. echo API文档: http://localhost:8080/swagger-ui/index.html
  188. echo.
  189. echo ⚠️ 首次启动可能需要1-2分钟,请耐心等待...
  190. echo ⚠️ 启动完成后会自动打开浏览器
  191. echo.
  192. echo 📋 操作说明:
  193. echo - Ctrl+C: 停止服务
  194. echo - 关闭此窗口: 停止所有服务
  195. echo.
  196. :: 创建日志目录
  197. if not exist "logs" mkdir logs
  198. :: 启动后端 (后台运行)
  199. echo %date% %time% - 启动后端服务 >> logs\startup.log
  200. start "MES后端服务" /min cmd /c "cd Back\mes-sorter && mvn spring-boot:run >> ..\..\logs\backend.log 2>&1"
  201. :: 等待后端启动
  202. echo 等待后端服务启动...
  203. set "backend_ready=false"
  204. for /L %%i in (1,1,60) do (
  205. timeout /t 2 /nobreak >nul
  206. curl -s http://localhost:8080/actuator/health >nul 2>&1
  207. if not errorlevel 1 (
  208. set "backend_ready=true"
  209. goto :backend_started
  210. )
  211. echo 后端启动中... (%%i/60)
  212. )
  213. :backend_started
  214. if "%backend_ready%"=="true" (
  215. echo ✅ 后端服务启动成功
  216. ) else (
  217. echo ⚠️ 后端服务启动超时,但将继续启动前端
  218. )
  219. :: 启动前端
  220. echo %date% %time% - 启动前端服务 >> logs\startup.log
  221. start "MES前端服务" /min cmd /c "cd Front\mes-frontend && npm run dev >> ..\..\logs\frontend.log 2>&1"
  222. :: 等待前端启动
  223. echo 等待前端服务启动...
  224. for /L %%i in (1,1,30) do (
  225. timeout /t 2 /nobreak >nul
  226. curl -s http://localhost:3001 >nul 2>&1
  227. if not errorlevel 1 goto :frontend_started
  228. echo 前端启动中... (%%i/30)
  229. )
  230. :frontend_started
  231. echo ✅ 前端服务启动成功
  232. :: 自动打开浏览器
  233. timeout /t 3 /nobreak >nul
  234. start http://localhost:3001
  235. :: 显示状态监控
  236. echo.
  237. echo ================================================
  238. echo 系统启动完成!
  239. echo ================================================
  240. echo.
  241. echo 🎉 MES制造执行系统已成功启动
  242. echo 📅 启动时间: %date% %time%
  243. echo 🌐 前端地址: http://localhost:3001
  244. echo 🔗 后端地址: http://localhost:8080
  245. echo 📚 API文档: http://localhost:8080/swagger-ui/index.html
  246. echo.
  247. echo 💡 系统特性:
  248. echo ✅ 玻璃态现代化界面设计
  249. echo ✅ 响应式布局 (320px-2560px)
  250. echo ✅ 工位实时监控和全屏展开
  251. echo ✅ 生产计划和工件管理
  252. echo ✅ 企业级稳定性和性能
  253. echo.
  254. echo 📊 监控信息:
  255. echo 📁 日志目录: logs\
  256. echo 📄 启动日志: logs\startup.log
  257. echo 🖥️ 后端日志: logs\backend.log
  258. echo 🌐 前端日志: logs\frontend.log
  259. echo.
  260. echo ⚠️ 重要提醒:
  261. echo - 请保持此窗口打开以维持服务运行
  262. echo - 关闭此窗口将停止所有服务
  263. echo - 如遇问题请查看日志文件
  264. echo.
  265. :: 服务监控循环
  266. :monitor_loop
  267. timeout /t 30 /nobreak >nul
  268. :: 检查服务状态
  269. curl -s http://localhost:8080/actuator/health >nul 2>&1
  270. if errorlevel 1 (
  271. echo %date% %time% - 后端服务异常 >> logs\startup.log
  272. echo ❌ 后端服务连接失败
  273. ) else (
  274. echo %date% %time% - 服务运行正常 >> logs\startup.log
  275. )
  276. curl -s http://localhost:3001 >nul 2>&1
  277. if errorlevel 1 (
  278. echo %date% %time% - 前端服务异常 >> logs\startup.log
  279. echo ❌ 前端服务连接失败
  280. )
  281. goto :monitor_loop