# hgyc-mom **Repository Path**: fs-hgyc/hgyc-mom ## Basic Information - **Project Name**: hgyc-mom - **Description**: 一套开源MES生产管理系统,包含:仓库管理、生产管理、质量管理、设备管理功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 35 - **Forks**: 13 - **Created**: 2025-02-21 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: erp **Tags**: None ## README ## 项目概述 本项目是一个开源的制造执行系统(MES)后端,专为智能制造场景设计。采用模块化架构,支持生产管理、质量管理、设备管理、仓储管理等核心制造功能。基于Spring Boot全家桶构建,提供RESTful API供React前端调用。 ## 技术栈 * 前端采用ant design v5。 * 后端采用Spring Boot 3、sa-token、mybatis-plus、Jetcache、hikari连接池。 * 数据库: MySQL 8.0 + Redis 7.0 * API文档: Knife4j 4.1.0 * 构建工具: Maven 3.8+ * 支持加载动态权限菜单,多方式轻松权限控制。 * 高效率开发,使用代码生成器可以一键生成前后端代码。 ## 项目运行 ### 后端 下载源码:https://gitee.com/fs-hgyc/hgyc-mom.git 1. 执行数据库脚本 在mysql数据库中执行在后端代码根目录/sql文件下最新版本的sql脚本。 2. 安装redis,如已经安装跳过此步骤 3. 启动系统 - 本项目为springboot项目,暂时为单应用,只需要配置 /hgyc-admin下的 `MonApplication` 为启动类,使用IDEA启动即可 - 服务器启动: 把 /hgyc-admin/target下的jar包放到服务器对应目录,执行命令 ```shell nohup java -jar -XX:+UseG1GC -Xmx4096M -Xms2048M hgyc-admin-1.0.jar > mom.log 2>&1 & ``` - docker启动 后期会完善dockerFile ### 前端 下载源码:https://gitee.com/fs-hgyc/hgyc-mom-web.git 需要node.js版本16+ 1. 安装依赖 ```shell pnpm install ``` 2. 本地运行 ```shell pnpm dev ``` 3. 打包 ```shell pnpm build ``` ## 项目结构 ```aiignore |- hgyc-admin web服务启动模块 |- hgyc-base 基础数据模块 |- hgyc-base-api 基础数据实体类、业务接口 |- hgyc-base-biz 基础数据业务代码、数据库操作 |- hgyc-common 公共模块、工具类 |- hgyc-core 框架功能模块 |- hgyc-data 数据中心,提供数据展示 |- hgyc-data-api 数据实体类、业务接口 |- hgyc-data-biz 数据业务代码、数据库操作 |- hgyc-eam 设备管理功能模块 |- hgyc-eam-api 设备管理实体类、业务接口 |- hgyc-eam-biz 设备管理业务代码、数据库操作 |- hgyc-generator 代码生成模块 |- hgyc-mes 生产功能模块 |- hgyc-mes-api 生产模块实体类、业务接口 |- hgyc-mes-biz 生产模块业务代码、数据库操作 |- hgyc-qms 质量功能模块 |- hgyc-qms-api 生产模块实体类、业务接口 |- hgyc-qms-biz 生产模块业务代码、数据库操作 |- hgyc-system 系统基础功能模块 |- hgyc-system-api 给其他模块应用domain和service |- hgyc-system-biz 具体的业务逻辑 |- hgyc-tool 系统工具功能模块 |- hgyc-tool-api 系统工具模块实体类、业务接口 |- hgyc-tool-biz 系统工具业务代码、数据库操作 |- hgyc-wms 仓库功能模块 |- hgyc-wms-api 仓库模块实体类、业务接口 |- hgyc-wms-biz 仓库业务代码、数据库操作 ``` ** 模块说明 ** * hgyc-core和hgyc-common为公共模块,这两个模块不直接引用其他模块。 * 业务模块分成两个小模块,一个api主要放entity、vo、service接口,这样做其他模块直接引用api模块,防止模块循环依赖;另外一个是biz模块主要放接口实现代码。这样分模块主要是为了以后扩展成微服务直接应用api即可。 ## 功能模块说明 ### 系统模块 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7. 参数管理:对系统动态配置常用参数。 9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 10. 登录日志:系统登录日志记录查询包含登录异常。 11. 在线用户:当前系统中活跃用户状态监控。 12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14. 系统接口:根据业务代码自动生成相关的api接口文档。 15. 动态报表:通过自定义sql语句生成动态报表 16. 附件管理:上传、下载文件 17. APP版本管理:对移动端版本进行管理 18. 打印模板:对标签打印、单据打印的模板进行管理 19. 标签打印:对物料标签进行打印,支持bartender工具 ### 业务模块 #### 基础数据 1. 物料管理:对原材料、半成品、成品的信息维护 2. 单位管理:物料的单位信息维护 3. BOM管理:半成品、成品的BOM结构维护 4. 客户管理:客户信息维护 5. 供应商管理:供应商信息维护 #### 仓库管理 1. 销售订单:销售订单增删查改功能 2. 采购订单:采购订单增删查改功能 3. 仓库设置:仓库、库存、库位信息维护 4. 库存管理:库存数量信息查看 5. 采购入库:采购订单入库管理 6. 生产领料:生产工单生产需要的原材料进行领料 7. 生产退料:生产完工之后超领或剩余物料进行退料 8. 销售出库:根据销售订单对成品进行出库操作 #### 生产管理 1. 车间建模:车间、产线、工位信息维护 2. SOP文档:作业指导书文件管理上传 3. 工序管理:工序信息维护 4. 工艺路线:半成品、成品工艺路线信息维护 5. 过站扫码:生产过程中过站扫码SN条码采集生产信息 6. 显示终端:作业指导书显示设备信息维护 7. 包装规则:记录成品包装信息,包装层级 #### 质量管理 1. 检验项: 质检项目信息维护 2. 缺陷管理: 缺陷信息维护 3. 检验设备: 检验设备信息维护 4. 检验模版:配置检验单据需要检验的项目 5. 待检任务:查看当前有那些检验任务需要操作 6. 来料检验:原材料、零件、半成品进行入厂前的检验 7. 过程检验:首检、终检、过程检单据操作 8. 出货检验:在产品发货给客户之前进行最终确认检验 ## 开发规划 ### 1. 数据库设计 * 默认字段 - create_by bigint - create_time datetime - update_by bigint - update_time datetime * 状态字段 字段字段必须使用字符型 * 是否勾选字段 数据类型使用integer,数据库类型使用tinyint ## 使用说明 1. 全局有效失效状态枚举 CommonStatus 值使用integer类型,0和1 是否开启枚举 SysYesNoEnum,值使用string类型, Y和N 2. 使用阿里巴巴的Jecache作为缓存组件 3. 关联外键翻译注解 @Relation, 使用在关联字段外键ID字段上 ```aiignore @Relation(table = "base_material_type", key = "id", column = "name") private Long typeId; ``` table要关联的表名,key关联表的字段名,column要查询的字段 返回到前端时会自动加上 typeIdName 字段,并把值赋值上去 4. 翻译注解@TableDict 很多时候我们实体类中关联表都只存一个关联表的ID,但是在前端需要展示关联表对应的一些字段,这个时候就可以是用@TableDict注解; @DictColumn可以设置多个查询字段,name为查询的字段名,alias为返回前端的字段名 ```java //物料ID,自动翻译 @TableDict(table = "base_material", key = "id" , columns = { @DictColumn(name ="material_code", alias = "materialCode"), @DictColumn(name = "material_name", alias = "materialName") }) private Long materialId; ``` 返回前端数据的时候就回自动关联查询base_material表,通过materialId翻译成base_material表的material_name、material_code字段,返回前端回自动加上一个materialName、materialCode的字段 5. 数据集功能 通过自定义sql语句获取数据 6. 自定义报表,通过选择数据集,配置一个表格