|
|
|
@@ -723,7 +723,8 @@ return MessageResponse( |
|
|
|
|
|
|
|
/** |
|
|
|
* Lane summary for DO workbench: one card per **delivery_order_pick_order** ticket (not per pick_order). |
|
|
|
* `unassigned` = ticket still has at least one linked pick_order with assignTo null. |
|
|
|
* `unassigned` = tickets with `handledBy` null (aligned with normal FG `do_pick_order.handledBy` semantics). |
|
|
|
* `total` = all tickets in the lane/time bucket (including already assigned), so denominators match normal FG. |
|
|
|
*/ |
|
|
|
open fun getDeliveryOrderPickOrderSummaryByStore(storeId: String, requiredDate: LocalDate?, releaseType: String): StoreLaneSummary { |
|
|
|
val targetDate = requiredDate ?: LocalDate.now() |
|
|
|
@@ -745,12 +746,7 @@ return MessageResponse( |
|
|
|
dop.loadingSequence AS loadingSequence, |
|
|
|
COUNT(DISTINCT dop.id) AS total_cnt, |
|
|
|
SUM( |
|
|
|
CASE WHEN EXISTS ( |
|
|
|
SELECT 1 FROM fpsmsdb.pick_order po2 |
|
|
|
WHERE po2.deliveryOrderPickOrderId = dop.id |
|
|
|
AND po2.deleted = 0 |
|
|
|
AND po2.assignTo IS NULL |
|
|
|
) THEN 1 ELSE 0 END |
|
|
|
CASE WHEN dop.handledBy IS NULL THEN 1 ELSE 0 END |
|
|
|
) AS unassigned_cnt, |
|
|
|
GROUP_CONCAT( |
|
|
|
DISTINCT NULLIF(TRIM(dop.handlerName), '') |
|
|
|
@@ -761,7 +757,7 @@ return MessageResponse( |
|
|
|
WHERE dop.deleted = 0 |
|
|
|
AND dop.storeId = :storeId |
|
|
|
AND dop.requiredDeliveryDate = :requiredDate |
|
|
|
AND dop.ticketStatus IN ('pending', 'released', 'completed') |
|
|
|
AND dop.ticketStatus IN ('pending', 'released') |
|
|
|
AND EXISTS ( |
|
|
|
SELECT 1 FROM fpsmsdb.pick_order po |
|
|
|
WHERE po.deliveryOrderPickOrderId = dop.id AND po.deleted = 0 |
|
|
|
@@ -835,7 +831,7 @@ return MessageResponse( |
|
|
|
val loadingSequence = cellNullableInt(row, "loadingSequence") |
|
|
|
val unassigned = cellNum(row, "unassigned_cnt", "unassignedCnt") |
|
|
|
val total = cellNum(row, "total_cnt", "totalCnt") |
|
|
|
if (unassigned <= 0) return@mapNotNull null |
|
|
|
if (total <= 0) return@mapNotNull null |
|
|
|
val sortTime = cellTime(row) ?: LocalTime.MIDNIGHT |
|
|
|
val handlerName = cellStr(row, "handler_names") |
|
|
|
LaneAgg(sortTime, lance, loadingSequence, unassigned, total, handlerName) |
|
|
|
@@ -1646,13 +1642,15 @@ return MessageResponse( |
|
|
|
dop.ticketStatus as doTicketStatus |
|
|
|
FROM fpsmsdb.delivery_order_pick_order dop |
|
|
|
WHERE dop.handledBy = :userId |
|
|
|
AND dop.ticketStatus IN ('pending', 'released', 'completed') |
|
|
|
|
|
|
|
AND dop.ticketStatus IN ('pending', 'released') |
|
|
|
AND dop.deleted = 0 |
|
|
|
AND EXISTS ( |
|
|
|
SELECT 1 |
|
|
|
FROM fpsmsdb.pick_order po |
|
|
|
WHERE po.deliveryOrderPickOrderId = dop.id |
|
|
|
AND po.assignTo = :userId |
|
|
|
|
|
|
|
AND po.type = 'do' |
|
|
|
AND po.deleted = 0 |
|
|
|
) |
|
|
|
|