1. 项目概述从零搭建工厂车间管理平台去年帮朋友公司改造他们的车间管理系统时我深刻体会到传统制造业在数字化转型中的痛点——纸质工单满天飞、设备状态靠人盯、生产数据统计滞后。这个基于SpringBootVue的车间管理系统正是为解决这些问题而生特别适合需要快速构建轻量级生产管理平台的中小型制造企业。系统采用前后端分离架构前端用Vue3Element Plus实现响应式界面后端基于SpringBoot 2.7提供RESTful API数据库选用MySQL 8.0。整套代码开箱即用包含完整的权限管理、设备监控、工单流转等核心模块我在原版基础上优化了实时数据推送机制使设备状态更新延迟控制在300ms以内。提示系统默认使用Java 11开发但通过调整pom.xml中的配置可向下兼容到Java 8。建议使用JDK 17获得更好的GC性能2. 技术架构解析2.1 后端技术栈设计SpringBoot的选择绝非偶然——它的自动配置特性让车间现场部署变得极其简单。我在项目中特别配置了多环境支持# application-prod.yml spring: datasource: url: jdbc:mysql://${DB_HOST:localhost}:3306/workshop?useSSLfalseserverTimezoneAsia/Shanghai username: ${DB_USER:prod_user} password: ${DB_PASS:prod_123} jackson: time-zone: GMT8 date-format: yyyy-MM-dd HH:mm:ss关键依赖包括spring-boot-starter-websocket实时通知mybatis-plus-boot-starter数据访问hutool-all工具包easyexcel报表导出2.2 前端工程化实践Vue3的组合式API让复杂状态管理变得清晰。这个项目最值得借鉴的是基于RBAC的动态路由实现// src/store/permission.js const filterAsyncRoutes (routes, roles) { return routes.filter(route { if (route.meta?.roles) { return roles.some(role route.meta.roles.includes(role)) } else { return true } }) }我特别添加了这些优化使用vue-cli的chainWebpack配置gzip压缩按需引入Element Plus组件配置svg-sprite-loader实现图标组件化3. 核心功能实现细节3.1 工单生命周期管理工单状态机是整个系统的核心逻辑我采用状态模式实现public interface WorkOrderState { void confirm(WorkOrderContext context); void start(WorkOrderContext context); void complete(WorkOrderContext context) throws IllegalStateException; } Component Scope(prototype) public class CreatedState implements WorkOrderState { Override public void confirm(WorkOrderContext context) { context.setState(context.getConfirmedState()); // 记录状态变更日志 logService.recordTransition(context.getWorkOrderId(), CREATED, CONFIRMED); } }状态转换时需要注意必须记录完整操作日志触发相关消息通知更新关联设备状态3.2 设备实时监控方案通过WebSocket实现设备看板的关键代码ServerEndpoint(/equipment/status) Component public class EquipmentStatusEndpoint { private static final ConcurrentHashMapString, Session sessions new ConcurrentHashMap(); OnOpen public void onOpen(Session session, PathParam(workshopId) String workshopId) { sessions.put(workshopId, session); // 立即推送当前状态 pushInitialStatus(workshopId); } private void pushInitialStatus(String workshopId) { ListEquipment equipments equipmentService.listByWorkshop(workshopId); session.getAsyncRemote().sendText( JSONUtil.toJsonStr(equipments)); } }实测中发现的性能优化点使用ConcurrentHashMap存储会话采用异步发送模式添加心跳检测机制4. 数据库设计与优化4.1 关键表结构工单表的设计特别注意了查询效率CREATE TABLE work_order ( id bigint NOT NULL AUTO_INCREMENT, order_no varchar(32) NOT NULL COMMENT 工单编号, product_id bigint NOT NULL, planned_quantity int NOT NULL, actual_quantity int DEFAULT NULL, status enum(CREATED,CONFIRMED,PROCESSING,COMPLETED,CANCELLED) NOT NULL, priority tinyint DEFAULT 3 COMMENT 1-紧急 2-高 3-普通, planned_start datetime DEFAULT NULL, planned_end datetime DEFAULT NULL, actual_start datetime DEFAULT NULL, actual_end datetime DEFAULT NULL, create_by bigint NOT NULL, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no), KEY idx_status (status), KEY idx_product (product_id), KEY idx_time_range (planned_start,planned_end) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;4.2 查询优化实践对于车间看板这种高频查询场景我采用了这些策略添加适当的覆盖索引使用JOIN替代子查询对大表进行水平分表按车间ID分片配置MySQL查询缓存5. 部署与运维要点5.1 容器化部署方案Docker Compose文件示例version: 3.8 services: backend: build: ./backend ports: - 8080:8080 environment: - SPRING_PROFILES_ACTIVEprod depends_on: - mysql - redis frontend: build: ./frontend ports: - 80:80 mysql: image: mysql:8.0 volumes: - mysql_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORDroot123 - MYSQL_DATABASEworkshop5.2 性能监控配置SpringBoot Actuator的定制化配置# 暴露健康检查和指标端点 management.endpoints.web.exposure.includehealth,metrics,prometheus # 配置自定义指标 management.metrics.tags.applicationworkshop-management # JVM监控频率 management.metrics.export.prometheus.step30s6. 常见问题排查指南6.1 工单状态异常典型症状状态流转卡在CONFIRMED 排查步骤检查work_order_transition_log表最后记录确认当前用户是否有操作权限查看设备关联状态是否正常检查是否有未完成的质检记录6.2 实时看板数据延迟优化方案检查WebSocket连接状态调整MySQL的wait_timeout参数增加Stomp心跳间隔配置Configuration EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker(/topic) .setHeartbeatValue(new long[] {10000, 10000}); } }7. 二次开发建议基于这个框架扩展时我建议添加OEE设备综合效率计算模块集成PLC数据采集接口开发移动端PDA应用增加预测性维护功能对于毕业设计可以重点扩展基于遗传算法的排产优化利用OpenCV实现产品质量视觉检测结合数字孪生技术做3D车间仿真