From fcebf9282c19d76ae00a521afecf2b713ba6a803 Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Fri, 23 Oct 2026 11:02:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B7=BB=E5=8A=A0=E9=99=84?= =?UTF-8?q?=E5=8A=A0=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/BatchAddIncomeBillFeeRequest.java | 2 ++ .../domain/vo/RecalcBillPriceRequest.java | 2 ++ .../service/impl/PrcOrderBillServiceImpl.java | 29 +++++++++++++++++-- bms-front/src/views/price/billing/bill.vue | 3 +- .../components/BatchAddIncomeFeeDialog.vue | 17 +++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) 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 b0daac47..50b67f18 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 @@ -31,6 +31,8 @@ public class BatchAddIncomeBillFeeRequest implements Serializable private List productCodes; private String countryCode; private String creditArrearsStatus; + /** Same as list filter billing_fail_status IN (...). */ + private List billingFailStatuses; /** Billing time range (biz_date), inclusive; format yyyy-MM-dd. */ private String beginBizDate; 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 2fb9ad4c..7b2ffdce 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 @@ -25,6 +25,8 @@ public class RecalcBillPriceRequest implements Serializable private List productCodes; private String countryCode; private String creditArrearsStatus; + /** Same as list filter billing_fail_status IN (...). */ + private List billingFailStatuses; private String beginBizDate; private String endBizDate; } 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 4632a12d..df4def8b 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 @@ -666,7 +666,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService List bills = resolveListScopedBills(request.getScopeMode(), request.getBillIds(), request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(), request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(), - request.getCreditArrearsStatus(), request.getBeginBizDate(), request.getEndBizDate(), + request.getCreditArrearsStatus(), request.getBillingFailStatuses(), + request.getBeginBizDate(), request.getEndBizDate(), "price.bill.recalc.filterRequired", "price.bill.recalc.scopeRequired", "price.bill.recalc.selectedRequired"); if (bills.isEmpty()) @@ -1139,7 +1140,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return resolveListScopedBills(request.getScopeMode(), request.getBillIds(), request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(), request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(), - request.getCreditArrearsStatus(), request.getBeginBizDate(), request.getEndBizDate(), + request.getCreditArrearsStatus(), request.getBillingFailStatuses(), + request.getBeginBizDate(), request.getEndBizDate(), "price.bill.fee.batch.filterRequired", "price.bill.fee.batch.scopeRequired", "price.bill.fee.batch.selectedRequired"); } @@ -1151,7 +1153,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService private List resolveListScopedBills(String scopeModeRaw, List billIdsRaw, List orderNosRaw, List trackingNosRaw, List transferNosRaw, List orderIdentifiersRaw, List customerCodesRaw, List productCodesRaw, String countryCodeRaw, - String creditArrearsStatusRaw, String beginBizDateRaw, String endBizDateRaw, + String creditArrearsStatusRaw, List billingFailStatusesRaw, + String beginBizDateRaw, String endBizDateRaw, String msgFilter, String msgScope, String msgSelected) { String scopeMode = StringUtils.nvl(scopeModeRaw, "").trim().toUpperCase(); @@ -1165,6 +1168,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService List orderIdentifiers = normalizeOrderIdentifiers(orderIdentifiersRaw); List customerCodes = normalizeCodeList(customerCodesRaw); List productCodes = normalizeCodeList(productCodesRaw); + List billingFailStatuses = normalizeIntegerList(billingFailStatusesRaw); String creditArrearsStatus = StringUtils.isEmpty(creditArrearsStatusRaw) ? null : creditArrearsStatusRaw.trim(); String countryCode = StringUtils.isEmpty(countryCodeRaw) ? null @@ -1177,6 +1181,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService || (orderIdentifiers != null && !orderIdentifiers.isEmpty()) || (customerCodes != null && !customerCodes.isEmpty()) || (productCodes != null && !productCodes.isEmpty()) + || (billingFailStatuses != null && !billingFailStatuses.isEmpty()) || StringUtils.isNotEmpty(creditArrearsStatus) || StringUtils.isNotEmpty(countryCode) || StringUtils.isNotEmpty(beginBizDate) @@ -1204,6 +1209,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService query.setCustomerCodes(customerCodes); query.setProductCodes(productCodes); query.setCreditArrearsStatus(creditArrearsStatus); + query.setBillingFailStatuses(billingFailStatuses); query.setCountryCode(countryCode); if (beginBizDate != null) { @@ -1218,6 +1224,23 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return list == null ? new ArrayList() : list; } + private List normalizeIntegerList(List values) + { + if (values == null || values.isEmpty()) + { + return null; + } + List out = new ArrayList(); + for (Integer v : values) + { + if (v != null) + { + out.add(v); + } + } + return out.isEmpty() ? null : out; + } + private PrcSurcharge requireActiveSurcharge(Long scId) { PrcSurcharge surcharge = surchargeService.selectPrcSurchargeById(scId); diff --git a/bms-front/src/views/price/billing/bill.vue b/bms-front/src/views/price/billing/bill.vue index 7f4cc59f..d9babe1f 100644 --- a/bms-front/src/views/price/billing/bill.vue +++ b/bms-front/src/views/price/billing/bill.vue @@ -570,7 +570,8 @@ function buildRecalcPayload() { orderIdentifiers: parseOrderIdentifiers(rest.orderIdentifiers), customerCodes: rest.customerCodes || [], productCodes: rest.productCodes || [], - creditArrearsStatus: rest.creditArrearsStatus || undefined + creditArrearsStatus: rest.creditArrearsStatus || undefined, + billingFailStatuses: Array.isArray(rest.billingFailStatuses) ? rest.billingFailStatuses : [] } if (Array.isArray(bizDateRange) && (bizDateRange[0] || bizDateRange[1])) { payload.beginBizDate = bizDateRange[0] || null diff --git a/bms-front/src/views/price/billing/components/BatchAddIncomeFeeDialog.vue b/bms-front/src/views/price/billing/components/BatchAddIncomeFeeDialog.vue index dbdc3ab8..d9bc0c7c 100644 --- a/bms-front/src/views/price/billing/components/BatchAddIncomeFeeDialog.vue +++ b/bms-front/src/views/price/billing/components/BatchAddIncomeFeeDialog.vue @@ -211,12 +211,28 @@ function buildQueryTags(q) { : (q.creditArrearsStatus === 'NORMAL' ? "正常" : q.creditArrearsStatus) tags.push("额度欠费" + ':' + label) } + const failStatuses = Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses.filter(v => v != null) : [] + if (failStatuses.length) { + const labels = failStatuses.map(v => billingFailStatusLabel(v)) + tags.push("计费失败" + ':' + labels.join(', ')) + } if (q.beginBizDate || q.endBizDate) { tags.push("计费时间:" + (q.beginBizDate || '…') + ' ~ ' + (q.endBizDate || '…')) } return tags } +function billingFailStatusLabel(code) { + const map = { + 0: '计费成功', + 1: '未匹配产品', + 2: '未匹配国家', + 3: '未匹配重量段' + } + const key = Number(code) + return map[key] != null ? map[key] : String(code) +} + function loadSurcharges() { return listSurchargeOptions({ ssCode: 'on' }).then(res => { surchargeOptions.value = res.data || [] @@ -262,6 +278,7 @@ function buildPayload() { customerCodes: q.customerCodes || [], productCodes: q.productCodes || [], creditArrearsStatus: q.creditArrearsStatus || undefined, + billingFailStatuses: Array.isArray(q.billingFailStatuses) ? q.billingFailStatuses : [], beginBizDate: q.beginBizDate || undefined, endBizDate: q.endBizDate || undefined }