diff --git a/.image/common/wms-feature.png b/.image/common/wms-feature.png
new file mode 100644
index 000000000..0d7790b18
Binary files /dev/null and b/.image/common/wms-feature.png differ
diff --git a/.image/common/wms-preview.png b/.image/common/wms-preview.png
new file mode 100644
index 000000000..31c5187d9
Binary files /dev/null and b/.image/common/wms-preview.png differ
diff --git a/README.md b/README.md
index e2142e988..b2bd2f06f 100644
--- a/README.md
+++ b/README.md
@@ -31,8 +31,8 @@
| 【完整版】[yudao-cloud](https://gitee.com/zhijiantianya/yudao-cloud) | [`master`](https://gitee.com/zhijiantianya/yudao-cloud/tree/master/) 分支 | [`master-jdk17`](https://gitee.com/zhijiantianya/yudao-cloud/tree/master-jdk17/) 分支 |
| 【精简版】[yudao-cloud-mini](https://gitee.com/yudaocode/yudao-cloud-mini) | [`master`](https://gitee.com/yudaocode/yudao-cloud-mini/tree/master/) 分支 | [`master-jdk17`](https://gitee.com/yudaocode/yudao-cloud-mini/tree/master-jdk17/) 分支 |
-* 【完整版】:包括系统功能、基础设施、会员中心、数据报表、工作流程、商城系统、微信公众号、CRM、ERP、MES、AI 大模型、IoT 物联网 等功能
-* 【精简版】:只包括系统功能、基础设施功能,不包括会员中心、数据报表、工作流程、商城系统、微信公众号、CRM、ERP、MES、AI 大模型、IoT 物联网 等功能
+* 【完整版】:包括系统功能、基础设施、会员中心、数据报表、工作流程、商城系统、微信公众号、CRM、ERP、MES、WMS、AI 大模型、IoT 物联网 等功能
+* 【精简版】:只包括系统功能、基础设施功能,不包括会员中心、数据报表、工作流程、商城系统、微信公众号、CRM、ERP、MES、WMS、AI 大模型、IoT 物联网 等功能
可参考 [《迁移文档》](https://cloud.iocoder.cn/migrate-module/) ,只需要 5-10 分钟,即可将【完整版】按需迁移到【精简版】
@@ -115,7 +115,7 @@
* 通用模块(必选):系统功能、基础设施
* 通用模块(可选):工作流程、支付系统、数据报表、会员中心
-* 业务系统(按需):ERP 系统、CRM 系统、MES 系统、商城系统、微信公众号、AI 大模型、IoT 物联网
+* 业务系统(按需):ERP 系统、CRM 系统、MES 系统、WMS 系统、商城系统、微信公众号、AI 大模型、IoT 物联网
> 友情提示:本项目基于 RuoYi-Vue 修改,**重构优化**后端的代码,**美化**前端的界面。
>
@@ -287,6 +287,14 @@

+### WMS 系统
+
+演示地址:
+
+
+
+
+
### AI 大模型
演示地址:
@@ -321,6 +329,7 @@
| `yudao-module-erp` | ERP 系统的 Module 模块 |
| `yudao-module-crm` | CRM 系统的 Module 模块 |
| `yudao-module-mes` | MES 系统的 Module 模块 |
+| `yudao-module-wms` | WMS 系统的 Module 模块 |
| `yudao-module-ai` | AI 大模型的 Module 模块 |
| `yudao-module-iot` | IoT 物联网的 Module 模块 |
| `yudao-module-mp` | 微信公众号的 Module 模块 |
diff --git a/yudao-module-wms/yudao-module-wms-server/pom.xml b/yudao-module-wms/yudao-module-wms-server/pom.xml
index 0461e0340..07590d70e 100644
--- a/yudao-module-wms/yudao-module-wms-server/pom.xml
+++ b/yudao-module-wms/yudao-module-wms-server/pom.xml
@@ -88,6 +88,11 @@
yudao-spring-boot-starter-monitor
+
+ org.projectlombok
+ lombok
+
+
cn.iocoder.cloud
diff --git a/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java b/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java
index 8aa2926a2..ba5f4410f 100644
--- a/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java
+++ b/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java
@@ -22,11 +22,11 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.IntStream;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue;
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.getBigDecimal;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.getDateList;
/**
* WMS 首页统计 Service 实现类
@@ -74,7 +74,7 @@ public class WmsHomeStatisticsServiceImpl implements WmsHomeStatisticsService {
dateMap.computeIfAbsent(date, key -> new HashMap<>()).put(orderType, count);
}
// 构造结果,保证每天都有数据
- return convertList(getDateList(startDate, days), d -> {
+ return convertList(IntStream.range(0, days).mapToObj(startDate::plusDays).toList(), d -> {
String dateStr = DatePattern.NORM_DATE_FORMATTER.format(d);
Map row = dateMap.getOrDefault(dateStr, Collections.emptyMap());
return new WmsHomeOrderTrendRespVO().setTime(d.atStartOfDay())
diff --git a/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java b/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
index 3ff81ad6d..250870eee 100644
--- a/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
+++ b/yudao-module-wms/yudao-module-wms-server/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.List;
@@ -291,7 +292,7 @@ public class WmsInventoryServiceImpl implements WmsInventoryService {
WmsItemSkuDO skuDO = itemSkuService.validateItemSkuExists(item.getSkuId());
WmsItemDO itemDO = itemService.validateItemExists(skuDO.getItemId());
return exception(INVENTORY_QUANTITY_NOT_ENOUGH, itemDO.getName(), skuDO.getName(),
- item.getWarehouseId(), beforeQuantity, item.getQuantity());
+ item.getWarehouseId(), beforeQuantity.setScale(6, RoundingMode.HALF_UP), item.getQuantity());
}
}