From d5cd948848595b0cffe098ba542a9c879b0f9165 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 13 七月 2026 10:09:39 +0800
Subject: [PATCH] 1.仓储物流-采购模块联动 2.仓储物流-销售模块联动 3.清理表数据
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java | 27 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java | 88 +++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java | 79 +++++
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java | 8
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java | 2
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java | 73 ++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java | 41 ++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java | 4
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java | 17
yudao-server/src/main/resources/application-test.yaml | 298 +++++++++++++++++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java | 80 +++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java | 85 +++++
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java | 10
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java | 22
15 files changed, 817 insertions(+), 39 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
index 2eb1a34..4098e32 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
@@ -118,11 +118,11 @@
// 鎷兼帴浜у搧椤�
List<CrmBusinessProductDO> businessProducts = businessService.getBusinessProductListByBusinessId(businessVO.getId());
Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
- convertSet(businessProducts, CrmBusinessProductDO::getProductId));
+ convertSet(businessProducts, CrmBusinessProductDO::getItemId));
businessVO.setProducts(BeanUtils.toBean(businessProducts, CrmBusinessRespVO.Product.class, businessProductVO ->
- MapUtils.findAndThen(itemMap, businessProductVO.getProductId(),
- item -> businessProductVO.setProductName(item.getName())
- .setProductNo(item.getCode()).setProductUnit(item.getUnitMeasureId() != null ? item.getUnitMeasureId().intValue() : null))));
+ MapUtils.findAndThen(itemMap, businessProductVO.getItemId(),
+ item -> businessProductVO.setItemName(item.getName())
+ .setItemCode(item.getCode()).setItemUnitId(item.getUnitMeasureId()))));
return businessVO;
}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
index c00b813..83e6578 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
@@ -124,22 +124,22 @@
@Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
private Long id;
- @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
- private Long productId;
- @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
- private String productName;
- @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
- private String productNo;
- @Schema(description = "浜у搧鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
- private Integer productUnit;
+ @Schema(description = "MDM 鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+ private Long itemId;
+ @Schema(description = "鐗╂枡鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
+ private String itemName;
+ @Schema(description = "鐗╂枡缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+ private String itemCode;
+ @Schema(description = "璁¢噺鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Long itemUnitId;
- @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
- private BigDecimal productPrice;
+ @Schema(description = "鐗╂枡鍘熶环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
+ private BigDecimal itemPrice;
@Schema(description = "鍟嗘満浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
private BigDecimal businessPrice;
- @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
+ @Schema(description = "鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
private BigDecimal count;
@Schema(description = "鎬昏浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
index 102fcba..13ab5bc 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
@@ -74,21 +74,25 @@
@AllArgsConstructor
public static class BusinessProduct {
- @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
- @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
- private Long productId;
+ @Schema(description = "MDM 鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+ @NotNull(message = "鐗╂枡缂栧彿涓嶈兘涓虹┖")
+ private Long itemId;
- @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
- @NotNull(message = "浜у搧鍗曚环涓嶈兘涓虹┖")
- private BigDecimal productPrice;
+ @Schema(description = "璁¢噺鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "璁¢噺鍗曚綅涓嶈兘涓虹┖")
+ private Long itemUnitId;
+
+ @Schema(description = "鐗╂枡鍘熶环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
+ @NotNull(message = "鐗╂枡鍘熶环涓嶈兘涓虹┖")
+ private BigDecimal itemPrice;
@Schema(description = "鍟嗘満浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
@NotNull(message = "鍟嗘満浠锋牸涓嶈兘涓虹┖")
private BigDecimal businessPrice;
- @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
- @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
- private Integer count;
+ @Schema(description = "鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
+ @NotNull(message = "鏁伴噺涓嶈兘涓虹┖")
+ private BigDecimal count;
}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
index 2f66fc3..328a3e2 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
@@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.crm.dal.dataobject.business;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -38,17 +37,21 @@
*/
private Long businessId;
/**
- * 浜у搧缂栧彿
+ * MDM 鐗╂枡缂栧彿
*
- * 鍏宠仈 {@link CrmProductDO#getId()}
+ * 鍏宠仈 MdmItemRespDTO.id
*/
- private Long productId;
+ private Long itemId;
/**
- * 浜у搧鍗曚环锛屽崟浣嶏細鍏�
+ * 璁¢噺鍗曚綅缂栧彿
*
- * 鍐椾綑 {@link CrmProductDO#getPrice()}
+ * 鍏宠仈 MdmUnitMeasureRespDTO.id
*/
- private BigDecimal productPrice;
+ private Long itemUnitId;
+ /**
+ * 鐗╂枡鍘熶环锛屽崟浣嶏細鍏冿紙鍐椾綑锛�
+ */
+ private BigDecimal itemPrice;
/**
* 鍟嗘満浠锋牸, 鍗曚綅锛氬厓
*/
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
index 3ab7465..263b383 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
@@ -217,7 +217,7 @@
private List<CrmBusinessProductDO> validateBusinessProducts(List<CrmBusinessSaveReqVO.BusinessProduct> list) {
// 1. 鏍¢獙鐗╂枡瀛樺湪
- Set<Long> itemIds = convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getProductId);
+ Set<Long> itemIds = convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getItemId);
Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(itemIds);
for (Long itemId : itemIds) {
if (itemMap.get(itemId) == null) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
index 9e1b19a..acaa5e8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
@@ -2,6 +2,11 @@
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsPurchaseInboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsSalesOutboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockDetailRespDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockQueryReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.stock.WmsStockApi;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
@@ -14,11 +19,6 @@
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
-import cn.iocoder.yudao.module.wms.api.dto.WmsPurchaseInboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsSalesOutboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockDetailRespDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockQueryReqDTO;
-import cn.iocoder.yudao.module.wms.api.stock.WmsStockApi;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
index 629bd9e..1e35e1f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
@@ -2,10 +2,10 @@
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsTransactionCreateReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.transaction.WmsTransactionApi;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
-import cn.iocoder.yudao.module.wms.api.transaction.WmsTransactionApi;
-import cn.iocoder.yudao.module.wms.api.transaction.WmsTransactionCreateReqDTO;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java
new file mode 100644
index 0000000..b949723
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java
@@ -0,0 +1,85 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * WMS 閲囪喘鍏ュ簱璇锋眰 DTO
+ */
+@Data
+public class WmsPurchaseInboundReqDTO {
+
+ /**
+ * 涓氬姟鍗曟嵁ID
+ */
+ private Long bizId;
+
+ /**
+ * 涓氬姟鍗曟嵁缂栫爜
+ */
+ private String bizCode;
+
+ /**
+ * 渚涘簲鍟咺D
+ */
+ private Long vendorId;
+
+ /**
+ * 鍏ュ簱鏃堕棿
+ */
+ private LocalDateTime receiptTime;
+
+ /**
+ * 鐗╂枡鏄庣粏鍒楄〃
+ */
+ private List<Item> items;
+
+ @Data
+ public static class Item {
+
+ /**
+ * 涓氬姟琛孖D
+ */
+ private Long bizLineId;
+
+ /**
+ * 鐗╂枡ID
+ */
+ private Long itemId;
+
+ /**
+ * 浠撳簱ID
+ */
+ private Long warehouseId;
+
+ /**
+ * 搴撲綅ID
+ */
+ private Long locationId;
+
+ /**
+ * 鍖哄煙ID
+ */
+ private Long areaId;
+
+ /**
+ * 鎵规ID
+ */
+ private Long batchId;
+
+ /**
+ * 鎵规缂栫爜
+ */
+ private String batchCode;
+
+ /**
+ * 鏁伴噺
+ */
+ private BigDecimal quantity;
+
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java
new file mode 100644
index 0000000..8e10cf5
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * WMS 閿�鍞嚭搴撹姹� DTO
+ */
+@Data
+public class WmsSalesOutboundReqDTO {
+
+ /**
+ * 涓氬姟鍗曟嵁ID
+ */
+ private Long bizId;
+
+ /**
+ * 涓氬姟鍗曟嵁缂栫爜
+ */
+ private String bizCode;
+
+ /**
+ * 鍑哄簱鏃堕棿
+ */
+ private LocalDateTime outboundTime;
+
+ /**
+ * 鐗╂枡鏄庣粏鍒楄〃
+ */
+ private List<Item> items;
+
+ @Data
+ public static class Item {
+
+ /**
+ * 涓氬姟琛孖D
+ */
+ private Long bizLineId;
+
+ /**
+ * 鐗╂枡ID
+ */
+ private Long itemId;
+
+ /**
+ * 浠撳簱ID
+ */
+ private Long warehouseId;
+
+ /**
+ * 搴撲綅ID
+ */
+ private Long locationId;
+
+ /**
+ * 鍖哄煙ID
+ */
+ private Long areaId;
+
+ /**
+ * 鎵规ID
+ */
+ private Long batchId;
+
+ /**
+ * 鎵规缂栫爜
+ */
+ private String batchCode;
+
+ /**
+ * 鏁伴噺
+ */
+ private BigDecimal quantity;
+
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java
new file mode 100644
index 0000000..ac382ba
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java
@@ -0,0 +1,79 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * WMS 搴撳瓨鏄庣粏鍝嶅簲 DTO
+ */
+@Data
+public class WmsStockDetailRespDTO {
+
+ /**
+ * 涓婚敭
+ */
+ private Long id;
+
+ /**
+ * 鐗╂枡ID
+ */
+ private Long itemId;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ private String itemCode;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ private String itemName;
+
+ /**
+ * 浠撳簱ID
+ */
+ private Long warehouseId;
+
+ /**
+ * 浠撳簱鍚嶇О
+ */
+ private String warehouseName;
+
+ /**
+ * 搴撲綅ID
+ */
+ private Long locationId;
+
+ /**
+ * 鍖哄煙ID
+ */
+ private Long areaId;
+
+ /**
+ * 鎵规ID
+ */
+ private Long batchId;
+
+ /**
+ * 鎵规缂栫爜
+ */
+ private String batchCode;
+
+ /**
+ * 渚涘簲鍟咺D
+ */
+ private Long vendorId;
+
+ /**
+ * 鏁伴噺
+ */
+ private BigDecimal quantity;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java
new file mode 100644
index 0000000..949a1d3
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java
@@ -0,0 +1,41 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+/**
+ * WMS 搴撳瓨鏌ヨ璇锋眰 DTO
+ */
+@Data
+public class WmsStockQueryReqDTO {
+
+ /**
+ * 鐗╂枡ID
+ */
+ private Long itemId;
+
+ /**
+ * 浠撳簱ID
+ */
+ private Long warehouseId;
+
+ /**
+ * 搴撲綅ID
+ */
+ private Long locationId;
+
+ /**
+ * 鍖哄煙ID
+ */
+ private Long areaId;
+
+ /**
+ * 鎵规ID
+ */
+ private Long batchId;
+
+ /**
+ * 渚涘簲鍟咺D
+ */
+ private Long vendorId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java
new file mode 100644
index 0000000..be06dfa
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java
@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * WMS 搴撳瓨浜嬪姟鍒涘缓璇锋眰 DTO
+ */
+@Data
+public class WmsTransactionCreateReqDTO {
+
+ /**
+ * 浜嬪姟绫诲瀷锛圛N/OUT锛�
+ */
+ private String type;
+
+ /**
+ * 涓氬姟绫诲瀷
+ */
+ private String bizType;
+
+ /**
+ * 涓氬姟鍗曟嵁ID
+ */
+ private Long bizId;
+
+ /**
+ * 涓氬姟鍗曟嵁缂栫爜
+ */
+ private String bizCode;
+
+ /**
+ * 涓氬姟琛孖D
+ */
+ private Long bizLineId;
+
+ /**
+ * 鐗╂枡ID
+ */
+ private Long itemId;
+
+ /**
+ * 浠撳簱ID
+ */
+ private Long warehouseId;
+
+ /**
+ * 搴撲綅ID
+ */
+ private Long locationId;
+
+ /**
+ * 鍖哄煙ID
+ */
+ private Long areaId;
+
+ /**
+ * 鎵规ID
+ */
+ private Long batchId;
+
+ /**
+ * 鎵规缂栫爜
+ */
+ private String batchCode;
+
+ /**
+ * 渚涘簲鍟咺D
+ */
+ private Long vendorId;
+
+ /**
+ * 鏁伴噺锛堟鏁板叆搴擄紝璐熸暟鍑哄簱锛�
+ */
+ private BigDecimal quantity;
+
+ /**
+ * 鍏ュ簱/鍑哄簱鏃堕棿
+ */
+ private java.time.LocalDateTime receiptTime;
+
+ /**
+ * 鏄惁宸插鏍�
+ */
+ private Boolean checkFlag;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java
new file mode 100644
index 0000000..148641b
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java
@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.mes.api.wms.stock;
+
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsPurchaseInboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsSalesOutboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockDetailRespDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockQueryReqDTO;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * WMS 搴撳瓨 API 鎺ュ彛
+ */
+public interface WmsStockApi {
+
+ /**
+ * 閲囪喘鍏ュ簱
+ *
+ * @param reqDTO 鍏ュ簱璇锋眰
+ * @return 浜嬪姟ID
+ */
+ Long purchaseInbound(WmsPurchaseInboundReqDTO reqDTO);
+
+ /**
+ * 閲囪喘閫�璐у嚭搴�
+ *
+ * @param reqDTO 鍑哄簱璇锋眰
+ * @return 浜嬪姟ID
+ */
+ Long purchaseReturnOutbound(WmsPurchaseInboundReqDTO reqDTO);
+
+ /**
+ * 閿�鍞嚭搴�
+ *
+ * @param reqDTO 鍑哄簱璇锋眰
+ * @return 浜嬪姟ID
+ */
+ Long salesOutbound(WmsSalesOutboundReqDTO reqDTO);
+
+ /**
+ * 閿�鍞��璐у叆搴�
+ *
+ * @param reqDTO 鍏ュ簱璇锋眰
+ * @return 浜嬪姟ID
+ */
+ Long salesReturnInbound(WmsSalesOutboundReqDTO reqDTO);
+
+ /**
+ * 鑾峰彇搴撳瓨鏁伴噺
+ *
+ * @param itemId 鐗╂枡ID
+ * @param warehouseId 浠撳簱ID
+ * @return 搴撳瓨鏁伴噺
+ */
+ BigDecimal getStockQuantity(Long itemId, Long warehouseId);
+
+ /**
+ * 鑾峰彇搴撳瓨鏄庣粏
+ *
+ * @param reqDTO 鏌ヨ璇锋眰
+ * @return 搴撳瓨鏄庣粏
+ */
+ WmsStockDetailRespDTO getStockDetail(WmsStockQueryReqDTO reqDTO);
+
+ /**
+ * 鑾峰彇搴撳瓨鏄庣粏鍒楄〃
+ *
+ * @param reqDTO 鏌ヨ璇锋眰
+ * @return 搴撳瓨鏄庣粏鍒楄〃
+ */
+ List<WmsStockDetailRespDTO> getStockDetailList(WmsStockQueryReqDTO reqDTO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java
new file mode 100644
index 0000000..d0e09d6
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.mes.api.wms.transaction;
+
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsTransactionCreateReqDTO;
+
+import java.util.List;
+
+/**
+ * WMS 搴撳瓨浜嬪姟 API 鎺ュ彛
+ */
+public interface WmsTransactionApi {
+
+ /**
+ * 鍒涘缓搴撳瓨浜嬪姟
+ *
+ * @param reqDTO 浜嬪姟璇锋眰
+ * @return 浜嬪姟ID
+ */
+ Long createTransaction(WmsTransactionCreateReqDTO reqDTO);
+
+ /**
+ * 鎵归噺鍒涘缓搴撳瓨浜嬪姟
+ *
+ * @param reqDTOs 浜嬪姟璇锋眰鍒楄〃
+ */
+ void createTransactionBatch(List<WmsTransactionCreateReqDTO> reqDTOs);
+
+}
\ No newline at end of file
diff --git a/yudao-server/src/main/resources/application-test.yaml b/yudao-server/src/main/resources/application-test.yaml
new file mode 100644
index 0000000..7366a20
--- /dev/null
+++ b/yudao-server/src/main/resources/application-test.yaml
@@ -0,0 +1,298 @@
+server:
+ port: 48080
+
+--- #################### 鏁版嵁搴撶浉鍏抽厤缃� ####################
+spring:
+ autoconfigure:
+ # noinspection SpringBootApplicationYaml
+ exclude:
+ - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 榛樿 local 鐜锛屼笉寮�鍚� Quartz 鐨勮嚜鍔ㄩ厤缃�
+ - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Qdrant锛屾墜鍔ㄥ垱寤�
+ - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Redis锛屾墜鍔ㄥ垱寤�
+ - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Milvus锛屾墜鍔ㄥ垱寤�
+ - org.dromara.trans.config.TransServiceConfig # TODO 鑺嬭壙锛歟asy-trans 鍏煎 Spring Boot 4 鍚庣Щ闄わ紙TransServiceConfig 寮曠敤浜嗗凡绉婚櫎鐨� RestTemplateBuilder锛�
+ # TODO 鑺嬭壙锛歴pring-ai-alibaba 2.0.0-M1.1 鐨� DashScope 鑷姩閰嶇疆鏆備笉鍏煎 Spring AI 2.0.0
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeChatAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAgentAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeImageAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeVideoAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAudioSpeechAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAudioTranscriptionAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeRerankAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeEmbeddingAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeMultimodalEmbeddingAutoConfiguration
+ - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAsyncToolCallingManagerAutoConfiguration
+ # 鏁版嵁婧愰厤缃」
+ datasource:
+ druid: # Druid 銆愮洃鎺с�戠浉鍏崇殑鍏ㄥ眬閰嶇疆
+ web-stat-filter:
+ enabled: true
+ stat-view-servlet:
+ enabled: true
+ allow: # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ url-pattern: /druid/*
+ login-username: # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-password:
+ filter:
+ stat:
+ enabled: true
+ log-slow-sql: true # 鎱� SQL 璁板綍
+ slow-sql-millis: 100
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ dynamic: # 澶氭暟鎹簮閰嶇疆
+ druid: # Druid 銆愯繛鎺ユ睜銆戠浉鍏崇殑鍏ㄥ眬閰嶇疆
+ initial-size: 1 # 鍒濆杩炴帴鏁�
+ min-idle: 1 # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ max-active: 20 # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ max-wait: 60000 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂达紝鍗曚綅锛氭绉掞紙1 鍒嗛挓锛�
+ time-between-eviction-runs-millis: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶏細姣锛�1 鍒嗛挓锛�
+ min-evictable-idle-time-millis: 600000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛�10 鍒嗛挓锛�
+ max-evictable-idle-time-millis: 1800000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛�30 鍒嗛挓锛�
+ validation-query: SELECT 1 FROM DUAL # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ pool-prepared-statements: true # 鏄惁寮�鍚� PreparedStatement 缂撳瓨
+ max-pool-prepared-statement-per-connection-size: 20 # 姣忎釜杩炴帴缂撳瓨鐨� PreparedStatement 鏁伴噺
+ primary: master
+ datasource:
+ master:
+ url: jdbc:mysql://172.17.0.1:11101/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
+ # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 杩炴帴鐨勭ず渚�
+ # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 杩炴帴鐨勭ず渚�
+ # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 杩炴帴鐨勭ず渚�
+ # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true;useUnicode=true;characterEncoding=utf-8 # SQLServer 杩炴帴鐨勭ず渚�
+ # url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 杩炴帴鐨勭ず渚�
+ # url: jdbc:kingbase8://127.0.0.1:54321/test # 浜哄ぇ閲戜粨 KingbaseES 杩炴帴鐨勭ず渚�
+ # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 杩炴帴鐨勭ず渚�
+ # url: jdbc:postgresql://127.0.0.1:5866/ruoyi-vue-pro # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+ username: root
+ password: xd@123456..
+ # username: sa # SQL Server 杩炴帴鐨勭ず渚�
+ # password: Yudao@2024 # SQL Server 杩炴帴鐨勭ず渚�
+ # username: SYSDBA # DM 杩炴帴鐨勭ず渚�
+ # password: SYSDBA001 # DM 杩炴帴鐨勭ず渚�
+ # username: root # OpenGauss 杩炴帴鐨勭ず渚�
+ # password: Yudao@2024 # OpenGauss 杩炴帴鐨勭ず渚�
+ # username: root # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+ # password: 123456 # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+ slave: # 妯℃嫙浠庡簱锛屽彲鏍规嵁鑷繁闇�瑕佷慨鏀�
+ lazy: true # 寮�鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ�熷害
+ url: jdbc:mysql://172.17.0.1:11101/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+ username: root
+ password: xd@123456
+# tdengine: # IoT 鏁版嵁搴擄紙闇�瑕� IoT 鐗╄仈缃戝啀寮�鍚櫌锛侊級
+# lazy: true # 寮�鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ�熷害
+# url: jdbc:TAOS-WS://127.0.0.1:6041/ruoyi_vue_pro?varcharAsString=true&enableAutoReconnect=true # 鍙傝锛歨ttps://t.zsxq.com/qaX9c锛屽紑鍚� TDengine WebSocket 鑷姩閲嶈繛
+# driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver
+# username: root
+# password: taosdata
+# druid:
+# validation-query: SELECT SERVER_STATUS() # TDengine 鏁版嵁婧愮殑鏈夋晥鎬ф鏌� SQL
+
+ # Redis 閰嶇疆銆俁edisson 榛樿鐨勯厤缃冻澶熶娇鐢紝涓�鑸笉闇�瑕佽繘琛岃皟浼�
+ data:
+ redis:
+ host: 172.17.0.1 # 鍦板潃
+ port: 11102 # 绔彛
+ database: 0 # 鏁版嵁搴撶储寮�
+# password: dev # 瀵嗙爜锛屽缓璁敓浜х幆澧冨紑鍚�
+
+--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 ####################
+
+# Quartz 閰嶇疆椤癸紝瀵瑰簲 QuartzProperties 閰嶇疆绫�
+spring:
+ quartz:
+ auto-startup: true # 鏈湴寮�鍙戠幆澧冿紝灏介噺涓嶈寮�鍚� Job
+ scheduler-name: schedulerName # Scheduler 鍚嶅瓧銆傞粯璁や负 schedulerName
+ job-store-type: jdbc # Job 瀛樺偍鍣ㄧ被鍨嬨�傞粯璁や负 memory 琛ㄧず鍐呭瓨锛屽彲閫� jdbc 浣跨敤鏁版嵁搴撱��
+ wait-for-jobs-to-complete-on-shutdown: true # 搴旂敤鍏抽棴鏃讹紝鏄惁绛夊緟瀹氭椂浠诲姟鎵ц瀹屾垚銆傞粯璁や负 false 锛屽缓璁缃负 true
+ properties: # 娣诲姞 Quartz Scheduler 闄勫姞灞炴�э紝鏇村鍙互鐪� http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 鏂囨。
+ org:
+ quartz:
+ # Scheduler 鐩稿叧閰嶇疆
+ scheduler:
+ instanceName: schedulerName
+ instanceId: AUTO # 鑷姩鐢熸垚 instance ID
+ # JobStore 鐩稿叧閰嶇疆
+ jobStore:
+ # JobStore 瀹炵幇绫汇�傚彲瑙佸崥瀹細https://blog.csdn.net/weixin_42458219/article/details/122247162
+ class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
+ isClustered: true # 鏄泦缇ゆā寮�
+ clusterCheckinInterval: 15000 # 闆嗙兢妫�鏌ラ鐜囷紝鍗曚綅锛氭绉掋�傞粯璁や负 15000锛屽嵆 15 绉�
+ misfireThreshold: 60000 # misfire 闃�鍊硷紝鍗曚綅锛氭绉掋��
+ # 绾跨▼姹犵浉鍏抽厤缃�
+ threadPool:
+ threadCount: 25 # 绾跨▼姹犲ぇ灏忋�傞粯璁や负 10 銆�
+ threadPriority: 5 # 绾跨▼浼樺厛绾�
+ class: org.quartz.simpl.SimpleThreadPool # 绾跨▼姹犵被鍨�
+ jdbc: # 浣跨敤 JDBC 鐨� JobStore 鐨勬椂鍊欙紝JDBC 鐨勯厤缃�
+ initialize-schema: NEVER # 鏄惁鑷姩浣跨敤 SQL 鍒濆鍖� Quartz 琛ㄧ粨鏋勩�傝繖閲岃缃垚 never 锛屾垜浠墜鍔ㄥ垱寤鸿〃缁撴瀯銆�
+
+--- #################### 娑堟伅闃熷垪鐩稿叧 ####################
+
+# rocketmq 閰嶇疆椤癸紝瀵瑰簲 RocketMQProperties 閰嶇疆绫�
+rocketmq:
+ name-server: 127.0.0.1:9876 # RocketMQ Namesrv
+
+spring:
+ # RabbitMQ 閰嶇疆椤癸紝瀵瑰簲 RabbitProperties 閰嶇疆绫�
+ rabbitmq:
+ host: 127.0.0.1 # RabbitMQ 鏈嶅姟鐨勫湴鍧�
+ port: 5672 # RabbitMQ 鏈嶅姟鐨勭鍙�
+ username: rabbit # RabbitMQ 鏈嶅姟鐨勮处鍙�
+ password: rabbit # RabbitMQ 鏈嶅姟鐨勫瘑鐮�
+ # Kafka 閰嶇疆椤癸紝瀵瑰簲 KafkaProperties 閰嶇疆绫�
+ kafka:
+ bootstrap-servers: 127.0.0.1:9092 # 鎸囧畾 Kafka Broker 鍦板潃锛屽彲浠ヨ缃涓紝浠ラ�楀彿鍒嗛殧
+
+--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 ####################
+
+# Lock4j 閰嶇疆椤�
+lock4j:
+ acquire-timeout: 3000 # 鑾峰彇鍒嗗竷寮忛攣瓒呮椂鏃堕棿锛岄粯璁や负 3000 姣
+ expire: 30000 # 鍒嗗竷寮忛攣鐨勮秴鏃舵椂闂达紝榛樿涓� 30000 姣
+
+--- #################### 鐩戞帶鐩稿叧閰嶇疆 ####################
+
+# Actuator 鐩戞帶绔偣鐨勯厤缃」
+management:
+ endpoints:
+ web:
+ base-path: /actuator # Actuator 鎻愪緵鐨� API 鎺ュ彛鐨勬牴鐩綍銆傞粯璁や负 /actuator
+ exposure:
+ include: '*' # 闇�瑕佸紑鏀剧殑绔偣銆傞粯璁ゅ�煎彧鎵撳紑 health 鍜� info 涓や釜绔偣銆傞�氳繃璁剧疆 * 锛屽彲浠ュ紑鏀炬墍鏈夌鐐广��
+
+# Spring Boot Admin 閰嶇疆椤�
+spring:
+ boot:
+ admin:
+ # Spring Boot Admin Client 瀹㈡埛绔殑鐩稿叧閰嶇疆
+ client:
+ url: http://127.0.0.1:${server.port}/${spring.boot.admin.context-path} # 璁剧疆 Spring Boot Admin Server 鍦板潃
+ instance:
+ service-host-type: IP # 娉ㄥ唽瀹炰緥鏃讹紝浼樺厛浣跨敤 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+ username: admin
+ password: admin
+ # Spring Boot Admin Server 鏈嶅姟绔殑鐩稿叧閰嶇疆
+ context-path: /admin # 閰嶇疆 Spring
+ # 鍏佽宓屽叆 iframe 鐨勫煙鍚嶏紙鏀寔閫氶厤绗︼級锛屽疄闄呴儴缃叉椂锛屽彲浠ユ敼涓� "'self' [浣犵殑鍏綉鍩熷悕]"
+ frame-ancestors: "'self' localhost localhost:48080 127.0.0.1 127.0.0.1:48080"
+
+# 鏃ュ織鏂囦欢閰嶇疆
+logging:
+ file:
+ name: ${user.home}/logs/${spring.application.name}.log # 鏃ュ織鏂囦欢鍚嶏紝鍏ㄨ矾寰�
+ level:
+ # 閰嶇疆鑷繁鍐欑殑 MyBatis Mapper 鎵撳嵃鏃ュ織
+ cn.iocoder.yudao.module.bpm.dal.mysql: debug
+ cn.iocoder.yudao.module.infra.dal.mysql: debug
+ cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiErrorLogMapper: INFO # 閰嶇疆 ApiErrorLogMapper 鐨勬棩蹇楃骇鍒负 info锛岄伩鍏嶅拰 GlobalExceptionHandler 閲嶅鎵撳嵃
+ cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper: INFO # 閰嶇疆 JobLogMapper 鐨勬棩蹇楃骇鍒负 info
+ cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper: INFO # 閰嶇疆 FileConfigMapper 鐨勬棩蹇楃骇鍒负 info
+ cn.iocoder.yudao.module.pay.dal.mysql: debug
+ cn.iocoder.yudao.module.pay.dal.mysql.notify.PayNotifyTaskMapper: INFO # 閰嶇疆 PayNotifyTaskMapper 鐨勬棩蹇楃骇鍒负 info
+ cn.iocoder.yudao.module.system.dal.mysql: debug
+ cn.iocoder.yudao.module.system.dal.mysql.sms.SmsChannelMapper: INFO # 閰嶇疆 SmsChannelMapper 鐨勬棩蹇楃骇鍒负 info
+ cn.iocoder.yudao.module.tool.dal.mysql: debug
+ cn.iocoder.yudao.module.member.dal.mysql: debug
+ cn.iocoder.yudao.module.trade.dal.mysql: debug
+ cn.iocoder.yudao.module.promotion.dal.mysql: debug
+ cn.iocoder.yudao.module.statistics.dal.mysql: debug
+ cn.iocoder.yudao.module.crm.dal.mysql: debug
+ cn.iocoder.yudao.module.erp.dal.mysql: debug
+ cn.iocoder.yudao.module.mes.dal.mysql: debug
+ cn.iocoder.yudao.module.wms.dal.mysql: debug
+ cn.iocoder.yudao.module.iot.dal.mysql: debug
+ cn.iocoder.yudao.module.iot.dal.tdengine: DEBUG
+ cn.iocoder.yudao.module.iot.service.rule: debug
+ cn.iocoder.yudao.module.ai.dal.mysql: debug
+ cn.iocoder.yudao.module.im.dal.mysql: debug
+ org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 鑺嬭壙锛氬厛绂佺敤锛孲pring Boot 3.X 瀛樺湪閮ㄥ垎閿欒鐨� WARN 鎻愮ず
+
+debug: false
+
+--- #################### 寰俊鍏紬鍙枫�佸皬绋嬪簭鐩稿叧閰嶇疆 ####################
+wx:
+ mp: # 鍏紬鍙烽厤缃紙蹇呭~锛夛紝鍙傝 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 鏂囨。
+# app-id: wx041349c6f39b268b # 娴嬭瘯鍙凤紙鐗涘笇灏ф彁渚涚殑锛�
+# secret: 5abee519483bc9f8cb37ce280e814bd0
+# app-id: wx5b23ba7a5589ecbb # 娴嬭瘯鍙凤紙鑷繁鐨勶級
+# secret: 2a7b3b20c537e52e74afd395eb85f61f
+ app-id: wxf56b1542b9e85f8a # 娴嬭瘯鍙凤紙Kongdy 鎻愪緵鐨勶級
+ secret: 496379dcef1ba869e9234de8d598cfd3
+ # 瀛樺偍閰嶇疆锛岃В鍐� AccessToken 鐨勮法鑺傜偣鐨勫叡浜�
+ config-storage:
+ type: RedisTemplate # 閲囩敤 RedisTemplate 鎿嶄綔 Redis锛屼細鑷姩浠� Spring 涓幏鍙�
+ key-prefix: wx # Redis Key 鐨勫墠缂�
+ http-client-type: HttpComponents # 閲囩敤 HttpComponents锛圚ttpClient 5锛夎姹傚井淇″叕浼楀彿骞冲彴
+ miniapp: # 灏忕▼搴忛厤缃紙蹇呭~锛夛紝鍙傝 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 鏂囨。
+ # appid: wx62056c0d5e8db250 # 娴嬭瘯鍙凤紙鐗涘笇灏ф彁渚涚殑锛�
+ # secret: 333ae72f41552af1e998fe1f54e1584a
+# appid: wx63c280fe3248a3e7 # wenhualian鐨勬帴鍙f祴璇曞彿
+# secret: 6f270509224a7ae1296bbf1c8cb97aed
+ appid: wxc4598c446f8a9cb3 # 娴嬭瘯鍙凤紙Kongdy 鎻愪緵鐨勶級
+ secret: 4a1a04e07f6a4a0751b39c3064a92c8b
+# appid: wx66186af0759f47c9 # 娴嬭瘯鍙凤紙puhui 鎻愪緵鐨勶級
+# secret: 3218bcbd112cbc614c7264ceb20144ac
+ config-storage:
+ type: RedisTemplate # 閲囩敤 RedisTemplate 鎿嶄綔 Redis锛屼細鑷姩浠� Spring 涓幏鍙�
+ key-prefix: wa # Redis Key 鐨勫墠缂�
+ http-client-type: HttpComponents # 閲囩敤 HttpComponents锛圚ttpClient 5锛夎姹傚井淇″皬绋嬪簭骞冲彴
+
+--- #################### 鑺嬮亾鐩稿叧閰嶇疆 ####################
+
+# 鑺嬮亾閰嶇疆椤癸紝璁剧疆褰撳墠椤圭洰鎵�鏈夎嚜瀹氫箟鐨勯厤缃�
+yudao:
+ captcha:
+ enable: false # 鏈湴鐜锛屾殏鏃跺叧闂浘鐗囬獙璇佺爜锛屾柟渚跨櫥褰曠瓑鎺ュ彛鐨勬祴璇曪紱
+ security:
+ mock-enable: true
+ pay:
+ order-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/order # 鏀粯娓犻亾鐨勩�愭敮浠樸�戝洖璋冨湴鍧�
+ refund-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/refund # 鏀粯娓犻亾鐨勩�愰��娆俱�戝洖璋冨湴鍧�
+ transfer-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/transfer # 鏀粯娓犻亾鐨勩�愯浆璐︺�戝洖璋冨湴鍧�
+ access-log: # 璁块棶鏃ュ織鐨勯厤缃」
+ enable: false
+ demo: false # 鍏抽棴婕旂ず妯″紡
+ wxa-code:
+ env-version: develop # 灏忕▼搴忕増鏈�: 姝e紡鐗堜负 "release"锛涗綋楠岀増涓� "trial"锛涘紑鍙戠増涓� "develop"
+ wxa-subscribe-message:
+ miniprogram-state: developer # 璺宠浆灏忕▼搴忕被鍨嬶細寮�鍙戠増涓� 鈥渄eveloper鈥濓紱浣撻獙鐗堜负 鈥渢rial鈥濅负锛涙寮忕増涓� 鈥渇ormal鈥�
+ tencent-lbs-key: TVDBZ-TDILD-4ON4B-PFDZA-RNLKH-VVF6E # QQ 鍦板浘鐨勫瘑閽� https://lbs.qq.com/service/staticV2/staticGuide/staticDoc
+
+justauth:
+ enabled: true
+ type:
+ DINGTALK: # 閽夐拤
+ client-id: dingvrnreaje3yqvzhxg
+ client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+ ignore-check-redirect-uri: true
+ WECHAT_ENTERPRISE: # 浼佷笟寰俊
+ client-id: wwd411c69a39ad2e54
+ client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+ agent-id: 1000004
+ ignore-check-redirect-uri: true
+ # noinspection SpringBootApplicationYaml
+ WECHAT_MINI_PROGRAM: # 寰俊灏忕▼搴�
+ client-id: ${wx.miniapp.appid}
+ client-secret: ${wx.miniapp.secret}
+ ignore-check-redirect-uri: true
+ ignore-check-state: true # 寰俊灏忕▼搴忥紝涓嶄細浣跨敤鍒� state锛屾墍浠ヤ笉杩涜鏍¢獙
+ WECHAT_MP: # 寰俊鍏紬鍙�
+ client-id: ${wx.mp.app-id}
+ client-secret: ${wx.mp.secret}
+ ignore-check-redirect-uri: true
+ ALIPAY: # 鏀粯瀹濆皬绋嬪簭
+ client-id: xx
+ client-secret: xx
+ alipay-public-key: xx
+ ignore-check-redirect-uri: true
+ ignore-check-state: true
+ cache:
+ type: REDIS
+ prefix: 'social_auth_state:' # 缂撳瓨鍓嶇紑锛岀洰鍓嶅彧瀵� Redis 缂撳瓨鐢熸晥锛岄粯璁� JUSTAUTH::STATE::
+ timeout: 24h # 瓒呮椂鏃堕暱锛岀洰鍓嶅彧瀵� Redis 缂撳瓨鐢熸晥锛岄粯璁� 3 鍒嗛挓
--
Gitblit v1.9.3