fix(firstleg): validate settled partial pick totals

This commit is contained in:
2026-08-25 14:33:38 +08:00
parent 7eca39e4fd
commit 121e8ea619
2 changed files with 6 additions and 3 deletions
@@ -216,7 +216,8 @@ public interface LoadingPickItemMapper extends BaseMapper<LoadingPickItemEntity>
long unresolvedCount(@Param("taskId") long taskId);
/**
* 以装柜计划的全部有效明细为完成口径,不能只检查当前 PDA 任务中的明细。
* 以结算后的装柜计划事实为完成口径,不能只检查当前 PDA 任务中的明细。
* PARTIAL 在本查询前已把计划箱数收敛为实际拣货箱数;收敛前的严格小于关系由结算计划校验。
*/
@Select("""
SELECT COUNT(*)
@@ -235,7 +236,7 @@ public interface LoadingPickItemMapper extends BaseMapper<LoadingPickItemEntity>
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)
AND pick_item.picked_package_count = plan_item.package_count)
OR (pick_item.item_status = 'SKIPPED'
AND pick_item.picked_package_count = 0)
)
@@ -43,11 +43,13 @@ class LoadingPickItemMapperContractTest {
.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")
.doesNotContain("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'");
assertThat(org.springframework.util.StringUtils.countOccurrencesOf(sql,
"pick_item.picked_package_count = plan_item.package_count")).isEqualTo(2);
}
@Test