fix(lastleg): return empty container customer options

This commit is contained in:
2026-09-10 14:41:03 +08:00
parent bf7579f93b
commit 2963acc32b
3 changed files with 12 additions and 3 deletions
@@ -29,7 +29,6 @@ public class OverseasFeeBusinessGuard {
(result, rowNum) -> new ContainerCustomerOption(
result.getString("customer_id"), result.getString("customer_name")),
String.valueOf(containerBookingId));
if (customers.isEmpty()) throw bad("真实货柜不存在或尚无尾程订单");
return customers;
}
@@ -21,13 +21,13 @@ paths:
/api/platform/v1/last-leg/finance-fee-sources/container-customers:
get:
summary: 查询真实来源柜内客户选项
description: 单次按真实来源柜聚合全部客户,供柜详情维护费用时选择,不逐票查询。
description: 单次按真实来源柜聚合全部客户,供柜详情维护费用时选择,不逐票查询;货柜不存在或尚无尾程订单时返回空列表。
security: [{ bearerAuth: [] }]
parameters:
- { in: query, name: containerBookingId, required: true, schema: { type: string, pattern: '^[1-9][0-9]*$' } }
responses:
'200':
description: 柜内客户选项
description: 柜内客户选项;无数据时data为空数组
content:
application/json:
schema: { $ref: '#/components/schemas/ContainerCustomerListResponse' }
@@ -80,6 +80,16 @@ class OverseasFeeBusinessGuardTest {
assertThat(jdbc.sql()).singleElement().asString().contains("GROUP BY customer_id");
}
@Test
void returnsEmptyWhenContainerHasNoLastlegOrders() {
StubJdbc jdbc = new StubJdbc();
var result = new OverseasFeeBusinessGuard(jdbc).listContainerCustomers(701L);
assertThat(result).isEmpty();
assertThat(jdbc.sql()).singleElement().asString().contains("source_container_booking_id");
}
static SaveRequest containerFee(String customerId, Long bookingId, String containerNo) {
return new SaveRequest(customerId, "客户A", "OVERSEAS_CONTAINER_FEE", "OVERSEAS_CONTAINER",
bookingId, containerNo, null, null, null, null, bookingId, containerNo, 91L,