From 45109a672b4946a059bac111d3a61a87e1886274 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 29 七月 2026 11:12:52 +0800
Subject: [PATCH] 各类修复
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 85 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 84 insertions(+), 1 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
index 5c85ce9..ae3584b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -35,7 +35,8 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
-import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -277,6 +278,7 @@
tChargingOrderExports.add(tChargingOrderExport);
}
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingOrderExport.class, tChargingOrderExports);
+ prependChargingPeriodSummary(workbook, buildChargingPeriodExportSummary(exportList));
HttpServletResponse response = WebUtils.response();
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
@@ -353,6 +355,87 @@
return nullToZero(amount).setScale(2, RoundingMode.HALF_UP).toPlainString();
}
+ static String buildChargingPeriodExportSummary(List<ChargingOrderListVO> list) {
+ BigDecimal electrovalence = BigDecimal.ZERO;
+ BigDecimal serviceCharge = BigDecimal.ZERO;
+ BigDecimal paymentAmount = BigDecimal.ZERO;
+ BigDecimal chargingCapacity = BigDecimal.ZERO;
+ BigDecimal tripartiteCommission = BigDecimal.ZERO;
+ BigDecimal balanceIncome = BigDecimal.ZERO;
+ BigDecimal balanceGiftIncome = BigDecimal.ZERO;
+ BigDecimal vipGiftAmount = BigDecimal.ZERO;
+ long chargingSeconds = 0L;
+ if (list != null) {
+ for (ChargingOrderListVO item : list) {
+ if (item == null) {
+ continue;
+ }
+ electrovalence = electrovalence.add(zero(item.getElectrovalence()));
+ serviceCharge = serviceCharge.add(zero(item.getServiceCharge()));
+ paymentAmount = paymentAmount.add(zero(item.getPaymentAmount()));
+ chargingCapacity = chargingCapacity.add(zero(item.getElectricity()));
+ tripartiteCommission = tripartiteCommission.add(zero(item.getSharingAmount()));
+ balanceIncome = balanceIncome.add(zero(item.getBalanceIncome()));
+ balanceGiftIncome = balanceGiftIncome.add(zero(item.getBalanceGiftIncome()));
+ vipGiftAmount = vipGiftAmount.add(zero(item.getVipDiscountAmount()));
+ chargingSeconds += item.getChargingSecond() == null ? 0L : item.getChargingSecond();
+ }
+ }
+ int orderCount = list == null ? 0 : list.size();
+ return "总计:" + orderCount + "条"
+ + " 充电电费:" + money(electrovalence) + "元"
+ + " 充电服务费:" + money(serviceCharge) + "元"
+ + " 充电收入:" + money(paymentAmount) + "元"
+ + " 充电电量:" + quantity(chargingCapacity) + "度"
+ + " 充电时长:" + formatChargingDurationMinutes(chargingSeconds) + "分钟"
+ + " 平台手续费:0.00元"
+ + " 三方平台分佣:" + money(tripartiteCommission) + "元"
+ + " 余额收入:" + money(balanceIncome) + "元"
+ + " 余额赠送:" + money(balanceGiftIncome) + "元"
+ + " 会员赠送:" + money(vipGiftAmount) + "元";
+ }
+
+ static void prependChargingPeriodSummary(Workbook workbook, String summary) {
+ if (workbook == null || workbook.getNumberOfSheets() == 0) {
+ return;
+ }
+ Sheet sheet = workbook.getSheetAt(0);
+ int lastRowNum = sheet.getLastRowNum();
+ if (sheet.getPhysicalNumberOfRows() > 0) {
+ sheet.shiftRows(0, lastRowNum, 1, true, false);
+ }
+ Row summaryRow = sheet.createRow(0);
+ summaryRow.setHeightInPoints(24);
+ Cell summaryCell = summaryRow.createCell(0);
+ summaryCell.setCellValue(summary == null ? "" : summary);
+
+ CellStyle style = workbook.createCellStyle();
+ Font font = workbook.createFont();
+ font.setBold(true);
+ style.setFont(font);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ style.setAlignment(HorizontalAlignment.LEFT);
+ summaryCell.setCellStyle(style);
+
+ Row headerRow = sheet.getRow(1);
+ int lastColumn = headerRow == null ? 0 : headerRow.getLastCellNum() - 1;
+ if (lastColumn > 0) {
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, lastColumn));
+ }
+ }
+
+ private static BigDecimal zero(BigDecimal value) {
+ return value == null ? BigDecimal.ZERO : value;
+ }
+
+ private static String money(BigDecimal value) {
+ return zero(value).setScale(2, RoundingMode.HALF_UP).toPlainString();
+ }
+
+ private static String quantity(BigDecimal value) {
+ return zero(value).setScale(3, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
+ }
+
static String formatChargingDurationMinutes(Long chargingSeconds) {
if (chargingSeconds == null) {
return "";
--
Gitblit v1.7.1