ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于Ruoyi的MES系统开发与部署实战:从源码到上线

基于Ruoyi的MES系统开发与部署实战:从源码到上线 简介本资源是一套基于Ruoyi框架开发的前后端分离式制造执行系统MES源码面向制造业信息化开发者、工业软件实施工程师及高校智能制造方向学习者旨在解决生产计划排程、物料与设备协同、仓储条码追溯、多维度统计分析等典型MES落地难题。压缩包共113个文件含41个HTML页面含dashboard、排班日历、库存看板等核心前端视图、22个Python脚本用于数据初始化、条码生成等辅助任务、22张JPG/PNG图表与界面截图、4段MP4操作演示视频覆盖部署与关键功能演示以及CSS/JS样式与配置文件整体大小63.84MB。资源附带详尽部署教程涵盖环境搭建、数据库初始化、前后端联调及权限配置全流程目录结构遵循Ruoyi标准分层设计模块边界清晰便于二次开发与企业级定制。目前已有59人下载学习适合希望快速掌握MES系统架构与制造业数字化实践的中高级Java全栈开发者。 做MES系统开发这几年我见过太多团队从零搭建Spring Boot后端起家搞了大半年结果连用户权限、菜单管理、操作日志这些“地基”都还没磨平更别说碰生产工单、工艺路线、报工质检这些真正的业务核心。后来接触了Ruoyi这个框架发现MES这种强定制、高碎片化的系统其实最适合站在一套成熟快速开发框架的肩膀上做。这篇就结合一份我实际跑通的基于Ruoyi的前后端分离MES源码把框架选型、业务模块设计、代码结构还有完整部署过程一起理清楚重点把部署里的坑一个个抠出来。这份源码不是那种只能在本地localhost看的玩具Demo它把MES系统里最核心的几块业务都做了进去包括基础数据管理、生产工单、报工管理、质量检验、设备管理、生产追溯还内置了Ruoyi全家桶的权限、菜单、定时任务、代码生成能力。适合有一定Java基础、想快速进入MES领域做二次开发的工程师也适合企业里想低成本搭建一套内部生产管理系统的技术团队参考。我会尽量用实际部署过的方式来讲不会给你一堆跑不通的理论。1. 开发MES选型为什么绕不开Ruoyi这类快速开发框架MESManufacturing Execution System制造执行系统在国内制造业里的地位越来越重它处在ERP和车间设备层之间负责把生产计划拆成可执行的生产工单再往下采集设备、人员、物料的实时数据往上反馈生产进度和异常。但MES天生就是个“定制化怪物”——每个工厂的车间布局不一样、工艺路线不一样、报表格式不一样几乎找不到一套开箱即用还能直接硬上的通用系统。所以MES项目的开发模式基本都是从一套基础框架上开始改。1.1 MES系统的功能边界别把MES做成ERP很多刚接触MES的人第一个问题就是MES到底包含哪些功能这个问题搞不清楚后面的表结构设计、模块划分都会跑偏。我见过的失败项目里有一大半是团队把MES做成了ERP的简化版——拼命做采购、销售、财务结果车间真正需要的报工采集和不良追溯没做。这份源码里的功能边界比较清晰核心就是生产域的事生产基础数据物料档案、产品BOM物料清单、工艺路线、工位/设备台账、班次班组生产执行生产工单下达、工单派工、工序报工、完工入库、工时统计质量管控来料检验、过程检验、完工检验、不良品记录、质量追溯设备与工装设备台账、设备点检、维修保养记录生产追溯通过工单、批次、序列号反查生产过程数据这个范围定下来你才能知道代码要写什么。ERP管的是“钱和账”MES管的是“车间里此时此刻发生了什么”两者数据有交集但业务重点完全不同。1.2 Ruoyi为MES开发提供了哪些现成的“地基”用Ruoyi框架做MES最大的价值不是它那点儿现成的CRUD代码而是它把企业级系统里最绕不开的那一堆通用能力都提前做好了。对比一下从零搭建和直接基于Ruoyi开发的差距你会看得更清楚能力项从零开发成本Ruoyi框架现状用户/角色/菜单权限要自己设计RBAC表、写鉴权拦截器至少一两周内置完整的RBAC模型菜单、按钮、数据权限都可配置登录认证要自己接JWT或Session、处理刷新和过期还得防安全漏洞Spring Security JWT已封装好验证码、登录状态一套齐全操作日志/登录日志得写AOP切面或者手动埋点内置Log注解和日志查询页面一个注解搞定代码生成器没有得纯手写CRUD连表建好后一键生成Controller、Service、Mapper、Vue页面定时任务引入Quartz后还要自己管理任务持久化内置Quartz的可视化管理页面在线增删改执行多数据源要自己配置动态数据源切换支持多数据源配置适合MES库和业务库分离MES项目里大量的模块其实就是“有业务含义的CRUD”比如物料档案、设备台账、工艺路线维护。这些放在Ruoyi的代码生成器下效率高得不是一点半点。我试过一张字段设计清楚的数据表从生成到调通前端页面十分钟以内能跑起来剩下的大头时间全都在改业务逻辑和校验规则上。1.3 为什么不推荐直接改SaaS版MES或纯手工从零搭建你可能会问市面上也有开源的SaaS版MES系统改成私有化部署不行吗我的经验是那种大而全的系统代码耦合度高里面塞了大量你永远用不到的业务模块改起来牵一发动全身。而且很多SaaS版系统底层表结构是为多租户设计的单企业私有化部署反而要处理一堆冗余字段和租户隔离逻辑。纯手工从零搭建的问题更明显——等你花两个月把用户权限、操作日志、代码生成这套基础设施做完业务方早就等不及了。MES的价值在业务侧不在框架侧与其重复造轮子不如站在Ruoyi的底座上把资源全部怼到生产业务模块上。这也是我推荐用Ruoyi做MES底层框架的根本原因。2. 这份MES源码的模块拆解生产管理域到底包含什么拿到源码后别急着启动先把代码里的业务模块和数据库表结构过一遍。我见过的远程部署翻车现场一小半是因为没搞清楚表之间的关系把工单关联错了工艺路线导致报工数据全乱。下面按业务模块逐个拆。2.1 基础资料物料、BOM、工艺路线三者怎么组织MES里的基础资料比ERP要更细因为车间执行需要的不是“这个物料叫什么”而是“这个物料在哪个工序用、用什么参数加工”。源码里的基础模块包含三张核心表物料档案表mes_product除了物料编码、名称、规格型号、单位这些常规字段还会带默认工序信息、是否序列号管理、默认仓库仓位。设计时尽量把物料编码规则定好后面所有单据都依赖这个编码做关联。BOM表mes_bom / mes_bom_detailBOM是产品结构清单用主从表结构。主表记录产品编码、版本号、状态草稿/发布/失效子表记录组成物料、用量、损耗率。这里有个容易踩的坑直接照搬ERP里的BOM结构但MES侧还需要关注替代料、有效期、工位绑定所以建议在子表里增加“工位编码”“替代料标记”这类字段。工艺路线表mes_route / mes_route_process工艺路线是MES和ERP差异最大的地方。一张工艺路线主表对应多道工序子表每道工序要定义工序编码、工序名称、工位、标准工时、报工方式按件/按批/按工时、检验策略是否必检。实际项目中我会建议物料、BOM、工艺路线都加上“版本号”和“状态”字段改版走发布流程不能允许业务员随手把正在生产中的工艺路线给改了。2.2 生产工单的流转下达、派工、报工、完工生产工单是MES的主线单据源头可以是手工创建也可以从ERP同步源码里工单模块的流转链路是这样的工单创建选择产品编码后自动带出BOM和工艺路线填写计划数量、计划开始/结束时间。源码里这个环节会做一次校验——检查BOM和工艺路线是否已发布防止把草稿版本带到生产。工单下达/派工工单审核通过后在车间侧会生成工序任务。派工可以到班组或到具体工位在MES里通常细分到“工序工位班次”。工序报工操作工在工位上完成加工后对当前工序报工系统自动记录“合格数量、不良数量、工时”。源码里报工页面做了防呆处理完工数量不能大于计划数量首道工序报工前必须确认领料记录存在。工单完工最后一道工序报工完成后工单状态自动变为“完工”此时可以触发后续的成品入库和成本核算。这个模块的代码实现上最核心的是工单状态机。建议用状态字段INIT-草稿、RELEASED-已下达、DOING-生产中、FINISHED-已完工、CANCELED-已取消来驱动而不是直接删数据。报工记录只允许新增不允许修改删除防止生产数据被篡改——这是MES的硬要求做追溯时必须保证原始数据不可变。2.3 质量与追溯质检单怎么回到生产批次质量模块不能独立于生产存在否则就是一套摆设。源码里质量模块分为检验任务和不良记录。检验任务由工序节点触发如果当前工序设置了“必检”报工完成后自动生成一条检验单检验员填写抽检数量、合格数量、不良原因分类。追溯这块是MES的灵魂功能。正反向追溯的实现基础是“批次号”贯穿全流程工单下达时生成生产批次号比如WO日期工单号流水作为追溯主键每道工序报工时记录批次号、工位、操作工、设备、物料批次成品入库时带批次号后续通过批次号反查所有工序记录源码里追溯页面做了两种查询正向追踪从原料批次查生产工单、工序记录和反向追踪从成品批次反查物料批次。核心SQL思路就是通过主外键把mes_work_order、mes_work_report、mes_product_batch这几张表串起来。2.4 看板与报表车间数据怎么展示MES项目里车间大屏看板和产量报表往往是老板最关心的东西——因为看得见、摸得着也最容易出效果。源码里这块不算重但思路值得借鉴产量看板按产线/工位实时汇总当日产量、工时、达成率后端提供一个聚合查询接口前端用轮询或WebSocket刷新数据。工单进度看板显示每个工单当前完成到第几道工序、数量进度如何这张看板对生产计划员最有用。不良统计报表按不良类型、工位、时间段汇总不良数量和不良率用来支持质量改善。技术上的实现并不复杂用Ruoyi自带的报表工具或者集成ECharts都行难的是数据口径得和业务定义一致。比如“达成率”分母到底是计划数量还是标准产能这个必须在后端SQL里写死不能让前端自由发挥。3. 前后端项目的代码结构拿到源码后先看哪几个目录说实话我第一次拿到这套源码的时候也有点懵——如果不了解Ruoyi框架的项目结构找半天可能都不知道MES业务代码放在哪个包里。这里把后端和前端的关键目录都梳理一遍你按图索骥就行。3.1 后端分层从Controller到Mapper一次完整请求怎么走后端是标准的Maven多模块工程模块划分如下模块作用对应Maven目录ruoyi-admin启动入口、后台管理Controllerruoyi-adminruoyi-framework框架核心配置安全、切面、AOP、工具类ruoyi-frameworkruoyi-system系统管理模块用户、角色、菜单、部门ruoyi-systemruoyi-quartz定时任务模块ruoyi-quartzruoyi-generator代码生成器ruoyi-generatorruoyi-common通用工具类、通用注解ruoyi-commonmes-systemMES业务模块工单、BOM、工序、报工、设备等mes-system一个典型的请求链路是前端Vue页面调用API接口 → 经过Nginx/网关 → 到达Spring Boot的Controller → Service层处理业务逻辑 → Mapper层操作数据库 → 返回JSON给前端。Ruoyi框架里默认用MyBatis做持久层SQL写在Mapper.xml里复杂的MES报表查询基本都在这里写原生SQL。看代码的时候你重点看三个地方就够了mes-system模块的Controller了解暴露了哪些接口接口的URL前缀是/mes/开头mes-system模块的Service实现类看业务逻辑是怎么写的工单状态流转的判断都在这层resources下的Mapper.xml看SQL语句怎么写特别是多表关联查询和报表聚合查询3.2 前端Vue项目页面、API、路由和权限的对应关系前端用的Vue2 Element UI工程结构清晰。我建议按这个顺序去读|-- src | |-- api # API接口定义跟后端的Controller一一对应 | | |-- mes/ # MES业务接口 | |-- views | | |-- mes/ # MES业务页面 | | | |-- workorder/ # 生产工单页面 | | | |-- product/ # 物料档案页面 | | | |-- quality/ # 质量管理页面 | | | |-- equipment/ # 设备管理页面 | |-- router # 路由配置跟菜单关联 | |-- store # Vuex状态管理存用户信息、字典数据 | |-- utils # 公共工具方法前端和后端的对应关系是关键src/api/mes/workOrder.js里的接口函数对应后端WorkOrderController里的请求方法。新来的同事经常卡在“明明写了后端接口前端调不通”的问题上十有八九是忘了在src/api下新增对应的接口文件或者URL路径写错了。Ruoyi前端的权限控制核心在路由守卫里它会把用户角色加载出的菜单和路由表做匹配。MES系统的菜单你初始化SQL里插了菜单之后要给角色重新授权否则用户登录后看不到新菜单——这个问题几乎每次部署新环境都会有人问。3.3 代码生成器MES模块最常见的产出路径Ruoyi的代码生成器是我最推荐你优先用的功能。在MES项目里物料档案、设备台账、班次管理、仓库管理这类基础资料模块用代码生成器做最快。用生成器之前先把数据库表建好表注释和字段注释务必写清楚因为注释会直接变成页面上的中文标签。然后走流程在系统工具 - 代码生成里导入数据表编辑生成配置包名填mes模块名填product业务名填product生成代码后把文件解压覆盖到对应模块目录重启后端刷新菜单一个基础资料管理页面就出来了生成出来的代码前端列表、新增、编辑、删除流程都能跑通。真正需要改的地方是字段校验规则、下拉框数据源比如班次要关联班次表、导入导出模板。改起来很集中不会影响其他模块。4. 部署实操从空服务器到MES启动成功的完整清单如果前面是帮你理解代码这部分就是实打实的作业。这份MES项目部署我不仅在本机Windows环境跑通过也在Linux服务器上用Nginx部署过生产环境。下面这份清单是我实际操作顺序的完整还原。4.1 环境准备JDK、MySQL、Redis、Node部署前先把环境依赖装齐版本必须对牢否则后面各种莫名其妙的问题都是版本不兼容引起的。我个人推荐的环境组合如下中间件推荐版本部署要点JDK1.8或11如果用Jdk17需要改框架配合不建议新手一上来就上17MySQL5.7或8.08.0要改驱动配置5.7相对省事Redis5.x及以上Ruoyi依赖Redis缓存和Session必须启动Node.js14.x或16.x用于前端npm install和构建Nginx1.18及以上生产环境反向代理前端静态文件和API请求Maven3.6及以上后端项目构建打包服务器如果是最小化安装的CentOS先装基础命令yum install -y git vim wget net-tools lsofMySQL安装完后要把字符集设为utf8mb4否则中文会乱码。在my.cnf的[mysqld]下加character-set-serverutf8mb4 collation-serverutf8mb4_general_ciRedis安装完需要设置密码吗我的建议是如果不是暴露在公网先不设密码开发环境图方便但生产环境一定要设密码然后在后端配置里对应填上。很多人部署后登录不上查半天发现是Redis没起来或者是Redis密码和后端配置不一致。4.2 数据库初始化SQL脚本执行顺序和账号配置这是最容易出错的环节。源码里带了数据库初始化脚本通常有多个SQL文件。我看过太多人拿着一个ry_2024.sql就往库里导结果MES业务表全都没有。正确的做法是先建两个库如果脚本里没有建库语句CREATE DATABASE IF NOT EXISTS ry-vue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS mes DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;然后按顺序执行ry_2024.sql或类似命名Ruoyi框架基础表包括用户表、角色表、菜单表、部门表、字典表mes_init.sql或类似命名MES业务表包括工单、BOM、工艺路线、报工记录等如果有mes_menu.sqlMES菜单初始化插入菜单记录到sys_menu表执行时用命令行导入避免可视化工具在大文件时卡死mysql -uroot -p --default-character-setutf8mb4 /opt/sql/ry_2024.sql mysql -uroot -p --default-character-setutf8mb4 /opt/sql/mes_init.sql mysql -uroot -p --default-character-setutf8mb4 /opt/sql/mes_menu.sql导入完验证一下表数量use ry-vue; show tables;看到几十张基础表才算导入成功。MES表要检查mes_work_order等关键表是否存在。这里有个细节菜单表sys_menu里的表结构里如果依赖parent_id做树形结构脚本会默认把父菜单设为0。你登录系统后可能会发现菜单顺序不对去菜单管理里调整排序值就行不影响功能。4.3 后端打包与配置application-druid.yml、数据库连接、Redis后端配置集中在一个地方ruoyi-admin/src/main/resources/。先改application-druid.yml# 主数据源Ruoyi默认 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: master: url: jdbc:mysql://localhost:3306/ry-vue?useUnicodetruecharacterEncodingutf8mb4zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root password: 你的密码 slave: enabled: false # MES业务数据源如果源码里MES模块独立建了数据源 mes: enabled: true url: jdbc:mysql://localhost:3306/mes?useUnicodetruecharacterEncodingutf8mb4zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root password: 你的密码如果源码里MES模块是走同一个数据源那就只配一个主数据源即可。判断方法很简单看mes-system模块的Service实现类里有没有DataSource(DataSourceType.MES)这样的注解——如果有就要单独配MES数据源没有则统一走主库。接下来改application.yml里的Redis配置spring: redis: host: localhost port: 6379 password: # 没设密码就留空 database: 0后端还涉及一个文件上传路径配置找到ruoyi.profile这个配置项ruoyi: profile: /data/upload这个目录要提前建好否则有人上传图片/附件时会报错mkdir -p /data/upload接下来开始打包。后端是Maven工程在项目根目录执行mvn clean package -Dmaven.test.skiptrue如果Maven没装用IDE工具里Maven面板也可以。打包成功后在ruoyi-admin/target/下找到ruoyi-admin.jar上传到服务器。启动方式不复杂但注意要用nohup挂后台并且指定端口默认8080cd /opt/mes nohup java -jar ruoyi-admin.jar --server.port8080 /opt/mes/logs/app.log 21 启动日志里看到Started RuoYiApplication字样说明启动成功。用tail -f /opt/mes/logs/app.log实时看日志比等服务完全起完再查要省时间。4.4 前端构建与Nginx反向代理配置前端工程在源码目录的ruoyi-ui或mes-ui文件夹里。先装依赖cd /opt/mes/ruoyi-ui npm install --registryhttps://registry.npmmirror.com如果npm install报错多半是网络问题国内服务器建议换淘宝源npm config set registry https://registry.npmmirror.com依赖装完后做构建。这里注释文件不用多动关键参数在.env.production文件里# 生产环境API请求路径 VUE_APP_BASE_API /prod-api意思是前端在构建时所有接口请求都会带上/prod-api前缀之后由Nginx把这个前缀反向代理到后端8080端口。构建命令npm run build:prod构建成功后生成一个dist目录这就是你要部署的静态文件。把它整个上传到服务器的/opt/mes/dist下。接着配置Nginx。配置文件在/etc/nginx/conf.d/mes.confserver { listen 80; server_name your_domain_or_ip; gzip on; gzip_min_length 1k; gzip_types text/plain text/css application/json application/javascript text/xml application/xml; location / { root /opt/mes/dist; index index.html; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /profile/ { alias /data/upload/; } }Nginx缓存问题也比较常见每次前端重新构建后刷新页面还是旧页面。解决办法就是try_files $uri $uri/ /index.html;加上同时每次发版后要清浏览器缓存或者在index.html里给静态资源加版本号。配置检查没问题后重载Nginxnginx -t nginx -s reload4.5 启动验证从登录页到第一个业务页面所有配置完成后检查服务运行状态ps -ef | grep ruoyi ps -ef | grep redis ps -ef | grep nginx然后用浏览器访问服务器IP正常会出现登录页。默认账号admin密码是初始化SQL里预设的通常是admin123如果不对去sys_user表里重置。登录成功后按下面几个验证点走一遍确定部署真正成功左侧菜单能正常显示“系统管理”和“MES管理”说明后端和菜单数据源都通了任意打开一个MES页面如物料档案列表能加载出数据说明MES数据源和数据库初始化SQL都OK新增一条测试数据再删除检查数据库里确实落库了退出登录再登录一次验证Redis缓存正常刷新页面后登录态还在说明JWT配置和令牌刷新逻辑正常如果页面能打开但接口报错最常见的两个原因一是Nginx代理路径和前端API前缀不匹配前端/prod-apiNginx没配对应location二是跨域问题。用浏览器F12看Network面板请求返回的状态码和响应信息比猜快得多。5. 部署完成后上线前必须检查的几个坑这章是我最想写的内容。MES这套源码部署我反反复复在不同机器上搭过环境差异不小也踩了不少坑。写出排查链路比直接给你答案更有用——因为环境不同同一个现象背后的原因可能不一样。5.1 JDK版本Jdk8和Jdk17踩到的坑Ruoyi官方在新版上已经兼容了Jdk17但如果你拿到的源码基于较老版本直接用Jdk17编译会报一堆错误。我一开始图省事服务器上默认的Java是17结果mvn clean package直接失败报错信息是java: 程序包javax.annotation不存在。排查链路先看Maven编译日志定位到具体报错模块java -version确认默认JDK版本用alternatives --config java切换系统Java版本或安装JDK8后设置JAVA_HOMEJDK版本切换后Maven可能还引用旧环境要在mvn命令前显式指定export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export PATH$JAVA_HOME/bin:$PATH mvn clean package -Dmaven.test.skiptrue这种情况下代码里如果用了javax.annotation.Resource注解Jdk17后要改成jakarta.annotation.Resource但MES源码里大量代码还是老写法所以老老实实用Jdk8最稳妥后面有精力再升级。5.2 MySQL 8.x连接配置时区、SSL、驱动类名如果用MySQL 8.0且后端配置写的是老驱动com.mysql.jdbc.Driver启动会直接报错找不到驱动类。正确做法是用新驱动com.mysql.cj.jdbc.Driver并且在连接URL里补上时区参数。我遇到过的情况是这样报表页面查询数据时全部报日期转换异常就是因为数据库连接没指定时区MySQL 8默认时区跟系统不一致导致DATETIME字段读取差8小时。我的排查过程很简单先看后端日志搜索关键字CannotCreateTransactionException或DateTimeException确认MySQL版本mysql --version修改application-druid.yml中的连接URL加上serverTimezoneAsia/Shanghai改完之后不需要重启数据库重启后端项目即可。这个坑很隐蔽因为登录功能很可能正常只有涉及日期数据的模块才报错。5.3 前端代理和Nginx转发登录接口404的排查部署完成后如果登录请求报404先不要怀疑后端代码——大概率是Nginx的代理配置问题。我第一次部署时就卡在这前端能打开验证码也能显示但点登录后接口直接404。当时我的排查链路是浏览器F12打开Network找登录接口的Request URL发现请求路径是/prod-api/login直接访问http://服务器IP/prod-api/login返回404确认Nginx配置里location /prod-api/已经写了重载了还404在服务器上测试后端接口curl http://127.0.0.1:8080/login返回200最后发现问题出在Nginx的proxy_pass配置写成了http://127.0.0.1:8080没有末尾斜杠导致请求被转发成/prod-api/login而不是/login修正方式就是proxy_pass http://127.0.0.1:8080/;末尾必须带斜杠。这个细节碰到过一次就再也不会忘了。5.4 数据权限和看不到MES菜单的问题如果你用系统管理员admin登录数据都在但新开的普通用户看不到MES菜单这往往不是代码问题而是Ruoyi的权限数据没配好。Ruoyi的菜单权限是“角色-菜单”关联关系初始化SQL里插入了菜单记录但不会自动把菜单授权给所有角色。解决方法用管理员登录系统系统管理 - 角色管理 - 找到要给权限的角色点“数据权限”或“菜单权限”勾选MES相关的菜单保存重新登录该角色用户还有一种是数据权限的问题用户登录了菜单也有但MES列表页面查不到数据。这时要看Controller上的DataScope注解和部门数据权限配置如果用户所属部门不在数据权限范围内查询会被自动过滤。调整角色的数据权限范围为“所有数据权限”或者把用户加对部门问题就会消失。5.5 部署后端口、防火墙、安全组的三连坑最后一个很低级但很多人踩的坑服务都启动了页面就是访问不了。先别急着怀疑代码用curl在本机测一下curl http://localhost:80 curl http://localhost:8080如果本机能通外部访问不了那就是防火墙或云服务器安全组没放行端口# 查看防火墙状态 systemctl status firewalld # 临时放行80和8080端口 firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --zonepublic --add-port8080/tcp --permanent firewall-cmd --reload如果是云服务器还要去控制台的安全组规则里放行80端口。这个环节我帮别人排查过很多次最后发现十有八九是安全组只开放了22SSH端口80和8080都没放行。把这一条留在最后写是想提醒你部署MES是个系统性工程前后端代码、数据库、中间件、网络环境缺一不可排查问题时按“数据链路”一层层剥下去比乱试要高效得多。最后分享我的一个实际体会MES系统的技术难点从来不在框架本身而在于你能否把车间业务正确翻译成数据表和代码逻辑。Ruoyi这种框架解决了“系统怎么搭起来”的问题但“系统怎么符合车间管理要求”要靠你自己去理解工艺流程、理解报工逻辑、理解质量追溯。在用这套源码跑通部署之后我建议你下一步不要急着加新功能而是先把工单、报工、追溯这条主链路的数据完整走一遍把表字段的关联关系印在脑子里。后面不管是被要求加报表、加看板还是对接设备采集你都会发现根基牢了往上盖楼就快多了。本文还有配套的精品资源点击获取
返回列表