From 74b0e0814e37d640596f44ec86d20fa9ecce9ed6 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 05 二月 2025 10:42:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java |  228 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 177 insertions(+), 51 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
index 6361e2a..a20b110 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -4,13 +4,18 @@
 import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.api.model.TAppUserCar;
+import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.order.api.model.TChargingOrder;
@@ -26,6 +31,9 @@
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.service.TChargingBillService;
 import com.ruoyi.order.service.TChargingOrderRefundService;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.model.SysUserRoleVo;
 import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
 import org.omg.CORBA.PRIVATE_MEMBER;
 import org.springframework.stereotype.Service;
@@ -38,9 +46,7 @@
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -53,7 +59,8 @@
  */
 @Service
 public class TChargingBillServiceImpl extends ServiceImpl<TChargingBillMapper, TChargingBill> implements TChargingBillService {
-
+    @Resource
+    private SysUserClient sysUserClient;
     @Resource
     private TChargingOrderMapper chargingOrderList;
     @Resource
@@ -70,6 +77,12 @@
     private AppUserCarClient appUserCarClient;
     @Resource
     private TChargingOrderRefundService chargingOrderRefundService;
+    @Resource
+    private TokenService tokenService;
+    @Resource
+    private PartnerClient partnerClient;
+
+
     @Override
     public ChargingBillVO chargingBillList1(ChargingListQuery dto) {
         if (dto.getState()!=null){
@@ -88,11 +101,48 @@
             startTime1 = split[0];
             startTime2 = split[1];
         }
+        Long userId = tokenService.getLoginUser().getUserid();
+        // 查询当前登陆人按钮权限
+        SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
+        Integer roleType = sysUser.getRoleType();
+        List<Integer> siteIds = new ArrayList<>();
+            //如果没传siteId,获取当前登陆人所有的siteIds
+            if (dto.getSiteId()==null){
+                if (userId != null){
+                    List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+                    for (GetSiteListDTO datum : data) {
+                        siteIds.add(datum.getId());
+                    }
+                }
+            }else {
+                siteIds.add(dto.getSiteId());
+            }
+            if (siteIds.isEmpty()){
+                siteIds.add(-1);
+            }else{
+                if (roleType == 2){
+                    List<Integer> integers = new ArrayList<>();
+                    for (Integer siteId : siteIds) {
+                        // 校验有没有这个站点的权限
+                        List<Boolean> t1= partnerClient.getAccountMenu(sysUser.getObjectId(),siteId).getData();
+
+                        Boolean b = t1.get(1);
+                        if (b){
+                            integers.add(siteId);
+                        }
+                    }
+                    siteIds = integers;
+                }
+            }
+            if (siteIds.isEmpty())siteIds.add(-1);
+            dto.setSiteIds(siteIds);
+
+
         PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
         PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999);
         List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2);
         List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList1(pageInfo1,dto,startTime1,startTime2);
-        chargingBillVO.setOrderCount(list1.size());
+
         BigDecimal paymentAmountTotal = new BigDecimal("0");
         BigDecimal orderAmountTotal = new BigDecimal("0");
         BigDecimal refundAmountTotal = new BigDecimal("0");
@@ -103,7 +153,15 @@
         BigDecimal chargingCapacityTotal = new BigDecimal("0");
         BigDecimal discountTotal = new BigDecimal("0");
         int orderCount = 0;
+
         for (ChargingBillListVO chargingBillListVO : list) {
+            if (roleType==2){
+                List<Boolean> data = partnerClient.getAccountMenu(sysUser.getObjectId(), chargingBillListVO.getSiteId()).getData();
+                chargingBillListVO.setAuthDownLoad(data.get(0));
+                if (chargingBillListVO.getType()==1){
+                    continue;
+                }
+            }
             String temp = "";
             String temp1 = "";
             switch (chargingBillListVO.getType()){
@@ -130,22 +188,18 @@
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
             // 根据账单的出账时间 查询上个月的充电订单
-//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
-            // todo 临时修改为查询昨天的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
+            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
             // 账单周期
             chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
             // 获取 LocalDate 对象
             LocalDate date = localDate.toLocalDate();
 //            // 获取该月份的第一天
-//            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
-//            // 获取该月份的最后一天
-//            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
-            // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59
-            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
-            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
+            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+            // 获取该月份的最后一天
+            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
-                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
+                    .between("pay_time", firstDayOfMonth.atTime(0, 0, 0), lastDayOfMonth.atTime(23, 59, 59))
                     .eq("status", 5)
                     .eq("recharge_payment_status", 2);
             if (chargingBillListVO.getType() == 2) {
@@ -343,11 +397,15 @@
             chargingBillListVO.setChargingSecond(chargingSecond);
         }
         BigDecimal bigDecimal = new BigDecimal("0");
-
+        int i = 0;
         for (ChargingBillListVO chargingBillListVO : list1) {
-            if (chargingBillListVO.getType()==2){
+            if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){
                 continue;
             }
+            if (chargingBillListVO.getType()==1){
+                continue;
+            }
+            i++;
             LocalDateTime billTime = chargingBillListVO.getBillTime();
             // 将其转化为yyyy-MM格式字符串
             chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -355,20 +413,15 @@
             chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
-//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
-            // todo 临时修改为查询昨天的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
+            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
             // 账单周期
             chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
             // 获取 LocalDate 对象
             LocalDate date = localDate.toLocalDate();
-//            // 获取该月份的第一天
-//            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
-//            // 获取该月份的最后一天
-//            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
-            // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59
-            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
-            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
+            // 获取该月份的第一天
+            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+            // 获取该月份的最后一天
+            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                     .between("create_time", firstDayOfMonth, lastDayOfMonth)
                     .eq("status", 5)
@@ -431,6 +484,7 @@
                 }
             }
         }
+        chargingBillVO.setOrderCount(i);
         chargingBillVO.setChargingCapacity(chargingCapacityTotal);
         chargingBillVO.setPaymentAmount(paymentAmountTotal);
         chargingBillVO.setOrderAmount(paymentAmountTotal.subtract(refundAmountTotal).subtract(commissionAmountTotal).subtract(sharingAmountTotal));
@@ -450,6 +504,8 @@
         chargingBillVO.setList(pageInfo);
         return chargingBillVO;
     }
+
+
     @Override
     public ChargingBillVO chargingBillList(ChargingListQuery dto) {
         if (dto.getState()!=null){
@@ -469,6 +525,49 @@
         }
         PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
         PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999);
+        Long userId = tokenService.getLoginUser().getUserid();
+        // 查询当前登陆人按钮权限
+        SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
+        Integer roleType = sysUser.getRoleType();
+        //如果没传siteId,获取当前登陆人所有的siteIds
+        List<Integer> siteIds = new ArrayList<>();
+            //如果没传siteId,获取当前登陆人所有的siteIds
+            if (dto.getSiteId()==null){
+                if (userId != null){
+                    List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+                    for (GetSiteListDTO datum : data) {
+                        siteIds.add(datum.getId());
+                    }
+                }
+            }else {
+                siteIds.add(dto.getSiteId());
+            }
+            if (siteIds.isEmpty()){
+                siteIds.add(-1);
+            }else{
+                if (roleType == 2){
+                    List<Integer> integers = new ArrayList<>();
+                    for (Integer siteId : siteIds) {
+                        // 校验有没有这个站点的权限
+                        List<Boolean> t1= partnerClient.getChargingBillMenu(sysUser.getObjectId(),siteId).getData();
+
+                        Boolean b = t1.get(1);
+                        if (b){
+                            integers.add(siteId);
+                        }
+                    }
+                    siteIds = integers;
+                }
+            }
+
+        if (roleType==1){
+            siteIds.add(0);
+        }
+        if (siteIds.isEmpty()){
+            siteIds.add(-1);
+        }
+            dto.setSiteIds(siteIds);
+
         List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2);
         List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList(pageInfo1,dto,startTime1,startTime2);
         BigDecimal paymentAmountTotal = new BigDecimal("0");
@@ -481,7 +580,29 @@
         BigDecimal discountTotal = new BigDecimal("0");
         BigDecimal refundAmountTotal = new BigDecimal("0");
         int orderCount = 0;
+
+
+        List<ChargingBillListVO> chargingBillListVOS = new ArrayList<>();
         for (ChargingBillListVO chargingBillListVO : list) {
+            if (roleType==2 && chargingBillListVO.getSiteId()!=0){
+                chargingBillListVOS.add(chargingBillListVO);
+            }
+            if (roleType ==1 && (siteIds.contains(chargingBillListVO.getSiteId())|| chargingBillListVO.getSiteId()==0)){
+                chargingBillListVOS.add(chargingBillListVO);
+            }
+        }
+        for (ChargingBillListVO chargingBillListVO : chargingBillListVOS) {
+            if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){
+                continue;
+            }
+            if (roleType == 2){
+                // 校验有没有这个站点的权限
+                List<Boolean> t1= partnerClient.getChargingBillMenu(sysUser.getObjectId(),chargingBillListVO.getSiteId()).getData();
+                chargingBillListVO.setAuthDownLoad(t1.get(0));
+                if (chargingBillListVO.getSiteId()==0){
+                    continue;
+                }
+            }
             String temp = "";
             String temp1 = "";
             switch (chargingBillListVO.getType()){
@@ -508,22 +629,18 @@
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
             // 根据账单的出账时间 查询上个月的充电订单
-//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
-            // todo 临时修改为查询昨天的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
+            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
             // 账单周期
             chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
             // 获取 LocalDate 对象
             LocalDate date = localDate.toLocalDate();
 //            // 获取该月份的第一天
-//            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
-//            // 获取该月份的最后一天
-//            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
-            // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59
-            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
-            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
+            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+            // 获取该月份的最后一天
+            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
-                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
+                    .between("pay_time", firstDayOfMonth.atTime(0, 0, 0), lastDayOfMonth.atTime(23, 59, 59))
                     .eq("status", 5)
                     .eq("recharge_payment_status", 2);
             if (chargingBillListVO.getType() == 2) {
@@ -705,8 +822,13 @@
             chargingBillListVO.setChargingSecond(chargingSecond);
         }
         for (ChargingBillListVO chargingBillListVO : list1) {
-            if (chargingBillListVO.getType() ==2){
+            if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){
                 continue;
+            }
+            if (roleType == 2){
+                if (chargingBillListVO.getSiteId()==0){
+                    continue;
+                }
             }
             LocalDateTime billTime = chargingBillListVO.getBillTime();
             // 将其转化为yyyy-MM格式字符串
@@ -716,20 +838,18 @@
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
             // 根据账单的出账时间 查询上个月的充电订单
-//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
-            // todo 临时修改为查询昨天的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
+            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
             // 账单周期
             chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
             // 获取 LocalDate 对象
             LocalDate date = localDate.toLocalDate();
 //            // 获取该月份的第一天
-//            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
-//            // 获取该月份的最后一天
-//            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
-            // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59
-            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
-            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
+            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+            // 获取该月份的最后一天
+            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
+//            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
+//            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                     .between("create_time", firstDayOfMonth, lastDayOfMonth)
                     .eq("status", 5)
@@ -805,15 +925,21 @@
         chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, BigDecimal.ROUND_DOWN));
         chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, BigDecimal.ROUND_DOWN));
         chargingBillVO.setDiscount(discountTotal.setScale(2, BigDecimal.ROUND_DOWN));
-        pageInfo.setRecords(list);
+        pageInfo.setRecords(chargingBillListVOS);
         chargingBillVO.setList(pageInfo);
         return chargingBillVO;
     }
 
     public static void main(String[] args) {
-        LocalDateTime now = LocalDateTime.now();
-        // 将时间转化为字符串 只保留年月日 格式为yyyy-MM-dd
-        String format = now.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        LocalDateTime localDateTime = LocalDateTime.now().minusMonths(1);
+        // 获取 LocalDate 对象
+        LocalDate date = localDateTime.toLocalDate();
+//            // 获取该月份的第一天
+        LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+        // 获取该月份的最后一天
+        LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
+        System.err.println(firstDayOfMonth);
+        System.err.println(lastDayOfMonth);
     }
 
 }

--
Gitblit v1.7.1