fix(firstleg): 统一船期跨表查询文本比较规则
This commit is contained in:
+25
@@ -288,6 +288,31 @@ class SailingCalendarDisplayMapperTest {
|
||||
assertThat(mapper.bookingSummary(3, LocalDateTime.parse("2026-10-27T00:00:00")).containerCount()).isZero();
|
||||
}
|
||||
|
||||
/** 跨表文本转换必须保留完整编码与中文船名,不能将同前缀的运输信息视为同一船期。 */
|
||||
@ParameterizedTest
|
||||
@CsvSource({"channel_code,MATSON-OTHER", "departure_port_code,CNSHA", "destination_port_code,USLAX",
|
||||
"vessel_name,远洋轮乙", "voyage_no,VOYAGE-OTHER"})
|
||||
void matchesCompleteTransportSnapshotsAfterTextConversion(String column, String differentValue) {
|
||||
booking(1, 1, "68");
|
||||
jdbc.update("UPDATE fl_sailing_booking_link SET link_status='REVOKED'");
|
||||
jdbc.update("UPDATE fl_sailing SET vessel_name='远洋轮甲' WHERE id=1");
|
||||
jdbc.update("UPDATE fl_ocean_booking SET vessel_name='远洋轮甲',voyage_no='VOYAGE-1',estimated_sailing_at='2026-10-28 10:00:00'");
|
||||
var today = LocalDateTime.parse("2026-10-27T00:00:00");
|
||||
assertThat(mapper.bookingSummary(1, today).containerCount()).isEqualTo(1);
|
||||
jdbc.update("UPDATE fl_ocean_booking SET " + column + "=?", differentValue);
|
||||
session.clearCache();
|
||||
assertThat(mapper.bookingSummary(1, today).containerCount()).isZero();
|
||||
}
|
||||
|
||||
/** 顺延按完整渠道编码匹配,排除只有前缀相同的更早船期。 */
|
||||
@Test
|
||||
void rollsCargoOnlyToTheCompleteChannelCode() {
|
||||
inbound(1, "68", "WAIT_SPLIT", "NOT_SPLIT");
|
||||
jdbc.update("UPDATE fl_sailing SET channel_code_snapshot='MATSON-OTHER' WHERE id=1");
|
||||
assertThat(summary(1, "2026-10-27T12:00:00").catchableCbm()).isZero();
|
||||
assertThat(summary(2, "2026-10-27T12:00:00").catchableCbm()).isEqualByComparingTo("68");
|
||||
}
|
||||
|
||||
/** 人工跨仓、跨渠道排柜已有正式订舱时,应跟随真实安排展示。 */
|
||||
@Test
|
||||
void preservesCrossWarehouseAndChannelAssignments() {
|
||||
|
||||
Reference in New Issue
Block a user