From 92c85d94810a6b516a87e897244a8b86af778219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 16 Jun 2026 16:06:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(inventory):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=95=B0=E9=87=8F=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 MaterialInventoryVO 视图对象用于返回库存数量信息 - 实现按工厂分组汇总库存数量的功能 - 添加 getTotalNum 和 getItems 方法返回总计和明细数据 - 在 InventoryController 中新增 getCount 接口提供库存查询服务 - 使用 Stream API 进行数据分组和数量累加计算 - 集成 BigDecimal 类型确保数值计算精度 --- .../admin/controller/InventoryController.java | 36 +++++++++++++++ .../admin/pojo/vo/MaterialInventoryVO.java | 46 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/vo/MaterialInventoryVO.java diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java index d8c57492..a5e245fb 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.vo.MaterialInventoryVO; import com.nflg.wms.admin.repository.InventoryCheckTaskScanRecordResitory; import com.nflg.wms.admin.service.QmsService; import com.nflg.wms.common.constant.STATE; @@ -344,4 +345,39 @@ public class InventoryController extends BaseController { } } } + + /** + * 获取库存数量 + * @param materialNo 物料编号 + */ + @GetMapping("getCount") + public ApiResult getCount(@RequestParam String materialNo) { + List inventories = inventoryService.lambdaQuery() + .eq(WmsInventory::getMaterialNo, materialNo) + .list(); + + // 按工厂分组汇总数量 + List items = inventories.stream() + .collect(Collectors.groupingBy( + WmsInventory::getFactoryNo, + Collectors.reducing(BigDecimal.ZERO, WmsInventory::getNum, BigDecimal::add)) + ) + .entrySet() + .stream() + .map(entry -> new MaterialInventoryVO.Item() + .setFactoryNo(entry.getKey()) + .setNum(entry.getValue()) + ) + .collect(Collectors.toList()); + + BigDecimal totalNum = inventories.stream() + .map(WmsInventory::getNum) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + MaterialInventoryVO vo = new MaterialInventoryVO() + .setTotalNum(totalNum) + .setItems(items); + return ApiResult.success(vo); + } } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/vo/MaterialInventoryVO.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/vo/MaterialInventoryVO.java new file mode 100644 index 00000000..9cc43b0e --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/vo/MaterialInventoryVO.java @@ -0,0 +1,46 @@ +package com.nflg.wms.admin.pojo.vo; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存数量视图对象 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class MaterialInventoryVO { + + /** + * 库存总数量(所有库存地点合计) + */ + private BigDecimal totalNum; + + /** + * 各库存地点的数量明细 + */ + private List items; + + @Getter + @Setter + @ToString + @Accessors(chain = true) + public static class Item { + + /** + * 工厂编号 + */ + private String factoryNo; + + /** + * 数量 + */ + private BigDecimal num; + } +} From ac440cb8617777a4ddfd29f7a479e3725c76b48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 16 Jun 2026 18:03:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(delivery):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E7=A1=AE=E8=AE=A4=E5=8A=9F=E8=83=BD=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=A9=BA=E5=80=BC=E5=92=8C=E9=9B=B6=E5=80=BC=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除scanCodes为空的收货参数项,避免后续处理异常 - 修复receiptNum字段的零值比较逻辑,使用compareTo方法替代equals方法 - 移除receiptNum字段的@NotNull注解以允许零值传递 --- .../com/nflg/wms/admin/controller/NormalPGIController.java | 3 ++- .../java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 9a50bab3..e9d99a97 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -189,6 +189,7 @@ public class NormalPGIController extends BaseController { @ApiMark(moduleName = "送货单管理", apiName = "收货确认") public ApiResult takeDelivery(@Valid @RequestBody List request) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空"); + request.removeIf(it -> CollectionUtil.isEmpty(it.getScanCodes())); WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.get(0).getNoteNum()).one(); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在"); List sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order); @@ -223,7 +224,7 @@ public class NormalPGIController extends BaseController { for (SrmMaterialReceiptQO item : request) { - if (item.getReceiptNum().equals(BigDecimal.ZERO)) + if (item.getReceiptNum().compareTo(BigDecimal.ZERO)==0) continue; // 处理二维码 List autoFindChildCodes = Lists.newArrayList(); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java index f284b99b..8ce2c09b 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SrmMaterialReceiptQO.java @@ -49,7 +49,6 @@ public class SrmMaterialReceiptQO { /** * 实际收货数量 */ - @NotNull private BigDecimal receiptNum; /**