From 57a134af6fdf55215f4714b6962e13c6499b5788 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 23 十月 2024 14:52:10 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java  |   35 +++-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java   |  250 +++++++++++++++++++++++++++++------
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java |   15 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java       |   16 -
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java                      |   72 +++++++--
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java                 |    3 
 6 files changed, 306 insertions(+), 85 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
index 2a3ecf5..6bbb818 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
@@ -55,6 +55,9 @@
     @ApiModelProperty(value = "1未出账2已出账")
     @TableField("status")
     private Integer status;
+    @ApiModelProperty(value = "账单类型 1充电算帐单 2账号结算帐单")
+    @TableField("billType")
+    private Integer billType;
     @ApiModelProperty(value = "1日结2月结")
     @TableField("orderState")
     private Integer orderState;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
index 8626df8..85ec054 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
@@ -1,9 +1,13 @@
 package com.ruoyi.account.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.model.TInviteUser;
 import com.ruoyi.account.mapper.TInviteUserMapper;
 import com.ruoyi.account.service.TInviteUserService;
+import com.ruoyi.other.api.domain.TIntegralRule;
+import com.ruoyi.other.api.feignClient.IntegralRuleClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -19,12 +23,19 @@
 @Service
 public class TInviteUserServiceImpl extends ServiceImpl<TInviteUserMapper, TInviteUser> implements TInviteUserService {
 
+    @Autowired
+    private IntegralRuleClient integralRuleClient;
+
     @Override
     public void saveInviteUser(Long appUserId, Long beInvitedAppUserId) {
+        // 查询邀请用户获得积分配置
+        TIntegralRule integralRule = integralRuleClient.getSet().getData();
+        JSONObject jsonObject = JSONObject.parseObject(integralRule.getInviteUsersToEarnPoints());
         TInviteUser inviteUser = new TInviteUser();
-        inviteUser.setAppUserId(appUserId);
-        inviteUser.setBeInvitedAppUserId(beInvitedAppUserId);
+        inviteUser.setAppUserId(beInvitedAppUserId);
+        inviteUser.setBeInvitedAppUserId(appUserId);
         inviteUser.setCreateTime(LocalDateTime.now());
+        inviteUser.setAward(jsonObject.getInteger("num1"));
         this.save(inviteUser);
     }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index d9b3c8d..f10fe03 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -73,18 +73,12 @@
     public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
         AccountListVO accountListVO = new AccountListVO();
         ChargingBillVO res = chargingBillService.chargingBillList1(dto);
-
-        ChargingBillVO res1 = chargingBillService.chargingBillList1(dto);
-        List<ChargingBillListVO> records = res1.getList().getRecords();
+        List<ChargingBillListVO> records = res.getList().getRecords();
         accountListVO.setBillCount(records.size());
-        accountListVO.setTotalAmount(
-                res1.getPaymentAmount().subtract(res1.getRefundAmount()==null?BigDecimal.ZERO:res1.getRefundAmount())
-                        .subtract(res1.getCommissionAmount()==null?BigDecimal.ZERO:res1.getCommissionAmount())
-                        .subtract(res1.getSharingAmount()==null?BigDecimal.ZERO:res1.getSharingAmount()));
-        accountListVO.setPaymentAmount(res1.getPaymentAmount());
-        accountListVO.setRefundAmount(res1.getRefundAmount());
-        accountListVO.setCommissionAmount(res1.getCommissionAmount());
-        accountListVO.setSharingAmount(res1.getSharingAmount());
+        accountListVO.setPaymentAmount(res.getPaymentAmount());
+        accountListVO.setRefundAmount(res.getRefundAmount());
+        accountListVO.setCommissionAmount(res.getCommissionAmount());
+        accountListVO.setSharingAmount(res.getSharingAmount());
         accountListVO.setList(res.getList());
         return R.ok(accountListVO);
     }
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 f955e49..280cabf 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
@@ -31,6 +31,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.Arrays;
 import java.util.List;
@@ -71,7 +72,10 @@
             startTime2 = split[1];
         }
         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 electrovalenceTotal = new BigDecimal("0");
@@ -109,15 +113,20 @@
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
             // 根据账单的出账时间 查询上个月的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+            // todo 临时修改为查询昨天的充电订单
+            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());
+//            // 获取该月份的第一天
+//            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.MIN);
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                     .between("create_time", firstDayOfMonth, lastDayOfMonth)
                     .eq("status", 5)
@@ -228,21 +237,17 @@
                 // 累加实收金额 支付金额减去退款金额
                 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
                     paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
-                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
 
                 }else if (tChargingOrder.getPaymentAmount()!=null){
                     paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
-                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
                 }
                 // 累加订单金额
                 if (tChargingOrder.getOrderAmount()!=null){
                     orderAmount = orderAmount.add(tChargingOrder.getOrderAmount());
-                    orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
                 }
                 // 累加累计电费
                 if (tChargingOrder.getElectrovalence()!=null){
                     electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
-                    electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
                 }
                 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){
                     refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
@@ -250,30 +255,20 @@
                 // 累加累计服务费
                 if (tChargingOrder.getServiceCharge()!=null){
                     serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
-                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getCommissionAmount()!=null){
                     commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount());
-                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount());
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
                     sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
-                    sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount());
                 }
                 // 累加充电度数
                 if (tChargingOrder.getChargingCapacity()!=null){
                     chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity());
-                    chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity());
                 }
-                // 累加优惠金额
-                if (tChargingOrder.getCouponDiscountAmount()!=null){
-                    discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount());
-                }
-                if (tChargingOrder.getVipDiscountAmount()!=null){
-                    discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount());
-                }
+
             }
             // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒
             int hours = chargingSecond / 3600;
@@ -315,6 +310,95 @@
             // 充电时间秒
             chargingBillListVO.setChargingSecond(chargingSecond);
         }
+        for (ChargingBillListVO chargingBillListVO : list1) {
+
+
+
+            LocalDateTime billTime = chargingBillListVO.getBillTime();
+            // 将其转化为yyyy-MM格式字符串
+            chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            // 将billTime减去一个月 转化为yyyy-MM格式字符串
+            chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
+
+            chargingBillListVO.setUid(chargingBillListVO.getId().toString());
+            // 根据账单的出账时间 查询上个月的充电订单
+            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.MIN);
+            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
+                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
+                    .eq("status", 5)
+                    .eq("recharge_payment_status", 2);
+            if (chargingBillListVO.getType() == 2) {
+                eq.eq("site_id", chargingBillListVO.getSiteId());
+            }
+            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
+            int chargingSecond = 0;
+            BigDecimal paymentAmount = new BigDecimal("0");
+            BigDecimal orderAmount = new BigDecimal("0");
+            BigDecimal electrovalence = new BigDecimal("0");
+            BigDecimal serviceCharge = new BigDecimal("0");
+            BigDecimal commissionAmount = new BigDecimal("0");
+            BigDecimal sharingAmount = new BigDecimal("0");
+            BigDecimal chargingCapacity = new BigDecimal("0");
+            orderCount+=tChargingOrders.size();
+            chargingBillVO.setCategory("");
+            chargingBillVO.setExportList(tChargingOrders);
+            for (TChargingOrder tChargingOrder : tChargingOrders) {
+
+                // 累加实收金额 支付金额减去退款金额
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
+
+                }else if (tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
+                }
+                // 累加订单金额
+                if (tChargingOrder.getOrderAmount()!=null){
+                    orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
+                }
+                // 累加累计电费
+                if (tChargingOrder.getElectrovalence()!=null){
+                    electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
+                }
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){
+                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+                }
+                // 累加累计服务费
+                if (tChargingOrder.getServiceCharge()!=null){
+                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
+                }
+                // 累加平台手续费
+                if (tChargingOrder.getServiceCharge()!=null){
+                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")));
+                }
+                // 累加平台分佣
+                if (tChargingOrder.getSharingAmount()!=null){
+                    sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount());
+                }
+                // 累加充电度数
+                if (tChargingOrder.getElectricity()!=null){
+
+                    chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getElectricity());
+                }
+                // 累加优惠金额
+                if (tChargingOrder.getCouponDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount());
+                }
+                if (tChargingOrder.getVipDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount());
+                }
+            }
+        }
         chargingBillVO.setChargingCapacity(chargingCapacityTotal);
         chargingBillVO.setPaymentAmount(paymentAmountTotal);
         chargingBillVO.setOrderAmount(orderAmountTotal);
@@ -341,7 +425,9 @@
             startTime2 = split[1];
         }
         PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+        PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999);
         List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2);
+        List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2);
         BigDecimal paymentAmountTotal = new BigDecimal("0");
         BigDecimal orderAmountTotal = new BigDecimal("0");
         BigDecimal electrovalenceTotal = new BigDecimal("0");
@@ -379,15 +465,20 @@
 
             chargingBillListVO.setUid(chargingBillListVO.getId().toString());
             // 根据账单的出账时间 查询上个月的充电订单
-            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+            // todo 临时修改为查询昨天的充电订单
+            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());
+//            // 获取该月份的第一天
+//            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.MIN);
             QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                     .between("create_time", firstDayOfMonth, lastDayOfMonth)
                     .eq("status", 5)
@@ -498,21 +589,17 @@
                 // 累加实收金额 支付金额减去退款金额
                 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
                     paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
-                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
 
                 }else if (tChargingOrder.getPaymentAmount()!=null){
                     paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
-                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
                 }
                 // 累加订单金额
                 if (tChargingOrder.getOrderAmount()!=null){
                 orderAmount = orderAmount.add(tChargingOrder.getOrderAmount());
-                orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
                 }
                 // 累加累计电费
                 if (tChargingOrder.getElectrovalence()!=null){
                 electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
-                electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
                 }
                 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){
                     refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
@@ -520,29 +607,18 @@
                 // 累加累计服务费
                 if (tChargingOrder.getServiceCharge()!=null){
                 serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
-                serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getCommissionAmount()!=null){
                     commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount());
-                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount());
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
                     sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
-                    sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount());
                 }
                 // 累加充电度数
                 if (tChargingOrder.getChargingCapacity()!=null){
                     chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity());
-                    chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity());
-                }
-                // 累加优惠金额
-                if (tChargingOrder.getCouponDiscountAmount()!=null){
-                    discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount());
-                }
-                if (tChargingOrder.getVipDiscountAmount()!=null){
-                    discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount());
                 }
             }
             // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒
@@ -576,6 +652,98 @@
             // 充电时间秒
             chargingBillListVO.setChargingSecond(chargingSecond);
         }
+        for (ChargingBillListVO chargingBillListVO : list1) {
+            LocalDateTime billTime = chargingBillListVO.getBillTime();
+            // 将其转化为yyyy-MM格式字符串
+            chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            // 将billTime减去一个月 转化为yyyy-MM格式字符串
+            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);
+            // 账单周期
+            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.MIN);
+            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
+                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
+                    .eq("status", 5)
+                    .eq("recharge_payment_status", 2);
+            if (chargingBillListVO.getType() == 2) {
+                eq.eq("site_id", chargingBillListVO.getSiteId());
+            }
+            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
+            int chargingSecond = 0;
+            BigDecimal paymentAmount = new BigDecimal("0");
+            BigDecimal orderAmount = new BigDecimal("0");
+            BigDecimal electrovalence = new BigDecimal("0");
+            BigDecimal serviceCharge = new BigDecimal("0");
+            BigDecimal commissionAmount = new BigDecimal("0");
+            BigDecimal sharingAmount = new BigDecimal("0");
+            BigDecimal chargingCapacity = new BigDecimal("0");
+            orderCount+=tChargingOrders.size();
+            for (TChargingOrder tChargingOrder : tChargingOrders) {
+                // 累加实收金额 支付金额减去退款金额
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
+
+                }else if (tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
+                }
+                // 累加订单金额
+                if (tChargingOrder.getOrderAmount()!=null){
+                    orderAmount = orderAmount.add(tChargingOrder.getOrderAmount());
+                    orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
+                }
+                // 累加累计电费
+                if (tChargingOrder.getElectrovalence()!=null){
+                    electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+                    electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
+                }
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){
+                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+                }
+                // 累加累计服务费
+                if (tChargingOrder.getServiceCharge()!=null){
+                    serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
+                }
+                // 累加平台手续费
+                if (tChargingOrder.getCommissionAmount()!=null){
+                    commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount());
+                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount());
+                }
+                // 累加平台分佣
+                if (tChargingOrder.getSharingAmount()!=null){
+                    sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+                    sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount());
+                }
+                // 累加充电度数
+                if (tChargingOrder.getElectricity()!=null){
+                    chargingCapacity = chargingCapacity.add(tChargingOrder.getElectricity());
+                    chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getElectricity());
+                }
+                // 累加优惠金额
+                if (tChargingOrder.getCouponDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount());
+                }
+                if (tChargingOrder.getVipDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount());
+                }
+            }
+        }
         chargingBillVO.setChargingCapacity(chargingCapacityTotal);
         chargingBillVO.setPaymentAmount(paymentAmountTotal);
         chargingBillVO.setOrderAmount(orderAmountTotal);
@@ -585,8 +753,6 @@
         chargingBillVO.setCommissionAmount(commissionAmountTotal);
         chargingBillVO.setSharingAmount(sharingAmountTotal);
         chargingBillVO.setDiscount(discountTotal);
-
-
         pageInfo.setRecords(list);
         chargingBillVO.setList(pageInfo);
         return chargingBillVO;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 6703e28..2e5f6b3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1073,6 +1073,7 @@
 			endTime2 = split[1];
 		}
 		PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+		PageInfo<ChargingOrderVO> pageInfo1 = new PageInfo<>(1,9999999);
 
 		if (StringUtils.hasLength(dto.getPhone())){
 			List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
@@ -1083,6 +1084,7 @@
 			dto.setUserIds(data);
 		}
 		List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+		List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
 		 BigDecimal total = new BigDecimal("0");
 		 long time = 0L;
 		 BigDecimal income = new BigDecimal("0");
@@ -1100,10 +1102,6 @@
 			}
 			if (data2!=null && data3!=null){
 				chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName());
-
-			}
-			if (chargingOrderVO.getChargingCapacity()!=null){
-				total = total.add(chargingOrderVO.getElectricity());
 			}
 			// 充电订单 明细记录
 			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
@@ -1112,14 +1110,6 @@
 			if (data5!=null){
 				long l = data5.getCumulative_charging_time() * 60L;
 				chargingOrderVO.setChargingSecond(l);
-				time+=l;
-			}
-			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
-			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
-
-			income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence()));
-			if (chargingOrderVO.getRefundAmount()!=null){
-				income = income.subtract(chargingOrderVO.getRefundAmount());
 			}
 			// 充电时段数
 			int size = chargingOrderId.size();
@@ -1140,6 +1130,27 @@
 
 			}
 		}
+		for (ChargingOrderVO chargingOrderVO : list1) {
+			if (chargingOrderVO.getChargingCapacity()!=null){
+				total = total.add(chargingOrderVO.getElectricity());
+			}
+			// 充电订单 明细记录
+			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
+					.eq("charging_order_id", chargingOrderVO.getId()));
+			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
+			if (data5!=null){
+				long l = data5.getCumulative_charging_time() * 60L;
+				chargingOrderVO.setChargingSecond(l);
+				time+=l;
+			}
+			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
+			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
+
+			income = income.add(chargingOrderVO.getOrderAmount());
+
+
+
+		}
 		tCharingOrderVO.setTotal(total);
 		tCharingOrderVO.setTime(time);
 		tCharingOrderVO.setIncome(income);
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 fdd88a3..e579cea 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
@@ -51,7 +51,6 @@
 @Scheduled(cron = "0 0 12 1 * ?")
     public void taskMonth() {
         try {
-            System.err.println("执行定时任务生成账单");
             // 获取上个月的开始和结束日期
             LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1).
                     withDayOfMonth(2);
@@ -71,33 +70,70 @@
             tChargingBill.setBillTime(LocalDateTime.now());
             tChargingBill.setStatus(1);
             tChargingBill.setOrderState(2);
+            tChargingBill.setBillType(1);
+            System.err.println("定时任务生成充电算帐单:全站");
             chargingBillService.save(tChargingBill);
-            // 每月二号给每个站点生成上月账单
+            // 生成一次全站订单
+            TChargingBill tChargingBill1 = new TChargingBill();
+            // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置)
+            Random random1 = new Random();
+            String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+                    .mapToObj(String::valueOf)
+                    .collect(Collectors.joining()); // 将其连接成一个字符串
+            tChargingBill1.setCode("JSD"+string+randomDigits1 );
+            tChargingBill1.setType(1);
+            tChargingBill1.setSiteId(0);
+            tChargingBill1.setBillTime(LocalDateTime.now());
+            tChargingBill1.setStatus(1);
+            tChargingBill1.setOrderState(2);
+            tChargingBill1.setBillType(2);
+            System.err.println("定时任务生成账户结算帐单:全站");
+            chargingBillService.save(tChargingBill1);
+            System.err.println("定时任务生成各个站点结算帐单");
             List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList());
+            // 充电算帐单
             List<TChargingBill> tChargingBills = new ArrayList<>();
+            // 账户结算账单
+            List<TChargingBill> tChargingBills1 = new ArrayList<>();
             for (int i = 0; i < collect.size(); i++) {
-                TChargingBill tChargingBill1 = new TChargingBill();
-                Random random1 = new Random();
-                String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+                TChargingBill tChargingBill2 = new TChargingBill();
+                Random random2 = new Random();
+                String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
                         .mapToObj(String::valueOf)
                         .collect(Collectors.joining()); // 将其连接成一个字符串
-                tChargingBill1.setCode("JSD"+string+randomDigits1+(i+1) );
-                tChargingBill1.setType(2);
-                tChargingBill1.setSiteId(collect.get(i));
-                tChargingBill1.setBillTime(LocalDateTime.now());
-                tChargingBill1.setStatus(1);
-                tChargingBill1.setOrderState(2);
-                tChargingBills.add(tChargingBill1);
+                tChargingBill2.setCode("JSD"+string+randomDigits2+(i+1) );
+                tChargingBill2.setType(2);
+                tChargingBill2.setSiteId(collect.get(i));
+                tChargingBill2.setBillTime(LocalDateTime.now());
+                tChargingBill2.setBillType(1);
+                tChargingBill2.setStatus(1);
+                tChargingBill2.setOrderState(2);
+                tChargingBills.add(tChargingBill2);
+                TChargingBill tChargingBill3 = new TChargingBill();
+                Random random3 = new Random();
+                String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+                        .mapToObj(String::valueOf)
+                        .collect(Collectors.joining()); // 将其连接成一个字符串
+                tChargingBill3.setCode("JSD"+string+randomDigits3+(i+1) );
+                tChargingBill3.setType(2);
+                tChargingBill3.setSiteId(collect.get(i));
+                tChargingBill3.setBillTime(LocalDateTime.now());
+                tChargingBill3.setBillType(1);
+                tChargingBill3.setStatus(1);
+                tChargingBill3.setOrderState(2);
+                tChargingBills1.add(tChargingBill3);
             }
             System.err.println("列表"+tChargingBills);
             if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills);
+            if (!tChargingBills1.isEmpty())chargingBillService.saveBatch(tChargingBills1);
 
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
-    // 每个月最后一天23点执行的定时任务
-    @Scheduled(cron = "0 0 12 1 * ?")
+
+    // 每天晚上23:59:59执行的定时任务
+    @Scheduled(cron = "0 0 23 1 * ?")
     public void taskLastDay() {
         try {
             // 获取上个月的开始和结束日期
@@ -110,10 +146,10 @@
             LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒
             // 构建查询条件
             LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.ge(TChargingBill::getBillTime,
-                            Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()))
-                    .le(TChargingBill::getBillTime,
-                            Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录
+//            queryWrapper.ge(TChargingBill::getBillTime,
+//                            Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()))
+//                    .le(TChargingBill::getBillTime,
+//                            Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录
             List<TChargingBill> list = chargingBillService.list(queryWrapper);
             for (TChargingBill tChargingBill : list) {
                 tChargingBill.setStatus(2);

--
Gitblit v1.7.1