diff --git a/pom.xml b/pom.xml
index b79c0a6..81ed66a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,7 @@
+
+ * wms 系统,使用 1-060-000-000 段
+ */
+public interface ErrorCodeConstants {
+}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsConfiguration.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsConfiguration.java
new file mode 100644
index 0000000..1dbe6d8
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsConfiguration.java
@@ -0,0 +1,14 @@
+package cn.iocoder.yudao.module.wms.framework.config;
+
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * WMS 模块配置
+ *
+ * @author 芋道源码
+ */
+@Configuration(proxyBeanMethods = false)
+@EnableConfigurationProperties(WmsProperties.class)
+public class WmsConfiguration {
+}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsProperties.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsProperties.java
new file mode 100644
index 0000000..d6eb6fd
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/WmsProperties.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.wms.framework.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.validation.annotation.Validated;
+
+import jakarta.validation.constraints.AssertTrue;
+import jakarta.validation.constraints.NotNull;
+
+/**
+ * WMS 配置项
+ *
+ * @author 芋道源码
+ */
+@ConfigurationProperties(prefix = "yudao.wms")
+@Validated
+@Data
+public class WmsProperties {
+
+ /**
+ * 是否启用库区模式
+ */
+ @NotNull(message = "是否启用库区模式不能为空")
+ private Boolean areaEnable = false;
+
+ /**
+ * 是否启用批次/效期/库存明细模式
+ *
+ * 依赖 {@link #areaEnable} 为 true
+ */
+ @NotNull(message = "是否启用批次/效期/库存明细模式不能为空")
+ private Boolean batchEnable = false;
+
+ public boolean isAreaEnabled() {
+ return Boolean.TRUE.equals(areaEnable);
+ }
+
+ public boolean isBatchEnabled() {
+ return Boolean.TRUE.equals(batchEnable);
+ }
+
+ @AssertTrue(message = "WMS 批次/效期模式依赖库区模式,请先开启 yudao.wms.area-enable")
+ public boolean isBatchDependsOnAreaValid() {
+ return !isBatchEnabled() || isAreaEnabled();
+ }
+
+}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/package-info.java
new file mode 100644
index 0000000..2747c36
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/config/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * WMS 模块配置
+ */
+package cn.iocoder.yudao.module.wms.framework.config;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java
new file mode 100644
index 0000000..115397b
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 属于 WMS 模块的 framework 封装
+ *
+ * @author 芋道源码
+ */
+package cn.iocoder.yudao.module.wms.framework;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java
new file mode 100644
index 0000000..37c7571
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java
@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.wms.framework.web.config;
+
+import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration;
+import org.springdoc.core.models.GroupedOpenApi;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * WMS 模块的 web 组件的 Configuration
+ *
+ * @author 芋道源码
+ */
+@Configuration(proxyBeanMethods = false)
+public class WmsWebConfiguration {
+
+ /**
+ * WMS 模块的 API 分组
+ */
+ @Bean
+ public GroupedOpenApi wmsGroupedOpenApi() {
+ return YudaoSwaggerAutoConfiguration.buildGroupedOpenApi("wms");
+ }
+
+}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java
new file mode 100644
index 0000000..13cb703
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * WMS 模块的 web 配置
+ */
+package cn.iocoder.yudao.module.wms.framework.web;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java
new file mode 100644
index 0000000..099e22c
--- /dev/null
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java
@@ -0,0 +1,10 @@
+/**
+ * wms 包下,仓库管理系统(Warehouse Management System)
+ * 例如说:仓库、物料、库存、入库、出库、移库、盘库等等
+ *
+ * 1. Controller URL:以 /wms/ 开头,避免和其它 Module 冲突
+ * 2. DataObject 表名:以 wms_ 开头,方便在数据库中区分
+ *
+ * 注意,由于 WMS 模块下,容易和其它模块重名,所以类名都加载 Wms 的前缀~
+ */
+package cn.iocoder.yudao.module.wms;
diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml
index 0ac376f..e600e23 100644
--- a/yudao-server/pom.xml
+++ b/yudao-server/pom.xml
@@ -122,6 +122,13 @@
+
+