ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

免费完整的开源 WMS:ModernWMS 如何让中小仓库半小时跑通入库到出库

免费完整的开源 WMS:ModernWMS 如何让中小仓库半小时跑通入库到出库

免费完整的开源 WMS: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

ModernWMS 是一款免费的开源仓库管理系统(WMS),基于 .NET 7.0 + Vue 3 开发,覆盖中小企业的入库、库存、出库全流程,内置初始数据库,零配置即可登录使用。

三分钟判断:这款免费开源 WMS 适不适合你

在动手部署之前,先用三分钟确认它和你的场景是否匹配。

  • 项目定位:从多年商业 ERP 项目中剥离出来的仓储功能模块,不是演示级 Demo,收货、库存、发货都有完整的单据流转。
  • 开源协议:Apache-2.0,商用友好,可以免费拿去用、改、分发,只需保留协议声明。
  • 技术底座:后端 .NET 7.0 + EF Core,默认 SQLite,可切换 MySQL 8 / SQL Server / PostgreSQL;前端 Vue 3 + TypeScript + Vuetify 3 + VXETable + Vite。
  • 部署形态:跨平台(Linux / Windows),支持源码编译部署和 Docker 镜像一键拉起,自带 Nginx 配置。

适合谁

  • 中小企业、个体仓库:有真实的出入库需求,但 IT 预算有限,不想为 WMS 付费。
  • .NET 或 Vue 开发者:想找一个结构清晰的开源 WMS 做二次开发底座,或拿来学习仓储业务怎么落地。
  • 需要跨平台部署的团队:同一套代码可以跑在 Ubuntu、Windows Server 或容器里。

不太适合谁

  • 追求移动端 App、PDA 扫码枪深度集成的场景:系统以 Web 端操作为主(另有基于 Unity 的大屏与 3D 货位展示页面)。
  • 超大规模仓储(多仓协同、波次拣选优化等高级功能):它的设计目标是把中小仓库的账做平,而不是高并发调度。

从入库到复盘:它替你管住了哪四件事

下面按仓库里货的实际流向——入库 → 在库 → 出库 → 复盘——把核心能力串一遍。

入库:到货通知单分三步推进

收货以到货通知单(ASN,Advance Shipping Notice,供应商发货前给你的预报单)为起点。你在页面上按"到货通知 → 待卸货 → 待分拣 → 待上架"四个页签逐步推进:

  • 卸货确认:核对实际到货的商品与数量,和预报单对不上时当场就能发现。
  • 分拣:按商品归整、记录效期等批次信息。
  • 上架:指定货位并确认数量,商品正式计入库存。

每一步都是独立待办,跳步操作会被状态校验拦住,一线人员照着页面提示走即可。界面如下,左侧是各步骤的待办入口:

在库:库存查得到、动得动、盘得清

库存查询支持按仓库、货位、货主多维度筛选,还能按库龄查看库存结构。日常作业提供四类带单据留痕的操作:

  • 库存调整:账实不符时修正数量,留调整单。
  • 冻结 / 解冻:问题批次或待检库存一键冻结,冻结中的货不参与出库分配。
  • 移库:商品从一个货位搬到另一个货位,系统记录搬运轨迹。
  • 加工:原料与成品的转换单,处理套装拆分、组合加工等场景。

盘点则通过盘点单发起:建单 → 实盘录入 → 确认,确认后账面数量自动校准。相关模块集中在 仓内作业后端服务(Stockadjust / Stockfreeze / Stockmove / Stockprocess / Stocktaking 各对应一类操作)。

出库:发货单是一台状态机

发货单按"预发货 → 新发货 → 待拣货 → 已拣货 → 待称重 → 已称重 → 待打包 → 已打包 → 待出库 → 已出库 → 已签收"推进,每个环节在发货管理页对应一个独立页签,各自有批量确认操作:

  • 拣货环节支持指定货位批量分配;
  • 称重、打包记录操作人和时间;
  • 确认出库时库存自动扣减,取消订单则回滚占用数量。

换句话说,账实一致不是靠人自觉,而是流程本身保证了——状态不对,操作就被拒绝。

复盘:统计报表直接给管理层看

统计模块覆盖收货统计、发货统计、库龄分析、安全库存监控四类报表,基于 ECharts 可视化输出,配合表格导出功能可以直接生成给管理层看的报表(见 统计分析页面)。另有基于 Unity 的 3D 大屏页面(largeScreen 视图),适合挂在仓库现场。

从克隆到登录:最短路径上手

环境要求

组件版本
.NET SDK7.0+
Node.js16.13.1+(需全局安装 yarn)
操作系统Ubuntu 18.04+ / CentOS / Debian / Windows 10 1607+ 或 Server 2012+

本地开发模式启动

克隆仓库后前后端分开跑,Swagger 页面可以直接调试接口:

git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS cd ModernWMS/backend && dotnet run # 启动后端 API cd ModernWMS/frontend && yarn && yarn dev # 启动前端开发服务器

生产环境 / Docker 部署

Docker 方式最省事,拉取镜像直接跑:

sudo apt install docker.io sudo docker pull modernwms/modernwms:1.0 sudo docker run -d -p 20011:20011 -p 80:80 modernwms/modernwms:1.0 ./run.sh

也支持用 docker/ 目录下的 Dockerfile 和 Nginx 配置自己打包镜像。

默认数据说明

仓库自带wms.db初始数据库(SQLite,零配置),启动后浏览器访问http://127.0.0.1(或部署机 IP)即可登录:

账号:admin 密码:1

库里预置了商品、仓库、货位、供应商、客户以及若干收货和发货单据,方便你直接体验完整流程。生产环境建议先改默认密码。

把开源代码改成你自己的

权限与角色:菜单级 + 按钮级控制

角色与菜单的绑定数据在 Rolemenu 实体,服务实现见 RolemenuService。页面侧对应"角色设置"与"菜单设置":给某个角色勾选哪些菜单可见、哪些操作按钮可点,保存后即时生效。接口层基于 JWT 认证,凭据有缓存与过期策略(见 ModernWMS.Core/JWT)。

可视化审批流:给业务节点加条件分支

入库等业务的审批流程支持条件节点配置,后端逻辑在 FlowSetService,前端配合 flow 流程组件做可视化节点编辑——拖节点、配条件、指定审批人,不用改代码就能调整审批路径。

国际化:加一门新语言的成本

前端语言文件在 languages/langsJson/,现成中 / 英 / 繁三套 json;后端提示语走 resx 资源文件(见 MultiLanguage.zh-cn.resx)。新增一门语言,照着现有 json 的键值结构抄一份、在配置里注册即可。

二次开发入口:五件套模式

每个业务模块都按"Controller + Entity + ViewModel + IService + Service"五件套组织(见 ModernWMS.WMS/Services/)。要加一个新单据类型,挑一个现有模块对照着抄结构就行,框架层(动态搜索、分页、JWT、多租户)都是现成的。多租户隔离逻辑在 MultiTenancy,实体上带tenant_id字段。

这些坑别人替你踩过了

Q:默认数据库是 SQLite,能换成 MySQL 吗?

能。appsettings.json 里Database.db参数控制走哪个库,可选 MySql / SqlServer / SqlLite / PostGres,把对应连接串填好即可切换,不用改代码。

Q:接口怎么认证,生产环境要注意什么?

接口基于 JWT(一种带过期时间的令牌认证方式),Token 过期时间等参数同样在 appsettings.json 的TokenSettings里配置。生产环境建议启用 HTTPS,定期备份数据库文件,并改掉 admin 的默认密码。

Q:登录进去后哪些账号能用?

初始账号admin / 1,登录后可以在用户管理里创建新员工账号、分配角色。角色决定了可见菜单和可点按钮,建议先建角色再建人。

Q:它支持多租户吗?

支持。租户隔离逻辑在 MultiTenancy,数据表带租户标识,同一套实例可以服务多个互相隔离的租户。

Q:想加一个自己的业务模块,从哪入手?

按五件套模式扩展:先建 Entity(表结构),再建 ViewModel(接口出入参),然后 IService + Service 写业务,最后 Controller 暴露接口;前端在 api 目录加请求方法、在 view 目录加页面。参考 Stockadjust(库存调整)模块这类轻量实现最快。

想一起把它做得更好

可以参与的几个方向:

  • 功能开发:补全单据类型(如采购、退货)或统计报表;
  • Bug 修复:优先处理带复现步骤的 issue;
  • 文档完善:README、部署说明、界面截图都是缺口;
  • 测试编写:目前接口层缺单元测试,是门槛较低、价值明确的方向;
  • UI 优化:Vuetify 组件的交互细节打磨。

贡献流程四步:

  1. 分支命名用feature/功能名或bugfix/问题描述;
  2. 提交信息写清改动内容,例如[Feature] 添加批量导入;
  3. 后端遵循 C# 规范,前端过 ESLint 检查;
  4. 提 PR,附改动说明与截图,等待维护者评审。

结语

如果你的仓库现在靠 Excel 和纸单在跑,ModernWMS 值得一个下午的验证时间:克隆、启动、登录、录一单货,账实能不能对上,你亲自跑一遍就有答案。项目文档见仓库内的 README.zh_CN.md,贡献讨论从 issue 区开始。

【免费下载链接】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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进