This commit is contained in:
2026-10-14 12:13:26 +08:00
parent 166280da5a
commit 287edcf32b
3 changed files with 30 additions and 2 deletions
@@ -22,6 +22,9 @@ public interface ReturnPackingTraceMapper {
@Select("SELECT return_no, SUM(CASE WHEN target_carton_mark=#{mark} THEN quantity ELSE -quantity END) AS quantity FROM ll_return_packing_trace WHERE customer_id=#{customerId} AND sku_code=#{sku} AND (source_carton_mark=#{mark} OR target_carton_mark=#{mark}) GROUP BY return_no HAVING quantity>0 ORDER BY return_no")
List<Ownership> ownership(@Param("customerId") String customerId, @Param("mark") String mark, @Param("sku") String sku);
@Select("SELECT COALESCE(SUM(CASE WHEN target_carton_mark=#{mark} THEN quantity ELSE -quantity END),0) FROM ll_return_packing_trace WHERE customer_id=#{customerId} AND sku_code=#{sku} AND (source_carton_mark=#{mark} OR target_carton_mark=#{mark})")
long netTrackedQuantity(@Param("customerId") String customerId, @Param("mark") String mark, @Param("sku") String sku);
@Select("SELECT id,source_carton_mark,target_carton_mark,return_no,sku_code,quantity,created_at FROM ll_return_packing_trace WHERE customer_id=#{customerId} AND return_no=#{returnNo} ORDER BY created_at,id")
List<Trace> listReturn(@Param("customerId") String customerId, @Param("returnNo") String returnNo);
@@ -1014,8 +1014,7 @@ public class ReturnInventoryService {
throw conflict("目标箱已有合箱预占,不能并入");
if (existingTarget != null) ReturnCartonCountGuard.requireConfirmed(existingTarget);
if (existingTarget != null) for (var item : cartonItems.lockCarton(existingTarget.getId())) {
long tracked = packingTrace.ownership(customerId, targetMark, item.getSkuCode()).stream()
.mapToLong(com.baiyue.lastleg.returnreceipt.mapper.ReturnPackingTraceMapper.Ownership::quantity).sum();
long tracked = packingTrace.netTrackedQuantity(customerId, targetMark, item.getSkuCode());
if (tracked < value(item.getQuantity())) {
String[] origins = required(existingTarget.getSourceReturnNo(), "目标箱来源退货单缺失").split(",");
if (origins.length != 1) throw conflict("历史目标混箱缺少 SKU 来源明细");