fix(firstleg): preserve confirmed loading history in departure gates
This commit is contained in:
+13
-6
@@ -163,13 +163,13 @@ public class OutboundDispatchService {
|
||||
List<InboundBinding> inboundDtos = new ArrayList<>();
|
||||
List<OutboundDispatchEntity> states = new ArrayList<>();
|
||||
for (OutboundDispatchReadMapper.Binding binding : bindings) {
|
||||
GateResult gate = gate(binding, pick, ocean, evidence, containerContributorGates);
|
||||
OutboundDispatchEntity state = repository.dispatch(binding.tenantId(), binding.inboundId(),
|
||||
binding.containerBookingId());
|
||||
GateResult gate = gate(binding, state, pick, ocean, evidence, containerContributorGates);
|
||||
inboundGates.add(new InboundGate(binding.inboundId(), binding.inboundCode(), gate));
|
||||
inboundDtos.add(new InboundBinding(binding.orderId(), binding.orderNo(), binding.inboundId(),
|
||||
binding.inboundCode(), binding.tenantId(), binding.customerId(), binding.customerName(),
|
||||
binding.inboundStatus(), id(pick), status(pick)));
|
||||
OutboundDispatchEntity state = repository.dispatch(binding.tenantId(), binding.inboundId(),
|
||||
binding.containerBookingId());
|
||||
if (state != null) states.add(state);
|
||||
}
|
||||
StateView visible = visibleStateForRead(states, bindings.size());
|
||||
@@ -180,14 +180,21 @@ public class OutboundDispatchService {
|
||||
visible.status(), visible.version(), List.copyOf(inboundDtos), containerGate);
|
||||
}
|
||||
|
||||
private GateResult gate(OutboundDispatchReadMapper.Binding binding, OutboundDispatchReadMapper.IdStatus pick,
|
||||
private GateResult gate(OutboundDispatchReadMapper.Binding binding, OutboundDispatchEntity dispatch,
|
||||
OutboundDispatchReadMapper.IdStatus pick,
|
||||
OutboundDispatchReadMapper.OceanBinding ocean, OutboundDispatchReadMapper.Evidence evidence,
|
||||
List<GateItem> containerContributorGates) {
|
||||
List<GateItem> items = new ArrayList<>();
|
||||
items.add(item("INBOUND_NOT_HELD", "入库单未扣货", !Boolean.TRUE.equals(binding.holdFlag()),
|
||||
Boolean.TRUE.equals(binding.holdFlag()) ? "HELD" : "RELEASED", "RELEASED"));
|
||||
items.add(item("INBOUND_LOADED", "入库单装柜完成", "LOADED".equals(binding.inboundStatus()),
|
||||
binding.inboundStatus(), "LOADED"));
|
||||
// Later delivery progress does not erase this binding's confirmed departure.
|
||||
// Never infer loading completion from a later inbound status alone.
|
||||
boolean confirmedLoadedHistory = dispatch != null && dispatch.getConfirmedAt() != null
|
||||
&& OutboundDispatchStatus.WAITING_FOR_LOADING.name().equals(dispatch.getStatus())
|
||||
&& ("DELIVERED".equals(binding.inboundStatus()) || "COMPLETED".equals(binding.inboundStatus()));
|
||||
items.add(item("INBOUND_LOADED", "入库单装柜完成",
|
||||
"LOADED".equals(binding.inboundStatus()) || confirmedLoadedHistory,
|
||||
binding.inboundStatus(), confirmedLoadedHistory ? "已确认离仓,装柜历史已保留" : "LOADED"));
|
||||
items.add(item("LOADING_PLAN_COMPLETED", "柜次装柜计划完成", "COMPLETED".equals(binding.loadingPlanStatus()),
|
||||
binding.loadingPlanStatus(), "COMPLETED"));
|
||||
items.add(item("PDA_PICK_COMPLETED", "PDA柜次拣货完成", pick != null && "COMPLETED".equals(pick.status()),
|
||||
|
||||
Reference in New Issue
Block a user