diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintService.java index 537bb0c66..4ec0823cd 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintService.java @@ -102,9 +102,12 @@ public class DispatchBolPrintService { List parts = new ArrayList<>(); add(parts, address.addressLine1()); add(parts, address.addressLine2()); - add(parts, address.city()); - add(parts, address.stateProvince()); - add(parts, address.postalCode()); + String city = trimmed(address.city()); + String state = trimmed(address.stateProvince()); + String postalCode = trimmed(address.postalCode()); + String region = city == null ? state : state == null ? city : city + ", " + state; + if (postalCode != null) region = region == null ? postalCode : region + " " + postalCode; + add(parts, region); add(parts, address.countryCode()); return parts.isEmpty() ? "—" : String.join(", ", parts); } catch (FeignException exception) { @@ -116,6 +119,10 @@ public class DispatchBolPrintService { if (value != null && !value.isBlank()) parts.add(value.strip()); } + private String trimmed(String value) { + return value == null || value.isBlank() ? null : value.strip(); + } + static int pageCount(int rowCount) { if (rowCount <= FIRST_PAGE_ROWS) return 1; return 1 + (rowCount - FIRST_PAGE_ROWS + CONTINUATION_PAGE_ROWS - 1) / CONTINUATION_PAGE_ROWS; diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintServiceTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintServiceTest.java index fc6ce4e18..bd39901b4 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintServiceTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchBolPrintServiceTest.java @@ -73,6 +73,6 @@ class DispatchBolPrintServiceTest { verify(print).generateDispatchBol(eq("internal-test-token"), eq("request-1"), request.capture()); assertThat(request.getValue().documents()).singleElement().satisfies(document -> assertThat(document.shipFromAddress()).isEqualTo( - "10767 7th Street, Rancho Cucamonga, California, 91730, US")); + "10767 7th Street, Rancho Cucamonga, California 91730, US")); } } diff --git a/warehouse/scripts/warehouse-public-master-data-contract.test.mjs b/warehouse/scripts/warehouse-public-master-data-contract.test.mjs index 4693fa5d4..55eeb0d4d 100644 --- a/warehouse/scripts/warehouse-public-master-data-contract.test.mjs +++ b/warehouse/scripts/warehouse-public-master-data-contract.test.mjs @@ -95,7 +95,19 @@ assert.deepEqual(fixedWarehouses.map((row) => row.timezone), [ 'UTC-8', 'UTC-5', ]) -assert.ok(fixedWarehouses.every((row) => row.address_line1.includes('待维护') || row.address_line1.includes('pending maintenance'))) +assert.deepEqual( + fixedWarehouses.filter((row) => row.warehouse_type === 'OVERSEAS').map((row) => ({ + warehouse_code: row.warehouse_code, + state_province: row.state_province, + city: row.city, + postal_code: row.postal_code, + address_line1: row.address_line1, + })), + [ + { warehouse_code: 'US-LAX-01', state_province: 'California', city: 'Rancho Cucamonga', postal_code: '91730', address_line1: '10767 7th Street' }, + { warehouse_code: 'US-NYC-01', state_province: 'New Jersey', city: 'Edison', postal_code: '08817', address_line1: 'Door 13-14, 75 Carter Dr' }, + ], +) assert.match(sql, /CREATE TEMPORARY TABLE tmp_wh_fixed_platform_warehouse/) assert.match(sql, /'CN-YIWU-01','义乌仓','DOMESTIC','CN','UTC\+8'/) diff --git a/warehouse/src/main/resources/db/master-data/platform-fixed-warehouses.csv b/warehouse/src/main/resources/db/master-data/platform-fixed-warehouses.csv index 82ae74c36..c31a2a01a 100644 --- a/warehouse/src/main/resources/db/master-data/platform-fixed-warehouses.csv +++ b/warehouse/src/main/resources/db/master-data/platform-fixed-warehouses.csv @@ -1,5 +1,5 @@ warehouse_id_seed,address_id_seed,warehouse_code,warehouse_name,warehouse_type,country_code,timezone,state_province,city,postal_code,address_line1,note 193000000000200001,193000000000300001,CN-YIWU-01,义乌仓,DOMESTIC,CN,UTC+8,浙江省,义乌市,322000,义乌仓通用地址待维护,按用户确认生成通用格式;后续运营可维护真实地址。 193000000000200002,193000000000300002,CN-DONGGUAN-01,东莞仓,DOMESTIC,CN,UTC+8,广东省,东莞市,523000,东莞仓通用地址待维护,按用户确认生成通用格式;后续运营可维护真实地址。 -193000000000200003,193000000000300003,US-LAX-01,洛杉矶仓,OVERSEAS,US,UTC-8,CA,Los Angeles,90001,Los Angeles warehouse generic address pending maintenance,按用户确认生成通用格式;后续运营可维护真实地址。 -193000000000200004,193000000000300004,US-NYC-01,纽约仓,OVERSEAS,US,UTC-5,NY,New York,10001,New York warehouse generic address pending maintenance,按用户确认生成通用格式;后续运营可维护真实地址。 +193000000000200003,193000000000300003,US-LAX-01,洛杉矶仓,OVERSEAS,US,UTC-8,California,Rancho Cucamonga,91730,10767 7th Street,用户确认的真实海外仓地址。 +193000000000200004,193000000000300004,US-NYC-01,纽约仓,OVERSEAS,US,UTC-5,New Jersey,Edison,08817,"Door 13-14, 75 Carter Dr",用户确认的真实海外仓地址。