fix(firstleg): honor terminal partial pick outcomes

This commit is contained in:
2026-08-25 14:24:59 +08:00
parent f1af749616
commit 7eca39e4fd
2 changed files with 18 additions and 2 deletions
@@ -230,7 +230,15 @@ public interface LoadingPickItemMapper extends BaseMapper<LoadingPickItemEntity>
WHERE pick_item.loading_plan_item_id = plan_item.id
AND pick_task.loading_plan_id = #{planId}
AND pick_task.task_status = 'LOADING'
AND pick_item.picked_package_count = plan_item.package_count
AND (
(pick_item.item_status = 'PICKED'
AND pick_item.picked_package_count = plan_item.package_count)
OR (pick_item.item_status = 'PARTIAL'
AND pick_item.picked_package_count > 0
AND pick_item.picked_package_count < plan_item.package_count)
OR (pick_item.item_status = 'SKIPPED'
AND pick_item.picked_package_count = 0)
)
)
""")
long unfinishedCount(@Param("planId") long planId);
@@ -39,7 +39,15 @@ class LoadingPickItemMapperContractTest {
.contains("plan_item.deleted = 0")
.contains("pick_task.loading_plan_id = #{planId}")
.contains("pick_task.task_status = 'LOADING'")
.contains("pick_item.picked_package_count = plan_item.package_count");
.contains("pick_item.item_status = 'PICKED'")
.contains("pick_item.picked_package_count = plan_item.package_count")
.contains("pick_item.item_status = 'PARTIAL'")
.contains("pick_item.picked_package_count > 0")
.contains("pick_item.picked_package_count < plan_item.package_count")
.contains("pick_item.item_status = 'SKIPPED'")
.contains("pick_item.picked_package_count = 0")
.doesNotContain("pick_item.item_status = 'PENDING'")
.doesNotContain("pick_item.item_status = 'PICKING'");
}
@Test