From be0b067516cdbd89631edbc598b027134946aab6 Mon Sep 17 00:00:00 2001 From: liuminghui <468701464@qq.com> Date: Tue, 27 Oct 2026 10:17:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B9=B1=E7=A0=81=E6=B3=A8=E9=87=8A=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/PriceSyncEsLogAdvice.java | 4 +- .../controller/api/TmsPriceController.java | 4 +- .../monitor/BillingTaskMonitorController.java | 2 +- .../controller/monitor/EsLogController.java | 4 +- .../monitor/PriceLogController.java | 4 +- .../monitor/TabOrderMonitorController.java | 4 +- .../controller/price/BillingController.java | 6 +- .../controller/price/PriceSetController.java | 10 +- .../controller/price/ProductController.java | 10 +- .../price/RedlineProductController.java | 10 +- .../web/controller/price/ZoneController.java | 2 +- .../system/SysFileTemplateController.java | 2 +- .../main/resources/i18n/messages.properties | 20 +-- .../config/properties/TmsApiProperties.java | 2 +- .../bms/price/config/BillingProperties.java | 2 +- .../domain/BatchAddIncomeBillFeeTask.java | 2 +- .../java/com/bms/price/domain/BmsProduct.java | 2 +- .../price/domain/BmsProductImportTask.java | 2 +- .../bms/price/domain/BmsRedlineProduct.java | 2 +- .../domain/BmsRedlineProductCountry.java | 2 +- .../domain/BmsRedlineProductImportTask.java | 2 +- .../domain/CatalogPreviewApplyRequest.java | 2 +- .../price/domain/ChargeWeightImportTask.java | 2 +- .../com/bms/price/domain/PrcBillingTask.java | 2 +- .../price/domain/PrcBillingTaskRetryTask.java | 2 +- .../com/bms/price/domain/PrcOrderBill.java | 4 +- .../price/domain/PrcOrderBillExportTask.java | 2 +- .../bms/price/domain/PrcPriceExcelFile.java | 2 +- .../bms/price/domain/PrcPriceSetDetail.java | 2 +- .../bms/price/domain/PrcPriceSetProduct.java | 2 +- .../bms/price/domain/PrcPriceSetSaveTask.java | 2 +- .../com/bms/price/domain/PrcPriceSetUser.java | 2 +- .../bms/price/domain/PrcPriceSetVersion.java | 2 +- .../java/com/bms/price/domain/PrcQuote.java | 2 +- .../com/bms/price/domain/PrcQuoteFee.java | 2 +- .../com/bms/price/domain/PrcSurchargeRel.java | 4 +- .../java/com/bms/price/domain/PrcZone.java | 2 +- .../com/bms/price/domain/PrcZoneDetail.java | 2 +- .../com/bms/price/domain/PrcZoneRegion.java | 2 +- .../java/com/bms/price/domain/PriceType.java | 2 +- .../RedlineCatalogPreviewApplyRequest.java | 2 +- .../domain/vo/AddIncomeBillFeeRequest.java | 2 +- .../vo/BatchAddIncomeBillFeePreview.java | 2 +- .../vo/BatchAddIncomeBillFeeRequest.java | 4 +- .../vo/BillingTaskRetryByFilterRequest.java | 4 +- .../domain/vo/BillingTaskSubmitRequest.java | 6 +- .../domain/vo/ChargeWeightImportRow.java | 2 +- .../vo/ChargeWeightTemplateRequest.java | 2 +- .../price/domain/vo/LocalRebillRequest.java | 4 +- .../vo/OrderBillProductCheckResult.java | 4 +- .../vo/PrcBillingBillListExportRow.java | 2 +- .../domain/vo/PrcOrderBillListExportRow.java | 2 +- .../domain/vo/RecalcBillPriceRequest.java | 2 +- .../domain/vo/TabOrderProductCheckResult.java | 2 +- .../price/domain/vo/TmsPriceBillRequest.java | 2 +- .../price/domain/vo/TmsPriceQuoteFeeLine.java | 2 +- .../price/domain/vo/TmsPriceQuoteRequest.java | 2 +- .../price/domain/vo/TmsPriceQuoteResult.java | 4 +- .../domain/vo/UpdateChargeWeightRequest.java | 2 +- .../domain/vo/UpdateIncomeBillFeeRequest.java | 2 +- .../price/enums/BillBillingFailStatus.java | 12 +- .../price/enums/BillCreditArrearsStatus.java | 4 +- .../price/enums/BillCustomerActiveStatus.java | 4 +- .../com/bms/price/enums/BillOrderStatus.java | 6 +- .../com/bms/price/enums/BillRefundStatus.java | 4 +- .../com/bms/price/enums/BillTaskFailCode.java | 34 ++--- .../price/enums/BillTaskSuccessStatus.java | 2 +- .../com/bms/price/enums/BillTaskType.java | 2 +- .../mapper/OracleUpstreamOrderMapper.java | 2 +- .../price/mapper/PrcIncomeBillFeeMapper.java | 2 +- .../bms/price/mapper/PrcIncomeBillMapper.java | 2 +- .../price/mapper/PrcOrderBillExtMapper.java | 2 +- .../bms/price/mapper/PrcOrderBillMapper.java | 2 +- .../bms/price/mapper/PrcPayBillFeeMapper.java | 2 +- .../price/mapper/PrcPriceExcelFileMapper.java | 2 +- .../price/mapper/PrcPriceSetDetailMapper.java | 2 +- .../mapper/PrcPriceSetProductMapper.java | 2 +- .../mapper/PrcPriceSetVersionMapper.java | 2 +- .../bms/price/mapper/PrcQuoteFeeMapper.java | 2 +- .../com/bms/price/mapper/PrcQuoteMapper.java | 2 +- .../com/bms/price/mq/BillingTaskMessage.java | 2 +- .../bms/price/mq/BillingTaskMqConsumer.java | 2 +- .../bms/price/mq/IBillingTaskMqPublisher.java | 2 +- .../price/mq/LocalBillingTaskMqPublisher.java | 4 +- .../price/mq/RedisBillingTaskMqPublisher.java | 4 +- .../price/oracle/OracleOrderBillMapper.java | 2 +- .../oracle/OracleUpstreamOrderService.java | 4 +- .../oracle/TabOrderProductCheckService.java | 2 +- .../price/search/BillSearchConfiguration.java | 2 +- .../com/bms/price/search/BillSearchPage.java | 2 +- .../bms/price/search/BillSyncSnapshot.java | 2 +- .../price/search/ElasticsearchProperties.java | 2 +- .../bms/price/search/EsBillSearchStore.java | 2 +- .../com/bms/price/search/EsBizLogSupport.java | 2 +- .../java/com/bms/price/search/EsLogType.java | 2 +- .../bms/price/search/IBillSearchStore.java | 2 +- .../bms/price/search/NoopBillSearchStore.java | 2 +- .../bms/price/search/PriceChangeEsLog.java | 18 +-- .../bms/price/search/TabOrderSyncEsLog.java | 2 +- .../bms/price/service/IBmsProductService.java | 2 +- .../service/IBmsRedlineProductService.java | 2 +- .../price/service/IPrcOrderBillService.java | 2 +- .../service/IPrcPriceExcelFileService.java | 2 +- .../price/service/ITmsPriceQuoteService.java | 14 +- .../service/OrderBillProductCheckService.java | 4 +- .../service/impl/BmsProductServiceImpl.java | 130 +++++++++--------- .../impl/BmsRedlineProductServiceImpl.java | 126 ++++++++--------- .../service/impl/PrcOrderBillServiceImpl.java | 16 +-- .../impl/PrcPriceExcelFileServiceImpl.java | 2 +- .../service/impl/PrcPriceSetServiceImpl.java | 34 ++--- .../service/impl/PrcZoneServiceImpl.java | 62 ++++----- .../impl/TmsPriceQuoteServiceImpl.java | 22 +-- .../support/CatalogVersionSupport.java | 16 +-- .../support/OrderBillExportSupport.java | 6 +- .../service/support/UploadFileBatch.java | 4 +- .../task/BmsProductImportAsyncRunner.java | 10 +- .../BmsRedlineProductImportAsyncRunner.java | 10 +- .../bms/price/task/BmsStatusRefreshTask.java | 4 +- .../task/PrcBatchAddIncomeFeeAsyncRunner.java | 2 +- .../task/PrcBillingTaskNightRetryTask.java | 10 +- .../task/PrcBillingTaskRetryAsyncRunner.java | 2 +- .../PrcChargeWeightImportAsyncRunner.java | 2 +- .../task/PrcOrderBillExportAsyncRunner.java | 8 +- .../PrcOrderBillLocalRebillAsyncRunner.java | 4 +- .../task/PrcPriceSetSaveAsyncRunner.java | 2 +- .../task/PrcRecalcBillPriceAsyncRunner.java | 2 +- .../price/task/TabOrderSyncAsyncRunner.java | 2 +- .../com/bms/price/util/ZoneCodeAbbrevs.java | 22 +-- .../bms/system/domain/SysFileTemplate.java | 2 +- .../system/mapper/BmsBizAttachmentMapper.java | 2 +- .../impl/BmsBizAttachmentServiceImpl.java | 2 +- bms-back/sql/bms_init.sql | 4 +- 132 files changed, 440 insertions(+), 440 deletions(-) diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/PriceSyncEsLogAdvice.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/PriceSyncEsLogAdvice.java index b29eaaf5..a066ae1f 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/PriceSyncEsLogAdvice.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/PriceSyncEsLogAdvice.java @@ -16,8 +16,8 @@ import com.bms.price.search.IBillSearchStore; import com.bms.web.controller.price.BillingController; /** - * Persist quote/bill API failures to Elasticsearch (validation, JSON parse, business, unexpected). - * Uses {@link EsBizLogSupport#saveApiFail} so service/controller can also call without duplicate docs. + * 把报价/计费接口失败写入 Elasticsearch(校验、JSON 解析、业务异常、未预期异常)。 + * 通过 {@link EsBizLogSupport#saveApiFail} 写入,service/controller 也可调用且不会重复落文档。 */ @Order(0) @RestControllerAdvice(assignableTypes = { TmsPriceController.class, BillingController.class }) diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/TmsPriceController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/TmsPriceController.java index 0d500937..c1539ceb 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/TmsPriceController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/api/TmsPriceController.java @@ -29,10 +29,10 @@ import com.bms.price.service.IPrcOrderBillService; import com.bms.price.service.ITmsPriceQuoteService; /** - * TMS open API: freight quote. + * TMS 开放接口:运费试算。 * * POST /api/tms/price/quote - * Header X-Api-Code must equal bms.tms.api-code + * 请求头 X-Api-Code 必须等于 bms.tms.api-code * * @author bms */ diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/BillingTaskMonitorController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/BillingTaskMonitorController.java index d6ae0320..f6a5071d 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/BillingTaskMonitorController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/BillingTaskMonitorController.java @@ -24,7 +24,7 @@ import com.bms.price.enums.BillTaskSuccessStatus; import com.bms.price.service.IPrcBillingTaskService; /** - * Monitor: failed / waiting prc_billing_task list and manual resync. + * 监控:失败/等待中的 prc_billing_task 列表,以及手工重同步。 */ @RestController @RequestMapping("/monitor/billingTask") diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/EsLogController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/EsLogController.java index bc194cd0..38dea709 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/EsLogController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/EsLogController.java @@ -17,7 +17,7 @@ import com.bms.price.search.BillSearchPage; import com.bms.price.search.IBillSearchStore; /** - * Generic Elasticsearch business-log viewer. + * 通用 Elasticsearch 业务日志查看。 */ @RestController @RequestMapping("/monitor/eslog") @@ -39,7 +39,7 @@ public class EsLogController extends BaseController BillSearchPage page = billSearchStore.search(logType, bizId, status, pageNum, pageSize); TableDataInfo rsp = new TableDataInfo(); rsp.setCode(HttpStatus.SUCCESS); - rsp.setMsg("\u67e5\u8be2\u6210\u529f"); + rsp.setMsg("查询成功"); rsp.setRows(page.getRows()); rsp.setTotal(page.getTotal()); return rsp; diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PriceLogController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PriceLogController.java index 94b17972..50d20834 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PriceLogController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PriceLogController.java @@ -18,7 +18,7 @@ import com.bms.price.search.EsLogType; import com.bms.price.search.IBillSearchStore; /** - * Price before-after change log (sales / product / redline) from ES. + * 来自 ES 的价格变更前后日志(销售价 / 产品价 / 红线价)。 */ @RestController @RequestMapping("/monitor/priceLog") @@ -39,7 +39,7 @@ public class PriceLogController extends BaseController BillSearchPage page = billSearchStore.search(EsLogType.PRICE_CHANGE, bizId, status, pageNum, pageSize); TableDataInfo rsp = new TableDataInfo(); rsp.setCode(HttpStatus.SUCCESS); - rsp.setMsg("\u67e5\u8be2\u6210\u529f"); + rsp.setMsg("查询成功"); rsp.setRows(page.getRows()); rsp.setTotal(page.getTotal()); return rsp; diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/TabOrderMonitorController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/TabOrderMonitorController.java index e4e7f63c..0271cfc6 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/TabOrderMonitorController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/TabOrderMonitorController.java @@ -134,7 +134,7 @@ public class TabOrderMonitorController extends BaseController { TableDataInfo rsp = new TableDataInfo(); rsp.setCode(HttpStatus.SUCCESS); - rsp.setMsg("\u67e5\u8be2\u6210\u529f"); + rsp.setMsg("查询成功"); if (!hasListFilters(query)) { rsp.setRows(Collections.emptyList()); @@ -294,7 +294,7 @@ public class TabOrderMonitorController extends BaseController BillSearchPage page = billSearchStore.search(EsLogType.ORDER_SOURCE_SYNC, bizId, status, pageNum, pageSize); TableDataInfo rsp = new TableDataInfo(); rsp.setCode(HttpStatus.SUCCESS); - rsp.setMsg("\u67e5\u8be2\u6210\u529f"); + rsp.setMsg("查询成功"); rsp.setRows(page.getRows()); rsp.setTotal(page.getTotal()); return rsp; diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java index 533eb850..3f71b6a3 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java @@ -61,7 +61,7 @@ import com.bms.price.service.OrderBillProductCheckService; import com.bms.price.service.support.OrderBillExportSupport; /** - * Billing center: order quote trial (authenticated). + * 计费中心:订单报价试算(需登录)。 * * @author bms */ @@ -154,7 +154,7 @@ public class BillingController extends BaseController * Requires at least one meaningful filter. Poll task then download. */ @PreAuthorize("@ss.hasPermi('price:billing:export')") - @Log(title = "\u8ba1\u8d39\u5217\u8868", businessType = BusinessType.EXPORT) + @Log(title = "计费列表", businessType = BusinessType.EXPORT) @PostMapping("/bill/export") public AjaxResult exportBillList(@RequestBody(required = false) PrcOrderBill query) { @@ -230,7 +230,7 @@ public class BillingController extends BaseController * Requires at least one meaningful filter (default orderStatuses alone is not enough). */ @PreAuthorize("@ss.hasPermi('price:orderBill:export')") - @Log(title = "\u8ba2\u5355\u5217\u8868", businessType = BusinessType.EXPORT) + @Log(title = "订单列表", businessType = BusinessType.EXPORT) @PostMapping("/orderBill/export") public AjaxResult exportOrderBillList(@RequestBody(required = false) PrcOrderBill query) { diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PriceSetController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PriceSetController.java index 48293da1..980f03a1 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PriceSetController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PriceSetController.java @@ -247,7 +247,7 @@ public class PriceSetController extends BaseController } @PreAuthorize("@ss.hasPermi('price:set:edit') or @ss.hasPermi('price:set:forceEdit')") - @Log(title = "\u5957\u9910\u660e\u7ec6", businessType = BusinessType.UPDATE) + @Log(title = "套餐明细", businessType = BusinessType.UPDATE) @PutMapping("/detail") public AjaxResult editDetail(@RequestBody PrcPriceSetDetail detail) { @@ -255,7 +255,7 @@ public class PriceSetController extends BaseController } @PreAuthorize("@ss.hasPermi('price:set:edit') or @ss.hasPermi('price:set:forceEdit')") - @Log(title = "\u5957\u9910\u4ef7\u683c\u5bfc\u5165", businessType = BusinessType.IMPORT) + @Log(title = "套餐价格导入", businessType = BusinessType.IMPORT) @PostMapping("/detail/importPrices") public AjaxResult importDetailPrices( @RequestParam(value = "files", required = false) MultipartFile[] files, @@ -319,7 +319,7 @@ public class PriceSetController extends BaseController * Async pull product library into version details. Returns taskId; poll /save/task/{taskId}. */ @PreAuthorize("@ss.hasPermi('price:set:edit') or @ss.hasPermi('price:set:forceEdit')") - @Log(title = "\u5957\u9910\u62c9\u53d6\u4ea7\u54c1", businessType = BusinessType.IMPORT) + @Log(title = "套餐拉取产品", businessType = BusinessType.IMPORT) @PostMapping("/detail/pullFromLibrary") public AjaxResult pullFromLibrary(@RequestParam("priceSetId") Long priceSetId, @RequestParam(value = "psvId", required = false) Long psvId, @@ -335,7 +335,7 @@ public class PriceSetController extends BaseController * Async batch write of detail surcharge snapshots. Returns taskId; poll /save/task/{taskId}. */ @PreAuthorize("@ss.hasPermi('price:set:edit') or @ss.hasPermi('price:set:forceEdit')") - @Log(title = "\u5957\u9910\u9644\u52a0\u8d39", businessType = BusinessType.UPDATE) + @Log(title = "套餐附加费", businessType = BusinessType.UPDATE) @PostMapping("/detail/surcharge/async") public AjaxResult batchSurchargeAsync(@RequestBody List details) { @@ -346,7 +346,7 @@ public class PriceSetController extends BaseController } @PreAuthorize("@ss.hasPermi('price:set:edit') or @ss.hasPermi('price:set:forceEdit')") - @Log(title = "\u5957\u9910\u660e\u7ec6", businessType = BusinessType.DELETE) + @Log(title = "套餐明细", businessType = BusinessType.DELETE) @DeleteMapping("/detail/{psdIds}") public AjaxResult removeDetail(@PathVariable Long[] psdIds) { diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java index 8c1427a2..8199fb39 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java @@ -36,7 +36,7 @@ import com.bms.price.service.IPrcPriceExcelFileService; import com.bms.price.service.support.CatalogVersionSupport; /** - * Product list (async Excel import) + * 产品列表(异步 Excel 导入) * * @author bms */ @@ -185,7 +185,7 @@ public class ProductController extends BaseController } @PreAuthorize("@ss.hasPermi('price:product:edit')") - @Log(title = "\u4ea7\u54c1\u56fd\u5bb6\u660e\u7ec6", businessType = BusinessType.UPDATE) + @Log(title = "产品国家明细", businessType = BusinessType.UPDATE) @PutMapping("/country") public AjaxResult editCountry(@RequestBody BmsProductCountry country) { @@ -193,7 +193,7 @@ public class ProductController extends BaseController } @PreAuthorize("@ss.hasPermi('price:product:remove')") - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.DELETE) + @Log(title = "产品列表", businessType = BusinessType.DELETE) @DeleteMapping("/{productIds}") public AjaxResult remove(@PathVariable Long[] productIds) { @@ -204,7 +204,7 @@ public class ProductController extends BaseController * Async import Weishi B2C workbook. Returns taskId; poll /import/task/{taskId}. * effectiveDate is required: written to product / product_country; previous open rows expire at this date. */ - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.IMPORT) + @Log(title = "产品列表", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('price:product:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport, @@ -220,7 +220,7 @@ public class ProductController extends BaseController * Async single-country cost-sheet import. Returns taskId; poll /import/task/{taskId}. * effectiveDate is required: written to product / product_country; previous open rows expire at this date. */ - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.IMPORT) + @Log(title = "产品列表", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('price:product:import')") @PostMapping("/importCountryData") public AjaxResult importCountryData(MultipartFile file, String countryCode, diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/RedlineProductController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/RedlineProductController.java index 7e7b6706..76515a24 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/RedlineProductController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/RedlineProductController.java @@ -36,7 +36,7 @@ import com.bms.price.service.IPrcPriceExcelFileService; import com.bms.price.service.support.CatalogVersionSupport; /** - * redline product list (async Excel import) + * 红线价产品列表(异步 Excel 导入) * * @author bms */ @@ -185,7 +185,7 @@ public class RedlineProductController extends BaseController } @PreAuthorize("@ss.hasPermi('price:redline:edit')") - @Log(title = "\u4ea7\u54c1\u56fd\u5bb6\u660e\u7ec6", businessType = BusinessType.UPDATE) + @Log(title = "产品国家明细", businessType = BusinessType.UPDATE) @PutMapping("/country") public AjaxResult editCountry(@RequestBody BmsRedlineProductCountry country) { @@ -193,7 +193,7 @@ public class RedlineProductController extends BaseController } @PreAuthorize("@ss.hasPermi('price:redline:remove')") - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.DELETE) + @Log(title = "产品列表", businessType = BusinessType.DELETE) @DeleteMapping("/{productIds}") public AjaxResult remove(@PathVariable Long[] productIds) { @@ -204,7 +204,7 @@ public class RedlineProductController extends BaseController * Async import Weishi B2C workbook. Returns taskId; poll /import/task/{taskId}. * effectiveDate is required: written to product / product_country; previous open rows expire at this date. */ - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.IMPORT) + @Log(title = "产品列表", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('price:redline:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport, @@ -220,7 +220,7 @@ public class RedlineProductController extends BaseController * Async single-country cost-sheet import. Returns taskId; poll /import/task/{taskId}. * effectiveDate is required: written to product / product_country; previous open rows expire at this date. */ - @Log(title = "\u4ea7\u54c1\u5217\u8868", businessType = BusinessType.IMPORT) + @Log(title = "产品列表", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('price:redline:import')") @PostMapping("/importCountryData") public AjaxResult importCountryData(MultipartFile file, String countryCode, diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ZoneController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ZoneController.java index 118ae07d..d78ab3dc 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ZoneController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ZoneController.java @@ -24,7 +24,7 @@ import com.bms.price.domain.PrcZoneRegion; import com.bms.price.service.IPrcZoneService; /** - * Zone management: region -> zone -> postcode detail + * 分区管理:国家(region) -> 分区 -> 邮编明细 */ @RestController @RequestMapping("/price/zone") diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/system/SysFileTemplateController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/system/SysFileTemplateController.java index 70064c0c..06de06bf 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/system/SysFileTemplateController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/system/SysFileTemplateController.java @@ -23,7 +23,7 @@ import com.bms.common.enums.BusinessType; import com.bms.system.domain.SysFileTemplate; import com.bms.system.service.ISysFileTemplateService; -/** System file template CRUD + OSS upload/download. */ +/** 系统文件模板的增删改查,以及 OSS 上传/下载。 */ @RestController @RequestMapping("/system/fileTemplate") public class SysFileTemplateController extends BaseController diff --git a/bms-back/bms-admin/src/main/resources/i18n/messages.properties b/bms-back/bms-admin/src/main/resources/i18n/messages.properties index 2769eb8e..e22d368d 100644 --- a/bms-back/bms-admin/src/main/resources/i18n/messages.properties +++ b/bms-back/bms-admin/src/main/resources/i18n/messages.properties @@ -76,16 +76,16 @@ price.set.detail.registration.empty=固定价明细必须填写挂号费 price.set.detail.zone.empty=固定价明细必须选择分区 price.set.detail.roundMode.invalid=取值方式仅支持 UP / DOWN / HALF_UP price.set.detail.freight.belowBase=套餐运费不能低于导入基准价 {0} -price.set.import.fixedOnly=\u4ec5\u56fa\u5b9a\u4ef7\u5957\u9910\u652f\u6301\u5bfc\u5165\u4fee\u6539\u4ef7\u683c -price.set.import.noDetails=\u5957\u9910\u6682\u65e0\u4ef7\u683c\u660e\u7ec6\uff0c\u8bf7\u5148\u62c9\u53d6\u4ea7\u54c1\u4ef7 -price.set.import.noPriceRows=\u4ef7\u8868\u672a\u89e3\u6790\u5230\u6709\u6548\u4ef7\u683c\u884c -price.set.import.success=\u5bfc\u5165\u5b8c\u6210\uff1a\u66f4\u65b0 {0} \u6761\uff0c\u672a\u5339\u914d {1} \u6761\uff0c\u5957\u9910\u65e0\u5bf9\u5e94\u4ea7\u54c1 {2} \u4e2a -price.set.import.noDetailWritten=\u672a\u5199\u5165\u4efb\u4f55\u5957\u9910\u660e\u7ec6\uff08\u4ef7\u8868\u65e0\u53ef\u7528\u91cd\u91cf\u6bb5\u6216\u5747\u4e3a\u7a7a\u8fd0\u8d39/\u6302\u53f7\u8d39\u4e14\u65e0\u53ef\u66f4\u65b0\u884c\uff09 -price.set.import.updateSuccess=\u5bfc\u5165\u4fee\u6539\u5b8c\u6210\uff1a\u66f4\u65b0 {0} \u6761\uff0c\u672a\u5339\u914d {1} \u6761\uff0c\u8df3\u8fc7\u7a7a\u8fd0\u8d39/\u6302\u53f7\u8d39 {2} \u6761 -price.set.import.upsertSuccess=\u5bfc\u5165\u5b8c\u6210\uff1a\u65b0\u589e {0} \u6761\uff0c\u66f4\u65b0 {1} \u6761\uff0c\u8df3\u8fc7\u7a7a\u8fd0\u8d39/\u6302\u53f7\u8d39 {2} \u6761 -price.set.import.weightBandMismatch=\u5bfc\u5165\u5931\u8d25\uff1a\u4ee5\u4e0b\u4ea7\u54c1+\u56fd\u5bb6\u7684\u91cd\u91cf\u6bb5\u4e0e\u5957\u9910\u4e0d\u4e00\u81f4\uff1a{0} -price.set.import.weightBandMismatch.item=\u4ea7\u54c1 {0} / \u56fd\u5bb6 {1}\uff08\u5957\u9910\u91cd\u91cf\u6bb5\uff1a{2}\uff1bExcel\uff1a{3}\uff09 -price.set.pull.success=\u62c9\u53d6\u5b8c\u6210\uff1a\u5df2\u5199\u5165 {0} \u6761\u5957\u9910\u660e\u7ec6 +price.set.import.fixedOnly=仅固定价套餐支持导入修改价格 +price.set.import.noDetails=套餐暂无价格明细,请先拉取产品价 +price.set.import.noPriceRows=价表未解析到有效价格行 +price.set.import.success=导入完成:更新 {0} 条,未匹配 {1} 条,套餐无对应产品 {2} 个 +price.set.import.noDetailWritten=未写入任何套餐明细(价表无可用重量段或均为空运费/挂号费且无可更新行) +price.set.import.updateSuccess=导入修改完成:更新 {0} 条,未匹配 {1} 条,跳过空运费/挂号费 {2} 条 +price.set.import.upsertSuccess=导入完成:新增 {0} 条,更新 {1} 条,跳过空运费/挂号费 {2} 条 +price.set.import.weightBandMismatch=导入失败:以下产品+国家的重量段与套餐不一致:{0} +price.set.import.weightBandMismatch.item=产品 {0} / 国家 {1}(套餐重量段:{2};Excel:{3}) +price.set.pull.success=拉取完成:已写入 {0} 条套餐明细 price.set.customer.notExists=客户绑定不存在 price.set.customer.unbindAudit=审核中的套餐不允许解绑客户 price.set.customer.customerId.empty=客户ID不能为空 diff --git a/bms-back/bms-framework/src/main/java/com/bms/framework/config/properties/TmsApiProperties.java b/bms-back/bms-framework/src/main/java/com/bms/framework/config/properties/TmsApiProperties.java index 577ca059..519a5786 100644 --- a/bms-back/bms-framework/src/main/java/com/bms/framework/config/properties/TmsApiProperties.java +++ b/bms-back/bms-framework/src/main/java/com/bms/framework/config/properties/TmsApiProperties.java @@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** - * TMS open API properties. + * TMS 开放接口配置。 * * @author bms */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/config/BillingProperties.java b/bms-back/bms-system/src/main/java/com/bms/price/config/BillingProperties.java index 02fa4b0e..fd8ecb2e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/config/BillingProperties.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/config/BillingProperties.java @@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** - * Billing task MQ + Oracle upstream order settings. + * 计费任务 MQ 与 Oracle 上游订单配置。 */ @Component @ConfigurationProperties(prefix = "bms.billing") diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BatchAddIncomeBillFeeTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BatchAddIncomeBillFeeTask.java index 1246d8c2..efe84a48 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BatchAddIncomeBillFeeTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BatchAddIncomeBillFeeTask.java @@ -2,7 +2,7 @@ package com.bms.price.domain; import java.io.Serializable; -/** Async batch add income fee progress (Redis). */ +/** 异步批量增加应收费用的进度(Redis)。 */ public class BatchAddIncomeBillFeeTask implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProduct.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProduct.java index 62a75d04..ae7f6081 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProduct.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProduct.java @@ -7,7 +7,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** Catalog product view over prc_price_set_product (price_type=PRODUCT/REDLINE) */ +/** 目录产品视图,对应 prc_price_set_product(price_type=PRODUCT/REDLINE) */ @Data @EqualsAndHashCode(callSuper = true) public class BmsProduct extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProductImportTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProductImportTask.java index d2cc2701..87183b5b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProductImportTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsProductImportTask.java @@ -3,7 +3,7 @@ package com.bms.price.domain; import java.io.Serializable; /** - * Async product Excel import progress (Redis). + * 异步产品 Excel 导入进度(Redis)。 */ public class BmsProductImportTask implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProduct.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProduct.java index 05cf7c47..2d84b294 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProduct.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProduct.java @@ -7,7 +7,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** Redline catalog product view over prc_price_set_product (price_type=REDLINE) */ +/** 红线价目录产品视图,对应 prc_price_set_product(price_type=REDLINE) */ @Data @EqualsAndHashCode(callSuper = true) public class BmsRedlineProduct extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductCountry.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductCountry.java index ac153ef4..cd9d0771 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductCountry.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductCountry.java @@ -6,7 +6,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Redline catalog country detail over prc_price_set_detail (price_type=REDLINE) */ +/** 红线价目录国家明细,对应 prc_price_set_detail(price_type=REDLINE) */ @Data public class BmsRedlineProductCountry implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductImportTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductImportTask.java index a47fe189..a1fba19a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductImportTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/BmsRedlineProductImportTask.java @@ -3,7 +3,7 @@ package com.bms.price.domain; import java.io.Serializable; /** - * Async product Excel import progress (Redis). + * 异步产品 Excel 导入进度(Redis)。 */ public class BmsRedlineProductImportTask implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/CatalogPreviewApplyRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/CatalogPreviewApplyRequest.java index 45d19652..5abd5907 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/CatalogPreviewApplyRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/CatalogPreviewApplyRequest.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; /** - * Apply create-page Excel preview into a draft/pending catalog version. + * 把新建页的 Excel 预览写入草稿或待生效的目录版本。 */ public class CatalogPreviewApplyRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/ChargeWeightImportTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/ChargeWeightImportTask.java index a7f81008..8e540d42 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/ChargeWeightImportTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/ChargeWeightImportTask.java @@ -2,7 +2,7 @@ package com.bms.price.domain; import java.io.Serializable; -/** Async charge-weight import progress (Redis). */ +/** 异步计费重导入进度(Redis)。 */ public class ChargeWeightImportTask implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java index 9da2bc19..996e784d 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java @@ -6,7 +6,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** Billing task row prc_billing_task */ +/** 计费任务行 prc_billing_task */ @Data @EqualsAndHashCode(callSuper = true) public class PrcBillingTask extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTaskRetryTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTaskRetryTask.java index 71312725..d003d9e0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTaskRetryTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTaskRetryTask.java @@ -2,7 +2,7 @@ package com.bms.price.domain; import java.io.Serializable; -/** Async filter-retry progress for billing tasks (Redis). */ +/** 计费任务按条件重试的异步进度(Redis)。 */ public class PrcBillingTaskRetryTask implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java index da3c69ef..e0ce1c8d 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java @@ -8,7 +8,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** order info header prc_order_bill */ +/** 订单信息主表 prc_order_bill */ @Data @EqualsAndHashCode(callSuper = true) public class PrcOrderBill extends BaseEntity @@ -126,7 +126,7 @@ public class PrcOrderBill extends BaseEntity private Integer billingFailStatus; /** 失败原因 */ private String errorMessage; - /** \u6279\u91cf\u67e5\u8be2\uff1a\u591a\u4e2a\u8ba1\u8d39\u5931\u8d25\u72b6\u6001\uff08\u4ec5\u67e5\u8be2\u7528\uff0c\u975e\u8868\u5b57\u6bb5\uff09 */ + /** 批量查询:多个计费失败状态(仅查询用,非表字段) */ private List billingFailStatuses; private String roundMode; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExportTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExportTask.java index 0d8bc75f..1e0b418e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExportTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExportTask.java @@ -2,7 +2,7 @@ package com.bms.price.domain; import java.io.Serializable; -/** Async order/billing list Excel export progress (Redis). */ +/** 订单列表/计费列表 Excel 异步导出进度(Redis)。 */ public class PrcOrderBillExportTask implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceExcelFile.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceExcelFile.java index f67ab3cc..726818a8 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceExcelFile.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceExcelFile.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; /** - * Import quote Excel attachment: prc_price_excel_file + * 导入报价 Excel 附件:prc_price_excel_file */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetDetail.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetDetail.java index b01df1a4..ec74866f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetDetail.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetDetail.java @@ -7,7 +7,7 @@ import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Price detail prc_price_set_detail (PRODUCT / REDLINE / SALES) */ +/** 价格明细 prc_price_set_detail(PRODUCT / REDLINE / SALES) */ @Data public class PrcPriceSetDetail implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetProduct.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetProduct.java index 5d6ce5f6..c6719071 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetProduct.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetProduct.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** - * Price product row prc_price_set_product (PRODUCT / REDLINE / SALES) + * 价格产品行 prc_price_set_product(PRODUCT / REDLINE / SALES) */ @Data public class PrcPriceSetProduct implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetSaveTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetSaveTask.java index f6de443c..fde25338 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetSaveTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetSaveTask.java @@ -3,7 +3,7 @@ package com.bms.price.domain; import java.io.Serializable; /** - * Async save progress for price set (Redis). + * 价格套餐异步保存进度(Redis)。 */ public class PrcPriceSetSaveTask implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetUser.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetUser.java index 6e6dc368..a0bdba1e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetUser.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetUser.java @@ -4,7 +4,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** Package viewer bind: prc_price_set_user */ +/** 套餐可查看人绑定:prc_price_set_user */ @Data @EqualsAndHashCode(callSuper = true) public class PrcPriceSetUser extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetVersion.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetVersion.java index d6001eba..3a389328 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetVersion.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPriceSetVersion.java @@ -7,7 +7,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** Price set version prc_price_set_version */ +/** 价格套餐版本 prc_price_set_version */ @Data @EqualsAndHashCode(callSuper = true) public class PrcPriceSetVersion extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuote.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuote.java index 1b33b592..01546b2b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuote.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuote.java @@ -8,7 +8,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** billing quote header prc_quote */ +/** 计费报价主表 prc_quote */ @Data @EqualsAndHashCode(callSuper = true) public class PrcQuote extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuoteFee.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuoteFee.java index 4ff2620f..efc7d424 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuoteFee.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcQuoteFee.java @@ -6,7 +6,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** billing quote fee detail prc_quote_fee, one row per bms_fee_type */ +/** 计费报价费用明细 prc_quote_fee,每个 bms_fee_type 一行 */ @Data public class PrcQuoteFee implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcSurchargeRel.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcSurchargeRel.java index 30b25115..faeb7ced 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcSurchargeRel.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcSurchargeRel.java @@ -9,8 +9,8 @@ import lombok.EqualsAndHashCode; * 附加费与产品/明细/套餐关联 prc_surcharge_rel * 同时携带附加费展示字段(JOIN prc_surcharge)与明细展示字段(LEFT JOIN product_country,仅 PRODUCT/REDLINE)。 * - * price_type semantics: - * PRODUCT / REDLINE / SALES : product_id=psp_id, detail_id=psd_id (null=all details of product) + * price_type 含义: + * PRODUCT / REDLINE / SALES:product_id=psp_id,detail_id=psd_id(null 表示该产品全部明细) */ @Data diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZone.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZone.java index 4580ca57..877bdabf 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZone.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZone.java @@ -5,7 +5,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Zone under region: prc_zone */ +/** 国家下的分区:prc_zone */ @Data public class PrcZone implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneDetail.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneDetail.java index 548b7387..47e40a03 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneDetail.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneDetail.java @@ -5,7 +5,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Zone postcode detail prc_zone_detail */ +/** 分区邮编明细 prc_zone_detail */ @Data public class PrcZoneDetail implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneRegion.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneRegion.java index dd1efbdc..f5e668a4 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneRegion.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcZoneRegion.java @@ -4,7 +4,7 @@ import java.io.Serializable; import lombok.Data; /** - * Zone country list row: region + zone aggregates (not a table) + * 分区国家列表行:region 加分区汇总(不是一张表) */ @Data public class PrcZoneRegion implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PriceType.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PriceType.java index fbb51e1e..14668c6c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PriceType.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PriceType.java @@ -1,7 +1,7 @@ package com.bms.price.domain; /** - * Unified price type for prc_price_set_version / product / detail. + * prc_price_set_version / product / detail 共用的价格类型。 */ public final class PriceType { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/RedlineCatalogPreviewApplyRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/RedlineCatalogPreviewApplyRequest.java index 01afbc87..64f77688 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/RedlineCatalogPreviewApplyRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/RedlineCatalogPreviewApplyRequest.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; /** - * Apply create-page Excel preview into a draft/pending redline version. + * 把新建页的 Excel 预览写入草稿或待生效的红线价版本。 */ public class RedlineCatalogPreviewApplyRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java index 74afbeed..e94af5e6 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java @@ -6,7 +6,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; -/** Manual add receivable fee line on billing detail. */ +/** 在计费明细上手工增加一条应收费用。 */ @Data public class AddIncomeBillFeeRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeePreview.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeePreview.java index 51edaac8..b9d52628 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeePreview.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeePreview.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; import com.bms.price.domain.PrcOrderBill; -/** Preview matched bills before async batch add fee. */ +/** 异步批量加费用前,预览匹配到的账单。 */ public class BatchAddIncomeBillFeePreview implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java index 50b67f18..018504cb 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java @@ -7,8 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; /** - * Batch add receivable fee lines. - * scopeMode=SELECTED uses billIds; scopeMode=ALL uses list query filters. + * 批量增加应收费用行。 + * scopeMode=SELECTED 使用 billIds;scopeMode=ALL 使用列表查询条件。 */ @Data public class BatchAddIncomeBillFeeRequest implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskRetryByFilterRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskRetryByFilterRequest.java index ce038558..89e709ef 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskRetryByFilterRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskRetryByFilterRequest.java @@ -4,8 +4,8 @@ import java.io.Serializable; import lombok.Data; /** - * Filter for async batch retry of billing tasks. - * Require customerCode + billTime range to avoid full-table resync. + * 计费任务异步批量重试的筛选条件。 + * 必须带 customerCode 和 billTime 范围,避免全表重同步。 */ @Data public class BillingTaskRetryByFilterRequest implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskSubmitRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskSubmitRequest.java index 82b4f3ba..5fe8d728 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskSubmitRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BillingTaskSubmitRequest.java @@ -6,9 +6,9 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** - * Warehouse inbound request: create billing task then MQ consume. - * Provide at least one of transferNo / trackingNo / orderNo. - * billTime is billing time from mobile (stored in prc_billing_task.bill_time). + * 仓库入库请求:先创建计费任务,再由 MQ 消费。 + * transferNo / trackingNo / orderNo 至少填一个。 + * billTime 是移动端传入的计费时间(写入 prc_billing_task.bill_time)。 */ @Data public class BillingTaskSubmitRequest implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightImportRow.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightImportRow.java index 5aa235d8..6cab1f4e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightImportRow.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightImportRow.java @@ -5,7 +5,7 @@ import java.math.BigDecimal; import com.bms.common.annotation.Excel; import lombok.Data; -/** Excel row for batch charge_weight update. */ +/** 批量更新 charge_weight 的 Excel 行。 */ @Data public class ChargeWeightImportRow implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightTemplateRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightTemplateRequest.java index 66b4cb79..a48dd69b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightTemplateRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/ChargeWeightTemplateRequest.java @@ -4,7 +4,7 @@ import java.io.Serializable; import java.util.List; import lombok.Data; -/** Download charge-weight import template; optionally fill order/customer by list filters. */ +/** 下载计费重导入模板;可按列表条件带出订单/客户。 */ @Data public class ChargeWeightTemplateRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java index d80e807b..c65a7e1b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java @@ -5,8 +5,8 @@ import java.util.List; import lombok.Data; /** - * Order-list local rebill: use prc_order_bill only (no Oracle TAB_ORDER). - * scopeMode SELECTED = billIds; ALL = filters (orderIdentifiers / customer / bizDate...). + * 订单列表本地重计费:只用 prc_order_bill(不查 Oracle TAB_ORDER)。 + * scopeMode SELECTED = billIds;ALL = 筛选条件(orderIdentifiers / customer / bizDate 等)。 */ @Data public class LocalRebillRequest implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillProductCheckResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillProductCheckResult.java index f6706237..06daad50 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillProductCheckResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillProductCheckResult.java @@ -5,8 +5,8 @@ import java.util.ArrayList; import java.util.List; /** - * Local order-bill products vs customer bound package (SALES) comparison. - * Matching also accepts product_code_mapping (upstream -> BMS). + * 本地订单账单产品与客户绑定套餐(SALES)的比对。 + * 匹配时也接受 product_code_mapping(上游代码 -> BMS)。 */ public class OrderBillProductCheckResult implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcBillingBillListExportRow.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcBillingBillListExportRow.java index 2289b62c..b0ed036f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcBillingBillListExportRow.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcBillingBillListExportRow.java @@ -7,7 +7,7 @@ import com.bms.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Billing-list Excel export row. */ +/** 计费列表 Excel 导出行。 */ @Data public class PrcBillingBillListExportRow implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcOrderBillListExportRow.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcOrderBillListExportRow.java index 706680ac..d626a3d0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcOrderBillListExportRow.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/PrcOrderBillListExportRow.java @@ -7,7 +7,7 @@ import com.bms.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** Order-list Excel export row. */ +/** 订单列表 Excel 导出行。 */ @Data public class PrcOrderBillListExportRow implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java index 7b2ffdce..daa67b60 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java @@ -4,7 +4,7 @@ import java.io.Serializable; import java.util.List; import lombok.Data; -/** Batch recalc product_amount or redline_amount only (existing bills). */ +/** 只批量重算 product_amount 或 redline_amount(已有账单)。 */ @Data public class RecalcBillPriceRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TabOrderProductCheckResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TabOrderProductCheckResult.java index 5fc45f83..ff273f12 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TabOrderProductCheckResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TabOrderProductCheckResult.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; /** - * Order-source product vs customer package comparison result. + * 订单源产品与客户套餐的比对结果。 */ public class TabOrderProductCheckResult implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java index fe0ff80e..a3eca7be 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java @@ -10,7 +10,7 @@ import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; -/** Sync order -> receivable bill. Quote fields plus order snapshot. */ +/** 同步订单为应收账单。包含报价字段和订单快照。 */ @Data @EqualsAndHashCode(callSuper = true) public class TmsPriceBillRequest extends TmsPriceQuoteRequest diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteFeeLine.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteFeeLine.java index 6da3fffb..c17c6b7c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteFeeLine.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteFeeLine.java @@ -4,7 +4,7 @@ import java.io.Serializable; import java.math.BigDecimal; import lombok.Data; -/** quote fee line keyed by bms_fee_type */ +/** 按 bms_fee_type 区分的报价费用行 */ @Data public class TmsPriceQuoteFeeLine implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java index 864a5b77..a8fc661c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteRequest.java @@ -6,7 +6,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; -/** TMS freight quote request */ +/** TMS 运费试算请求 */ @Data public class TmsPriceQuoteRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java index b3a67242..dfae1566 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java @@ -7,8 +7,8 @@ import java.util.List; import lombok.Data; /** - * TMS freight quote response. - * matchSource: PACKAGE_FIXED / PACKAGE_DISCOUNT + * TMS 运费试算响应。 + * matchSource:PACKAGE_FIXED / PACKAGE_DISCOUNT */ @Data public class TmsPriceQuoteResult implements Serializable diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java index 8ad7ff6d..19f67e8a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java @@ -7,7 +7,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; -/** Single-bill update for charge_weight (manual override; weight kept). */ +/** 单笔更新 charge_weight(手工覆盖;weight 保留)。 */ @Data public class UpdateChargeWeightRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java index 7b0f1b44..bf8b7062 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java @@ -5,7 +5,7 @@ import java.math.BigDecimal; import jakarta.validation.constraints.NotBlank; import lombok.Data; -/** Update manual receivable fee line on billing detail. */ +/** 修改计费明细上的手工应收费用行。 */ @Data public class UpdateIncomeBillFeeRequest implements Serializable { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillBillingFailStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillBillingFailStatus.java index 3ce685fa..956ce584 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillBillingFailStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillBillingFailStatus.java @@ -1,10 +1,10 @@ package com.bms.price.enums; /** - * prc_order_bill.billing_fail_status \u8ba1\u8d39\u5931\u8d25\u72b6\u6001\uff08\u6570\u5b57\uff09\u3002 - * 0\u6210\u529f\uff1b1\u672a\u5339\u914d\u4ea7\u54c1\uff1b2\u672a\u5339\u914d\u56fd\u5bb6\uff1b3\u672a\u5339\u914d\u91cd\u91cf\u6bb5\u3002 - * 4 \u8d77\u4e0e prc_billing_task.fail_code \u4e00\u4e00\u5bf9\u5e94\u3002 - * \u4ec5 0/1/2/3 \u5199\u5165 prc_income_bill\uff1b\u4ec5 0 \u5199\u5165 prc_income_bill_fee\u3002 + * prc_order_bill.billing_fail_status 计费失败状态(数字)。 + * 0成功;1未匹配产品;2未匹配国家;3未匹配重量段。 + * 4 起与 prc_billing_task.fail_code 一一对应。 + * 仅 0/1/2/3 写入 prc_income_bill;仅 0 写入 prc_income_bill_fee。 */ public enum BillBillingFailStatus { @@ -65,14 +65,14 @@ public enum BillBillingFailStatus return code != null && code.intValue() > SUCCESS.code; } - /** 0/1/2/3 \u624d\u843d prc_income_bill\u3002 */ + /** 0/1/2/3 才落 prc_income_bill。 */ public static boolean storesIncomeBill(Integer code) { int value = code == null ? SUCCESS.code : code.intValue(); return value == SUCCESS.code || value == PRODUCT.code || value == COUNTRY.code || value == WEIGHT.code; } - /** \u4ec5 0 \u843d prc_income_bill_fee\u3002 */ + /** 仅 0 落 prc_income_bill_fee。 */ public static boolean storesIncomeFee(Integer code) { return code == null || code.intValue() == SUCCESS.code; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCreditArrearsStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCreditArrearsStatus.java index 02863826..2c7adc26 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCreditArrearsStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCreditArrearsStatus.java @@ -1,8 +1,8 @@ package com.bms.price.enums; /** - * Credit arrears status snapshot on prc_order_bill when billing. - * Billing continues even when ARREARS; occupy still runs with checkAvailable=false. + * 计费时写到 prc_order_bill 的信用欠费状态快照。 + * 即使是 ARREARS 也继续计费;占用仍执行,且 checkAvailable=false。 */ public enum BillCreditArrearsStatus { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCustomerActiveStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCustomerActiveStatus.java index 95fcc8d1..29ca652a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCustomerActiveStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillCustomerActiveStatus.java @@ -1,8 +1,8 @@ package com.bms.price.enums; /** - * Customer effective status snapshot on prc_order_bill when billing. - * Billing continues even when MISSING / DISABLED. + * 计费时写到 prc_order_bill 的客户生效状态快照。 + * 即使是 MISSING / DISABLED 也继续计费。 */ public enum BillCustomerActiveStatus { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillOrderStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillOrderStatus.java index c51946db..69301a06 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillOrderStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillOrderStatus.java @@ -1,9 +1,9 @@ package com.bms.price.enums; /** - * Snapshot of prc_order_bill.order_status (aligned with upstream TAB_ORDER). - * Fee refund sets {@link #REFUNDED} (9 / 已退件); rebill/bill follows Oracle and does not pin 9/10. - * Upstream 9/10 trigger billType=REFUND when billing-task pulls Oracle. + * prc_order_bill.order_status 快照(与上游 TAB_ORDER 对齐)。 + * 费用退款会置为 {@link #REFUNDED}(9 / 已退件);重计费/计费跟随 Oracle,不强制写成 9/10。 + * 计费任务拉取 Oracle 时,上游 9/10 会触发 billType=REFUND。 */ public enum BillOrderStatus { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillRefundStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillRefundStatus.java index a2a4e327..133c3b27 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillRefundStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillRefundStatus.java @@ -1,8 +1,8 @@ package com.bms.price.enums; /** - * Refund status snapshot on prc_order_bill. - * NONE = not refunded; REFUNDED = has fee_type=REFUND line. + * prc_order_bill 上的退款状态快照。 + * NONE = 未退款;REFUNDED = 存在 fee_type=REFUND 的费用行。 */ public enum BillRefundStatus { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskFailCode.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskFailCode.java index a170ec7e..4714f812 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskFailCode.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskFailCode.java @@ -3,8 +3,8 @@ package com.bms.price.enums; import com.bms.common.utils.StringUtils; /** - * Stable fail codes for prc_billing_task.fail_code (search / ops). - * Resolved from exception message when task writeback is FAILED. + * prc_billing_task.fail_code 的稳定失败码(用于查询 / 运维)。 + * 任务回写为 FAILED 时,从异常信息解析得到。 */ public enum BillTaskFailCode { @@ -56,49 +56,49 @@ public enum BillTaskFailCode return null; } String msg = errorMessage.trim(); - if (containsAny(msg, "\u672a\u7ed1\u5b9a\u5957\u9910", "noCustomerPackage", "NO_CUSTOMER_PACKAGE")) + if (containsAny(msg, "未绑定套餐", "noCustomerPackage", "NO_CUSTOMER_PACKAGE")) { return NO_CUSTOMER_PACKAGE.code; } - if (containsAny(msg, "\u65e0\u751f\u6548\u5957\u9910\u7248\u672c", "noActivePackageVersion", "NO_ACTIVE_PACKAGE_VERSION")) + if (containsAny(msg, "无生效套餐版本", "noActivePackageVersion", "NO_ACTIVE_PACKAGE_VERSION")) { return NO_ACTIVE_PACKAGE_VERSION.code; } - if (containsAny(msg, "\u5df2\u751f\u6210\u5e94\u6536\u8d26\u5355", "alreadyInArBill", "ALREADY_IN_AR_BILL")) + if (containsAny(msg, "已生成应收账单", "alreadyInArBill", "ALREADY_IN_AR_BILL")) { return ALREADY_IN_AR_BILL.code; } - if (containsAny(msg, "\u672a\u627e\u5230\u6709\u6548\u4ea7\u54c1\u6863\u6848", "PRODUCT_ARCHIVE_MISSING")) + if (containsAny(msg, "未找到有效产品档案", "PRODUCT_ARCHIVE_MISSING")) { return PRODUCT_ARCHIVE_MISSING.code; } // Soft-fail messages from price.bill.billingFail.* (order matters: weight/country before generic) - if (containsAny(msg, "\u672a\u5339\u914d\u91cd\u91cf\u6bb5", "WEIGHT_NOT_HIT", "billingFail.weight")) + if (containsAny(msg, "未匹配重量段", "WEIGHT_NOT_HIT", "billingFail.weight")) { return WEIGHT_NOT_HIT.code; } - if (containsAny(msg, "\u672a\u5339\u914d\u56fd\u5bb6", "COUNTRY_NOT_HIT", "billingFail.country")) + if (containsAny(msg, "未匹配国家", "COUNTRY_NOT_HIT", "billingFail.country")) { return COUNTRY_NOT_HIT.code; } - if (containsAny(msg, "\u672a\u5339\u914d\u4ea7\u54c1", "PRODUCT_NOT_HIT", "billingFail.product", "productNotInPackage")) + if (containsAny(msg, "未匹配产品", "PRODUCT_NOT_HIT", "billingFail.product", "productNotInPackage")) { return PRODUCT_NOT_HIT.code; } - if (containsAny(msg, "\u8be5\u5206\u533a\u65e0\u5bf9\u5e94\u4ea7\u54c1\u91cd\u91cf\u6bb5", "zonePriceNotHit", "ZONE_PRICE_NOT_HIT")) + if (containsAny(msg, "该分区无对应产品重量段", "zonePriceNotHit", "ZONE_PRICE_NOT_HIT")) { return ZONE_PRICE_NOT_HIT.code; } - if (containsAny(msg, "\u6ca1\u6709\u4ea7\u54c1/\u56fd\u5bb6/\u91cd\u91cf\u6bb5", "priceNotHit", "PRICE_NOT_HIT", + if (containsAny(msg, "没有产品/国家/重量段", "priceNotHit", "PRICE_NOT_HIT", "packagePriceNotHit", "packageZonePriceNotHit")) { return PRICE_NOT_HIT.code; } - if (containsAny(msg, "\u8bf7\u586b\u5199\u76ee\u7684\u90ae\u7f16", "postcodeRequired", "POSTCODE_REQUIRED")) + if (containsAny(msg, "请填写目的邮编", "postcodeRequired", "POSTCODE_REQUIRED")) { return POSTCODE_REQUIRED.code; } - if (containsAny(msg, "\u90ae\u7f16\u672a\u5339\u914d\u5230\u5206\u533a", "postcodeZoneNotFound", "POSTCODE_ZONE_NOT_FOUND")) + if (containsAny(msg, "邮编未匹配到分区", "postcodeZoneNotFound", "POSTCODE_ZONE_NOT_FOUND")) { return POSTCODE_ZONE_NOT_FOUND.code; } @@ -126,19 +126,19 @@ public enum BillTaskFailCode { return BILL_TIME_EMPTY.code; } - if (containsAny(msg, "\u9000\u8d39\u8ba2\u5355\u53f7\u65e0\u6cd5\u89e3\u6790", "REFUND_ORDER_UNRESOLVED")) + if (containsAny(msg, "退费订单号无法解析", "REFUND_ORDER_UNRESOLVED")) { return REFUND_ORDER_UNRESOLVED.code; } - if (containsAny(msg, "\u5ba2\u6237\u4ee3\u7801\u4e0d\u80fd\u4e3a\u7a7a", "customerCodeRequired", "CUSTOMER_CODE_REQUIRED")) + if (containsAny(msg, "客户代码不能为空", "customerCodeRequired", "CUSTOMER_CODE_REQUIRED")) { return CUSTOMER_CODE_REQUIRED.code; } - if (containsAny(msg, "\u5ba2\u6237\u5df2\u505c\u7528", "customerDisabled", "CUSTOMER_DISABLED")) + if (containsAny(msg, "客户已停用", "customerDisabled", "CUSTOMER_DISABLED")) { return CUSTOMER_DISABLED.code; } - if (containsAny(msg, "\u8fd0\u8d39\u4e3a\u7a7a", "freightMissing", "FREIGHT_MISSING")) + if (containsAny(msg, "运费为空", "freightMissing", "FREIGHT_MISSING")) { return FREIGHT_MISSING.code; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskSuccessStatus.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskSuccessStatus.java index 63058c17..a14cf6bb 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskSuccessStatus.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskSuccessStatus.java @@ -1,6 +1,6 @@ package com.bms.price.enums; -/** Billing task success flag on prc_billing_task.success_status */ +/** 计费任务成功标记,对应 prc_billing_task.success_status */ public enum BillTaskSuccessStatus { WAITING("WAITING"), diff --git a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskType.java b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskType.java index 8bfb13ae..c2edc822 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskType.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/enums/BillTaskType.java @@ -1,6 +1,6 @@ package com.bms.price.enums; -/** Billing task type on prc_billing_task.bill_type */ +/** 计费任务类型,对应 prc_billing_task.bill_type */ public enum BillTaskType { /** first-time billing */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/OracleUpstreamOrderMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/OracleUpstreamOrderMapper.java index fc4ea222..c2eb2cbf 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/OracleUpstreamOrderMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/OracleUpstreamOrderMapper.java @@ -5,7 +5,7 @@ import java.util.Map; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.vo.TabOrderMonitorQuery; -/** Read upstream main order from Oracle (SLAVE datasource). */ +/** 从 Oracle 读取上游主订单(SLAVE 数据源)。 */ public interface OracleUpstreamOrderMapper { Map selectByTransferNo(@Param("orderTable") String orderTable, @Param("transferNo") String transferNo); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java index a1897aff..eafd512b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java @@ -4,7 +4,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcIncomeBillFee; -/** receivable bill fee mapper */ +/** 应收账单费用 mapper */ public interface PrcIncomeBillFeeMapper { public List selectByBillId(String billId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java index 4be5f03b..472fdfb1 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java @@ -4,7 +4,7 @@ import java.util.List; import com.bms.price.domain.PrcIncomeBill; import org.apache.ibatis.annotations.Param; -/** prc_income_bill mapper */ +/** 应收账单 prc_income_bill 的 mapper */ public interface PrcIncomeBillMapper { PrcIncomeBill selectByBillId(String billId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java index 8e4a195d..784e42d4 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java @@ -2,7 +2,7 @@ package com.bms.price.mapper; import com.bms.price.domain.PrcOrderBillExt; -/** prc_order_bill_ext mapper */ +/** 订单账单扩展 prc_order_bill_ext 的 mapper */ public interface PrcOrderBillExtMapper { public PrcOrderBillExt selectByBillId(String billId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java index a915a576..fa61b7bf 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java @@ -7,7 +7,7 @@ import java.util.Map; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcOrderBill; -/** order bill header mapper */ +/** 订单账单主表 mapper */ public interface PrcOrderBillMapper { public PrcOrderBill selectPrcOrderBillByOrderNo(String orderNo); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java index bde00531..63009036 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java @@ -4,7 +4,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcPayBillFee; -/** payable bill fee mapper */ +/** 应付账单费用 mapper */ public interface PrcPayBillFeeMapper { public List selectByBillId(String billId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceExcelFileMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceExcelFileMapper.java index 1f8ef94d..a5026261 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceExcelFileMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceExcelFileMapper.java @@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcPriceExcelFile; /** - * Import quote Excel attachment mapper + * 导入报价 Excel 附件 mapper */ public interface PrcPriceExcelFileMapper { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetDetailMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetDetailMapper.java index 7f6c977a..0ff6e2b2 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetDetailMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetDetailMapper.java @@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcPriceSetDetail; /** - * Price detail mapper (PRODUCT / REDLINE / SALES) + * 价格明细 mapper(PRODUCT / REDLINE / SALES) */ public interface PrcPriceSetDetailMapper { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetProductMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetProductMapper.java index 0340edc0..d1d54819 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetProductMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetProductMapper.java @@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcPriceSetProduct; /** - * Price product mapper (PRODUCT / REDLINE / SALES) + * 价格产品 mapper(PRODUCT / REDLINE / SALES) */ public interface PrcPriceSetProductMapper { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetVersionMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetVersionMapper.java index bd3b02e8..8ebf66e5 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetVersionMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPriceSetVersionMapper.java @@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcPriceSetVersion; /** - * Price version (PRODUCT / REDLINE / SALES) + * 价格版本(PRODUCT / REDLINE / SALES) */ public interface PrcPriceSetVersionMapper { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteFeeMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteFeeMapper.java index c59fad03..2865417b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteFeeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteFeeMapper.java @@ -4,7 +4,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcQuoteFee; -/** billing quote fee detail mapper */ +/** 计费报价费用明细 mapper */ public interface PrcQuoteFeeMapper { public List selectByQuoteId(String quoteId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteMapper.java index 22d81c03..bb50628a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcQuoteMapper.java @@ -5,7 +5,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.bms.price.domain.PrcQuote; -/** billing quote header mapper */ +/** 计费报价主表 mapper */ public interface PrcQuoteMapper { public PrcQuote selectPrcQuoteByKey(String quoteKey); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMessage.java b/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMessage.java index 9e319b8b..d4f358c2 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMessage.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMessage.java @@ -2,7 +2,7 @@ package com.bms.price.mq; import java.io.Serializable; -/** MQ payload: only taskId; consumer loads full row from MySQL. */ +/** MQ 消息体:只有 taskId;消费者从 MySQL 加载整行。 */ public class BillingTaskMessage implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMqConsumer.java b/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMqConsumer.java index d3805978..2be860fb 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMqConsumer.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mq/BillingTaskMqConsumer.java @@ -21,7 +21,7 @@ import com.bms.price.config.BillingProperties; import com.bms.price.service.IPrcBillingTaskService; /** - * Consume billing task MQ messages and call billing interface. + * 消费计费任务 MQ 消息并调用计费接口。 */ @Component @ConditionalOnProperty(prefix = "bms.billing", name = "consumer-enabled", havingValue = "true", matchIfMissing = true) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mq/IBillingTaskMqPublisher.java b/bms-back/bms-system/src/main/java/com/bms/price/mq/IBillingTaskMqPublisher.java index 260ddc3d..62e45b4c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mq/IBillingTaskMqPublisher.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mq/IBillingTaskMqPublisher.java @@ -1,6 +1,6 @@ package com.bms.price.mq; -/** Publish billing task id to MQ after warehouse inbound insert. */ +/** 仓库入库写入后,把计费任务 id 发到 MQ。 */ public interface IBillingTaskMqPublisher { void publish(BillingTaskMessage message); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mq/LocalBillingTaskMqPublisher.java b/bms-back/bms-system/src/main/java/com/bms/price/mq/LocalBillingTaskMqPublisher.java index c7db7a0e..1746d6bd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mq/LocalBillingTaskMqPublisher.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mq/LocalBillingTaskMqPublisher.java @@ -5,8 +5,8 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; /** - * Local MQ: Spring application event (dev / no Redis broker). - * Enable with bms.billing.mq-mode=local + * 本地 MQ:Spring 应用事件(开发环境 / 没有 Redis)。 + * 配置 bms.billing.mq-mode=local 启用 */ @Component @ConditionalOnProperty(prefix = "bms.billing", name = "mq-mode", havingValue = "local") diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mq/RedisBillingTaskMqPublisher.java b/bms-back/bms-system/src/main/java/com/bms/price/mq/RedisBillingTaskMqPublisher.java index 8062384f..a224d560 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mq/RedisBillingTaskMqPublisher.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mq/RedisBillingTaskMqPublisher.java @@ -9,8 +9,8 @@ import com.alibaba.fastjson2.JSON; import com.bms.price.config.BillingProperties; /** - * Redis list as MQ queue (default). LPUSH on publish; consumer BRPOP/RPOP. - * Enable with bms.billing.mq-mode=redis (default). + * 用 Redis list 作为 MQ 队列(默认)。发布时 LPUSH;消费时 BRPOP/RPOP。 + * 配置 bms.billing.mq-mode=redis 启用(默认)。 */ @Component @ConditionalOnProperty(prefix = "bms.billing", name = "mq-mode", havingValue = "redis", matchIfMissing = true) 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 dc287772..32dbc8e2 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 @@ -10,7 +10,7 @@ import com.bms.common.utils.StringUtils; import com.bms.price.domain.vo.TmsPriceBillRequest; /** - * Map Oracle main-order row (FIELD_MAP style columns) to TmsPriceBillRequest. + * 把 Oracle 主订单行(FIELD_MAP 风格的列)映射为 TmsPriceBillRequest。 */ @Component public class OracleOrderBillMapper diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleUpstreamOrderService.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleUpstreamOrderService.java index a105515f..9fae6ad4 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleUpstreamOrderService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleUpstreamOrderService.java @@ -15,8 +15,8 @@ import com.bms.price.config.BillingProperties; import com.bms.price.mapper.OracleUpstreamOrderMapper; /** - * Query Oracle main order via SLAVE datasource. - * Requires spring.datasource.druid.slave.enabled=true and Oracle URL. + * 通过 SLAVE 数据源查询 Oracle 主订单。 + * 需要 spring.datasource.druid.slave.enabled=true,并配置 Oracle URL。 */ @Service public class OracleUpstreamOrderService diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/TabOrderProductCheckService.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/TabOrderProductCheckService.java index a0c24172..0420a1a0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/TabOrderProductCheckService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/TabOrderProductCheckService.java @@ -24,7 +24,7 @@ import com.bms.price.service.ITmsPriceQuoteService; import com.bms.system.service.IBmsProductCodeMappingService; /** - * Compare distinct TAB_ORDER product codes against customer package products. + * 把 TAB_ORDER 中不重复的产品代码与客户套餐产品比对。 */ @Service public class TabOrderProductCheckService diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchConfiguration.java b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchConfiguration.java index f6fa8c25..192b9696 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchConfiguration.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchConfiguration.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Bill sync search-store beans. + * 账单同步所用的搜索存储 Bean。 */ @Configuration @EnableConfigurationProperties(ElasticsearchProperties.class) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchPage.java b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchPage.java index 13991ce3..3e39fed0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchPage.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSearchPage.java @@ -3,7 +3,7 @@ package com.bms.price.search; import java.util.ArrayList; import java.util.List; -/** Paginated ES search result. */ +/** ES 分页查询结果。 */ public class BillSearchPage { private long total; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSyncSnapshot.java b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSyncSnapshot.java index 3841d79a..23a2e61b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/BillSyncSnapshot.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/BillSyncSnapshot.java @@ -1,6 +1,6 @@ package com.bms.price.search; -/** Generic Elasticsearch business log. Distinguished by logType + bizId. */ +/** 通用 Elasticsearch 业务日志。用 logType + bizId 区分。 */ public class BillSyncSnapshot { private String docId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/ElasticsearchProperties.java b/bms-back/bms-system/src/main/java/com/bms/price/search/ElasticsearchProperties.java index d1a498d6..5575234d 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/ElasticsearchProperties.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/ElasticsearchProperties.java @@ -3,7 +3,7 @@ package com.bms.price.search; import org.springframework.boot.context.properties.ConfigurationProperties; /** - * Elasticsearch connection for bill sync search store. + * 账单同步搜索存储使用的 Elasticsearch 连接。 */ @ConfigurationProperties(prefix = "bms.elasticsearch") public class ElasticsearchProperties diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/EsBillSearchStore.java b/bms-back/bms-system/src/main/java/com/bms/price/search/EsBillSearchStore.java index 420b3888..d043b007 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/EsBillSearchStore.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/EsBillSearchStore.java @@ -20,7 +20,7 @@ import com.alibaba.fastjson2.JSONObject; import com.bms.common.utils.StringUtils; /** - * Persist / load generic business logs via Elasticsearch REST API. + * 通过 Elasticsearch REST API 保存 / 读取通用业务日志。 */ public class EsBillSearchStore implements IBillSearchStore { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/EsBizLogSupport.java b/bms-back/bms-system/src/main/java/com/bms/price/search/EsBizLogSupport.java index a215a129..f9a853f3 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/EsBizLogSupport.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/EsBizLogSupport.java @@ -12,7 +12,7 @@ import com.bms.common.utils.sign.Md5Utils; import com.bms.price.domain.vo.TmsPriceBillRequest; import com.bms.price.domain.vo.TmsPriceQuoteRequest; -/** Helpers for ES business logs (success / fail). */ +/** ES 业务日志辅助方法(成功 / 失败)。 */ public final class EsBizLogSupport { public static final String STATUS_SUCCESS = "SUCCESS"; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/EsLogType.java b/bms-back/bms-system/src/main/java/com/bms/price/search/EsLogType.java index 39d15f42..a4296d46 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/EsLogType.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/EsLogType.java @@ -3,7 +3,7 @@ package com.bms.price.search; import java.text.SimpleDateFormat; import java.util.Date; -/** Common ES business-log types. */ +/** 常用 ES 业务日志类型。 */ public final class EsLogType { public static final String BILL = "BILL"; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/IBillSearchStore.java b/bms-back/bms-system/src/main/java/com/bms/price/search/IBillSearchStore.java index fae9bf8e..fc162d07 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/IBillSearchStore.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/IBillSearchStore.java @@ -1,7 +1,7 @@ package com.bms.price.search; /** - * Generic Elasticsearch store for business request/response logs. + * 业务请求/响应日志的通用 Elasticsearch 存储。 */ public interface IBillSearchStore { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/NoopBillSearchStore.java b/bms-back/bms-system/src/main/java/com/bms/price/search/NoopBillSearchStore.java index 24c233fe..b45b94f3 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/NoopBillSearchStore.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/NoopBillSearchStore.java @@ -1,7 +1,7 @@ package com.bms.price.search; /** - * No-op when Elasticsearch is disabled. + * 未启用 Elasticsearch 时的空实现。 */ public class NoopBillSearchStore implements IBillSearchStore { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/PriceChangeEsLog.java b/bms-back/bms-system/src/main/java/com/bms/price/search/PriceChangeEsLog.java index c7fda2a4..954cb482 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/PriceChangeEsLog.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/PriceChangeEsLog.java @@ -12,7 +12,7 @@ import com.bms.common.utils.StringUtils; import com.bms.price.domain.PrcPriceSetDetail; /** - * Write sales / product / redline price before-after changes to ES (bms_biz_log). + * 把销售价 / 产品价 / 红线价的变更前后写入 ES(bms_biz_log)。 */ public final class PriceChangeEsLog { @@ -93,18 +93,18 @@ public final class PriceChangeEsLog { if (oldRow != null) { - addIfChanged(changes, "fvValue", "\u8fd0\u8d39\u5355\u4ef7", oldRow.getFvValue(), null); - addIfChanged(changes, "fvRegistrationFee", "\u6302\u53f7\u8d39", oldRow.getFvRegistrationFee(), null); - addIfChanged(changes, "discountValue", "\u6298\u6263", oldRow.getDiscountValue(), null); + addIfChanged(changes, "fvValue", "运费单价", oldRow.getFvValue(), null); + addIfChanged(changes, "fvRegistrationFee", "挂号费", oldRow.getFvRegistrationFee(), null); + addIfChanged(changes, "discountValue", "折扣", oldRow.getDiscountValue(), null); } return changes; } Object oldFv = oldRow == null ? null : oldRow.getFvValue(); Object oldReg = oldRow == null ? null : oldRow.getFvRegistrationFee(); Object oldDisc = oldRow == null ? null : oldRow.getDiscountValue(); - addIfChanged(changes, "fvValue", "\u8fd0\u8d39\u5355\u4ef7", oldFv, newRow.getFvValue()); - addIfChanged(changes, "fvRegistrationFee", "\u6302\u53f7\u8d39", oldReg, newRow.getFvRegistrationFee()); - addIfChanged(changes, "discountValue", "\u6298\u6263", oldDisc, newRow.getDiscountValue()); + addIfChanged(changes, "fvValue", "运费单价", oldFv, newRow.getFvValue()); + addIfChanged(changes, "fvRegistrationFee", "挂号费", oldReg, newRow.getFvRegistrationFee()); + addIfChanged(changes, "discountValue", "折扣", oldDisc, newRow.getDiscountValue()); return changes; } @@ -112,8 +112,8 @@ public final class PriceChangeEsLog BigDecimal newFreight, BigDecimal newReg) { List> changes = new ArrayList>(); - addIfChanged(changes, "freightPrice", "\u8fd0\u8d39\u5355\u4ef7", oldFreight, newFreight); - addIfChanged(changes, "registrationFee", "\u6302\u53f7\u8d39", oldReg, newReg); + addIfChanged(changes, "freightPrice", "运费单价", oldFreight, newFreight); + addIfChanged(changes, "registrationFee", "挂号费", oldReg, newReg); return changes; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/search/TabOrderSyncEsLog.java b/bms-back/bms-system/src/main/java/com/bms/price/search/TabOrderSyncEsLog.java index e152a1d7..91eb8039 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/search/TabOrderSyncEsLog.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/search/TabOrderSyncEsLog.java @@ -6,7 +6,7 @@ import com.alibaba.fastjson2.JSON; import com.bms.common.utils.SecurityUtils; import com.bms.common.utils.StringUtils; -/** Write order-source sync actions to ES. */ +/** 把订单源同步动作写入 ES。 */ public final class TabOrderSyncEsLog { private TabOrderSyncEsLog() diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsProductService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsProductService.java index 940b7283..003ceb4a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsProductService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsProductService.java @@ -9,7 +9,7 @@ import com.bms.price.domain.BmsProductImportTask; import com.bms.price.domain.CatalogPreviewApplyRequest; /** - * Product list service + * 产品列表服务 * * @author bms */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsRedlineProductService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsRedlineProductService.java index 553a373d..4026fcab 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsRedlineProductService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IBmsRedlineProductService.java @@ -9,7 +9,7 @@ import com.bms.price.domain.BmsRedlineProductImportTask; import com.bms.price.domain.RedlineCatalogPreviewApplyRequest; /** - * redline product list service + * 红线价产品列表服务 * * @author bms */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java index d71ce032..a0747cf0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java @@ -19,7 +19,7 @@ import com.bms.price.domain.vo.TmsPriceBillRequest; import com.bms.price.domain.vo.TmsPriceQuoteResult; import com.bms.price.domain.vo.TmsOrderBillStatusResult; -/** Order billing: persist prc_order_bill + prc_income_bill/+fee. Payable (prc_pay_bill/+fee) skipped for now. */ +/** 订单计费:写入 prc_order_bill 与 prc_income_bill 及其费用。应付(prc_pay_bill 及其费用)暂不处理。 */ public interface IPrcOrderBillService { TmsPriceQuoteResult bill(TmsPriceBillRequest request); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPriceExcelFileService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPriceExcelFileService.java index 28e47a80..b5812b7e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPriceExcelFileService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPriceExcelFileService.java @@ -5,7 +5,7 @@ import java.util.List; import com.bms.price.domain.PrcPriceExcelFile; /** - * Import quote Excel attachment service + * 导入报价 Excel 附件服务 */ public interface IPrcPriceExcelFileService { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/ITmsPriceQuoteService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/ITmsPriceQuoteService.java index 567b7f0c..de6b4666 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/ITmsPriceQuoteService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/ITmsPriceQuoteService.java @@ -8,14 +8,14 @@ import java.util.Date; import java.util.List; /** - * TMS freight quote / bill calc service (shared by console trial and upstream bill). + * TMS 运费试算 / 计费计算服务(控制台试算与上游计费共用)。 * - * Match order: - * 1) Customer binds (package not stopped), bind_priority ASC; bind date range is not used for billing - * 2) Active package version at bill datetime (version effective_time / expire_time) - * 3) FIXED detail override, else DISCOUNT on that version - * 4) Else product default only when a version existed but detail missed - * Package hit uses version surcharge snapshot when present; else product library. + * 匹配顺序: + * 1) 客户绑定(套餐未停用),bind_priority 升序;绑定日期范围不参与计费时间判断 + * 2) 计费时刻生效的套餐版本(version effective_time / expire_time) + * 3) 优先 FIXED 明细覆盖,否则用该版本的 DISCOUNT + * 4) 仅当版本存在但明细未命中时,才用产品默认价 + * 命中套餐时,有版本附加费快照则用快照,否则用产品库。 * * @author bms */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/OrderBillProductCheckService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/OrderBillProductCheckService.java index ff7e7ad0..3b3d311c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/OrderBillProductCheckService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/OrderBillProductCheckService.java @@ -27,8 +27,8 @@ import com.bms.price.mapper.PrcOrderBillMapper; import com.bms.system.service.IBmsProductCodeMappingService; /** - * Compare local order-bill product codes against customer bound package SALES products. - * Also accepts product_code_mapping (upstream -> BMS). + * 把本地订单账单的产品代码与客户绑定套餐的 SALES 产品比对。 + * 同时接受 product_code_mapping(上游代码 -> BMS)。 */ @Service public class OrderBillProductCheckService diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsProductServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsProductServiceImpl.java index a9dadbfd..de8b6590 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsProductServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsProductServiceImpl.java @@ -61,7 +61,7 @@ import com.bms.system.domain.BmsRegion; import com.bms.system.mapper.BmsRegionMapper; /** - * Product service with Weishi Excel import (catalog + country weight bands) + * 产品服务,含威狮 Excel 导入(目录 + 国家重量段) * * @author bms */ @@ -70,18 +70,18 @@ public class BmsProductServiceImpl implements IBmsProductService { private static final Logger log = LoggerFactory.getLogger(BmsProductServiceImpl.class); - private static final String CATALOG_SHEET = "\u4ea7\u54c1\u76ee\u5f55"; + private static final String CATALOG_SHEET = "产品目录"; private static final Set SKIP_SHEETS = new HashSet<>(Arrays.asList( - CATALOG_SHEET, "\u9000\u4ef6\u91cd\u6d3e", "\u7533\u62a5\u8bf4\u660e", "\u8d54\u507f\u6807\u51c6")); + CATALOG_SHEET, "退件重派", "申报说明", "赔偿标准")); private static final Pattern EFFECTIVE_DATE_PATTERN = Pattern.compile( - "\u751f\u6548\u65e5\u671f[\uff1a:]\\s*(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); + "生效日期[::]\\s*(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); private static final Pattern EFFECTIVE_DATE_YMD = Pattern.compile( "(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); private static final Pattern EFFECTIVE_DATE_CN = Pattern.compile( - "(\\d{4})\\s*\u5e74\\s*(\\d{1,2})\\s*\u6708\\s*(\\d{1,2})"); + "(\\d{4})\\s*年\\s*(\\d{1,2})\\s*月\\s*(\\d{1,2})"); - /** Parse 0.01\u2264W\u22640.3 / 0.3").append(product.getProductCode()).append("\uff1a").append(tip); + failureMsg.append("
").append(product.getProductCode()).append(":").append(tip); } } @@ -450,7 +450,7 @@ public class BmsProductServiceImpl implements IBmsProductService + "
" + MessageUtils.message("price.product.import.success.detail2"); if (!unmatchedCountries.isEmpty()) { - msg += "
" + MessageUtils.message("price.product.import.success.unmatched", String.join("\u3001", unmatchedCountries)); + msg += "
" + MessageUtils.message("price.product.import.success.unmatched", String.join("、", unmatchedCountries)); } return msg; } @@ -576,7 +576,7 @@ public class BmsProductServiceImpl implements IBmsProductService { tip = e.getClass().getSimpleName(); } - failureMsg.append("
").append(product.getProductCode()).append("\uff1a").append(tip); + failureMsg.append("
").append(product.getProductCode()).append(":").append(tip); } } @@ -717,7 +717,7 @@ public class BmsProductServiceImpl implements IBmsProductService continue; } Sheet sheet = workbook.getSheetAt(i); - if (sheet == null || findHeaderCell(sheet, "\u56fd\u5bb6") == null) + if (sheet == null || findHeaderCell(sheet, "国家") == null) { continue; } @@ -918,7 +918,7 @@ public class BmsProductServiceImpl implements IBmsProductService } if (files.size() > com.bms.price.service.support.UploadFileBatch.MAX_FILES) { - throw new ServiceException("\u5355\u6b21\u6700\u591a\u5bfc\u5165 5 \u4e2a\u6587\u4ef6"); + throw new ServiceException("单次最多导入 5 个文件"); } for (MultipartFile file : files) { @@ -1666,9 +1666,9 @@ public class BmsProductServiceImpl implements IBmsProductService private List parseCatalog(Sheet sheet) { List list = new ArrayList<>(); - // Header is "\u5bf9\u63a5\u4ee3\u7801" or legacy "\u4ea7\u54c1\u5bf9\u63a5\u4ee3\u7801". Column A is often empty. - // 20260928 layout inserts "\u8ba1\u6ce1\u89c4\u5219" before country, so map by header name. - int[] header = findHeaderCell(sheet, "\u5bf9\u63a5\u4ee3\u7801"); + // Header is "对接代码" or legacy "产品对接代码". Column A is often empty. + // 20260928 layout inserts "计泡规则" before country, so map by header name. + int[] header = findHeaderCell(sheet, "对接代码"); if (header == null) { throw new ServiceException(MessageUtils.message("price.product.import.catalogHeaderMissing")); @@ -1676,20 +1676,20 @@ public class BmsProductServiceImpl implements IBmsProductService int headerRowIdx = header[0]; int colCode = header[1]; Row head = sheet.getRow(headerRowIdx); - int colName = catalogColumn(head, "\u4ea7\u54c1\u540d\u79f0", colCode + 1); - int colLevel = catalogColumn(head, "\u65f6\u6548", colCode + 2); - int colCargo = catalogColumn(head, "\u8d70\u8d27\u5c5e\u6027", colCode + 3); - int colDest = findColByHeader(head, "\u56fd\u5bb6", colCode); + int colName = catalogColumn(head, "产品名称", colCode + 1); + int colLevel = catalogColumn(head, "时效", colCode + 2); + int colCargo = catalogColumn(head, "走货属性", colCode + 3); + int colDest = findColByHeader(head, "国家", colCode); if (colDest < 0) { - colDest = findColByHeader(head, "\u76ee\u7684", colCode); + colDest = findColByHeader(head, "目的", colCode); } if (colDest < 0) { colDest = colCode + 4; } - int colNote = catalogColumn(head, "\u66f4\u65b0\u5185\u5bb9", colCode + 5); - int colDate = catalogColumn(head, "\u751f\u6548", colCode + 6); + int colNote = catalogColumn(head, "更新内容", colCode + 5); + int colDate = catalogColumn(head, "生效", colCode + 6); int lastRow = sheet.getLastRowNum(); for (int i = headerRowIdx + 1; i <= lastRow; i++) { @@ -1699,7 +1699,7 @@ public class BmsProductServiceImpl implements IBmsProductService continue; } String code = cellString(row.getCell(colCode)); - if (StringUtils.isEmpty(code) || code.contains("\u5bf9\u63a5\u4ee3\u7801")) + if (StringUtils.isEmpty(code) || code.contains("对接代码")) { continue; } @@ -1822,8 +1822,8 @@ public class BmsProductServiceImpl implements IBmsProductService return ""; } String out = s.trim().toLowerCase(Locale.ROOT); - // unify dash variants: - \u2013 \u2014 \uff0d - out = out.replace('\u2013', '-').replace('\u2014', '-').replace('\uff0d', '-'); + // unify dash variants: - – — - + out = out.replace('–', '-').replace('—', '-').replace('-', '-'); out = out.replace(" ", "").replace("\u3000", ""); return out; } @@ -1879,10 +1879,10 @@ public class BmsProductServiceImpl implements IBmsProductService return false; } String n = name.trim(); - return "\u6b27\u76df".equals(n) + return "欧盟".equals(n) || "EU".equalsIgnoreCase(n) - || "\u6b27\u6d32\u8054\u76df".equals(n) - || "\u6b27\u76df\u56fd\u5bb6".equals(n); + || "欧洲联盟".equals(n) + || "欧盟国家".equals(n); } private List parseProductSheet(Sheet sheet, BmsProduct product, @@ -1896,7 +1896,7 @@ public class BmsProductServiceImpl implements IBmsProductService Date sheetEffective = parseSheetEffectiveDate(sheet); List list = new ArrayList<>(); - int[] countryHeader = findHeaderCell(sheet, "\u56fd\u5bb6"); + int[] countryHeader = findHeaderCell(sheet, "国家"); if (countryHeader == null) { return list; @@ -1904,12 +1904,12 @@ public class BmsProductServiceImpl implements IBmsProductService int headerRowIdx = countryHeader[0]; Row headerRow = sheet.getRow(headerRowIdx); int colCountry = countryHeader[1]; - int colWeight = findColByHeader(headerRow, "\u91cd\u91cf", colCountry + 1); - int colFreight = findColByHeader(headerRow, "\u8fd0\u8d39", colCountry + 1); - int colRegister = findColByHeader(headerRow, "\u6302\u53f7", colCountry + 1); - int colSize = findColByHeader(headerRow, "\u5c3a\u5bf8", colCountry + 1); - int colLastMile = findColByHeader(headerRow, "\u5c3e\u7a0b", colCountry + 1); - int colLeadTime = findColByHeader(headerRow, "\u65f6\u6548", colCountry + 1); + int colWeight = findColByHeader(headerRow, "重量", colCountry + 1); + int colFreight = findColByHeader(headerRow, "运费", colCountry + 1); + int colRegister = findColByHeader(headerRow, "挂号", colCountry + 1); + int colSize = findColByHeader(headerRow, "尺寸", colCountry + 1); + int colLastMile = findColByHeader(headerRow, "尾程", colCountry + 1); + int colLeadTime = findColByHeader(headerRow, "时效", colCountry + 1); if (colWeight < 0) { colWeight = colCountry + 1; @@ -1949,7 +1949,7 @@ public class BmsProductServiceImpl implements IBmsProductService } String countryCell = cellString(row.getCell(colCountry)); String weightLabel = cellString(row.getCell(colWeight)); - if ("\u56fd\u5bb6".equals(countryCell) || weightLabel.contains("\u91cd\u91cf\u6bb5")) + if ("国家".equals(countryCell) || weightLabel.contains("重量段")) { continue; } @@ -2232,7 +2232,7 @@ public class BmsProductServiceImpl implements IBmsProductService { return parseYmd(cn.group(1), cn.group(2), cn.group(3)); } - if (text.contains("\u751f\u6548")) + if (text.contains("生效")) { Matcher ymd = EFFECTIVE_DATE_YMD.matcher(text); if (ymd.find()) @@ -2262,11 +2262,11 @@ public class BmsProductServiceImpl implements IBmsProductService private static String resolveTaxMode(String productName) { - if (productName != null && productName.contains("\u5305\u7a0e")) + if (productName != null && productName.contains("包税")) { return "TAX_INCLUDED"; } - if (productName != null && productName.contains("\u4e0d\u5305\u7a0e")) + if (productName != null && productName.contains("不包税")) { return "TAX_EXCLUDED"; } @@ -2407,13 +2407,13 @@ public class BmsProductServiceImpl implements IBmsProductService } s = s.trim(); // Excel NA markers: / 、- 、— 、N/A - if ("/".equals(s) || "-".equals(s) || "\u2014".equals(s) || "\uff0d".equals(s) + if ("/".equals(s) || "-".equals(s) || "—".equals(s) || "-".equals(s) || "N/A".equalsIgnoreCase(s) || "NA".equalsIgnoreCase(s)) { return null; } // strip currency / unit suffixes: 56、56元、56 RMB - s = s.replace(",", "").replace("\uffe5", "").replace("\u5143", "") + s = s.replace(",", "").replace("¥", "").replace("元", "") .replace("RMB", "").replace("rmb", "").trim(); if (s.isEmpty() || "/".equals(s)) { @@ -2448,22 +2448,22 @@ public class BmsProductServiceImpl implements IBmsProductService private List parseCountryCatalog(Sheet sheet) { List list = new ArrayList<>(); - int[] header = findHeaderCell(sheet, "\u4ea7\u54c1\u540d\u79f0"); + int[] header = findHeaderCell(sheet, "产品名称"); if (header == null) { - header = findHeaderCell(sheet, "\u4ea7\u54c1ID"); + header = findHeaderCell(sheet, "产品ID"); } if (header == null) { throw new ServiceException(MessageUtils.message("price.product.import.countryCatalogHeaderMissing")); } Row head = sheet.getRow(header[0]); - int colCode = firstCol(head, "\u4ea7\u54c1ID", "\u4ea7\u54c1\u5bf9\u63a5\u4ee3\u7801", "\u4ea7\u54c1\u4ee3\u7801"); - int colName = findColByHeader(head, "\u4ea7\u54c1\u540d\u79f0", 0); - int colService = firstCol(head, "\u670d\u52a1", "\u65f6\u6548\u7b49\u7ea7"); - int colCargo = findColByHeader(head, "\u8d70\u8d27\u5c5e\u6027", 0); - int colNote = firstCol(head, "\u5907\u6ce8", "\u66f4\u65b0\u5185\u5bb9"); - int colDate = firstCol(head, "\u66f4\u65b0\u65f6\u95f4", "\u751f\u6548\u65e5\u671f"); + int colCode = firstCol(head, "产品ID", "产品对接代码", "产品代码"); + int colName = findColByHeader(head, "产品名称", 0); + int colService = firstCol(head, "服务", "时效等级"); + int colCargo = findColByHeader(head, "走货属性", 0); + int colNote = firstCol(head, "备注", "更新内容"); + int colDate = firstCol(head, "更新时间", "生效日期"); if (colCode < 0 || colName < 0) { return list; @@ -2531,23 +2531,23 @@ public class BmsProductServiceImpl implements IBmsProductService continue; } Sheet sheet = workbook.getSheetAt(i); - int[] header = findHeaderCell(sheet, "\u4ea7\u54c1\u540d\u79f0"); + int[] header = findHeaderCell(sheet, "产品名称"); if (header == null) { continue; } Row headerRow = sheet.getRow(header[0]); int colName = header[1]; - int colWeight = findColByHeader(headerRow, "\u91cd\u91cf", 0); + int colWeight = findColByHeader(headerRow, "重量", 0); if (colWeight < 0) { continue; } - int colFreight = findColByHeader(headerRow, "\u8fd0\u8d39", 0); - int colRegister = findColByHeader(headerRow, "\u6302\u53f7", 0); - int colSize = findColByHeader(headerRow, "\u5c3a\u5bf8", 0); - int colLastMile = findColByHeader(headerRow, "\u5c3e\u7a0b", 0); - int colLeadTime = findColByHeader(headerRow, "\u65f6\u6548", 0); + int colFreight = findColByHeader(headerRow, "运费", 0); + int colRegister = findColByHeader(headerRow, "挂号", 0); + int colSize = findColByHeader(headerRow, "尺寸", 0); + int colLastMile = findColByHeader(headerRow, "尾程", 0); + int colLeadTime = findColByHeader(headerRow, "时效", 0); String currentName = null; String currentSize = null; @@ -2627,7 +2627,7 @@ public class BmsProductServiceImpl implements IBmsProductService { return true; } - return name.contains("\u90ae\u7f16") || name.contains("\u8d54\u507f"); + return name.contains("邮编") || name.contains("赔偿"); } private static boolean isSectionTitle(String name) @@ -2637,9 +2637,9 @@ public class BmsProductServiceImpl implements IBmsProductService return false; } String n = name.trim(); - return n.startsWith("\u4e00\u3001") || n.startsWith("\u4e8c\u3001") || n.startsWith("\u4e09\u3001") - || n.startsWith("\u56db\u3001") || n.startsWith("\u4e94\u3001") || n.startsWith("\u516d\u3001") - || n.startsWith("\u7279\u522b"); + return n.startsWith("一、") || n.startsWith("二、") || n.startsWith("三、") + || n.startsWith("四、") || n.startsWith("五、") || n.startsWith("六、") + || n.startsWith("特别"); } private PriceBlock findPriceBlock(String productName, Map blocks) @@ -2654,7 +2654,7 @@ public class BmsProductServiceImpl implements IBmsProductService { return exact; } - String stripped = name.replace("\u6807\u51c6", "").trim(); + String stripped = name.replace("标准", "").trim(); exact = blocks.get(stripped); if (exact != null) { @@ -2682,7 +2682,7 @@ public class BmsProductServiceImpl implements IBmsProductService return ""; } return s.trim().replace(" ", "").replace("\u3000", "") - .replace("-", "").replace("\u2013", "").replace("\u2014", "").replace("\uff0d", ""); + .replace("-", "").replace("–", "").replace("—", "").replace("-", ""); } private List stampSelectedCountry(List rows, BmsRegion region, Date eff) @@ -2797,7 +2797,7 @@ public class BmsProductServiceImpl implements IBmsProductService continue; } Sheet sheet = workbook.getSheetAt(i); - if (sheet == null || findHeaderCell(sheet, "\u56fd\u5bb6") == null) + if (sheet == null || findHeaderCell(sheet, "国家") == null) { continue; } @@ -2881,7 +2881,7 @@ public class BmsProductServiceImpl implements IBmsProductService String name = product == null || StringUtils.isEmpty(product.getProductName()) ? "-" : product.getProductName(); return MessageUtils.message("price.product.import.dupCountry.item", - code, name, String.join("\u3001", dups)); + code, name, String.join("、", dups)); } private List findDuplicateCountryWeightLabels(List rows) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsRedlineProductServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsRedlineProductServiceImpl.java index f54e8d92..741e66e6 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsRedlineProductServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/BmsRedlineProductServiceImpl.java @@ -60,25 +60,25 @@ import com.bms.system.domain.BmsRegion; import com.bms.system.mapper.BmsRegionMapper; /** - * Product service with Weishi Excel import (catalog + country weight bands) + * 产品服务,含威狮 Excel 导入(目录 + 国家重量段) * * @author bms */ @Service public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService { - private static final String CATALOG_SHEET = "\u4ea7\u54c1\u76ee\u5f55"; + private static final String CATALOG_SHEET = "产品目录"; private static final Set SKIP_SHEETS = new HashSet<>(Arrays.asList( - CATALOG_SHEET, "\u9000\u4ef6\u91cd\u6d3e", "\u7533\u62a5\u8bf4\u660e", "\u8d54\u507f\u6807\u51c6")); + CATALOG_SHEET, "退件重派", "申报说明", "赔偿标准")); private static final Pattern EFFECTIVE_DATE_PATTERN = Pattern.compile( - "\u751f\u6548\u65e5\u671f[\uff1a:]\\s*(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); + "生效日期[::]\\s*(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); private static final Pattern EFFECTIVE_DATE_YMD = Pattern.compile( "(\\d{4})[/.-](\\d{1,2})[/.-](\\d{1,2})"); private static final Pattern EFFECTIVE_DATE_CN = Pattern.compile( - "(\\d{4})\\s*\u5e74\\s*(\\d{1,2})\\s*\u6708\\s*(\\d{1,2})"); + "(\\d{4})\\s*年\\s*(\\d{1,2})\\s*月\\s*(\\d{1,2})"); - /** Parse 0.01\u2264W\u22640.3 / 0.3").append(product.getProductCode()).append("\uff1a").append(tip); + failureMsg.append("
").append(product.getProductCode()).append(":").append(tip); } } @@ -448,7 +448,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService + "
" + MessageUtils.message("price.product.import.success.detail2"); if (!unmatchedCountries.isEmpty()) { - msg += "
" + MessageUtils.message("price.product.import.success.unmatched", String.join("\u3001", unmatchedCountries)); + msg += "
" + MessageUtils.message("price.product.import.success.unmatched", String.join("、", unmatchedCountries)); } return msg; } @@ -574,7 +574,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService { tip = e.getClass().getSimpleName(); } - failureMsg.append("
").append(product.getProductCode()).append("\uff1a").append(tip); + failureMsg.append("
").append(product.getProductCode()).append(":").append(tip); } } @@ -769,7 +769,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService } if (files.size() > com.bms.price.service.support.UploadFileBatch.MAX_FILES) { - throw new ServiceException("\u5355\u6b21\u6700\u591a\u5bfc\u5165 5 \u4e2a\u6587\u4ef6"); + throw new ServiceException("单次最多导入 5 个文件"); } for (MultipartFile file : files) { @@ -1497,9 +1497,9 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService private List parseCatalog(Sheet sheet) { List list = new ArrayList<>(); - // Header is "\u5bf9\u63a5\u4ee3\u7801" or legacy "\u4ea7\u54c1\u5bf9\u63a5\u4ee3\u7801". Column A is often empty. - // 20260928 layout inserts "\u8ba1\u6ce1\u89c4\u5219" before country, so map by header name. - int[] header = findHeaderCell(sheet, "\u5bf9\u63a5\u4ee3\u7801"); + // Header is "对接代码" or legacy "产品对接代码". Column A is often empty. + // 20260928 layout inserts "计泡规则" before country, so map by header name. + int[] header = findHeaderCell(sheet, "对接代码"); if (header == null) { throw new ServiceException(MessageUtils.message("price.product.import.catalogHeaderMissing")); @@ -1507,20 +1507,20 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService int headerRowIdx = header[0]; int colCode = header[1]; Row head = sheet.getRow(headerRowIdx); - int colName = catalogColumn(head, "\u4ea7\u54c1\u540d\u79f0", colCode + 1); - int colLevel = catalogColumn(head, "\u65f6\u6548", colCode + 2); - int colCargo = catalogColumn(head, "\u8d70\u8d27\u5c5e\u6027", colCode + 3); - int colDest = findColByHeader(head, "\u56fd\u5bb6", colCode); + int colName = catalogColumn(head, "产品名称", colCode + 1); + int colLevel = catalogColumn(head, "时效", colCode + 2); + int colCargo = catalogColumn(head, "走货属性", colCode + 3); + int colDest = findColByHeader(head, "国家", colCode); if (colDest < 0) { - colDest = findColByHeader(head, "\u76ee\u7684", colCode); + colDest = findColByHeader(head, "目的", colCode); } if (colDest < 0) { colDest = colCode + 4; } - int colNote = catalogColumn(head, "\u66f4\u65b0\u5185\u5bb9", colCode + 5); - int colDate = catalogColumn(head, "\u751f\u6548", colCode + 6); + int colNote = catalogColumn(head, "更新内容", colCode + 5); + int colDate = catalogColumn(head, "生效", colCode + 6); int lastRow = sheet.getLastRowNum(); for (int i = headerRowIdx + 1; i <= lastRow; i++) { @@ -1530,7 +1530,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService continue; } String code = cellString(row.getCell(colCode)); - if (StringUtils.isEmpty(code) || code.contains("\u5bf9\u63a5\u4ee3\u7801")) + if (StringUtils.isEmpty(code) || code.contains("对接代码")) { continue; } @@ -1647,8 +1647,8 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService return ""; } String out = s.trim().toLowerCase(Locale.ROOT); - // unify dash variants: - \u2013 \u2014 \uff0d - out = out.replace('\u2013', '-').replace('\u2014', '-').replace('\uff0d', '-'); + // unify dash variants: - – — - + out = out.replace('–', '-').replace('—', '-').replace('-', '-'); out = out.replace(" ", "").replace("\u3000", ""); return out; } @@ -1689,10 +1689,10 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService return false; } String n = name.trim(); - return "\u6b27\u76df".equals(n) + return "欧盟".equals(n) || "EU".equalsIgnoreCase(n) - || "\u6b27\u6d32\u8054\u76df".equals(n) - || "\u6b27\u76df\u56fd\u5bb6".equals(n); + || "欧洲联盟".equals(n) + || "欧盟国家".equals(n); } private List parseProductSheet(Sheet sheet, BmsRedlineProduct product, @@ -1706,7 +1706,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService Date sheetEffective = parseSheetEffectiveDate(sheet); List list = new ArrayList<>(); - int[] countryHeader = findHeaderCell(sheet, "\u56fd\u5bb6"); + int[] countryHeader = findHeaderCell(sheet, "国家"); if (countryHeader == null) { return list; @@ -1714,12 +1714,12 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService int headerRowIdx = countryHeader[0]; Row headerRow = sheet.getRow(headerRowIdx); int colCountry = countryHeader[1]; - int colWeight = findColByHeader(headerRow, "\u91cd\u91cf", colCountry + 1); - int colFreight = findColByHeader(headerRow, "\u8fd0\u8d39", colCountry + 1); - int colRegister = findColByHeader(headerRow, "\u6302\u53f7", colCountry + 1); - int colSize = findColByHeader(headerRow, "\u5c3a\u5bf8", colCountry + 1); - int colLastMile = findColByHeader(headerRow, "\u5c3e\u7a0b", colCountry + 1); - int colLeadTime = findColByHeader(headerRow, "\u65f6\u6548", colCountry + 1); + int colWeight = findColByHeader(headerRow, "重量", colCountry + 1); + int colFreight = findColByHeader(headerRow, "运费", colCountry + 1); + int colRegister = findColByHeader(headerRow, "挂号", colCountry + 1); + int colSize = findColByHeader(headerRow, "尺寸", colCountry + 1); + int colLastMile = findColByHeader(headerRow, "尾程", colCountry + 1); + int colLeadTime = findColByHeader(headerRow, "时效", colCountry + 1); if (colWeight < 0) { colWeight = colCountry + 1; @@ -1759,7 +1759,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService } String countryCell = cellString(row.getCell(colCountry)); String weightLabel = cellString(row.getCell(colWeight)); - if ("\u56fd\u5bb6".equals(countryCell) || weightLabel.contains("\u91cd\u91cf\u6bb5")) + if ("国家".equals(countryCell) || weightLabel.contains("重量段")) { continue; } @@ -2042,7 +2042,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService { return parseYmd(cn.group(1), cn.group(2), cn.group(3)); } - if (text.contains("\u751f\u6548")) + if (text.contains("生效")) { Matcher ymd = EFFECTIVE_DATE_YMD.matcher(text); if (ymd.find()) @@ -2072,11 +2072,11 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService private static String resolveTaxMode(String productName) { - if (productName != null && productName.contains("\u5305\u7a0e")) + if (productName != null && productName.contains("包税")) { return "TAX_INCLUDED"; } - if (productName != null && productName.contains("\u4e0d\u5305\u7a0e")) + if (productName != null && productName.contains("不包税")) { return "TAX_EXCLUDED"; } @@ -2217,13 +2217,13 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService } s = s.trim(); // Excel NA markers: / 、- 、— 、N/A - if ("/".equals(s) || "-".equals(s) || "\u2014".equals(s) || "\uff0d".equals(s) + if ("/".equals(s) || "-".equals(s) || "—".equals(s) || "-".equals(s) || "N/A".equalsIgnoreCase(s) || "NA".equalsIgnoreCase(s)) { return null; } // strip currency / unit suffixes: 56、56元、56 RMB - s = s.replace(",", "").replace("\uffe5", "").replace("\u5143", "") + s = s.replace(",", "").replace("¥", "").replace("元", "") .replace("RMB", "").replace("rmb", "").trim(); if (s.isEmpty() || "/".equals(s)) { @@ -2258,22 +2258,22 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService private List parseCountryCatalog(Sheet sheet) { List list = new ArrayList<>(); - int[] header = findHeaderCell(sheet, "\u4ea7\u54c1\u540d\u79f0"); + int[] header = findHeaderCell(sheet, "产品名称"); if (header == null) { - header = findHeaderCell(sheet, "\u4ea7\u54c1ID"); + header = findHeaderCell(sheet, "产品ID"); } if (header == null) { throw new ServiceException(MessageUtils.message("price.product.import.countryCatalogHeaderMissing")); } Row head = sheet.getRow(header[0]); - int colCode = firstCol(head, "\u4ea7\u54c1ID", "\u4ea7\u54c1\u5bf9\u63a5\u4ee3\u7801", "\u4ea7\u54c1\u4ee3\u7801"); - int colName = findColByHeader(head, "\u4ea7\u54c1\u540d\u79f0", 0); - int colService = firstCol(head, "\u670d\u52a1", "\u65f6\u6548\u7b49\u7ea7"); - int colCargo = findColByHeader(head, "\u8d70\u8d27\u5c5e\u6027", 0); - int colNote = firstCol(head, "\u5907\u6ce8", "\u66f4\u65b0\u5185\u5bb9"); - int colDate = firstCol(head, "\u66f4\u65b0\u65f6\u95f4", "\u751f\u6548\u65e5\u671f"); + int colCode = firstCol(head, "产品ID", "产品对接代码", "产品代码"); + int colName = findColByHeader(head, "产品名称", 0); + int colService = firstCol(head, "服务", "时效等级"); + int colCargo = findColByHeader(head, "走货属性", 0); + int colNote = firstCol(head, "备注", "更新内容"); + int colDate = firstCol(head, "更新时间", "生效日期"); if (colCode < 0 || colName < 0) { return list; @@ -2341,23 +2341,23 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService continue; } Sheet sheet = workbook.getSheetAt(i); - int[] header = findHeaderCell(sheet, "\u4ea7\u54c1\u540d\u79f0"); + int[] header = findHeaderCell(sheet, "产品名称"); if (header == null) { continue; } Row headerRow = sheet.getRow(header[0]); int colName = header[1]; - int colWeight = findColByHeader(headerRow, "\u91cd\u91cf", 0); + int colWeight = findColByHeader(headerRow, "重量", 0); if (colWeight < 0) { continue; } - int colFreight = findColByHeader(headerRow, "\u8fd0\u8d39", 0); - int colRegister = findColByHeader(headerRow, "\u6302\u53f7", 0); - int colSize = findColByHeader(headerRow, "\u5c3a\u5bf8", 0); - int colLastMile = findColByHeader(headerRow, "\u5c3e\u7a0b", 0); - int colLeadTime = findColByHeader(headerRow, "\u65f6\u6548", 0); + int colFreight = findColByHeader(headerRow, "运费", 0); + int colRegister = findColByHeader(headerRow, "挂号", 0); + int colSize = findColByHeader(headerRow, "尺寸", 0); + int colLastMile = findColByHeader(headerRow, "尾程", 0); + int colLeadTime = findColByHeader(headerRow, "时效", 0); String currentName = null; String currentSize = null; @@ -2437,7 +2437,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService { return true; } - return name.contains("\u90ae\u7f16") || name.contains("\u8d54\u507f"); + return name.contains("邮编") || name.contains("赔偿"); } private static boolean isSectionTitle(String name) @@ -2447,9 +2447,9 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService return false; } String n = name.trim(); - return n.startsWith("\u4e00\u3001") || n.startsWith("\u4e8c\u3001") || n.startsWith("\u4e09\u3001") - || n.startsWith("\u56db\u3001") || n.startsWith("\u4e94\u3001") || n.startsWith("\u516d\u3001") - || n.startsWith("\u7279\u522b"); + return n.startsWith("一、") || n.startsWith("二、") || n.startsWith("三、") + || n.startsWith("四、") || n.startsWith("五、") || n.startsWith("六、") + || n.startsWith("特别"); } private PriceBlock findPriceBlock(String productName, Map blocks) @@ -2464,7 +2464,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService { return exact; } - String stripped = name.replace("\u6807\u51c6", "").trim(); + String stripped = name.replace("标准", "").trim(); exact = blocks.get(stripped); if (exact != null) { @@ -2492,7 +2492,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService return ""; } return s.trim().replace(" ", "").replace("\u3000", "") - .replace("-", "").replace("\u2013", "").replace("\u2014", "").replace("\uff0d", ""); + .replace("-", "").replace("–", "").replace("—", "").replace("-", ""); } private List stampSelectedCountry(List rows, BmsRegion region, Date eff) @@ -2646,7 +2646,7 @@ public class BmsRedlineProductServiceImpl implements IBmsRedlineProductService String name = product == null || StringUtils.isEmpty(product.getProductName()) ? "-" : product.getProductName(); return MessageUtils.message("price.product.import.dupCountry.item", - code, name, String.join("\u3001", dups)); + code, name, String.join("、", dups)); } private List findDuplicateCountryWeightLabels(List rows) 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 2b6c581b..bbd35945 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 @@ -265,7 +265,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { if (row != null && FEE_TYPE_REFUND.equalsIgnoreCase(row.getFeeType())) { - throw new ServiceException("\u8ba2\u5355\u5df2\u9000\u8d39\uff0c\u4e0d\u53ef\u91cd\u590d\u9000\u8d39"); + throw new ServiceException("订单已退费,不可重复退费"); } } @@ -993,8 +993,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService Integer.valueOf(ORDER_BILL_EXPORT_MAX))); } String prefix = PrcOrderBillExportTask.TYPE_BILLING.equals(type) - ? "\u8ba1\u8d39\u5217\u8868" - : "\u8ba2\u5355\u5217\u8868"; + ? "计费列表" + : "订单列表"; String fileName = prefix + "_" + DateUtils.dateTimeNow() + ".xlsx"; String taskId = IdUtils.fastSimpleUUID(); orderBillExportAsyncRunner.put(taskId, PrcOrderBillExportTask.STATUS_PENDING, 0, "queued", null, @@ -2730,7 +2730,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService || StringUtils.isNotEmpty(endBizDate); if (!hasFilter) { - throw new ServiceException("\u8bf7\u5148\u8bbe\u7f6e\u5217\u8868\u7b5b\u9009\u6761\u4ef6"); + throw new ServiceException("请先设置列表筛选条件"); } PrcOrderBill query = new PrcOrderBill(); query.setOrderNos(orderNos); @@ -2751,12 +2751,12 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService List list = self.selectBillList(query); if (list == null || list.isEmpty()) { - throw new ServiceException("\u5f53\u524d\u7b5b\u9009\u6761\u4ef6\u4e0b\u6ca1\u6709\u53ef\u5bfc\u51fa\u7684\u8ba2\u5355"); + throw new ServiceException("当前筛选条件下没有可导出的订单"); } if (list.size() > CHARGE_WEIGHT_IMPORT_MAX) { - throw new ServiceException("\u7b5b\u9009\u7ed3\u679c\u8d85\u8fc7 " - + CHARGE_WEIGHT_IMPORT_MAX + " \u6761\uff0c\u8bf7\u7f29\u5c0f\u7b5b\u9009\u8303\u56f4"); + throw new ServiceException("筛选结果超过 " + + CHARGE_WEIGHT_IMPORT_MAX + " 条,请缩小筛选范围"); } List rows = new ArrayList(list.size()); for (PrcOrderBill bill : list) @@ -2776,7 +2776,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } if (rows.isEmpty()) { - throw new ServiceException("\u5f53\u524d\u7b5b\u9009\u6761\u4ef6\u4e0b\u6ca1\u6709\u53ef\u5bfc\u51fa\u7684\u8ba2\u5355"); + throw new ServiceException("当前筛选条件下没有可导出的订单"); } return rows; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceExcelFileServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceExcelFileServiceImpl.java index f7d25fa3..f5019f5e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceExcelFileServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceExcelFileServiceImpl.java @@ -19,7 +19,7 @@ import com.bms.price.mapper.PrcPriceExcelFileMapper; import com.bms.price.service.IPrcPriceExcelFileService; /** - * Persist import Excel bytes and metadata (OSS, same pattern as AR bill export). + * 保存导入 Excel 的字节和元数据(OSS,与应收账单导出同一方式)。 */ @Service public class PrcPriceExcelFileServiceImpl implements IPrcPriceExcelFileService diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceSetServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceSetServiceImpl.java index 9298e2f2..b3b7857a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceSetServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPriceSetServiceImpl.java @@ -714,16 +714,16 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService } if (details.isEmpty()) { - items.add(new PrcPriceSetCheckItem("FIXED \u660e\u7ec6\u5b8c\u6574\u6027", "FAIL", - "\u65e0\u5957\u9910\u660e\u7ec6\uff1a\u56fa\u5b9a\u4ef7\u987b\u5148\u62c9\u53d6\u4ea7\u54c1\u5217\u8868\u6216\u5bfc\u5165 Excel \u5efa\u4ef7")); + items.add(new PrcPriceSetCheckItem("FIXED 明细完整性", "FAIL", + "无套餐明细:固定价须先拉取产品列表或导入 Excel 建价")); } else if (incomplete > 0) { - items.add(new PrcPriceSetCheckItem("FIXED \u660e\u7ec6\u5b8c\u6574\u6027", "FAIL", incomplete + " \u6761\u660e\u7ec6\u7f3a\u5c11\u4ea7\u54c1/\u56fd\u5bb6/\u91cd\u91cf\u6bb5")); + items.add(new PrcPriceSetCheckItem("FIXED 明细完整性", "FAIL", incomplete + " 条明细缺少产品/国家/重量段")); } else { - items.add(new PrcPriceSetCheckItem("FIXED \u660e\u7ec6\u5b8c\u6574\u6027", "PASS", details.size() + " \u6761\u5957\u9910\u9500\u552e\u4ef7\u660e\u7ec6\uff08\u4e0d\u56de\u9000 product_country\uff09")); + items.add(new PrcPriceSetCheckItem("FIXED 明细完整性", "PASS", details.size() + " 条套餐销售价明细(不回退 product_country)")); } } else @@ -784,33 +784,33 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService } if (dupInSet || bound > 0) { - items.add(new PrcPriceSetCheckItem("\u4e00\u4e2a\u5ba2\u6237\u53ea\u80fd\u7ed1\u5b9a\u4e00\u4e2a\u5957\u9910", "FAIL", + items.add(new PrcPriceSetCheckItem("一个客户只能绑定一个套餐", "FAIL", MessageUtils.message("price.set.customer.alreadyBound"))); } else if (customers.isEmpty()) { - items.add(new PrcPriceSetCheckItem("\u4e00\u4e2a\u5ba2\u6237\u53ea\u80fd\u7ed1\u5b9a\u4e00\u4e2a\u5957\u9910", "INFO", - "\u6682\u672a\u7ed1\u5b9a\u5ba2\u6237\uff0c\u53ef\u540e\u7eed\u8865\u5145")); + items.add(new PrcPriceSetCheckItem("一个客户只能绑定一个套餐", "INFO", + "暂未绑定客户,可后续补充")); } else { - items.add(new PrcPriceSetCheckItem("\u4e00\u4e2a\u5ba2\u6237\u53ea\u80fd\u7ed1\u5b9a\u4e00\u4e2a\u5957\u9910", "PASS", - "\u5ba2\u6237\u672a\u7ed1\u5b9a\u5176\u4ed6\u5957\u9910")); + items.add(new PrcPriceSetCheckItem("一个客户只能绑定一个套餐", "PASS", + "客户未绑定其他套餐")); } if (TYPE_FIXED.equals(setType) && !details.isEmpty()) { - items.add(new PrcPriceSetCheckItem("\u8fd0\u8d39\u5355\u4ef7 vs \u9ed8\u8ba4\u7b49\u7ea7\u4ef7\u504f\u5dee", "INFO", - "\u56fa\u5b9a\u4ef7\u4ec5\u4f7f\u7528\u5957\u9910\u660e\u7ec6\uff1b\u672a\u547d\u4e2d\u5219\u4e0d\u8ba1\u8d39\uff08\u4e0d\u56de\u9000 product_country\uff09")); + items.add(new PrcPriceSetCheckItem("运费单价 vs 默认等级价偏差", "INFO", + "固定价仅使用套餐明细;未命中则不计费(不回退 product_country)")); } else if (TYPE_FIXED.equals(setType)) { - items.add(new PrcPriceSetCheckItem("\u8fd0\u8d39\u5355\u4ef7 vs \u9ed8\u8ba4\u7b49\u7ea7\u4ef7\u504f\u5dee", "INFO", - "\u65e0\u5957\u9910\u660e\u7ec6\u65f6\u56fa\u5b9a\u4ef7\u4e0d\u8ba1\u8d39\uff0c\u8bf7\u5148\u62c9\u53d6\u6216\u5bfc\u5165\u5efa\u4ef7")); + items.add(new PrcPriceSetCheckItem("运费单价 vs 默认等级价偏差", "INFO", + "无套餐明细时固定价不计费,请先拉取或导入建价")); } else if (TYPE_DISCOUNT.equals(setType)) { - items.add(new PrcPriceSetCheckItem("\u8fd0\u8d39\u5355\u4ef7 vs \u9ed8\u8ba4\u7b49\u7ea7\u4ef7\u504f\u5dee", "INFO", "\u6298\u6263\u6a21\u5f0f\u6309\u4e0b\u5355\u65f6\u9ed8\u8ba4\u7b49\u7ea7\u4ef7 \u00d7 \u6298\u6263\u8ba1\u8d39")); + items.add(new PrcPriceSetCheckItem("运费单价 vs 默认等级价偏差", "INFO", "折扣模式按下单时默认等级价 × 折扣计费")); } return items; @@ -1006,7 +1006,7 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService } if (files.size() > com.bms.price.service.support.UploadFileBatch.MAX_FILES) { - throw new ServiceException("\u5355\u6b21\u6700\u591a\u5bfc\u5165 5 \u4e2a\u6587\u4ef6"); + throw new ServiceException("单次最多导入 5 个文件"); } List bytesList = new ArrayList(); List names = new ArrayList(); @@ -1318,7 +1318,7 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService } if (bytesList.size() > com.bms.price.service.support.UploadFileBatch.MAX_FILES) { - throw new ServiceException("\u5355\u6b21\u6700\u591a\u5bfc\u5165 5 \u4e2a\u6587\u4ef6"); + throw new ServiceException("单次最多导入 5 个文件"); } List existing = existingDetails; Map last = null; @@ -2931,7 +2931,7 @@ public class PrcPriceSetServiceImpl implements IPrcPriceSetService private static String formatWeightLabel(BigDecimal min, BigDecimal max) { - return stripTrailingZeros(min) + " prc_zone -> postcode detail + * 分区管理:国家(region) -> prc_zone -> 邮编明细 */ @Service public class PrcZoneServiceImpl implements IPrcZoneService { - private static final String SHEET_SUFFIX = "\u5206\u533a"; - private static final String COL_POSTCODE = "\u90ae\u7f16"; - private static final String COL_ZONE = "\u5206\u533a"; + private static final String SHEET_SUFFIX = "分区"; + private static final String COL_POSTCODE = "邮编"; + private static final String COL_ZONE = "分区"; private static final Pattern ZONE_NUM = Pattern.compile("(\\d+)"); private static final int BATCH_SIZE = 500; private static final DataFormatter CELL_FMT = new DataFormatter(Locale.ROOT); @@ -405,10 +405,10 @@ public class PrcZoneServiceImpl implements IPrcZoneService } // strip common suffixes: remote surcharge / surcharge / postcode String[] suffixes = { - "\u504f\u8fdc\u9644\u52a0\u8d39", - "\u9644\u52a0\u8d39", - "MR\u90ae\u7f16", - "\u90ae\u7f16" + "偏远附加费", + "附加费", + "MR邮编", + "邮编" }; for (String suffix : suffixes) { @@ -417,25 +417,25 @@ public class PrcZoneServiceImpl implements IPrcZoneService return StringUtils.trim(name.substring(0, name.length() - suffix.length())); } } - if (name.contains("\u52a0\u62ff\u5927")) + if (name.contains("加拿大")) { - return "\u52a0\u62ff\u5927"; + return "加拿大"; } - if (name.contains("\u6fb3\u5927\u5229\u4e9a")) + if (name.contains("澳大利亚")) { - return "\u6fb3\u5927\u5229\u4e9a"; + return "澳大利亚"; } - if (name.contains("\u82f1\u56fd")) + if (name.contains("英国")) { - return "\u82f1\u56fd"; + return "英国"; } - if (name.contains("\u65e5\u672c")) + if (name.contains("日本")) { - return "\u65e5\u672c"; + return "日本"; } - if (name.contains("\u6cd5\u56fd")) + if (name.contains("法国")) { - return "\u6cd5\u56fd"; + return "法国"; } return null; } @@ -446,19 +446,19 @@ public class PrcZoneServiceImpl implements IPrcZoneService { return parseZonePostcodes(sheet); } - if (sheetName.contains("\u52a0\u62ff\u5927")) + if (sheetName.contains("加拿大")) { return parseRemoteZonePostcodes(sheet); } - if (sheetName.contains("\u6cd5\u56fd") && sheetName.contains("\u90ae\u7f16")) + if (sheetName.contains("法国") && sheetName.contains("邮编")) { return parseCoveragePostcodes(sheet); } - if (sheetName.contains("\u65e5\u672c")) + if (sheetName.contains("日本")) { return parseProvincePostcodes(sheet); } - if (sheetName.contains("\u82f1\u56fd")) + if (sheetName.contains("英国")) { return parseUkSurchargePostcodes(sheet); } @@ -499,13 +499,13 @@ public class PrcZoneServiceImpl implements IPrcZoneService for (int c = 0; c < row.getLastCellNum(); c++) { String val = cellText(row.getCell(c)); - if (val.contains("\u90ae\u7f16") && postcodeCol < 0) + if (val.contains("邮编") && postcodeCol < 0) { postcodeCol = c; headerRow = r; } - if ((val.equals("\u504f\u8fdc\u5206\u533a") || val.equals(COL_ZONE) || val.contains("\u5206\u533a")) - && !val.contains("\u9644\u52a0") && zoneCol < 0) + if ((val.equals("偏远分区") || val.equals(COL_ZONE) || val.contains("分区")) + && !val.contains("附加") && zoneCol < 0) { zoneCol = c; headerRow = r; @@ -542,12 +542,12 @@ public class PrcZoneServiceImpl implements IPrcZoneService for (int c = 0; c < row.getLastCellNum(); c++) { String val = cellText(row.getCell(c)); - if ((val.contains("\u5dde") || val.contains("\u7701") || "\u5dde\u7701".equals(val)) && provinceCol < 0) + if ((val.contains("州") || val.contains("省") || "州省".equals(val)) && provinceCol < 0) { provinceCol = c; headerRow = r; } - if (COL_POSTCODE.equals(val) || val.equals("\u90ae\u7f16")) + if (COL_POSTCODE.equals(val) || val.equals("邮编")) { postcodeCol = c; headerRow = r; @@ -599,12 +599,12 @@ public class PrcZoneServiceImpl implements IPrcZoneService for (int c = 0; c < row.getLastCellNum(); c++) { String val = cellText(row.getCell(c)); - if (val.contains("\u8986\u76d6\u90ae\u7f16") || val.equals(COL_POSTCODE)) + if (val.contains("覆盖邮编") || val.equals(COL_POSTCODE)) { postcodeCol = c; headerRow = r; } - if (val.contains("\u5c3e\u7a0b") || val.contains("\u81ea\u63d0")) + if (val.contains("尾程") || val.contains("自提")) { zoneCol = c; headerRow = r; @@ -665,8 +665,8 @@ public class PrcZoneServiceImpl implements IPrcZoneService } for (int c = 0; c < row.getLastCellNum(); c++) { - if (cellText(row.getCell(c)).contains("\u90ae\u7f16\u5f00\u5934") - || cellText(row.getCell(c)).contains("\u7a7a\u6c14\u51cf\u6392")) + if (cellText(row.getCell(c)).contains("邮编开头") + || cellText(row.getCell(c)).contains("空气减排")) { headerRow = r; break; 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 b5c6d9fe..b3fffa9c 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 @@ -62,12 +62,12 @@ import com.bms.price.service.ITmsPriceQuoteService; import com.bms.system.service.IBmsProductCodeMappingService; /** - * Shared quote/bill calc: customer bind + package version by bizDate (version effective_time). - * Bind pr_begindate/pr_enddate is not used for billing time gate. - * Sales price comes from package snapshot only (FIXED detail / DISCOUNT on catalog base). - * No bind / no active version: quote and bill both fail hard (no PRODUCT_DEFAULT). - * Bill sync soft-fails for product/country/weight miss (billing_fail_status 1/2/3, zero amounts). - * product_country is only for product_amount/cost and DISCOUNT freight base. + * 共用的试算/计费计算:按 bizDate 取客户绑定和套餐版本(版本 effective_time)。 + * 绑定的 pr_begindate/pr_enddate 不作为计费时间门槛。 + * 销售价只来自套餐快照(FIXED 明细 / 按目录底价 DISCOUNT)。 + * 无绑定或无生效版本:试算和计费都直接失败(不用 PRODUCT_DEFAULT)。 + * 账单同步时,产品/国家/重量段未命中为软失败(billing_fail_status 1/2/3,金额为 0)。 + * product_country 只用于 product_amount/cost 以及 DISCOUNT 的运费底价。 * * @author bms */ @@ -1554,7 +1554,7 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService } String name = fee.getFeeName() == null ? "" : fee.getFeeName().trim(); if (name.isEmpty() || "SURCHARGE".equalsIgnoreCase(name) - || "\u9644\u52a0\u8d39".equals(name)) + || "附加费".equals(name)) { return true; } @@ -1791,15 +1791,15 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService { if (FEE_BASIC.equals(feeType)) { - return "\u57fa\u7840\u8fd0\u8d39"; + return "基础运费"; } if (FEE_REG.equals(feeType)) { - return "\u6302\u53f7\u8d39"; + return "挂号费"; } if (FEE_SUR.equals(feeType)) { - return "\u9644\u52a0\u8d39"; + return "附加费"; } return feeType; } @@ -1938,7 +1938,7 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService private static String formatWeightLabel(BigDecimal min, BigDecimal max) { - return strip(min) + " list) { - ExcelUtil.export(response, toOrderListRows(list), PrcOrderBillListExportRow.class, "\u8ba2\u5355\u5217\u8868"); + ExcelUtil.export(response, toOrderListRows(list), PrcOrderBillListExportRow.class, "订单列表"); } /** Export billing-list Excel by current query result. */ public static void exportBillingList(HttpServletResponse response, List list) { - ExcelUtil.export(response, toBillingListRows(list), PrcBillingBillListExportRow.class, "\u8ba1\u8d39\u5217\u8868"); + ExcelUtil.export(response, toBillingListRows(list), PrcBillingBillListExportRow.class, "计费列表"); } public static List toOrderListRows(List list) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/support/UploadFileBatch.java b/bms-back/bms-system/src/main/java/com/bms/price/service/support/UploadFileBatch.java index a8eb0420..011dadd0 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/support/UploadFileBatch.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/support/UploadFileBatch.java @@ -5,7 +5,7 @@ import java.util.List; import org.springframework.web.multipart.MultipartFile; import com.bms.common.exception.ServiceException; -/** Collect multipart parts named files and/or file. At most 5. */ +/** 收集名为 files 和/或 file 的上传分片。最多 5 个。 */ public final class UploadFileBatch { public static final int MAX_FILES = 5; @@ -37,7 +37,7 @@ public final class UploadFileBatch } if (list.size() > MAX_FILES) { - throw new ServiceException("\u5355\u6b21\u6700\u591a\u5bfc\u5165 5 \u4e2a\u6587\u4ef6"); + throw new ServiceException("单次最多导入 5 个文件"); } return list; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsProductImportAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsProductImportAsyncRunner.java index 98ff3e91..ad336875 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsProductImportAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsProductImportAsyncRunner.java @@ -22,7 +22,7 @@ import com.bms.price.domain.CatalogPreviewApplyRequest; import com.bms.price.service.IBmsProductService; /** - * Async runner for product Excel import / preview (avoids HTTP timeout on large workbooks). + * 产品 Excel 导入/预览的异步执行器(避免大工作簿 HTTP 超时)。 */ @Component public class BmsProductImportAsyncRunner @@ -179,10 +179,10 @@ public class BmsProductImportAsyncRunner int n = jobs.size(); if (n == 0) { - put(taskId, BmsProductImportTask.STATUS_SUCCESS, 100, "\u5df2\u4fdd\u5b58", null); + put(taskId, BmsProductImportTask.STATUS_SUCCESS, 100, "已保存", null); return; } - put(taskId, BmsProductImportTask.STATUS_RUNNING, 5, "\u6b63\u5728\u4fdd\u5b58 0/" + n, null); + put(taskId, BmsProductImportTask.STATUS_RUNNING, 5, "正在保存 0/" + n, null); Long psvId = request.getPsvId(); for (int i = 0; i < n; i++) { @@ -199,9 +199,9 @@ public class BmsProductImportAsyncRunner } }); put(taskId, BmsProductImportTask.STATUS_RUNNING, 5 + (90 * (i + 1) / n), - "\u6b63\u5728\u4fdd\u5b58 " + (i + 1) + "/" + n, null); + "正在保存 " + (i + 1) + "/" + n, null); } - put(taskId, BmsProductImportTask.STATUS_SUCCESS, 100, "\u5df2\u4fdd\u5b58\u5230\u5f85\u751f\u6548\u8349\u7a3f", null); + put(taskId, BmsProductImportTask.STATUS_SUCCESS, 100, "已保存到待生效草稿", null); log.info("async product apply preview done, taskId={}, products={}", taskId, Integer.valueOf(n)); } catch (Exception e) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsRedlineProductImportAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsRedlineProductImportAsyncRunner.java index e1e246f2..89423e3f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsRedlineProductImportAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsRedlineProductImportAsyncRunner.java @@ -22,7 +22,7 @@ import com.bms.price.domain.RedlineCatalogPreviewApplyRequest; import com.bms.price.service.IBmsRedlineProductService; /** - * Async runner for redline Excel import / preview (avoids HTTP timeout on large workbooks). + * 红线价 Excel 导入/预览的异步执行器(避免大工作簿 HTTP 超时)。 */ @Component public class BmsRedlineProductImportAsyncRunner @@ -178,10 +178,10 @@ public class BmsRedlineProductImportAsyncRunner int n = jobs.size(); if (n == 0) { - put(taskId, BmsRedlineProductImportTask.STATUS_SUCCESS, 100, "\u5df2\u4fdd\u5b58", null); + put(taskId, BmsRedlineProductImportTask.STATUS_SUCCESS, 100, "已保存", null); return; } - put(taskId, BmsRedlineProductImportTask.STATUS_RUNNING, 5, "\u6b63\u5728\u4fdd\u5b58 0/" + n, null); + put(taskId, BmsRedlineProductImportTask.STATUS_RUNNING, 5, "正在保存 0/" + n, null); Long psvId = request.getPsvId(); for (int i = 0; i < n; i++) { @@ -198,9 +198,9 @@ public class BmsRedlineProductImportAsyncRunner } }); put(taskId, BmsRedlineProductImportTask.STATUS_RUNNING, 5 + (90 * (i + 1) / n), - "\u6b63\u5728\u4fdd\u5b58 " + (i + 1) + "/" + n, null); + "正在保存 " + (i + 1) + "/" + n, null); } - put(taskId, BmsRedlineProductImportTask.STATUS_SUCCESS, 100, "\u5df2\u4fdd\u5b58\u5230\u5f85\u751f\u6548\u8349\u7a3f", null); + put(taskId, BmsRedlineProductImportTask.STATUS_SUCCESS, 100, "已保存到待生效草稿", null); log.info("async redline apply preview done, taskId={}, products={}", taskId, Integer.valueOf(n)); } catch (Exception e) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsStatusRefreshTask.java b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsStatusRefreshTask.java index 24952a65..10bc20d1 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/BmsStatusRefreshTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/BmsStatusRefreshTask.java @@ -10,8 +10,8 @@ import org.springframework.stereotype.Component; import com.bms.price.service.IPrcPriceSetService; /** - * Refresh prc_price_set_version status (draft/pending/effect/expired). - * Startup + every 3 hours so PENDING becomes EFFECT when effective_time is reached. + * 刷新 prc_price_set_version 状态(draft/pending/effect/expired)。 + * 启动时以及每 3 小时执行,使到达 effective_time 的 PENDING 变为 EFFECT。 */ @Component public class BmsStatusRefreshTask implements ApplicationRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java index 200ac020..947786d9 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java @@ -16,7 +16,7 @@ import com.bms.price.domain.vo.AddIncomeBillFeeRequest; import com.bms.price.service.IPrcOrderBillService; /** - * Async runner: add the same manual income fee to many order bills. + * 异步执行器:给多笔订单账单加上同一条手工应收费用。 */ @Component public class PrcBatchAddIncomeFeeAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskNightRetryTask.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskNightRetryTask.java index 2b141c4d..41affb3d 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskNightRetryTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskNightRetryTask.java @@ -16,13 +16,13 @@ import com.bms.price.mapper.PrcBillingTaskMapper; import com.bms.price.service.IPrcBillingTaskService; /** - * Night window auto-rebill from prc_billing_task. + * 夜间窗口按 prc_billing_task 自动重计费。 * - *

During [startHour, endHour) (default 00:00-09:00): pull up to {@value #DEFAULT_BATCH} - * task ids (all success_status) -> bill them all -> immediately pull the next page. - * Empty page => skip billing and end this run (next cron may pick up new rows).

+ *

在 [startHour, endHour) 内(默认 00:00-09:00):最多拉取 {@value #DEFAULT_BATCH} + * 条任务 id(不限 success_status)-> 全部计费 -> 立刻拉下一页。 + * 空页则跳过计费并结束本轮(下次 cron 再处理新数据)。

* - *

Same rebill path as monitor manual retry / filter retry (reset WAITING then process).

+ *

与监控手工重试 / 条件重试同一条重计费路径(先重置为 WAITING 再处理)。

*/ @Component public class PrcBillingTaskNightRetryTask diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskRetryAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskRetryAsyncRunner.java index 0b5f3152..e86ee666 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskRetryAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBillingTaskRetryAsyncRunner.java @@ -19,7 +19,7 @@ import com.bms.price.mapper.PrcBillingTaskMapper; import com.bms.price.service.IPrcBillingTaskService; /** - * Async filter-based billing task retry: keyset-page IDs then retry one-by-one. + * 按条件异步重试计费任务:用 keyset 分页取 ID,再逐条重试。 */ @Component public class PrcBillingTaskRetryAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java index 568c2f14..ff3aba2b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java @@ -20,7 +20,7 @@ import com.bms.price.domain.ChargeWeightImportTask; import com.bms.price.service.IPrcOrderBillService; /** - * Async runner: import charge_weight updates and rebill each order (parallel). + * 异步执行器:导入 charge_weight 更新,并并行重计费每笔订单。 */ @Component public class PrcChargeWeightImportAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillExportAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillExportAsyncRunner.java index e7217345..90ada3ef 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillExportAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillExportAsyncRunner.java @@ -27,8 +27,8 @@ import com.bms.price.service.IPrcOrderBillService; import com.bms.price.service.support.OrderBillExportSupport; /** - * Async Excel export for order list / billing list. - * Writes under download path; poll task then download by taskId. + * 订单列表 / 计费列表的异步 Excel 导出。 + * 写到下载目录;轮询任务后按 taskId 下载。 */ @Component public class PrcOrderBillExportAsyncRunner @@ -91,7 +91,7 @@ public class PrcOrderBillExportAsyncRunner { billingUtil.showColumn(billingFields); } - billingUtil.exportExcelToStream(exportRows, "\u8ba1\u8d39\u5217\u8868", out); + billingUtil.exportExcelToStream(exportRows, "计费列表", out); } else { @@ -104,7 +104,7 @@ public class PrcOrderBillExportAsyncRunner { orderUtil.showColumn(orderFields); } - orderUtil.exportExcelToStream(exportRows, "\u8ba2\u5355\u5217\u8868", out); + orderUtil.exportExcelToStream(exportRows, "订单列表", out); } } String storageKey = REL_DIR + "/" + taskId + ".xlsx"; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java index 0954bce3..98591ef9 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java @@ -32,8 +32,8 @@ import com.bms.price.search.TabOrderSyncEsLog; import com.bms.price.service.IPrcOrderBillService; /** - * Async local rebill from prc_order_bill only (no Oracle / no MQ). - * Large jobs: process in pages of {@link #PAGE_SIZE}; each page runs in a short-lived worker pool. + * 仅根据 prc_order_bill 异步本地重计费(不走 Oracle / 不走 MQ)。 + * 大批量按 {@link #PAGE_SIZE} 分页处理;每一页在短生命周期线程池中执行。 */ @Component public class PrcOrderBillLocalRebillAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcPriceSetSaveAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcPriceSetSaveAsyncRunner.java index d1249bb4..63d76b6a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcPriceSetSaveAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcPriceSetSaveAsyncRunner.java @@ -15,7 +15,7 @@ import com.bms.price.domain.PrcPriceSetSaveTask; import com.bms.price.service.IPrcPriceSetService; /** - * Async runner for price-set save (avoids HTTP timeout on large detail snapshots). + * 价格套餐保存的异步执行器(避免大明细快照导致 HTTP 超时)。 */ @Component public class PrcPriceSetSaveAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java index 519cb87d..aaa30abd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java @@ -13,7 +13,7 @@ import com.bms.common.utils.StringUtils; import com.bms.price.domain.BatchAddIncomeBillFeeTask; import com.bms.price.service.IPrcOrderBillService; -/** Async: recalc product_amount or redline_amount only (no AR guard). */ +/** 异步:只重算 product_amount 或 redline_amount(不做应收账单校验)。 */ @Component public class PrcRecalcBillPriceAsyncRunner { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java index fbca00d9..0444d23c 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java @@ -32,7 +32,7 @@ import com.bms.price.search.TabOrderSyncEsLog; import com.bms.price.service.IPrcOrderBillService; /** - * Page Oracle TAB_ORDER then multi-thread overwrite local bill fields (no billing). + * 分页读取 Oracle TAB_ORDER,再多线程覆盖本地账单字段(不计费)。 */ @Component public class TabOrderSyncAsyncRunner diff --git a/bms-back/bms-system/src/main/java/com/bms/price/util/ZoneCodeAbbrevs.java b/bms-back/bms-system/src/main/java/com/bms/price/util/ZoneCodeAbbrevs.java index bc1e68d9..e8808036 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/util/ZoneCodeAbbrevs.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/util/ZoneCodeAbbrevs.java @@ -6,7 +6,7 @@ import java.util.regex.Pattern; import com.bms.common.utils.StringUtils; /** - * Parse Excel country cell with optional zone suffix, map labels to English abbreviations. + * 解析 Excel 国家单元格(可带分区后缀),并把名称映射为英文缩写。 */ public final class ZoneCodeAbbrevs { @@ -79,27 +79,27 @@ public final class ZoneCodeAbbrevs String key = raw.replace('\r', ' ').replace('\n', ' ').replaceAll("\\s+", " ").trim(); switch (key) { - case "1\u533a": + case "1区": return "Z1"; - case "2\u533a": + case "2区": return "Z2"; - case "3\u533a": + case "3区": return "Z3"; - case "4\u533a": + case "4区": return "Z4"; - case "5\u533a": + case "5区": return "Z5"; case "Mondial Relay": return "MR"; - case "\u6c96\u7e04\u770c": + case "沖縄県": return "OKN"; - case "\u5317\u7231\u5c14\u5170": + case "北爱尔兰": return "NI"; - case "\u9ad8\u5730\u548c\u5c9b\u5c7f": + case "高地和岛屿": return "HI"; - case "\u6d77\u5ce1\u7fa4\u5c9b(\u542b\u9521\u5229\u5c9b)": + case "海峡群岛(含锡利岛)": return "CI"; - case "\u9a6c\u6069\u5c9b": + case "马恩岛": return "IM"; case "Beckton": return "BEC"; diff --git a/bms-back/bms-system/src/main/java/com/bms/system/domain/SysFileTemplate.java b/bms-back/bms-system/src/main/java/com/bms/system/domain/SysFileTemplate.java index b57dfcb0..aef37a9f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/system/domain/SysFileTemplate.java +++ b/bms-back/bms-system/src/main/java/com/bms/system/domain/SysFileTemplate.java @@ -4,7 +4,7 @@ import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** System file template sys_file_template (OSS). */ +/** 系统文件模板 sys_file_template(OSS)。 */ @Data @EqualsAndHashCode(callSuper = true) public class SysFileTemplate extends BaseEntity diff --git a/bms-back/bms-system/src/main/java/com/bms/system/mapper/BmsBizAttachmentMapper.java b/bms-back/bms-system/src/main/java/com/bms/system/mapper/BmsBizAttachmentMapper.java index e30a528e..4ab028ca 100644 --- a/bms-back/bms-system/src/main/java/com/bms/system/mapper/BmsBizAttachmentMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/system/mapper/BmsBizAttachmentMapper.java @@ -3,7 +3,7 @@ package com.bms.system.mapper; import java.util.List; import com.bms.system.domain.BmsBizAttachment; -/** Common biz attachment mapper */ +/** 通用业务附件 mapper */ public interface BmsBizAttachmentMapper { BmsBizAttachment selectBmsBizAttachmentById(Long attachmentId); diff --git a/bms-back/bms-system/src/main/java/com/bms/system/service/impl/BmsBizAttachmentServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/system/service/impl/BmsBizAttachmentServiceImpl.java index 2f9b75ec..0368539b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/system/service/impl/BmsBizAttachmentServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/system/service/impl/BmsBizAttachmentServiceImpl.java @@ -17,7 +17,7 @@ import com.bms.system.domain.BmsBizAttachment; import com.bms.system.mapper.BmsBizAttachmentMapper; import com.bms.system.service.IBmsBizAttachmentService; -/** Business attachments: always store on OSS (file_path = oss://bucket/key). */ +/** 业务附件:一律存 OSS(file_path = oss://bucket/key)。 */ @Service public class BmsBizAttachmentServiceImpl implements IBmsBizAttachmentService { diff --git a/bms-back/sql/bms_init.sql b/bms-back/sql/bms_init.sql index 00ace20b..7447310b 100644 --- a/bms-back/sql/bms_init.sql +++ b/bms-back/sql/bms_init.sql @@ -1494,9 +1494,9 @@ CREATE TABLE `prc_surcharge` ( CREATE TABLE `prc_surcharge_rel` ( `rel_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID', `sc_id` bigint(20) NOT NULL COMMENT '附加费配置ID prc_surcharge.sc_id', - `product_id` bigint(20) NOT NULL COMMENT '\u4ea7\u54c1ID:均为prc_price_set_product.psp_id(PRODUCT/REDLINE/SALES)', + `product_id` bigint(20) NOT NULL COMMENT '产品ID:均为prc_price_set_product.psp_id(PRODUCT/REDLINE/SALES)', `product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码 product.product_code', - `detail_id` bigint(20) DEFAULT NULL COMMENT '\u660e\u7ec6ID:均为prc_price_set_detail.psd_id(空=产品全部)', + `detail_id` bigint(20) DEFAULT NULL COMMENT '明细ID:均为prc_price_set_detail.psd_id(空=产品全部)', `price_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PRODUCT' COMMENT '价格类型 PRODUCT产品价/SALES销售价/REDLINE红线价', `country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '适用国家ISO2(空=全部)', `is_del` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否删除 0未删除 1已删除',