ModernWMS 免费开源仓库管理系统:从克隆到跑通 WMS 全流程指南
【免费下载链接】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
ModernWMS 是一款免费开源的仓库管理系统(WMS),覆盖收货入库、库内作业、发货出库与统计分析的完整仓储链路,.NET 7 后端 + Vue 3 前端,默认 SQLite 零配置,克隆代码即可本地跑通。
30 秒认识 ModernWMS
- 开源协议:Apache-2.0(见 LICENSE),可自由商用与二次开发
- 后端:.NET 7.0 + EF Core,默认 SQLite,可切换 MySQL 8 / SQL Server / PostgreSQL
- 前端:Vue 3 + TypeScript + Vuetify 3 + VXETable(大数据量表格组件)+ Vite,统计图表基于 ECharts
- 运行平台:Ubuntu / CentOS / Debian / Windows 10+,另附 docker/ 目录的 Dockerfile 与启动脚本
- 一句话定位:作者从多年商业 ERP 项目中剥离出的仓储核心功能,面向 IT 预算有限的中小企业
它适合谁、替代了什么
- 中小仓 / 前置仓:SKU 在几千到几十万量级、单仓作业,需要"能跑"的单据系统而不是定制 ERP
- 仓库一线与运维人员:界面按待办分步,卸货、分拣、上架、拣货各有独立操作页,照着页面提示做即可
- 二开团队:拿它当脚手架,省去搭权限、JWT 认证、多语言、动态查询这些底座代码,直接补业务
- 替代对象:纸单 + Excel 管库存的手工作业方式,以及按年收费的商业 WMS 入门版;如果你的需求是电商大促高并发出库、波次优化、多仓调拨调度这类重场景,它偏基础,下文会再说边界
跟着货走一遍功能全景
入库:从到货通知到上架确认
链路以 ASN(Arrival Note,到货通知单)为起点:在"到货通知"页创建单据并登记商品、数量 → 货物到场后到"待到货"页做卸货确认,核对实收与通知数 → 进入"待分拣"页给每批货安排货位 → "待上架"页确认后,商品才真正计入库存,明细沉淀在"收货明细"页(界面见 frontend/src/view/wms/stockAsn/)。每一步都是独立 Tab,跳过上一步的单据不会出现,漏做被流程本身拦住。
库内:五类日常作业,全程单据留痕
库存查询支持按仓库、货位、货主组合检索,并按库龄分析结构(后端查询逻辑在 backend/ModernWMS.WMS/Services/Stock/)。日常动货有五类入口,全部先生成单据再动库存:
- 仓内加工:拆零、组合、改制,输入商品与产出商品成对登记
- 库存移动:货位间转移,起止货位与数量留痕
- 库存冻结/解冻:对特定批次加锁,冻结中的库存不参与发货
- 库存调整:盘盈盘亏直接调账,必须写明调整原因
- 库存盘点:盘点单发起 → 按单录入实盘数 → 确认后系统自动校准账面
出库:一张发货单的状态机
发货单按固定状态链推进:新建发货 → 预发货 → 待发货 → 待拣货 → 已拣货 → 待打包 → 已打包 → 待称重 → 已称重 → 待发货 → 已发货 → 已签收。每个状态对应一个独立操作页(frontend/src/view/deliveryManagement/ 下的 tab 组件一一对应),支持批量确认、批量打印二维码与面单标签。确认后库存自动扣减,取消订单则回滚占用,账实一致性靠流程保证而不是靠人盯。
统计与大屏:报表直接给管理层
统计模块输出收货统计、发货统计、库龄分析、安全库存预警四类报表(frontend/src/statisticAnalysis/),基于 ECharts 渲染并支持 Excel 导出;另有 frontend/src/view/largeScreen/ 仓库大屏,适合挂在仓门口看实时作业量。基础资料侧(商品、供应商、货主、客户、仓库库位、运费、角色菜单)提供完整的设置与 Excel 批量导入页,是跑通上面三条业务线的前提。
从克隆到跑通:装机体验
环境要求 .NET SDK 7.0+ 与 Node.js 16+,仓库自带wms.db初始数据:
git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS cd backend/ModernWMS && dotnet run # 启动 API cd frontend && yarn && yarn dev # 启动前端后端启动后 Swagger 页面可直接调试接口;浏览器打开前端后用初始账号admin/ 密码1登录。
⚠️ 两个容易卡的坑:一是后端实际监听端口为5555(硬编码在 backend/ModernWMS/Program.cs),而frontend/.env.development里默认的 API 地址是作者的局域网 IP 和 21011 端口,首次运行前需要把VITE_BASE_PATH/VITE_SERVER_PORT改成你后端的真实地址端口;二是 backend/ModernWMS/appsettings.json 中Database.db当前默认值是MySql,想直接用仓库自带的 SQLite 零配置启动,把它改成SqlLite即可。
生产部署有两条路:按 README.zh_CN.md 的 Nginx +dotnet publish手工部署,或先编译好前后端产物拷入 docker/ 目录再docker build构建镜像(docker/Dockerfile 基于 Ubuntu 22.04 内置 Nginx 与 aspnetcore-runtime-7.0),容器内前端走 80 端口、API 走 21011 端口(docker/run.sh)。
架构与扩展:目录地图 + 加一个功能
后端是"框架层 + 业务层 + 宿主"三层,加一个宿主,共四个项目(backend/ModernWMS.sln):
| 目录 | 职责 |
|---|---|
| backend/ModernWMS/ | Web 宿主:Program.cs、Startup.cs、appsettings.json、wms.db |
| backend/ModernWMS.Core/ | 框架底座:DI 自动注册、JWT/ 令牌、DBContext/ EF Core、DynamicSearch/ 动态查询、MultiTenancy/ 多租户、Job/ Hangfire 定时任务 |
| backend/ModernWMS.WMS/ | WMS 业务层:Controllers / Entities / IServices / Services |
| frontend/src/ | 前端工程:api 请求层、view 页面、store、router、多语言 |
扩展一个新功能 = 五件套:在ModernWMS.WMS下按现有模块(例如 Stockadjust/)照抄结构,依次新建 Entity → ViewModel → Controller → IService → Service。Service 只要继承BaseService<T>并实现IDependency接口,就会被启动时的反射扫描自动注入(逻辑在 StartupExtensions.cs 的RegisterAssembly),不需要手工注册。前端对应新增api请求函数与view页面,菜单在"菜单设置"里挂上路径即可出现。
值得留意的底座能力:接口统一走 JWT 认证 + 刷新令牌机制(前端拦截器在 request.ts),多语言由前后端各自的语言文件驱动(前端 langsJson/ 含中/英/繁,后端 MultiLanguage.zh-cn.resx),审批流程有可视化节点编辑(FlowSetService.cs + flow 组件)。
选型参考:边界在哪
适合:单仓为主的中小企业;SKU 与单据量在常规业务水平(VXETable 表格可轻松承载万级行渲染);需要中/英/繁三语的团队;想拿 .NET + Vue 3 的 WMS 脚手架做二开的团队。
不建议:
- 大促级高并发出库、波次/路径优化的电商仓——它的发货状态机是线性单据流,没有波次调度概念
- 多仓之间自动调拨、智能补货决策——多租户能力有,但跨仓调度需要自己写
- 数据库选型要注意版本约束:MySQL 8+、SQL Server 2017+、PostgreSQL 12+,低版本连不上
- 团队无 .NET 能力且不想维护后端——二次开发成本主要在 C# 侧,纯前端团队只能改界面
高频疑问
Q:默认数据库是什么?能换 MySQL 吗?代码支持 SQLite / MySQL / SQL Server / PostgreSQL 四种,由appsettings.json的Database.db字段切换。仓库自带初始数据的wms.db(SQLite),但该文件当前配置默认值是MySql,纯本地体验建议改为SqlLite;上生产再切 MySQL 8 并填写对应连接串。
Q:接口安全怎么保证?登录签发 JWT,令牌过期前前端自动走/refresh-token续期,敏感操作受角色权限控制,实现集中在 backend/ModernWMS.Core/JWT/。生产环境建议启用 HTTPS,并定期备份数据库文件。
Q:Docker 部署怎么用?docker/目录含 Dockerfile、nginx.conf 与 run.sh:先把前端dist和后端publish产物分别拷进docker/frontend、docker/backend,再构建运行,容器暴露 80(页面)与 21011(API)两个端口。
Q:支持多租户吗?二次开发从哪入手?支持,租户隔离逻辑在 backend/ModernWMS.Core/MultiTenancy/。业务扩展按"Controller + Entity + ViewModel + IService + Service"五件套走,参考 backend/ModernWMS.WMS/Services/ 下任一现有模块即可,Service 继承BaseService<T>即可被自动注册。
Q:多语言如何新增一门?前端照 frontend/src/languages/langsJson/ 现有 json 格式新建文件并在 i18n 配置里注册;后端补一个对应的.resx资源文件,即可在请求时按 culture 参数切换。
下一步:先跑通,再深入
建议的顺序:按上文命令把本地环境跑起来 → 用 admin/1 登录,沿"收货管理 → 库内作业 → 发货管理"走一单完整业务 → 打开 Swagger 对照看每个页面调了哪些接口 → 再动代码。仓库地址:https://gitcode.com/GitHub_Trending/mo/ModernWMS,中文部署细节见 README.zh_CN.md。
【免费下载链接】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),仅供参考