跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Java大前端java

MES 生产制造执行系统:SpringBoot 后端与 Vue 前端实现

MES 系统采用前后端分离架构,后端基于 SpringBoot,前端使用 Vue.js,数据库为 MySQL。涵盖生产任务管理、设备监控、质量检测等核心模块。通过实时数据采集与分析优化生产排程,支持多角色权限控制。系统的数据表设计及用户登录注册等核心代码逻辑,助力企业实现数字化转型。

利刃发布于 2026/4/5更新于 2026/5/2426 浏览
MES 生产制造执行系统:SpringBoot 后端与 Vue 前端实现

项目概述

随着工业 4.0 和智能制造的快速发展,制造企业对生产过程的精细化管理需求日益增长。传统生产管理模式依赖人工记录和纸质单据,存在数据滞后、信息孤岛和效率低下等问题。MES(制造执行系统)作为连接企业计划层与控制层的关键桥梁,能够实现生产过程的实时监控、资源优化和数据分析。

本系统采用前后端分离架构,后端基于 SpringBoot 框架实现 RESTful API;前端使用 Vue.js 框架构建动态交互界面;数据库采用 MySQL 存储生产数据。系统功能涵盖生产计划管理、设备监控、质量追溯、物料管理和报表分析等模块。

数据表设计

生产任务数据表

生产任务数据表用于存储生产工单的基本信息,包括任务状态、优先级和关联设备等。

字段名数据类型说明
task_idVARCHAR(32)任务编号(主键)
task_nameVARCHAR(64)任务名称
product_codeVARCHAR(32)关联产品编码
device_bindVARCHAR(32)绑定设备编号
task_statusINT任务状态(0 待执行,1 进行中,2 完成)
priority_levelINT优先级(1-5)
start_timeDATETIME计划开始时间
end_timeDATETIME计划结束时间
create_timeDATETIME任务创建时间(自动生成)

设备监控数据表

设备监控数据表记录生产设备的运行状态和实时参数,用于故障预警和性能分析。

字段名数据类型说明
device_idVARCHAR(32)设备编号(主键)
device_nameVARCHAR(64)设备名称
runtime_hoursFLOAT累计运行时长(小时)
current_statusINT运行状态(0 离线,1 空闲,2 忙碌,3 故障)
last_maintainDATETIME上次维护时间
temperatureFLOAT当前温度(℃)
vibration_levelFLOAT振动幅度(mm/s)
update_timeDATETIME数据更新时间

质量检测数据表

质量检测数据表存储产品质检结果,支持质量追溯与统计分析。

字段名数据类型说明
check_idVARCHAR(32)检测编号(主键)
task_linkVARCHAR(32)关联任务编号
operator_idVARCHAR(32)质检员编号
defect_typeVARCHAR(64)缺陷类型
check_resultINT检测结果(0 合格,1 不合格)
check_timeDATETIME检测时间
remarkTEXT备注信息

技术架构

后端技术:Spring Boot

Spring Boot 作为现代 Java 企业级开发的核心框架,以其'约定优于配置'的设计哲学定义了应用开发模式。核心特性包括零配置启动、嵌入式服务器、生产就绪组件及微服务友好性。

前端技术:Vue.js

Vue.js 以其渐进式框架设计和良好的开发者体验成为现代前端开发的首选解决方案。技术亮点包括响应式数据流、组件化架构及丰富的生态系统。

核心代码

package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.service.UsersService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UsersController {
    @Autowired
    private UsersService userService;
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String captcha, HttpServletRequest request) {
        UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
        if (user == null || !user.getPassword().equals(password)) {
            return R.error("账号或密码不正确");
        }
        String token = tokenService.generateToken(user.getId(), username, "users", user.getRole());
        return R.ok().put("token", token);
    }

    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UsersEntity user) {
        if (userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) != null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }

    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request) {
        UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
        if (user == null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user, null);
        return R.ok("密码已重置为:123456");
    }

    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, UsersEntity user) {
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(UsersEntity user) {
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
        ew.allEq(MPUtil.allEQMapPre(user, "user"));
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id) {
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 获取用户的 session 用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request) {
        Long id = (Long) request.getSession().getAttribute("userId");
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UsersEntity user) {
        if (userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) != null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UsersEntity user) {
        UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));
        if (u != null && u.getId() != user.getId() && u.getUsername().equals(user.getUsername())) {
            return R.error("用户名已存在。");
        }
        userService.updateById(user);
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids) {
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

目录

  1. 项目概述
  2. 数据表设计
  3. 生产任务数据表
  4. 设备监控数据表
  5. 质量检测数据表
  6. 技术架构
  7. 后端技术:Spring Boot
  8. 前端技术:Vue.js
  9. 核心代码
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端实战:基于 Vue3 实现无限滚动、懒加载与瀑布流模块及优化策略
  • 大模型技术指南:从基础理论到实战应用
  • 链表经典算法实战:相交、回文与随机指针复制
  • 前端异常捕获与统一格式化:从 console.log 到服务端上报
  • 突破 LLM 上下文瓶颈:上下文内存虚拟化 CMV 的设计与实践
  • Python 异步编程实战:从 asyncio 入门到并发爬虫
  • Flutter 组件 Spry 适配鸿蒙实战:轻量级端侧 Web 服务构建
  • AI 核心机制深度解析:Skills 如何驱动生产力转型
  • VSCode GitHub Copilot 登录卡顿问题解决方案
  • OpenClaw 本地安装与配置指南:打造专属 AI 执行助手
  • 非科班出身转行 Python 程序员的职业发展与学习路径
  • Gomoon:一款支持多模型与大模型本地调用的桌面工具
  • C++11 详解:列表初始化、右值引用与移动语义
  • Ubuntu 22.04 部署 Openclaw AI 助手实战指南
  • K-RagRec:基于知识图谱检索增强生成的 LLM 推荐系统
  • 降低 AIGC 检测率的 15 个实用提示词与写作技巧
  • AD4630 四通道 SPI 模式配置与采集 FPGA 设计
  • 从大数据开发转向大模型应用:职业转型路径分析
  • 基于 Web 的工业设备监测系统架构设计:非功能需求与数据访问机制
  • 大模型核心面试问题与解析:100 道高频考点梳理

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online