From 8115295a64e0809246897fefb8c45de06dce0799 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 23 五月 2025 21:09:12 +0800
Subject: [PATCH] 大屏

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java |  148 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 124 insertions(+), 24 deletions(-)

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 aef8ea7..6db46cb 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
@@ -6,6 +6,7 @@
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
 import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.common.core.domain.R;
@@ -15,6 +16,8 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
 import com.ruoyi.order.api.model.*;
 import com.ruoyi.order.api.query.TOrderInvoiceQuery;
 import com.ruoyi.order.api.vo.AccountListVO;
@@ -23,6 +26,7 @@
 import com.ruoyi.order.api.vo.TOrderInvoiceVO;
 import com.ruoyi.order.export.*;
 import com.ruoyi.order.service.*;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -41,11 +45,9 @@
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -66,7 +68,83 @@
     private SiteClient siteClient;
     @Resource
     private TChargingOrderService chargingOrderService;
-
+    @Resource
+    private TChargingOrderRefundService tChargingOrderRefundService;
+    @Resource
+    private TChargingBillService tChargingBillService;
+    @GetMapping(value = "/test")
+    public R accountAdd() {
+//        List<TChargingBill> list = tChargingBillService.lambdaQuery().list();
+//        for (TChargingBill tChargingBill : list) {
+//            tChargingBill.setStatus(2);
+//        }
+//        tChargingBillService.updateBatchById(list);
+//        List<TChargingOrder> list = chargingOrderService.lambdaQuery().list();
+//        for (TChargingOrder chargingOrder : list) {
+//            chargingOrder.setSharingAmount(new BigDecimal("0"));
+//            List<TChargingOrderRefund> list1 = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, chargingOrder.getId()).list();
+//            tChargingOrderRefundService.removeBatchByIds(list1);
+//            chargingOrderService.removeById(chargingOrder);
+//        }
+//        chargingOrderService.updateBatchById(list);
+//        TChargingBill tChargingBill = new TChargingBill();
+//        Random random = new Random();
+//        String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+//                .mapToObj(String::valueOf)
+//                .collect(Collectors.joining()); // 将其连接成一个字符串
+//        tChargingBill.setCode("JSD"+randomDigits );
+//        tChargingBill.setType(1);
+//        tChargingBill.setSiteId(0);
+//        tChargingBill.setBillTime(LocalDateTime.now().plusDays(1));
+//        tChargingBill.setStatus(1);
+//        tChargingBill.setOrderState(2);
+//        tChargingBill.setBillType(1);
+//        chargingBillService.save(tChargingBill);
+//        TChargingBill tChargingBill1 = new TChargingBill();
+//        Random random1 = new Random();
+//        String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+//                .mapToObj(String::valueOf)
+//                .collect(Collectors.joining()); // 将其连接成一个字符串
+//        tChargingBill1.setCode("JSD"+randomDigits1);
+//        tChargingBill1.setType(2);
+//        tChargingBill1.setSiteId(13);
+//        tChargingBill1.setBillTime(LocalDateTime.now().plusDays(1));
+//        tChargingBill1.setStatus(1);
+//        tChargingBill1.setOrderState(2);
+//        tChargingBill1.setBillType(1);
+//        chargingBillService.save(tChargingBill1);
+//
+//        TChargingBill tChargingBil3 = new TChargingBill();
+//        Random random2 = new Random();
+//        String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+//                .mapToObj(String::valueOf)
+//                .collect(Collectors.joining()); // 将其连接成一个字符串
+//        tChargingBil3.setCode("JSD"+randomDigits2 );
+//        tChargingBil3.setType(1);
+//        tChargingBil3.setSiteId(0);
+//        tChargingBil3.setBillTime(LocalDateTime.now().plusDays(1));
+//        tChargingBil3.setStatus(1);
+//        tChargingBil3.setOrderState(2);
+//        tChargingBil3.setBillType(2);
+//        chargingBillService.save(tChargingBil3);
+//        TChargingBill tChargingBill14 = new TChargingBill();
+//        Random random3 = new Random();
+//        String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+//                .mapToObj(String::valueOf)
+//                .collect(Collectors.joining()); // 将其连接成一个字符串
+//        tChargingBill14.setCode("JSD"+randomDigits3);
+//        tChargingBill14.setType(2);
+//        tChargingBill14.setSiteId(13);
+//        tChargingBill14.setBillTime(LocalDateTime.now().plusDays(1));
+//        tChargingBill14.setStatus(1);
+//        tChargingBill14.setOrderState(2);
+//        tChargingBill14.setBillType(2);
+//        chargingBillService.save(tChargingBill14);
+        return R.ok();
+    }
+    
+    
+    @RequiresPermissions(value = {"/accountSettlementStatement"}, logical = Logical.OR)
     @PostMapping(value = "/accountBillList")
     @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
     public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
@@ -74,15 +152,17 @@
         ChargingBillVO res = chargingBillService.chargingBillList1(dto);
         List<ChargingBillListVO> records = res.getList().getRecords();
         accountListVO.setBillCount(records.size());
-        accountListVO.setTotalAmount(res.getPaymentAmount().subtract(res.getRefundAmount())
-                .subtract(res.getCommissionAmount().setScale(2,BigDecimal.ROUND_DOWN)).subtract(res.getSharingAmount()).setScale(2, BigDecimal.ROUND_DOWN));
+        accountListVO.setTotalAmount(res.getPaymentAmount().subtract(res.getCommissionAmount()).subtract(res.getSharingAmount()).setScale(2, BigDecimal.ROUND_DOWN));
         accountListVO.setPaymentAmount(res.getPaymentAmount().setScale(2, BigDecimal.ROUND_DOWN));
         accountListVO.setRefundAmount(res.getRefundAmount().setScale(2, BigDecimal.ROUND_DOWN));
         accountListVO.setCommissionAmount(res.getCommissionAmount().setScale(2, BigDecimal.ROUND_DOWN));
         accountListVO.setSharingAmount(res.getSharingAmount().setScale(2, BigDecimal.ROUND_DOWN));
         accountListVO.setList(res.getList());
+        accountListVO.setOrderList(res.getExportList());
         return R.ok(accountListVO);
     }
+    
+    @RequiresPermissions(value = {"/chargeBill"}, logical = Logical.OR)
     @PostMapping(value = "/chargingBillList")
     @ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"})
     public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) {
@@ -98,10 +178,14 @@
     public R<ChargingBillVO> chargingBillListExport(String uid) {
         return R.ok(null);
     }
+    
+    
+    @RequiresPermissions(value = {"/chargeBill/export"}, logical = Logical.OR)
     @ApiOperation(value = "导出", tags = {"管理后台-充电算账单"})
     @PutMapping("/export")
     public void export(@RequestBody ChargingListQuery dto)
     {
+
         ChargingBillVO res = chargingBillService.chargingBillList(dto);
         List<ChargingBillListVO> list = res.getList().getRecords();
         List<TChargingBillExport> tChargingBillExports = new ArrayList<>();
@@ -161,6 +245,9 @@
             }
         }
     }
+    
+    
+    @RequiresPermissions(value = {"/accountSettlementStatement/export"}, logical = Logical.OR)
     @ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"})
     @PutMapping("/exportAccount")
     public void exportAccount(@RequestBody ChargingListQuery dto)
@@ -231,9 +318,9 @@
             }
         }
     }
-
-    @Autowired
-    private TChargingOrderRefundService tChargingOrderRefundService;
+    
+    
+    
     @ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"})
     @PutMapping("/download")
     public void download(@RequestBody ExportUidDto uid)
@@ -257,23 +344,18 @@
             chargingBillExport.setSiteName(data.get(0).getName());
         }
 //        // 根据账单的出账时间 查询上个月的充电订单
-//        LocalDateTime localDate = byId.getBillTime().minusMonths(1);
+        LocalDateTime localDate = byId.getBillTime().minusMonths(1);
 //        // 账单周期
 //        // 获取 LocalDate 对象
 //        LocalDate date = localDate.toLocalDate();
 //        // 获取该月份的第一天
 //        LocalDate firstDayOfMonth = date.withDayOfMonth(1);
-         LocalDateTime localDate = byId.getBillTime().minusDays(1);
-        // todo 临时修改为前一天
         // 获取 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());
         // 获取该月份的最后一天
 //        LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
         QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
@@ -285,15 +367,32 @@
         }
         BigDecimal paymentAmount = new BigDecimal("0");
         BigDecimal refundAmount = new BigDecimal("0");
+        BigDecimal commissionAmount = new BigDecimal("0");
+        BigDecimal sharingAmount = new BigDecimal("0");
 
         List<TChargingOrder> tChargingOrders = chargingOrderService.list(eq);
         // 累加支付金额
         BigDecimal bigDecimal = new BigDecimal("0");
+        BigDecimal bigDecimal1 = new BigDecimal("0.006");
+
         int i =1;
         for (TChargingOrder tChargingOrder : tChargingOrders) {
             // 账单信息
-            paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+            if (!tChargingOrder.getOrderSource().equals(2)){
+                chargingBillExport.setPaymentAmount(tChargingOrder.getRechargeAmount());
+                paymentAmount = paymentAmount.add(tChargingOrder.getRechargeAmount());
 
+            }else{
+                chargingBillExport.setPaymentAmount(tChargingOrder.getServiceCharge()!=null?
+                        tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)
+                        :new BigDecimal("0"));
+                paymentAmount = paymentAmount.add(tChargingOrder.getServiceCharge()!=null?
+                        tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)
+                        :new BigDecimal("0"));
+
+            }
+            commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN));
+            sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()!=null?tChargingOrder.getSharingAmount():new BigDecimal("0"));
             // 退款信息
             ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport();
             ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport();
@@ -337,11 +436,11 @@
             chargingBillPayExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
             chargingBillPayExport.setCode(tChargingOrder.getCode());
             chargingBillPayExport.setPayTime(tChargingOrder.getPayTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())):"");
-            chargingBillPayExport.setPaymentAmount(tChargingOrder.getChargeAmount().toString());
+            chargingBillPayExport.setPaymentAmount(tChargingOrder.getRechargeAmount().toString());
             chargingBillPayExport.setTotal("");
             chargingBillPayExports.add(chargingBillPayExport);
             i++;
-            bigDecimal = bigDecimal.add(tChargingOrder.getOrderAmount());
+            bigDecimal = bigDecimal.add(tChargingOrder.getRechargeAmount());
         }
         if (!chargingBillPayExports.isEmpty()){
             chargingBillPayExports.get(0).setTotal(bigDecimal+"");
@@ -357,7 +456,8 @@
         }
         chargingBillExport.setPaymentAmount(paymentAmount);
         chargingBillExport.setRefundAmount(refundAmount);
-        chargingBillExport.setIncome(paymentAmount.subtract(refundAmount));
+        chargingBillExport.setIncome(paymentAmount.subtract(refundAmount)
+                .setScale(2, BigDecimal.ROUND_DOWN));
         chargingBillExports.add(chargingBillExport);
         // 导出
         List<Map<String, Object>> sheetsList = new ArrayList<>();

--
Gitblit v1.7.1