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 @@ ![功能图](/.image/common/mes-preview.png) +### WMS 系统 + +演示地址: + +![功能图](/.image/common/wms-feature.png) + +![功能图](/.image/common/wms-preview.png) + ### 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()); } }