From faa3c9f3f91c96778f91769f49fc255449fa3494 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 03 八月 2026 14:27:08 +0800
Subject: [PATCH] 充电桩订单统计问题
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index 99be80c..ada2bd4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -991,17 +991,18 @@
/**
* 添加充电算账单汇总数据
+ * 生成上个月账单,避免月末最后一天 00:30 之后结算的订单漏统计(与账户结算账单 addAccountSettlementStatement 保持一致)。
*/
public void addChargingSettlementBill(){
int day = LocalDate.now().getDayOfMonth();
int lastDay = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
if (2 <= day && day <= lastDay) {
- refreshChargingSettlementBill(LocalDate.now());
+ refreshChargingSettlementBill(LocalDate.now().minusMonths(1));
}
}
/**
- * 主动刷新指定月份的充电结算账单。只重建该月未出账数据,已出账数据不受影响。
+ * 主动刷新指定月份的充电结算账单。重建该月全部数据(含已出账),并保持已出账月份状态不回退。
*/
public synchronized void refreshChargingSettlementBill(LocalDate billingMonth){
try {
@@ -1022,8 +1023,13 @@
LocalDateTime createTime = LocalDateTime.now();
//删除之前生成的汇总数据,在添加最新的汇总数据
+ //重建时删除该月全部记录(含已出账),避免重建已冻结月份时旧数据残留造成重复;并保留已出账状态
String format = firstDayOfBillingMonth.format(DateTimeFormatter.ofPattern("yyyy-MM"));
- chargingSettlementBillService.remove(new QueryWrapper<TChargingSettlementBill>().eq("status", 1).last(" and DATE_FORMAT(billing_cycle, '%Y-%m') = '" + format + "'"));
+ boolean targetFrozen = chargingSettlementBillService.count(new QueryWrapper<TChargingSettlementBill>()
+ .eq("status", 2)
+ .last(" and DATE_FORMAT(billing_cycle, '%Y-%m') = '" + format + "'")) > 0;
+ chargingSettlementBillService.remove(new QueryWrapper<TChargingSettlementBill>().last(" and DATE_FORMAT(billing_cycle, '%Y-%m') = '" + format + "'"));
+ int targetStatus = targetFrozen ? 2 : 1;
//循环生成按照开始时间和结束时间分别统计的汇总数据
for (int i = 1; i < 3; i++) {
@@ -1036,7 +1042,7 @@
chargingSettlementBill.setSiteId(0);
chargingSettlementBill.setStatisticalDateType(i);
chargingSettlementBill.setBillingCycle(firstDayOfBillingMonth);
- chargingSettlementBill.setStatus(1);
+ chargingSettlementBill.setStatus(targetStatus);
chargingSettlementBill.setCode("JSD"+string+randomDigits);
//根据业务订单查询汇总数据
@@ -1071,7 +1077,7 @@
chargingSettlementBill1.setSiteId(Integer.valueOf(map.get("siteId").toString()));
chargingSettlementBill1.setStatisticalDateType(i);
chargingSettlementBill1.setBillingCycle(firstDayOfBillingMonth);
- chargingSettlementBill1.setStatus(1);
+ chargingSettlementBill1.setStatus(targetStatus);
chargingSettlementBill1.setCode("JSD"+string+randomDigits1);
chargingSettlementBill1.setChargingDuration(charging_duration);
chargingSettlementBill1.setOrderNumber(order_number);
--
Gitblit v1.7.1