From 3e964b4d23fa34b15f979d6e238efaf3fbb6c390 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Fri, 31 Oct 2025 14:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BA=93=E5=AD=98=E5=88=86?= =?UTF-8?q?=E5=B8=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/klp/domain/vo/WmsStockVo.java | 5 ++ .../klp/service/impl/WmsStockServiceImpl.java | 71 +++++++------------ .../resources/mapper/klp/WmsStockMapper.xml | 34 +++++---- 3 files changed, 48 insertions(+), 62 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockVo.java index 7ef59bc7..af71cfec 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockVo.java @@ -73,6 +73,11 @@ public class WmsStockVo { @ExcelProperty(value = "仓库/库区名称") private String warehouseName; + /** + * 状态(0=在库,1=在途,2=已出库) + */ + private Integer status; + /** * 在途量 */ diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java index 3103bf47..936bc0f8 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java @@ -8,10 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; -import com.klp.domain.bo.WmsPurchasePlanDetailBo; -import com.klp.domain.vo.WmsPurchasePlanDetailVo; -import com.klp.domain.vo.WmsRawMaterialVo; -import com.klp.service.IWmsPurchasePlanDetailService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsStockBo; @@ -37,7 +33,6 @@ public class WmsStockServiceImpl implements IWmsStockService { private final WmsStockMapper baseMapper; private final WmsWarehouseMapper warehouseMapper; - private final IWmsPurchasePlanDetailService purchasePlanDetailService; /** @@ -55,40 +50,9 @@ public class WmsStockServiceImpl implements IWmsStockService { public TableDataInfo queryPageList(WmsStockBo bo, PageQuery pageQuery) { QueryWrapper lqw = buildQueryWrapperPlus(bo); Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); - fillDemandInfo(result.getRecords()); return TableDataInfo.build(result); } - /** - * 填充原材料在途信息 - */ - private void fillDemandInfo(List rawMaterialList) { - if (rawMaterialList == null || rawMaterialList.isEmpty()) { - return; - } - // 为每个原材料填充信息 - for (WmsStockVo vo : rawMaterialList) { - Long rawMaterialId = vo.getItemId(); - // 查询在途量(采购计划明细) - BigDecimal onTheWay = getOnTheWayQuantity(rawMaterialId); - vo.setOnTheWay(onTheWay); - } - } - - /** - * 获取在途量 - */ - private BigDecimal getOnTheWayQuantity(Long rawMaterialId) { - WmsPurchasePlanDetailBo bo = new WmsPurchasePlanDetailBo(); - bo.setRawMaterialId(rawMaterialId); - List list = purchasePlanDetailService.queryList(bo); - return list.stream() - .filter(item -> item.getStatus() != null && item.getStatus() == 1) // 在途状态 - .map(WmsPurchasePlanDetailVo::getQuantity) - .filter(qty -> qty != null) - .reduce(BigDecimal.ZERO, BigDecimal::add); - } - /** * 查询库存:原材料/产品与库区/库位的存放关系列表 */ @@ -98,7 +62,6 @@ public class WmsStockServiceImpl implements IWmsStockService { return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WmsStockBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotBlank(bo.getItemType()), WmsStock::getItemType, bo.getItemType()); lqw.eq(bo.getItemId() != null, WmsStock::getItemId, bo.getItemId()); @@ -107,23 +70,43 @@ public class WmsStockServiceImpl implements IWmsStockService { } private QueryWrapper buildQueryWrapperPlus(WmsStockBo bo) { // 注意:这里改用 QueryWrapper 而非 LambdaQueryWrapper - Map params = bo.getParams(); QueryWrapper qw = Wrappers.query(); // 使用普通 QueryWrapper - qw.eq("s.del_flag", 0); // 手动添加逻辑删除条件 + + // 使用 select 添加聚合字段 + qw.select( + "mc.warehouse_id AS warehouseId", + "mc.item_type AS itemType", + "mc.item_id AS itemId", + "w.warehouse_name AS warehouseName", + "CASE WHEN mc.item_type = 'product' THEN p.product_name WHEN mc.item_type = 'raw_material' THEN r.raw_material_name ELSE NULL END AS itemName", + "CASE WHEN mc.item_type = 'product' THEN p.product_code WHEN mc.item_type = 'raw_material' THEN r.raw_material_code ELSE NULL END AS itemCode", + "COUNT(*) AS totalQuantity", + "SUM(CASE WHEN mc.status = 1 THEN 1 ELSE 0 END) AS onTheWay" + ); // 处理仓库ID查询,支持递归查询子节点 if (bo.getWarehouseId() != null) { List warehouseIds = getWarehouseIdsWithChildren(bo.getWarehouseId()); if (warehouseIds.size() == 1) { - qw.eq("s.warehouse_id", warehouseIds.get(0)); + qw.eq("mc.warehouse_id", warehouseIds.get(0)); } else { - qw.in("s.warehouse_id", warehouseIds); + qw.in("mc.warehouse_id", warehouseIds); } } - qw.eq(StringUtils.isNotBlank(bo.getItemType()), "s.item_type", bo.getItemType()); - qw.eq(bo.getItemId() != null, "s.item_id", bo.getItemId()); - qw.eq(StringUtils.isNotBlank(bo.getBatchNo()), "s.batch_no", bo.getBatchNo()); + qw.eq(StringUtils.isNotBlank(bo.getItemType()), "mc.item_type", bo.getItemType()); + qw.eq(bo.getItemId() != null, "mc.item_id", bo.getItemId()); + qw.like(StringUtils.isNotBlank(bo.getBatchNo()), "mc.enter_coil_no", bo.getBatchNo()); + + // 使用 groupBy 进行分组 + qw.groupBy( + "mc.warehouse_id", + "mc.item_type", + "mc.item_id", + "w.warehouse_name", + "CASE WHEN mc.item_type = 'product' THEN p.product_name WHEN mc.item_type = 'raw_material' THEN r.raw_material_name ELSE NULL END", + "CASE WHEN mc.item_type = 'product' THEN p.product_code WHEN mc.item_type = 'raw_material' THEN r.raw_material_code ELSE NULL END" + ); return qw; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml index 9aa5d083..09c33838 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml @@ -23,31 +23,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where item_id = #{rawMaterialId} and item_type = 'raw_material' and del_flag = 0 - +