fix(firstleg): align loading completion trigger

This commit is contained in:
2026-08-25 14:41:48 +08:00
parent 121e8ea619
commit 5abc7543ae
3 changed files with 49 additions and 16 deletions
@@ -208,8 +208,6 @@ class SmartLoadingSqlContractTest {
.contains("SET MESSAGE_TEXT = '装柜状态只允许单向推进'")
.contains("IF OLD.plan_status = 'EDITING' AND NEW.plan_status = 'LOADING' THEN")
.contains("ELSEIF OLD.plan_status = 'LOADING' AND NEW.plan_status = 'COMPLETED' THEN")
.contains("LEFT JOIN fl_loading_pick_item pick_item")
.contains("pick_item.picked_package_count <> item.package_count")
.contains("IF OLD.plan_status = 'LOADING' AND NEW.plan_status = 'COMPLETED' THEN")
.contains("SET frozen_at = COALESCE(frozen_at, NEW.confirmed_at, CURRENT_TIMESTAMP(3))")
.contains("已有PDA拣货记录的装柜明细仅允许收敛部分拣货实际箱数")
@@ -226,6 +224,23 @@ class SmartLoadingSqlContractTest {
.doesNotContain("CONFIRMED")
.doesNotContain("ROLLED_BACK")
.doesNotContain("WITHDRAWN");
assertLoadingCompletionTrigger(migration());
assertLoadingCompletionTrigger(unifiedMigration());
}
private static void assertLoadingCompletionTrigger(String sql) {
assertThat(sql)
.contains("AND NOT EXISTS (")
.contains("pick_task.loading_plan_id = OLD.id")
.contains("pick_task.task_status = 'LOADING'")
.contains("pick_item.item_status = 'PICKED'")
.contains("pick_item.item_status = 'PARTIAL'")
.contains("pick_item.picked_package_count > 0")
.contains("pick_item.item_status = 'SKIPPED'")
.contains("pick_item.picked_package_count = 0")
.doesNotContain("pick_item.picked_package_count <> item.package_count");
assertThat(org.springframework.util.StringUtils.countOccurrencesOf(sql,
"pick_item.picked_package_count = item.package_count")).isEqualTo(2);
}
@Test