This commit is contained in:
2026-08-24 11:52:32 +08:00
parent 657f3553d8
commit d59fccc731
3 changed files with 38 additions and 9 deletions
@@ -19,7 +19,9 @@ class SmartLoadingCandidateMapperContractTest {
.contains("m.status='APPROVED'")
.contains("SELECT MAX(m2.id)")
.contains("m2.status='APPROVED'")
.contains("i.inbound_detail_id IS NOT NULL")
.contains("WHERE inbound_detail_id IS NOT NULL AND package_count>0")
.contains("SUM(package_count) package_count")
.contains("GROUP BY tenant_id,measurement_id,inbound_detail_id")
.contains("o.warehouse_id=#{warehouseId}")
.contains("o.process_status='WAIT_SPLIT'")
.contains("unitGrossWeightKg")
@@ -29,7 +31,7 @@ class SmartLoadingCandidateMapperContractTest {
.doesNotContain("i.unit_weight_kg")
.contains("SELECT SUM(li.package_count)")
.contains("li.deleted=0")
.contains("ORDER BY o.inbounded_at ASC, o.id ASC, i.id ASC");
.contains("ORDER BY o.inbounded_at ASC, o.id ASC, i.inbound_detail_id ASC");
}
@Test
@@ -48,6 +50,8 @@ class SmartLoadingCandidateMapperContractTest {
.contains("unitNetWeightKg")
.doesNotContain("i.unit_weight_kg")
.contains("SELECT SUM(li.package_count)")
.contains("SUM(package_count) package_count")
.contains("GROUP BY tenant_id,measurement_id,inbound_detail_id")
.contains("FOR UPDATE");
}
}
@@ -76,6 +76,18 @@ class SmartLoadingSqlContractTest {
.contains("version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号'");
}
@Test
@DisplayName("同一入库明细的多条单箱测量记录只生成一个候选")
void shouldAggregateCartonMeasurementRowsByInboundDetail() throws Exception {
String mapper = Files.readString(Path.of(
"src/main/java/com/baiyue/firstleg/mapper/SmartLoadingCandidateMapper.java"), StandardCharsets.UTF_8);
assertThat(mapper)
.contains("SUM(package_count) package_count")
.contains("GROUP BY tenant_id,measurement_id,inbound_detail_id")
.contains("split_item.source_inbound_detail_id=i.inbound_detail_id")
.doesNotContain("split_item.source_measurement_item_id=i.id");
}
@Test
@DisplayName("仓库备注使用计划先行与明细单表CAS并允许已拣明细仅改备注")
void shouldUpdateWarehouseRemarkWithoutMultiTableTriggerConflict() throws Exception {