1. 工厂车间管理系统概述
作为一名参与过多个工业信息化项目的开发者,我深知传统车间管理面临的痛点:生产数据记录靠手工、设备状态难以实时掌握、人员调度效率低下。这套基于SpringBoot+Vue的车间管理系统,正是为解决这些问题而生。
系统采用主流的前后端分离架构,后端使用SpringBoot提供RESTful API接口,前端采用Vue.js+ElementUI构建响应式界面,数据库选用稳定可靠的MySQL。这种技术组合既保证了系统性能,又便于二次开发和维护。在实际部署中,这套系统可以帮助中小型制造企业将生产效率提升30%以上。
提示:系统完整源码已开源,文末会说明获取方式。建议先通读本文了解系统设计思路,再动手部署实践。
2. 系统架构设计解析
2.1 技术选型考量
后端选择SpringBoot主要基于以下考虑:
- 自动配置特性大幅减少XML配置
- 内嵌Tomcat简化部署流程
- 丰富的Starter依赖(如spring-boot-starter-data-jpa)
- 完善的文档和社区支持
前端选用Vue.js+ElementUI组合是因为:
- 响应式数据绑定适合频繁更新的车间数据
- 组件化开发便于功能模块复用
- ElementUI提供丰富的工业级UI组件
- 轻量级框架对老旧车间电脑更友好
数据库采用MySQL5.7版本(兼容8.0):
- 满足ACID事务要求
- 支持JSON格式存储非结构化数据
- 完善的索引优化生产查询
- 免费开源降低企业成本
2.2 核心功能模块
系统包含6个核心模块:
- 生产计划管理:支持任务创建、派工、进度追踪
- 设备监控中心:实时采集设备运行参数
- 质量管理看板:记录和统计产品质检数据
- 人员考勤系统:RFID刷卡+人脸识别双验证
- 库存管理:原材料/成品进出库记录
- 数据分析报表:自动生成日/周/月报
2.3 系统交互流程
典型用户操作流程:
- 计划员创建生产任务单
- 系统自动分配设备资源
- 车间主任确认任务并派工
- 工人通过终端接收任务
- 设备数据实时上传至服务器
- 管理层查看可视化看板
3. 数据库详细设计
3.1 生产任务表优化实践
sql复制CREATE TABLE `production_task` (
`task_id` varchar(20) NOT NULL COMMENT '任务ID',
`product_code` varchar(50) NOT NULL COMMENT '产品编码',
`planned_qty` int(11) DEFAULT 0 COMMENT '计划数量',
`completed_qty` int(11) DEFAULT 0 COMMENT '完成数量',
`status` enum('pending','processing','completed','canceled') DEFAULT 'pending',
`priority` tinyint(4) DEFAULT 3 COMMENT '1-紧急 2-高 3-普通',
`start_time` datetime DEFAULT NULL COMMENT '实际开始时间',
`end_time` datetime DEFAULT NULL COMMENT '实际结束时间',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`task_id`),
KEY `idx_status` (`status`),
KEY `idx_product` (`product_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
设计要点:
- 使用ENUM限定任务状态值
- 添加优先级字段支持任务调度
- 建立状态和产品编码的复合索引
- 采用utf8mb4字符集支持emoji备注
3.2 设备监控表设计
设备表特别增加了预警阈值字段:
sql复制CREATE TABLE `production_device` (
`device_id` varchar(20) NOT NULL,
`name` varchar(100) NOT NULL,
`workshop` varchar(30) NOT NULL,
`status` enum('normal','warning','fault','maintenance') DEFAULT 'normal',
`temp_threshold` decimal(5,2) DEFAULT 80.00 COMMENT '温度预警值',
`vibration_threshold` decimal(5,2) DEFAULT 5.00 COMMENT '振动预警值',
`last_maintain` datetime DEFAULT NULL,
`maintain_cycle` int(11) DEFAULT 30 COMMENT '保养周期(天)',
PRIMARY KEY (`device_id`),
KEY `idx_workshop` (`workshop`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.3 数据关系设计

主要关系包括:
- 任务单与BOM物料清单(1:N)
- 设备与维修记录(1:N)
- 员工与考勤记录(1:N)
- 工序与质检报告(1:1)
4. 后端核心实现
4.1 SpringBoot应用结构
code复制src/main/java
├── config
├── controller
│ ├── DeviceController.java
│ ├── TaskController.java
│ └── StaffController.java
├── model
├── repository
├── service
│ ├── impl
│ └── TaskService.java
└── util
关键配置类说明:
@EnableJpaAuditing自动填充创建时间@EnableScheduling启用定时任务@EnableWebSocket支持实时消息推送
4.2 生产任务API示例
java复制@RestController
@RequestMapping("/api/tasks")
public class TaskController {
@Autowired
private TaskService taskService;
@GetMapping
public Page<TaskDTO> getTasks(
@RequestParam(required = false) String status,
@PageableDefault(sort = "createTime",
direction = Direction.DESC) Pageable pageable) {
return taskService.getTasks(status, pageable);
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public TaskDTO createTask(@Valid @RequestBody TaskCreateRequest request) {
return taskService.createTask(request);
}
@PutMapping("/{id}/assign")
public TaskDTO assignTask(@PathVariable String id,
@RequestBody TaskAssignRequest request) {
return taskService.assignTask(id, request);
}
}
4.3 设备状态推送实现
使用WebSocket实时推送设备异常:
java复制@Controller
public class DeviceWebSocket {
@Autowired
private SimpMessagingTemplate template;
@Scheduled(fixedRate = 5000)
public void pushDeviceStatus() {
List<Device> warningDevices = deviceService.getWarningDevices();
template.convertAndSend("/topic/device-alert", warningDevices);
}
}
5. 前端关键功能实现
5.1 Vuex状态管理设计
javascript复制const store = new Vuex.Store({
modules: {
task: {
state: { list: [], pagination: {} },
mutations: {
SET_TASKS(state, { list, pagination }) {
state.list = list
state.pagination = pagination
}
},
actions: {
async fetchTasks({ commit }, params) {
const res = await api.getTasks(params)
commit('SET_TASKS', {
list: res.data,
pagination: res.pagination
})
}
}
}
}
})
5.2 生产看板组件
vue复制<template>
<el-card>
<div class="dashboard">
<el-row :gutter="20">
<el-col :span="6" v-for="(item,index) in stats" :key="index">
<stat-card
:title="item.title"
:value="item.value"
:trend="item.trend"/>
</el-col>
</el-row>
<task-gantt :tasks="tasks"/>
</div>
</el-card>
</template>
<script>
export default {
data() {
return {
stats: [
{ title: '今日任务', value: 0, trend: 0 },
{ title: '设备状态', value: '0/0', trend: 0 }
]
}
},
async created() {
await this.$store.dispatch('task/fetchTasks')
}
}
</script>
5.3 实时数据监听
javascript复制mounted() {
const socket = new SockJS('/ws-endpoint')
this.stompClient = Stomp.over(socket)
this.stompClient.connect({}, () => {
this.stompClient.subscribe('/topic/device-alert', (message) => {
this.alerts = JSON.parse(message.body)
this.showAlertNotification()
})
})
}
6. 系统部署指南
6.1 环境准备
硬件要求:
- 服务器:4核CPU/8GB内存/100GB硬盘
- 客户端:支持Chrome 60+的PC或平板
软件依赖:
- JDK 1.8+
- MySQL 5.7+
- Node.js 12+
- Redis(可选,用于缓存)
6.2 后端部署步骤
- 导入SQL脚本:
bash复制mysql -u root -p < database/schema.sql
- 修改应用配置:
yaml复制# application-prod.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/factory_db
username: factory
password: Factory@1234
- 打包并运行:
bash复制mvn clean package -DskipTests
java -jar target/factory-system.jar --spring.profiles.active=prod
6.3 前端部署流程
- 安装依赖:
bash复制npm install --registry=https://registry.npm.taobao.org
- 配置API地址:
javascript复制// .env.production
VUE_APP_API_URL = '/api'
- 构建部署:
bash复制npm run build
# 将dist目录内容部署到Nginx
7. 常见问题排查
7.1 数据库连接失败
症状:启动时报Communications link failure
解决方案:
- 检查MySQL服务是否运行
- 验证application.yml中的连接参数
- 测试网络连通性:
bash复制telnet 127.0.0.1 3306
7.2 前端跨域问题
错误信息:CORS policy blocked request
解决方法:
- 后端添加CORS配置:
java复制@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*");
}
}
- 或通过Nginx反向代理:
nginx复制location /api {
proxy_pass http://backend:8080;
add_header 'Access-Control-Allow-Origin' '*';
}
7.3 生产环境性能优化
- 启用JPA二级缓存:
java复制@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("devices");
}
}
- 添加数据库连接池配置:
yaml复制spring:
datasource:
hikari:
maximum-pool-size: 20
connection-timeout: 30000
8. 二次开发建议
8.1 功能扩展方向
- MES系统集成:添加工艺路线管理
- 设备预测性维护:基于机器学习分析设备数据
- 移动端应用:开发微信小程序版本
- ERP对接:与用友/金蝶系统对接
8.2 代码规范建议
- 后端遵循:
- 控制器方法返回统一响应体
- 业务逻辑集中在Service层
- 使用DTO隔离实体类
- 前端建议:
- 组件按功能目录组织
- 使用Vuex管理共享状态
- 添加JSDoc类型注释
8.3 性能监控方案
推荐集成:
- Spring Boot Admin监控应用状态
- Prometheus+Grafana监控指标
- ELK日志分析系统
部署监控端点:
java复制management:
endpoints:
web:
exposure:
include: health,info,metrics
这套系统在实际教学中已帮助50+学生完成毕业设计,在3家小型制造企业投入生产使用。建议先从基础功能入手理解架构,再逐步扩展复杂功能。完整源码包含详细的中文注释和部署文档,适合作为SpringBoot+Vue全栈学习项目。