ModernWMS 开源仓库管理系统实战:从收货上架到发货全流程
【免费下载链接】ModernWMSThe open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the original commercial system wms function and opened it up for free, hoping to help the majority of small and medium-sized enterprises. At present, the system supports cross-platform。项目地址: https://gitcode.com/GitHub_Trending/mo/ModernWMS
旺季爆单,库存还在 Excel 里手工对,账实差异要到盘库才暴露——这正是 ModernWMS 要解决的仓储管理难题。这是一套开源、简易且完整的 WMS(仓库管理系统),覆盖收货、库存、发货全流程,面向 IT 预算有限的中小企业,基于 Apache-2.0 协议,可免费使用和二次开发。
项目定位与能力矩阵
ModernWMS 是从多年商业 ERP 项目中剥离出来的仓储管理子系统,面向中小企业的进销存与仓内作业场景,保留了商业系统中真正实用的功能,去掉了冗余配置。
| 功能模块 | 一句话说明 | 典型场景 |
|---|---|---|
| 收货管理 | 到货通知、卸货、分拣、上架全流程 | 采购到货入库 |
| 库存管理 | 实时库存、库位库存、库存龄期统计 | 库存查询与库位分配 |
| 仓内作业 | 加工、移动、冻结、调整、盘点五类作业 | 仓内日常操作与盘盈亏 |
| 发货管理 | 发货、拣货、打包、称重、出库状态跟踪 | 销售订单出库 |
| 基础设置 | 公司、商品、仓库、角色菜单等主数据配置 | 系统初始化与权限分配 |
最短路径跑通 ModernWMS
环境要求如下:
| 项目 | 最低版本 | 备注 |
|---|---|---|
| 操作系统 | Ubuntu 18.04 / Windows 10 1607 | 跨平台部署 |
| .NET SDK | 7.0.0+ | 编译后端 |
| NodeJS | 16.13.1+ | 编译前端 |
| 包管理器 | yarn 1.x | 前端依赖安装 |
| 数据库 | SQLite(内置)/ MySQL 8 | 通过配置切换,默认用内置 SQLite |
git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS cd frontend && yarn && yarn dev cd backend && dotnet run --project ModernWMS- 克隆仓库,前后端分离结构一目了然。
- 前端执行
yarn dev,开发服务器启动在 5173 端口。 - 后端
dotnet run启动,默认监听 21011 端口(开发环境)。 - 浏览器访问
http://127.0.0.1:5173,用初始账号 admin / 密码 1 登录即可进入系统首页。
ModernWMS 首页与左侧功能导航
架构速览
后端:C# + .NET 7.0,分三个工程协作。backend/ModernWMS.Core/是公共内核,包含JWT 认证、全局异常中间件、EF Core 数据库上下文(SqlDBContext)、动态搜索与多租户支持;backend/ModernWMS.WMS/是业务工程,按 Controllers / Entities / Services 三层组织各仓储模块;backend/ModernWMS/是 Web 入口,appsettings.json在这里切换数据库与端口。
前端:Vue 3 + TypeScript + Vite,UI 基于 Vuetify 3 与 VXETable。frontend/src/api/按 base(基础设置)、wms(仓储业务)、sys(系统)划分接口定义;frontend/src/view/中每个业务目录对应一个功能页面,如stockAsn/(收货)、deliveryManagement/(发货)。
公共模块:frontend/src/languages/提供中、英、繁多语言文件,frontend/src/store/管理用户与系统状态,登录态由 JWT 令牌维持。
先跑起来再看源码,遇到哪个功能就顺着view页面追到对应Service,是最快的读码路径。
核心仓储流程演示
收货入库流程:触发条件是供应商到货,你在「收货管理」新建到货通知单,录入商品、货主、数量与重量。到货后依次执行卸货、分拣、上架操作,每步都要求在对应页签完成确认。系统反馈是「收货明细」页签中生成实收记录,同时库存与库位数据实时增加。
收货管理的页签式作业流程
发货出库流程:触发条件是创建发货单并选择客户与商品,系统生成待拣货任务。仓库人员在「待拣货」按单据拣货,再经过打包确认、称重、运费登记,最后点选完成出库。系统反馈是发货单状态从 New Shipment 变为 Out of Warehouse,顶部状态页签实时显示各环节单据数量,超时会阻塞在上一页签。
发货管理的多状态流转跟踪
库存盘点流程:触发条件是发起盘点任务并生成盘库单。你按库位逐一录入实盘数,提交后系统自动比对账面与实盘,生成盈亏差异。反馈是「库存调整」模块中生成对应的调整单,确认后库存账目与实物重新对齐。
避坑与配置要点
⚠️启动后报数据库连接错误→backend/ModernWMS/appsettings.json中"Database": { "db": "MySql" }的取值必须与已配置的连接串匹配,默认应使用内置 SQLite 文件wms.db;换用 MySQL 时改成"MySql"并同步MySqlConn的连接参数。
⚠️前端构建后请求后端失败→ 生产构建读取.env.production中的VITE_BASE_PATH,它在 build 时写死,部署前需改为真实后端地址。
⚠️前后端端口对不上→ 后端默认生产端口 20011、开发端口 21011,前端通过/api前缀代理;若修改了后端端口,前端环境变量需同步调整。
⚠️生产环境仍在用默认账号→ 初始账号 admin/1 且TokenSettings.SigningKey为默认值,上线前应修改 JWT 签名密钥、改用强密码,并配置 HTTPS、定期备份数据库(SQLite 直接备份wms.db文件即可)。
参与贡献
🔧功能开发:新增业务模块时参照backend/ModernWMS.WMS/中 Controller / Entity / Service 的既有模式,前端按api/+view/成对添加。
🐛Bug 修复:先用默认 SQLite 环境复现,再在对应 Service 层定位,提交前说明复现步骤。
📖文档完善:部署步骤、数据库切换说明与界面截图是最常被需要补充的部分。
🧪测试补充:为收货、发货等核心 Service 的关键方法补充单元测试,覆盖库存增减的边界情况。
分支命名建议feature/功能名或bugfix/问题描述,提交信息用[Feature] 新增批量导入功能这类前缀格式。项目已内置中、英、繁三语,翻译文案集中在frontend/src/languages/langsJson/目录,按现有格式补充即可。
写在最后
ModernWMS 的代码量不大,收货(AsnService)与发货(DispatchlistService)两条主链路值得优先精读,能帮你快速理解一套完整 WMS 的状态设计。建议先按上面的步骤把系统跑起来,对照界面操作一遍完整流程,再决定从哪个模块入手阅读或改造源码。仓库地址:git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS。
【免费下载链接】ModernWMSThe open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the original commercial system wms function and opened it up for free, hoping to help the majority of small and medium-sized enterprises. At present, the system supports cross-platform。项目地址: https://gitcode.com/GitHub_Trending/mo/ModernWMS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考