From b68cefd8d0a62256b37ed982ec1828ed61745bcf Mon Sep 17 00:00:00 2001
From: wuweihua <88888888>
Date: Mon, 12 Oct 2026 11:05:24 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A1=E8=B4=B9=E6=97=B6?=
=?UTF-8?q?=E9=97=B4=E7=B1=BB=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/bms/price/domain/PrcOrderBill.java | 3 ++-
.../com/bms/price/domain/vo/TmsPriceQuoteRequest.java | 2 +-
.../com/bms/price/oracle/OracleOrderBillMapper.java | 2 +-
.../price/service/impl/PrcBillingTaskServiceImpl.java | 4 ++--
.../price/service/impl/PrcOrderBillServiceImpl.java | 11 ++++-------
.../price/service/impl/TmsPriceQuoteServiceImpl.java | 9 ++++-----
bms-back/sql/bms_init.sql | 2 +-
.../price/prc_order_bill_biz_date_datetime_alter.sql | 3 +++
.../views/ar/bill/components/GenerateBillDialog.vue | 10 +++++++---
bms-front/src/views/price/billing/bill.vue | 1 +
.../src/views/price/billing/components/BillDetail.vue | 2 +-
11 files changed, 27 insertions(+), 22 deletions(-)
create mode 100644 bms-back/sql/price/prc_order_bill_biz_date_datetime_alter.sql
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 d0d6d445..fa81d0a1 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
@@ -67,7 +67,8 @@ public class PrcOrderBill extends BaseEntity
private String countryCode;
private String countryName;
private BigDecimal weight;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ /** 计费时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date bizDate;
private Long tmsId;
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 9ac09599..ecb9e9d6 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
@@ -32,7 +32,7 @@ public class TmsPriceQuoteRequest implements Serializable
@NotNull(message = "weight is required")
private BigDecimal weight;
- /** yyyy-MM-dd,默认今天 */
+ /** yyyy-MM-dd or yyyy-MM-dd HH:mm:ss; quote defaults today; bill required */
private String bizDate;
private Integer tmsId;
/** Header X-Api-Code 优先;Body 兜底 */
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 4d8f93ea..62153648 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
@@ -62,7 +62,7 @@ public class OracleOrderBillMapper
req.setConsigneeName(firstStr(row, "CONSIGNEE_NAME"));
req.setWarehouseCode(firstStr(row, "REGISTER_SITE_CODE"));
req.setOrderRemark(firstStr(row, "TRACK_REMARK", "EXCEPTION_REMARK", "ORDER_CUSTOMNOTE"));
- // CREATE_DATE is order place time only; bizDate (billing date) comes from mobile inbound task.
+ // CREATE_DATE is order place time only; bizDate (billing datetime) comes from task.bill_time.
Date createDate = firstDate(row, "CREATE_DATE");
if (createDate != null)
{
diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java
index 871a3cc1..7cf85c6b 100644
--- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java
+++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java
@@ -182,8 +182,8 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
{
billReq.setOrderNo(task.getOrderNo());
}
- // Billing date from task.bill_time (mobile), not Oracle CREATE_DATE.
- billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd").format(task.getBillTime()));
+ // Billing datetime from task.bill_time (keep HH:mm:ss), not Oracle CREATE_DATE.
+ billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(task.getBillTime()));
task.setCustomerCode(billReq.getCustomerCode());
TmsPriceQuoteResult result = billWithDbRetry(taskId, billReq);
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 7247c782..1210ad3d 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
@@ -2,8 +2,6 @@ package com.bms.price.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Arrays;
@@ -27,6 +25,7 @@ import com.bms.ar.enums.ArOrderBillStatus;
import com.bms.common.annotation.DataScope;
import com.bms.common.core.domain.entity.SysUser;
import com.bms.common.exception.ServiceException;
+import com.bms.common.utils.DateUtils;
import com.bms.common.utils.DictUtils;
import com.bms.common.utils.MessageUtils;
import com.bms.common.utils.SecurityUtils;
@@ -1709,13 +1708,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
{
throw new ServiceException(MessageUtils.message("price.bill.bizDateRequired"));
}
- try
- {
- return new SimpleDateFormat("yyyy-MM-dd").parse(bizDate.trim());
- }
- catch (ParseException e)
+ Date parsed = DateUtils.parseDate(bizDate.trim());
+ if (parsed == null)
{
throw new ServiceException(MessageUtils.message("price.quote.bizDateInvalid"));
}
+ return parsed;
}
}
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 cf137a33..5daaee76 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
@@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.bms.common.exception.ServiceException;
+import com.bms.common.utils.DateUtils;
import com.bms.common.utils.MessageUtils;
import com.bms.common.utils.StringUtils;
import com.bms.common.utils.sign.Md5Utils;
@@ -1630,14 +1631,12 @@ public class TmsPriceQuoteServiceImpl implements ITmsPriceQuoteService
return new Date();
}
}
- try
- {
- return new SimpleDateFormat("yyyy-MM-dd").parse(bizDate.trim());
- }
- catch (ParseException e)
+ Date parsed = DateUtils.parseDate(bizDate.trim());
+ if (parsed == null)
{
throw new ServiceException(MessageUtils.message("price.quote.bizDateInvalid"));
}
+ return parsed;
}
/** Use end of bill day so same-day version activate still matches that day's quote. */
diff --git a/bms-back/sql/bms_init.sql b/bms-back/sql/bms_init.sql
index 2d3b66db..868498f9 100644
--- a/bms-back/sql/bms_init.sql
+++ b/bms-back/sql/bms_init.sql
@@ -1019,7 +1019,7 @@ CREATE TABLE `prc_order_bill` (
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家二字码',
`country_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家名称',
`weight` decimal(10,3) NOT NULL COMMENT '计费重量KG',
- `biz_date` date NOT NULL COMMENT '计费日期',
+ `biz_date` datetime NOT NULL COMMENT '计费时间',
`tms_id` bigint(20) DEFAULT NULL COMMENT '多租户系统ID',
`match_source` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '命中来源',
`match_message` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '命中说明',
diff --git a/bms-back/sql/price/prc_order_bill_biz_date_datetime_alter.sql b/bms-back/sql/price/prc_order_bill_biz_date_datetime_alter.sql
new file mode 100644
index 00000000..efae0c12
--- /dev/null
+++ b/bms-back/sql/price/prc_order_bill_biz_date_datetime_alter.sql
@@ -0,0 +1,3 @@
+-- prc_order_bill.biz_date: date -> datetime (keep hour/minute/second)
+ALTER TABLE prc_order_bill
+ MODIFY COLUMN `biz_date` datetime NOT NULL COMMENT '计费时间';
diff --git a/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue b/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue
index b012766d..5436b33e 100644
--- a/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue
+++ b/bms-front/src/views/ar/bill/components/GenerateBillDialog.vue
@@ -69,7 +69,7 @@
-
+
@@ -107,7 +107,7 @@
-
+
@@ -533,7 +533,11 @@ function confirmGenerate() {
})
}
-function date(value) { return value ? String(value).slice(0, 10) : '-' }
+function date(value) {
+ if (!value) return '-'
+ const s = String(value).replace('T', ' ')
+ return s.length >= 19 ? s.slice(0, 19) : (s.length >= 10 ? s.slice(0, 10) : s)
+}
function money(value) { const num = Number(value); return Number.isNaN(num) ? '-' : num.toFixed(2) }
function formatDateColumn(_, __, value) { return date(value) }
function formatNumberColumn(_, __, value) { return Number(value || 0).toFixed(2) }
diff --git a/bms-front/src/views/price/billing/bill.vue b/bms-front/src/views/price/billing/bill.vue
index ebc51ed0..f2d421ce 100644
--- a/bms-front/src/views/price/billing/bill.vue
+++ b/bms-front/src/views/price/billing/bill.vue
@@ -152,6 +152,7 @@ const columns = [
{ label: '计价来源', prop: 'matchSource', align: 'center', width: 130, slot: 'matchSource' },
{ label: '客户状态', prop: 'customerActiveStatus', align: 'center', width: 100, slot: 'customerActiveStatus' },
{ label: '额度欠费', prop: 'creditArrearsStatus', align: 'center', width: 100, slot: 'creditArrearsStatus' },
+ { label: '计费时间', prop: 'bizDate', align: 'center', width: 170, parseTime: true },
{ label: '下单时间', prop: 'orderTime', align: 'center', width: 170, parseTime: true },
{ label: '销售员', prop: 'belongSaler', minWidth: 100, showOverflowTooltip: true },
{ label: '结算员', prop: 'settlementMan', minWidth: 100, showOverflowTooltip: true },
diff --git a/bms-front/src/views/price/billing/components/BillDetail.vue b/bms-front/src/views/price/billing/components/BillDetail.vue
index 3a2bebe5..3ccae030 100644
--- a/bms-front/src/views/price/billing/components/BillDetail.vue
+++ b/bms-front/src/views/price/billing/components/BillDetail.vue
@@ -66,7 +66,7 @@
{{ productLabel(detail) }}
{{ formatWeight(detail.chargeWeight ?? detail.weight) }}
{{ detail.weightLabel || '-' }}
- {{ detail.bizDate || '-' }}
+ {{ detail.bizDate || '-' }}
{{ sourceLabel(detail.matchSource) }}