From da049aed7905da630e5c3da65f811b2f27d996f6 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 20 八月 2026 09:16:39 +0800
Subject: [PATCH] feat: 加盟商看板电站收入占比按电站维度统计,口径与后台/six/circle一致
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 50 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 40 insertions(+), 10 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index dc8fe97..8c81b73 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -278,19 +278,49 @@
result.put("electricityFee", electricity);
result.put("serviceFee", service);
result.put("incomeColumn", franchiseeIncomeTrendFromSix(sixChargingDtos));
- List<Map<String, Object>> incomePie = new ArrayList<>();
- Map<String, Object> electricityItem = new LinkedHashMap<>();
- electricityItem.put("name", "充电费");
- electricityItem.put("value", electricity);
- incomePie.add(electricityItem);
- Map<String, Object> serviceItem = new LinkedHashMap<>();
- serviceItem.put("name", "服务费");
- serviceItem.put("value", service);
- incomePie.add(serviceItem);
- result.put("incomePie", incomePie);
+ // 电站收入占比:口径与后台 /six/circle 一致(近6月结算账单按站点分组,电费+服务费-三方佣金)
+ result.put("incomePie", franchiseeIncomePieBySite(siteIds));
return R.ok(result);
}
+ /** 加盟商看板"电站收入占比":复用 /six/circle 统计口径,按金额降序返回站点占比列表 */
+ private List<Map<String, Object>> franchiseeIncomePieBySite(List<Integer> siteIds) {
+ List<Map<String, Object>> incomePie = new ArrayList<>();
+ if (siteIds == null || siteIds.isEmpty()) {
+ return incomePie;
+ }
+ List<SixCircleDto> circleDtos = chargingOrderService.circle(siteIds, PreviousSixMonths.get(), false);
+ if (circleDtos == null || circleDtos.isEmpty()) {
+ return incomePie;
+ }
+ // 站点名批量映射,避免逐个远程调用
+ Map<Integer, String> siteNameMap = new HashMap<>();
+ R<List<Site>> siteResult = siteClient.getSiteAll();
+ List<Site> sites = siteResult == null ? null : siteResult.getData();
+ if (sites != null) {
+ for (Site site : sites) {
+ if (site != null && site.getId() != null) {
+ siteNameMap.put(site.getId(), site.getName());
+ }
+ }
+ }
+ circleDtos.sort((a, b) -> {
+ BigDecimal amountA = a == null || a.getPaymentAmount() == null ? BigDecimal.ZERO : a.getPaymentAmount();
+ BigDecimal amountB = b == null || b.getPaymentAmount() == null ? BigDecimal.ZERO : b.getPaymentAmount();
+ return amountB.compareTo(amountA);
+ });
+ for (SixCircleDto dto : circleDtos) {
+ if (dto == null || dto.getSiteId() == null || dto.getPaymentAmount() == null) {
+ continue;
+ }
+ Map<String, Object> item = new LinkedHashMap<>();
+ item.put("name", siteNameMap.getOrDefault(dto.getSiteId(), "电站" + dto.getSiteId()));
+ item.put("value", dto.getPaymentAmount());
+ incomePie.add(item);
+ }
+ return incomePie;
+ }
+
@PostMapping("/app/franchisee/user")
public R<Map<String, Object>> franchiseeUser(@RequestBody(required = false) Map<String, Object> params) {
Partner partner = franchiseePartner();
--
Gitblit v1.7.1