引言
WMSCloud 是一套面向工业互联网场景的仓库管理系统(WMS),其核心为 CPS(Cyber-Physical Systems,信息物理系统)平台。该系统采用现代化的前后端分离架构:前端基于 Vue 2.6,后端基于 .NET Core 3.1,具备良好的跨平台能力与多租户支持。本文将从系统整体架构出发,深入剖析其关键模块设计与核心技术实现,帮助开发者和技术决策者快速掌握系统能力边界与扩展潜力。
一、系统整体架构概览
WMSCloud 的后端采用典型的 ABP(ASP.NET Boilerplate)框架 构建,具备模块化、可插拔、企业级应用开发的典型特征。整个系统划分为以下主要层级:
- 表现层(Presentation Layer):提供 Web API 接口,支持 OData、SignalR 实时通信等协议。
- 应用层(Application Layer):封装业务逻辑,如库存收货、出库、ASN(Advanced Ship Notice)处理等。
- 领域层(Domain Layer):定义核心业务实体与规则,如物料、单据、组织架构等。
- 基础设施层(Infrastructure Layer):提供数据持久化(Entity Framework Core / Dapper)、缓存(Redis)、任务调度(HangFire)等能力。
- ABP 框架扩展层:对 ABP 原生能力进行定制化增强,如多租户数据隔离、NoLock 查询优化、Dapper 集成等。
系统支持 多租户(Multi-Tenancy) 模式,通过 IMayHaveTenant 和 IMustHaveTenant 接口实现数据隔离,确保不同租户间的数据安全。
二、核心功能模块解析
1. 库存管理(Inventory Management)
库存模块是 WMS 的核心,涵盖收货、上架、拣货、发货、调拨等全生命周期操作。关键实体包括:
- 收货单(Receipt):记录供应商或生产入库信息。
- 出库单(Issue):支持多种出库类型(销售、生产领料、退料等)。
- ASN(Advanced Ship Notice):用于提前通知仓库即将到货的物料明细,提升入库效率。
每张单据均包含明细行(Detail),关联物料、数量、批次、库位等信息,并通过 SourceBillId/SourceDetailId 实现业务单据间的追溯链。
亮点设计:系统通过
Nolocking扩展方法,在查询高性能场景下自动注入WITH (NOLOCK)提示,显著提升高并发读取性能,同时通过拦截器机制确保仅在安全上下文中启用。
2. 多租户与数据隔离
系统深度集成 ABP 多租户机制:
- 租户标识自动注入:在插入实体时,若实现
IMayHaveTenant,框架自动填充当前租户 ID。 - 查询自动过滤:通过
AbpDataFilters.MayHaveTenant和MustHaveTenant过滤器,在 EF 和 Dapper 查询中自动附加租户条件,开发者无需手动处理。 - 上下文感知:基于当前工作单元(UnitOfWork)判断租户上下文,确保 Host 与 Tenant 模式下的正确路由。
3. 实时通信与通知(SignalR)
系统集成 ASP.NET Core SignalR,用于实现:
- 实时库存变动通知
- 作业状态推送(如单据完成、异常告警)


