From e104576c2c022c981c9415a7073b5f26d6b494a5 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Wed, 6 May 2026 16:10:16 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-06=20pda=E8=B7=A8=E5=8C=BA=E8=B0=83?= =?UTF-8?q?=E6=8B=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/CrossAreaTransferMapper.java | 8 ++-- .../impl/CrossAreaTransferServiceImpl.java | 42 +++++++++++-------- .../CrossAreaTransferMapper.xml | 5 ++- 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java b/src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java index 2d3cf4e..ef21759 100644 --- a/src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java +++ b/src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java @@ -23,11 +23,11 @@ public interface CrossAreaTransferMapper extends BaseMapper getStockInfoByLabelCode(@Param("labelCode") String labelCode, - @Param("site") String site, - @Param("warehouseId") String warehouseId); + List> getStockInfoByLabelCode(@Param("labelCode") String labelCode, + @Param("site") String site, + @Param("warehouseId") String warehouseId); /** * 根据库位获取标签列表 diff --git a/src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java b/src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java index 20568a5..d8fb5ab 100644 --- a/src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java +++ b/src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java @@ -72,31 +72,39 @@ public class CrossAreaTransferServiceImpl extends ServiceImpl stockInfo = crossAreaTransferMapper.getStockInfoByLabelCode(scanCode, site, warehouseId); + // 按标签调拨:支持单标签和父标签(多子标签)两种查询结果 + List> stockInfoList = crossAreaTransferMapper.getStockInfoByLabelCode(scanCode, site, warehouseId); - if (stockInfo == null) { + if (stockInfoList == null || stockInfoList.isEmpty()) { logger.warn("未找到标签库存信息,标签条码: {}", scanCode); result.put("code", 1); result.put("msg", "未找到该标签的库存信息"); return result; } - // 格式化返回数据 - Map labelInfo = new HashMap<>(); - labelInfo.put("labelCode", stockInfo.get("label_code")); - labelInfo.put("quantity", stockInfo.get("quantity")); - labelInfo.put("warehouseName", stockInfo.get("warehouse_name")); - labelInfo.put("locationId", stockInfo.get("location_id")); - labelInfo.put("status", stockInfo.get("status")); - labelInfo.put("productionDate", stockInfo.get("production_date")); - labelInfo.put("expiryDate", stockInfo.get("expiry_date")); - labelInfo.put("orderRef1", stockInfo.get("order_ref1")); - labelInfo.put("orderRef2", stockInfo.get("order_ref2")); - labelInfo.put("batchNo", stockInfo.get("batch_no")); - labelInfo.put("buNo", stockInfo.get("buNo")); + // 统一格式化返回字段,供前端按单条/多条展示 + List> labelInfoList = new ArrayList<>(); + for (Map stockInfo : stockInfoList) { + Map labelInfo = new HashMap<>(); + labelInfo.put("labelCode", stockInfo.get("label_code")); + labelInfo.put("partNo", stockInfo.get("part_no")); + labelInfo.put("unit", stockInfo.get("unit")); + labelInfo.put("quantity", stockInfo.get("quantity")); + labelInfo.put("warehouseName", stockInfo.get("warehouse_name")); + labelInfo.put("locationId", stockInfo.get("location_id")); + labelInfo.put("status", stockInfo.get("status")); + labelInfo.put("productionDate", stockInfo.get("production_date")); + labelInfo.put("expiryDate", stockInfo.get("expiry_date")); + labelInfo.put("orderRef1", stockInfo.get("order_ref1")); + labelInfo.put("orderRef2", stockInfo.get("order_ref2")); + labelInfo.put("batchNo", stockInfo.get("batch_no")); + labelInfo.put("buNo", stockInfo.get("buNo")); + labelInfoList.add(labelInfo); + } + result.put("code", 0); - result.put("data", labelInfo); + // 兼容旧前端:单条时仍返回对象;多条时返回列表 + result.put("data", labelInfoList.size() == 1 ? labelInfoList.get(0) : labelInfoList); } else if ("location".equals(transferMode)) { // 按库位调拨:获取库位下的所有标签 diff --git a/src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml b/src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml index d63c137..9743749 100644 --- a/src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml +++ b/src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml @@ -17,14 +17,17 @@ s.orderref1 as order_ref1, s.orderref2 as order_ref2, s.status, + p.UMID as unit, w.WareHouseName as warehouse_name FROM inventory_stock s + LEFT JOIN Part p ON s.part_no = p.PartNo AND s.site = p.site and s.bu_no = p.bu_no LEFT JOIN warehouse w ON s.warehouse_id = w.WareHouseID AND s.site = w.site - WHERE s.roll_no = #{labelCode} + WHERE (s.roll_no = #{labelCode} OR s.Parent_roll_no = #{labelCode}) AND s.site = #{site} AND s.warehouse_id = #{warehouseId} AND s.status = '在库' AND s.qty_on_hand > 0 + ORDER BY CASE WHEN s.roll_no = #{labelCode} THEN 0 ELSE 1 END, s.roll_no