From af3fb0aa2f1fc3e50a183e20160727c0b96aa462 Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Fri, 6 Nov 2026 19:27:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8E=BB=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bms/common/utils/StringUtils.java | 29 +++++++++++++++++++ .../price/oracle/OracleOrderBillMapper.java | 2 +- .../service/impl/PrcOrderBillServiceImpl.java | 2 +- .../service/impl/PrcZoneServiceImpl.java | 10 +------ .../impl/TmsPriceQuoteServiceImpl.java | 17 ++++------- bms-front/src/views/price/billing/bill.vue | 26 ++++++++--------- 6 files changed, 51 insertions(+), 35 deletions(-) diff --git a/bms-back/bms-common/src/main/java/com/bms/common/utils/StringUtils.java b/bms-back/bms-common/src/main/java/com/bms/common/utils/StringUtils.java index d9a86f5d..82628b08 100644 --- a/bms-back/bms-common/src/main/java/com/bms/common/utils/StringUtils.java +++ b/bms-back/bms-common/src/main/java/com/bms/common/utils/StringUtils.java @@ -168,6 +168,35 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils return (str == null ? "" : str.trim()); } + /** + * Normalize destination postcode for zone match / persist. + * Removes all Unicode whitespace (incl. NBSP / U+2005) and ASCII spaces; + * strips Excel-style trailing ".0" on pure digits. + */ + public static String normalizePostcode(String postcode) + { + if (isEmpty(postcode)) + { + return postcode; + } + StringBuilder sb = new StringBuilder(postcode.length()); + for (int i = 0; i < postcode.length(); ) + { + int cp = postcode.codePointAt(i); + if (!Character.isWhitespace(cp)) + { + sb.appendCodePoint(cp); + } + i += Character.charCount(cp); + } + String n = sb.toString(); + if (n.endsWith(".0") && n.matches("\\d+\\.0")) + { + return n.substring(0, n.length() - 2); + } + return n; + } + /** * 替换指定字符串的指定区间内字符为"*" * diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java index 0628a1df..dd93978b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java @@ -47,7 +47,7 @@ public class OracleOrderBillMapper req.setCountryCode(firstStr(row, "COUNTRY")); String countryName = firstStr(row, "COUNTRY_NAME", "COUNTRY_EINGTH_NAME", "COUNTRY"); req.setCountryName(countryName); - req.setDestPostcode(firstStr(row, "CONSIGNEE_POSTCODE")); + req.setDestPostcode(StringUtils.normalizePostcode(firstStr(row, "CONSIGNEE_POSTCODE"))); // Prefer CONFIRM_WEIGHT (customer confirmed); fallback DIMENSIONAL_WEIGHT_FACTOR (charge weight). BigDecimal weight = firstPositiveDecimal(row, "CONFIRM_WEIGHT", "DIMENSIONAL_WEIGHT_FACTOR"); req.setWeight(weight); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java index 8614f22d..86bbc07f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java @@ -3324,7 +3324,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService bill.setPkgHeight(request.getPkgHeight()); bill.setShipperName(request.getShipperName()); bill.setConsigneeName(request.getConsigneeName()); - bill.setDestPostcode(request.getDestPostcode()); + bill.setDestPostcode(StringUtils.normalizePostcode(request.getDestPostcode())); bill.setWarehouseCode(request.getWarehouseCode()); bill.setOrderTime(request.getOrderTime()); applyUpstreamOrderStatus(bill, request); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcZoneServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcZoneServiceImpl.java index 368f60fb..f868cfcd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcZoneServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcZoneServiceImpl.java @@ -783,15 +783,7 @@ public class PrcZoneServiceImpl implements IPrcZoneService private static String normalizePostcode(String postcode) { - if (StringUtils.isEmpty(postcode)) - { - return postcode; - } - if (postcode.endsWith(".0") && postcode.matches("\\d+\\.0")) - { - return postcode.substring(0, postcode.length() - 2); - } - return postcode; + return StringUtils.normalizePostcode(postcode); } private static String normalizeCell(String text) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java index 5f996c1b..33e1bade 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/TmsPriceQuoteServiceImpl.java @@ -388,7 +388,11 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService } // Charge weight keeps 3 decimals; freight unit price keeps 2 (see buildFromRates). BigDecimal weight = request.getWeight().setScale(3, RoundingMode.HALF_UP); - String destPostcode = emptyToNull(request.getDestPostcode()); + String destPostcode = emptyToNull(normalizePostcode(request.getDestPostcode())); + if (destPostcode != null) + { + request.setDestPostcode(destPostcode); + } String productName = null; if (request instanceof TmsPriceBillRequest) { @@ -992,16 +996,7 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService private static String normalizePostcode(String postcode) { - if (StringUtils.isEmpty(postcode)) - { - return postcode; - } - String n = postcode.trim().replace(" ", ""); - if (n.endsWith(".0") && n.matches("\\d+\\.0")) - { - return n.substring(0, n.length() - 2); - } - return n; + return StringUtils.normalizePostcode(postcode); } private TmsPriceQuoteResult tryFixed(PrcCustomerPriceSet bind, PrcPriceSet set, PrcPriceSetVersion version, diff --git a/bms-front/src/views/price/billing/bill.vue b/bms-front/src/views/price/billing/bill.vue index 7052c865..af47ada7 100644 --- a/bms-front/src/views/price/billing/bill.vue +++ b/bms-front/src/views/price/billing/bill.vue @@ -622,19 +622,6 @@ const searchColumns = [ collapseTagsTooltip: true } }, - { - label: '\u8ba1\u8d39\u5931\u8d25', - prop: 'billingFailStatuses', - component: 'select', - options: billingFailStatusOptions, - placeholder: '\u8bf7\u9009\u62e9', - props: { - multiple: true, - clearable: true, - collapseTags: true, - collapseTagsTooltip: true - } - }, { label: '计费时间', prop: 'bizDateRange', @@ -655,6 +642,19 @@ const searchColumns = [ clearable: true, defaultTime: [new Date(2000, 0, 1, 0, 0, 0), new Date(2000, 0, 1, 23, 59, 59)] } + }, + { + label: '\u8ba1\u8d39\u5931\u8d25', + prop: 'billingFailStatuses', + component: 'select', + options: billingFailStatusOptions, + placeholder: '\u8bf7\u9009\u62e9', + props: { + multiple: true, + clearable: true, + collapseTags: true, + collapseTagsTooltip: true + } } ]