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; + } +}