fix: materialize signed manual pallet plans
This commit is contained in:
+2
-1
@@ -18,6 +18,7 @@ public record ContainerPlanProgressSummary(
|
||||
long planCount,
|
||||
long plannedInboundCodeCount,
|
||||
long pendingPlanCount,
|
||||
long resourcePendingPlanCount,
|
||||
LocalDateTime plannedArrivalAt,
|
||||
boolean allPlansReady,
|
||||
String blockingReason
|
||||
@@ -30,6 +31,6 @@ public record ContainerPlanProgressSummary(
|
||||
String blockingReason) {
|
||||
this(sourceContainerBookingId, containerNo, null, null, null, -1, false, null,
|
||||
totalOrderCount, inboundCodeCount, missingInboundCodeCount, planCount,
|
||||
plannedInboundCodeCount, pendingPlanCount, plannedArrivalAt, allPlansReady, blockingReason);
|
||||
plannedInboundCodeCount, pendingPlanCount, 0, plannedArrivalAt, allPlansReady, blockingReason);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -261,7 +261,8 @@ public class InboundPlanService {
|
||||
&& row.materializedPalletCount() > 0) {
|
||||
blockers.add("PLAN_PALLET_BINDING_INCOMPLETE");
|
||||
}
|
||||
if (planned && !materialized && !"PENDING_ASSIGNMENT".equals(row.planStatus())) {
|
||||
if (planned && !materialized && !("PENDING_ASSIGNMENT".equals(row.planStatus())
|
||||
|| "SIGNED".equals(row.planStatus()))) {
|
||||
blockers.add("PLAN_ALREADY_STARTED");
|
||||
}
|
||||
String readiness = planned ? materialized ? "PLANNED"
|
||||
@@ -636,8 +637,8 @@ public class InboundPlanService {
|
||||
|| !Objects.equals(ref.orderId(), prepared.orderId())) {
|
||||
throw new ResponseStatusException(HttpStatus.CONFLICT, "人工计划与柜级托盘预留快照不一致");
|
||||
}
|
||||
if (!"PENDING_ASSIGNMENT".equals(plan.getStatus())) {
|
||||
throw new ResponseStatusException(HttpStatus.CONFLICT, "仅未开始作业的已有计划可由整柜生成补齐托盘");
|
||||
if (!("PENDING_ASSIGNMENT".equals(plan.getStatus()) || "SIGNED".equals(plan.getStatus()))) {
|
||||
throw new ResponseStatusException(HttpStatus.CONFLICT, "仅待入库或已签收但未实收的已有计划可由整柜生成补齐托盘");
|
||||
}
|
||||
List<InboundPlanPallet> pallets = palletMapper.selectList(new LambdaQueryWrapper<InboundPlanPallet>()
|
||||
.eq(InboundPlanPallet::getCustomerId, plan.getCustomerId())
|
||||
|
||||
@@ -42,6 +42,10 @@ public interface LastlegOrderMapper extends BaseMapper<LastlegOrder> {
|
||||
"AND NULLIF(TRIM(p.status),'') IS NOT NULL THEN NULLIF(TRIM(o.inbound_code),'') END) AS plannedInboundCodeCount," +
|
||||
"SUM(CASE WHEN p.id IS NULL OR NULLIF(TRIM(p.plan_no),'') IS NULL OR NULLIF(TRIM(p.status),'') IS NULL " +
|
||||
"THEN 1 ELSE 0 END) AS pendingPlanCount," +
|
||||
"SUM(CASE WHEN p.id IS NOT NULL AND COALESCE(p.pallet_count,0)>0 AND " +
|
||||
"(SELECT COUNT(*) FROM ll_inbound_plan_pallet pp WHERE pp.customer_id=p.customer_id " +
|
||||
"AND pp.plan_id=p.id AND pp.warehouse_pallet_id IS NOT NULL)<COALESCE(p.pallet_count,0) " +
|
||||
"THEN 1 ELSE 0 END) AS resourcePendingPlanCount," +
|
||||
"CASE WHEN COUNT(o.estimated_warehouse_at)=COUNT(*) " +
|
||||
"AND COUNT(DISTINCT o.estimated_warehouse_at)=1 THEN MAX(o.estimated_warehouse_at) ELSE NULL END AS plannedArrivalAt," +
|
||||
"CASE WHEN SUM(CASE WHEN NULLIF(TRIM(o.inbound_code),'') IS NULL THEN 1 ELSE 0 END)=0 " +
|
||||
|
||||
@@ -176,7 +176,7 @@ public class LastlegOrderService {
|
||||
summary.assignmentVersion(), invalidContainer ? false : summary.canChangeReceivingWarehouse(),
|
||||
invalidContainer ? issue : summary.receivingWarehouseLockReason(), summary.totalOrderCount(),
|
||||
summary.inboundCodeCount(), summary.missingInboundCodeCount(), summary.planCount(),
|
||||
summary.plannedInboundCodeCount(), summary.pendingPlanCount(), summary.plannedArrivalAt(),
|
||||
summary.plannedInboundCodeCount(), summary.pendingPlanCount(), summary.resourcePendingPlanCount(), summary.plannedArrivalAt(),
|
||||
false, issue);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user