ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

ModernWMS 指南:开源仓库管理系统的完整拆解

ModernWMS 指南:开源仓库管理系统的完整拆解

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 里,一张写着"舒尔麦克风 SM101、总量 24600"的到货通知单进仓后,还要走卸货、分拣、上架三道工序,每一步动了多少货、谁操作的都有据可查。这套开源仓库管理系统把作者多年 ERP 实施经验里的收货、库存、发货流程完整剥离出来,中小企业免费用。

项目定位与技术选型

一句话定位:ModernWMS 是一套开源、可跨平台部署的完整仓库管理系统,覆盖基础资料、收货、库存、仓内作业、发货、统计分析六块内容。

我翻了一遍源码,有三个技术决策值得注意:

  • 后端按"平台 + 业务"拆成两个库。ModernWMS.Core只放平台能力——JWT 认证、全局异常中间件、动态搜索(把前端传来的搜索条件翻译成查询语句)、多租户预留;ModernWMS.WMS放全部仓储业务代码。改业务不用碰平台层,二次开发边界很清楚。
  • 前端选 Vuetify 3 + vxe-table 4。后台管理页表格数据量大、列多,vxe-table 对虚拟滚动和复杂表格的支持更适合这种场景,报表和导出也依赖它。
  • 数据库通过 EF Core 做了一层抽象。SQLite、MySQL 8+、SQL Server 2017+、PostgreSQL 12 四选一,改一行配置切换;仓库里直接带了wms.db,不装数据库也能跑。

关键信息一览:

项内容
开源协议Apache 2.0
后端.NET 7.0,三层项目(宿主 / Core / WMS)
前端Vue 3.2 + TypeScript + Vite 4 + Vuetify 3
数据库SQLite(默认自带)/ MySQL 8+ / SQL Server 2017+ / PostgreSQL 12
运行环境Ubuntu 18.04+、Debian 10+ 等 Linux;Windows 10 / Server 2012 以上
开发工具链.NET SDK 7.0+、Node.js 16.13.1+、yarn
其他中 / 英 / 繁三语 i18n、Docker 部署脚本、条码二维码、打印模板

核心能力拆解

收货:一张到货通知单走六个环节

ASN(Advance Shipment Notice,预先到货通知单)是收货的入口。新建通知单时录入商品、货主、供应商和数量,之后单据在"到货通知 → 待到货到货 → 待卸货 → 待分拣 → 待上架 → 收货明细"六个页签之间流转,每个环节是独立页面,操作人、操作时间、变动数量全部落库。分拣环节可以按库位拆分数量,上架完成后库存自动增加。

库存与仓内作业:五类日常操作各有专口

库存页提供库存总览和库位库存两个视图,另附库存账龄、安全库存、出库量三个统计页。日常变动不直接改库存,而是走五张独立的作业单:库存调整、库存移动(换库位)、库存冻结(锁定不可用)、库存加工、库存盘点(实盘与账面比对)。每种单都有单据编号和明细记录,查账时对得上具体是哪张单、哪一次操作。

发货:从发运单到签收的状态机

发货模块把一张发运单的生命周期拆成十多个状态:创建发运单 → 预发货 → 待拣货 → 拣货 → 打包 → 称重 → 运费 → 发货 → 签收 → 送达,顶部页签就是状态列表,当前卡在哪一步一目了然。拣货单独立生成,称重环节录入实重实体积,运费页签可按运价表匹配费用;取消订单这类逆向操作也有对应入口。

统计分析与可视化

收货、发货、库存各自有统计页,图表由 ECharts 渲染,可按仓库、货主、时间筛选。另外还藏了一个 vwms 模块:基于 Unity 构建的仓库 3D 可视化页面,把frontend/src/assets/warehouse.json里的货架库位数据渲染成立体模型,能按库位查看库存,演示效果好,也方便新员工理解库位结构。

动手体验

环境只需要 .NET SDK 7.0+ 和 Node.js 16.13.1+(前端用 yarn 管理依赖)。拿到代码后前后端各跑一遍:

git clone https://gitcode.com/GitHub_Trending/mo/ModernWMS cd ModernWMS

后端默认连 MySQL,想零配置启动可以先用仓库自带的 SQLite 库:把backend/ModernWMS/appsettings.json里的"Database": { "db": "MySql" }改成"db": "SqlLite",然后:

cd ModernWMS/backend/ModernWMS dotnet run

服务起来后,Swagger 文档在http://localhost:5056/swagger。前端另开一个终端:

cd ModernWMS/frontend yarn yarn dev

浏览器打开 Vite 打印的地址,用初始账号admin / 1登录,就能看到前文截图里的完整界面。

进阶与扩展

改业务逻辑基本只在一个地方:backend/ModernWMS.WMS/Services/下每个目录对应一个功能域(Asn 收货、Dispatchlist 发货、Stock 库存),Controller 和 Entity 在同名目录里一一对应,照着现有 Service 加方法很快。前端页面在frontend/src/view/,API 定义集中在frontend/src/api/。想加审批流,看ModernWMS.WMS/Entities/Models/Approve/的流程配置实体和frontend/src/components/flow/的可视化配置组件;想加一门语言,按frontend/src/languages/langsJson/现有格式复制一份 JSON 即可。

社区参与

项目维护比较轻量,报 Bug、提建议走 Issue,改代码提 PR 即可;文档和测试都还缺,从补一份某个模块的使用文档入手是门槛最低的参与方式。

"货在库里、账在纸上"的时候,先把这套单据状态机翻一遍,再决定要不要上商业系统。

【免费下载链接】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

延伸阅读

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