fix(overseas): restore dispatch delivery returns
This commit is contained in:
+45
@@ -14,6 +14,14 @@ import com.baiyue.lastleg.delivery.entity.OutboundPdaPick;
|
||||
import com.baiyue.lastleg.delivery.mapper.OutboundOrderMapper;
|
||||
import com.baiyue.lastleg.delivery.mapper.OutboundPalletItemMapper;
|
||||
import com.baiyue.lastleg.delivery.mapper.OutboundPdaPickMapper;
|
||||
import com.baiyue.lastleg.dispatch.entity.DispatchItem;
|
||||
import com.baiyue.lastleg.dispatch.mapper.DispatchItemMapper;
|
||||
import com.baiyue.lastleg.dispatch.pda.entity.DispatchPdaPick;
|
||||
import com.baiyue.lastleg.dispatch.pda.entity.DispatchPdaPickOrder;
|
||||
import com.baiyue.lastleg.dispatch.pda.entity.DispatchPdaTask;
|
||||
import com.baiyue.lastleg.dispatch.pda.mapper.DispatchPdaPickMapper;
|
||||
import com.baiyue.lastleg.dispatch.pda.mapper.DispatchPdaPickOrderMapper;
|
||||
import com.baiyue.lastleg.dispatch.pda.mapper.DispatchPdaTaskMapper;
|
||||
import com.baiyue.lastleg.delivery.model.DeliveryStatusPolicy;
|
||||
import com.baiyue.lastleg.entity.LastlegInboundOrder;
|
||||
import com.baiyue.lastleg.entity.LastlegOrder;
|
||||
@@ -66,6 +74,10 @@ public class ExceptionOrderService {
|
||||
@Resource private OutboundOrderMapper outboundOrders;
|
||||
@Resource private OutboundPalletItemMapper outboundPalletItems;
|
||||
@Resource private OutboundPdaPickMapper outboundPdaPicks;
|
||||
@Resource private DispatchItemMapper dispatchItems;
|
||||
@Resource private DispatchPdaTaskMapper dispatchPdaTasks;
|
||||
@Resource private DispatchPdaPickMapper dispatchPdaPicks;
|
||||
@Resource private DispatchPdaPickOrderMapper dispatchPdaPickOrders;
|
||||
@Resource private ExceptionReturnItemMapper returnItems;
|
||||
@Resource private ExceptionOrderCommandMapper commands;
|
||||
@Resource private InventoryCommandService inventoryCommands;
|
||||
@@ -424,9 +436,42 @@ public class ExceptionOrderService {
|
||||
item.getSkuCode(), item.getInboundCode(), Objects.requireNonNullElse(pick.getPackages(), 0L)),
|
||||
(left, right) -> left.withPackages(left.maxReturnPackages() + right.maxReturnPackages()));
|
||||
}
|
||||
appendDispatchPickSources(delivery, outbound, itemById, aggregated);
|
||||
return new ArrayList<>(aggregated.values());
|
||||
}
|
||||
|
||||
private void appendDispatchPickSources(DeliveryOrder delivery, OutboundOrder outbound,
|
||||
Map<Long, OutboundPalletItem> outboundItemById,
|
||||
Map<String, Source> aggregated) {
|
||||
if (outbound.getDispatchOrderId() == null) return;
|
||||
String customerId = delivery.getCustomerId();
|
||||
DispatchPdaTask task = dispatchPdaTasks.findByDispatch(customerId, outbound.getDispatchOrderId());
|
||||
if (task == null) return;
|
||||
Map<Long, DispatchItem> dispatchItemById = new LinkedHashMap<>();
|
||||
dispatchItems.findByDispatchOrder(customerId, outbound.getDispatchOrderId())
|
||||
.forEach(item -> dispatchItemById.put(item.getId(), item));
|
||||
for (DispatchPdaPick pick : dispatchPdaPicks.listTask(customerId, task.getId())) {
|
||||
DispatchItem dispatchItem = dispatchItemById.get(pick.getDispatchItemId());
|
||||
if (dispatchItem == null || pick.getInventoryPositionId() == null) continue;
|
||||
List<DispatchPdaPickOrder> attributions = dispatchPdaPickOrders.listPick(customerId, pick.getId());
|
||||
for (DispatchPdaPickOrder attribution : attributions) {
|
||||
LastlegOrder tail = lastMileOrders.selectById(attribution.getOrderId());
|
||||
if (tail == null || !customerId.equals(tail.getCustomerId())) continue;
|
||||
OutboundPalletItem outboundItem = outboundItemById.values().stream()
|
||||
.filter(item -> Objects.equals(item.getWarehousePalletId(), dispatchItem.getWarehousePalletId()))
|
||||
.filter(item -> !StringUtils.hasText(item.getInboundCode())
|
||||
|| Objects.equals(item.getInboundCode(), tail.getInboundCode()))
|
||||
.findFirst().orElse(null);
|
||||
if (outboundItem == null) continue;
|
||||
String key = outboundItem.getId() + ":" + pick.getInventoryPositionId() + ":" + tail.getInboundCode();
|
||||
long packages = Objects.requireNonNullElse(attribution.getPackages(), 0L);
|
||||
aggregated.merge(key, new Source(outboundItem.getId(), pick.getInventoryPositionId(),
|
||||
outboundItem.getPalletNo(), outboundItem.getSkuCode(), tail.getInboundCode(), packages),
|
||||
(left, right) -> left.withPackages(left.maxReturnPackages() + right.maxReturnPackages()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<ExceptionOrderResponses.ReturnSource> storedReturnSources(ExceptionOrder order) {
|
||||
return returnItems.findByException(order.getCustomerId(), order.getId()).stream()
|
||||
.map(item -> new ExceptionOrderResponses.ReturnSource(item.getOutboundPalletItemId(),
|
||||
|
||||
Reference in New Issue
Block a user