From b08e6c28cdd8bda2fd36597c11bc7213a72678d8 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 29 七月 2026 16:24:17 +0800
Subject: [PATCH] 各类修复
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 47 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 38 insertions(+), 9 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 54fb61d..47d8d27 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
@@ -1608,11 +1608,11 @@
@ResponseBody
@GetMapping(value = "/six/charge")
@ApiOperation(value = "电站收入分析", tags = {"后台-数据分析-平台收入分析"})
- public R<List<SixChargingDto>> charge(Integer siteId) {
+ public R<List<SixChargingDto>> charge(Integer siteId, Integer partnerId) {
Long userId = tokenService.getLoginUser().getUserid();
SysUser sysUser = sysUserClient.getSysUser(userId).getData();
boolean partnerView = isPartnerView(sysUser);
- List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId);
LocalDate sixBefore = PreviousSixMonths.get();
//通过siteIds进行sql查询统计
List<SixChargingDto> chargingDtos = chargingOrderService.charge(sixBefore, siteIds, partnerView);
@@ -1673,11 +1673,11 @@
@ResponseBody
@GetMapping(value = "/six/circle")
@ApiOperation(value = "电站收入占比", tags = {"后台-数据分析-平台收入分析"})
- public R<List<SixCircleDto>> circle(Integer siteId) {
+ public R<List<SixCircleDto>> circle(Integer siteId, Integer partnerId) {
Long userId = tokenService.getLoginUser().getUserid();
SysUser sysUser = sysUserClient.getSysUser(userId).getData();
boolean partnerView = isPartnerView(sysUser);
- List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId);
LocalDate sixBefore = PreviousSixMonths.get();
List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds,sixBefore, partnerView);
for (SixCircleDto sixCircleDto : sixCircleDtos) {
@@ -1760,12 +1760,12 @@
@ResponseBody
@GetMapping(value = "/six/total")
@ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"})
- public R<Map<String,Object>> total(Integer siteId) {
+ public R<Map<String,Object>> total(Integer siteId, Integer partnerId) {
//count近6个月的数据
Long userId = tokenService.getLoginUser().getUserid();
SysUser sysUser = sysUserClient.getSysUser(userId).getData();
boolean partnerView = isPartnerView(sysUser);
- List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId);
Map<String,Object> map = chargingOrderService.countAll(siteIds, partnerView);
if (map == null) {
map = new HashMap<String,Object>();
@@ -1793,11 +1793,11 @@
@ResponseBody
@GetMapping(value = "/six/pay-type-circle")
@ApiOperation(value = "收入类型占比", tags = {"后台-数据分析-平台收入分析"})
- public R<List<SixIncomeCircleDto>> payTypeCircle(Integer siteId) {
+ public R<List<SixIncomeCircleDto>> payTypeCircle(Integer siteId, Integer partnerId) {
Long userId = tokenService.getLoginUser().getUserid();
SysUser sysUser = sysUserClient.getSysUser(userId).getData();
boolean partnerView = isPartnerView(sysUser);
- List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
+ List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId, partnerId);
LocalDate sixBefore = PreviousSixMonths.get();
return R.ok(chargingOrderService.payTypeCircle(sixBefore, siteIds, partnerView));
}
@@ -1810,7 +1810,8 @@
* 解析平台收入分析页面允许查看的站点范围。
* 合作商使用授权站点,其他后台账号沿用用户站点列表;传入站点时需做授权校验。
*/
- private List<Integer> resolvePlatformRevenueSiteIds(Long userId, SysUser sysUser, Integer siteId) {
+ private List<Integer> resolvePlatformRevenueSiteIds(Long userId, SysUser sysUser,
+ Integer siteId, Integer partnerId) {
List<Integer> siteIds = new ArrayList<>();
if (sysUser != null && Integer.valueOf(2).equals(sysUser.getRoleType())) {
Set<Integer> authSiteIds = partnerClient.authSite(sysUser.getObjectId(), SiteMenu.SITE_LIST.getValue()).getData();
@@ -1828,12 +1829,40 @@
if (siteId != null) {
return siteIds.contains(siteId) ? Collections.singletonList(siteId) : Collections.singletonList(-1);
}
+ if (partnerId != null && !siteIds.isEmpty()) {
+ R<List<Site>> siteResult = siteClient.getSiteByIds(siteIds);
+ return filterPlatformRevenueSiteIdsByPartner(siteIds,
+ siteResult == null ? null : siteResult.getData(), partnerId);
+ }
if (siteIds.isEmpty()) {
siteIds.add(-1);
}
return siteIds;
}
+ static List<Integer> filterPlatformRevenueSiteIdsByPartner(List<Integer> allowedSiteIds,
+ List<Site> sites,
+ Integer partnerId) {
+ if (partnerId == null) {
+ return allowedSiteIds == null || allowedSiteIds.isEmpty()
+ ? Collections.singletonList(-1) : new ArrayList<>(allowedSiteIds);
+ }
+ if (allowedSiteIds == null || allowedSiteIds.isEmpty() || sites == null || sites.isEmpty()) {
+ return Collections.singletonList(-1);
+ }
+ Set<Integer> allowed = new HashSet<>(allowedSiteIds);
+ List<Integer> result = sites.stream()
+ .filter(Objects::nonNull)
+ .filter(site -> allowed.contains(site.getId()))
+ // 合作商类型不参与筛选:主合作商或场地方匹配均属于该合作商名下电站。
+ .filter(site -> Objects.equals(site.getPartnerId(), partnerId)
+ || Objects.equals(site.getVenuePartnerId(), partnerId))
+ .map(Site::getId)
+ .distinct()
+ .collect(Collectors.toList());
+ return result.isEmpty() ? Collections.singletonList(-1) : result;
+ }
+
@RequiresPermissions(value = {"/chargeOrderMonitoring"}, logical = Logical.OR)
@ResponseBody
--
Gitblit v1.7.1