From 03601ab0aab997fd8eb73edbf655403caa2cd4c3 Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Tue, 13 Oct 2026 15:55:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B4=E6=A0=87=E7=94=B3=E8=AF=B7=EF=BC=8C?= =?UTF-8?q?=E4=BB=93=E5=82=A8=E8=BD=AC=E8=BF=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/InventoryPositionMapper.java | 9 +++++++++ .../service/RelabelApplicationService.java | 17 +++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/inventory/mapper/InventoryPositionMapper.java b/lastleg-service/src/main/java/com/baiyue/lastleg/inventory/mapper/InventoryPositionMapper.java index 5aa78e426..dc1e70a5d 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/inventory/mapper/InventoryPositionMapper.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/inventory/mapper/InventoryPositionMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; +import java.util.Collection; @Mapper public interface InventoryPositionMapper extends BaseMapper { @@ -17,6 +18,14 @@ public interface InventoryPositionMapper extends BaseMapper { List listBalance(@Param("customerId") String customerId, @Param("balanceId") Long balanceId); + @Select({""}) + List listBalances(@Param("customerId") String customerId, + @Param("balanceIds") Collection balanceIds); + @Select("SELECT * FROM ll_inventory_position WHERE id=#{positionId} AND customer_id=#{customerId} LIMIT 1") InventoryPosition findTenantPosition(@Param("customerId") String customerId, @Param("positionId") Long positionId); diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/relabel/service/RelabelApplicationService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/relabel/service/RelabelApplicationService.java index 8f69deb39..8ff831431 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/relabel/service/RelabelApplicationService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/relabel/service/RelabelApplicationService.java @@ -253,10 +253,13 @@ public class RelabelApplicationService implements WalletResultHandler { .gt(InventoryBalance::getAvailablePackages, 0) .like(StringUtils.hasText(inboundCode), InventoryBalance::getInboundCode, trim(inboundCode)) .orderByDesc(InventoryBalance::getUpdatedAt)); - List result = new java.util.ArrayList<>(balances.stream().map(balance -> { - List positions = inventoryPositions.listBalance(customerId, balance.getId()) + Map> positionsByBalance = balances.isEmpty() ? Map.of() + : inventoryPositions.listBalances(customerId, balances.stream().map(InventoryBalance::getId).toList()) .stream().filter(position -> value(position.getAvailablePackages()) > 0) - .map(position -> new RelabelResponses.InventoryPosition(position.getId(), position.getPalletNo(), + .collect(Collectors.groupingBy(InventoryPosition::getBalanceId, LinkedHashMap::new, Collectors.toList())); + List result = new java.util.ArrayList<>(balances.stream().map(balance -> { + List positions = positionsByBalance.getOrDefault(balance.getId(), List.of()) + .stream().map(position -> new RelabelResponses.InventoryPosition(position.getId(), position.getPalletNo(), position.getBatchNo(), position.getWarehouseLocationCode(), value(position.getAvailablePackages()))) .toList(); long available = positions.stream().mapToLong(RelabelResponses.InventoryPosition::availablePackages).sum(); @@ -298,14 +301,16 @@ public class RelabelApplicationService implements WalletResultHandler { cartonLines.stream().mapToLong(line -> value(line.getRelabelledQuantity()) + returnCartons.completedSkuQuantity(carton.getId(), line.getSkuCode())).sum()); long reserved = returnCartons.relabelReservedQuantity(carton.getId()); + List mergedCartonMarks = StringUtils.hasText(carton.getSourceReturnNo()) ? List.of() + : returnPackingTraces.listCartonHistory(customerId, carton.getCartonMark()).stream() + .filter(history -> carton.getCartonMark().equals(history.sourceCartonMark())) + .map(history -> history.targetCartonMark()).distinct().toList(); result.add(new RelabelResponses.InventoryCandidate(null, null, carton.getSourceReturnNo(), null, carton.getOverseasWarehouseId(), null, null, carton.getDestinationWarehouseCode(), carton.getDestinationWarehouseName(), skuCodes, productNames, availablePackages, 0, List.of(), "PARCEL".equals(carton.getSourceUnitType()) ? "RETURN_PARCEL" : "RETURN_CARTON", carton.getId(), carton.getCartonMark(), cartonSkus, relabelledPackages, com.baiyue.lastleg.returnreceipt.service.ReturnRelabelProgress.status(value(carton.getTotalQuantity()), relabelledPackages, reserved), relabelledPackages, reserved, java.util.Set.of("MERGED", "OUTBOUNDED").contains(carton.getStatus()) ? 0L : value(carton.getTotalQuantity()), carton.getStatus(), carton.getRelabelNo(), - returnPackingTraces.listCartonHistory(customerId, carton.getCartonMark()).stream() - .filter(history -> carton.getCartonMark().equals(history.sourceCartonMark())) - .map(history -> history.targetCartonMark()).distinct().toList(), returnCartons.hasOutbound(carton.getId()), + mergedCartonMarks, returnCartons.hasOutbound(carton.getId()), skuConversionRows.listCarton(customerId, carton.getId()).stream() .map(com.baiyue.lastleg.returnreceipt.dto.ReturnInventoryResponses.SkuConversion::from).toList(), physicalSkus, cartonAvailable)); }