From 9b646c003c5dcc9c878c8c023af57e19eaef027a Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 18 三月 2025 16:52:14 +0800
Subject: [PATCH] 修改报表bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   36 ++++++++++++++++++++++++------------
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java          |    4 ++--
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java            |    4 ++--
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                  |    6 ++++++
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml                       |    2 +-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java    |    4 ++--
 6 files changed, 37 insertions(+), 19 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 cad5ef5..325b337 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
@@ -1292,10 +1292,10 @@
 //        List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
 //        chargingOrderIds.add(-1L);
         //上方饼图
-         List<Map<String,Object>> maps =   chargingOrderService.getSumByType(start,end);
+         List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end, siteIds);
 
         if (statisticsQueryDto.getDayType()==1){
-            List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end);
+            List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end, siteIds);
 
             List<Map<String, Object>> charMap = new ArrayList<>();
             // 生成从 "00:00" 到 "23:00" 的时间数据
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index 27539ce..7f5ff3e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -68,9 +68,9 @@
 
 	Map<String, Object> countAll(@Param("sixBefore")LocalDate sixBefore,@Param("siteIds")List<Integer> siteIds);
 
-    List<Map<String, Object>> getSumByType(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
+    List<Map<String, Object>> getSumByType(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
 
-    List<Map<String, Object>> getDateData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
+    List<Map<String, Object>> getDateData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
 
 	List<Map<String, Object>> getWeekData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index f411893..64b1198 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -146,9 +146,9 @@
 
 	Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds);
 
-    List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end);
+    List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds);
 
-	List<Map<String, Object>> getDateData(LocalDate start,LocalDate end);
+	List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds);
 
 	List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end);
 
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 22308d1..cc5f443 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
@@ -1351,7 +1351,6 @@
 					chargingOrderVO.setAuthRecord(t1.get(0));
 				}
 			}
-			chargingOrderVO.setSharingAmount(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
 			chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
 			chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
 			chargingOrderVO.setUid(chargingOrderVO.getId()+"");
@@ -1374,7 +1373,17 @@
 				// 计算时间差 单位秒
 				long between = ChronoUnit.SECONDS.between(startTime, endTime);
 				chargingOrderVO.setChargingSecond(between);
-
+				
+				BigDecimal electronic_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+				chargingOrderVO.setElectrovalence(electronic_reduce);
+				BigDecimal service_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (!chargingOrderVO.getOrderSource().equals(2)){
+					chargingOrderVO.setServiceCharge(service_reduce);
+					chargingOrderVO.setSharingAmount(BigDecimal.ZERO);
+				}else{
+					chargingOrderVO.setServiceCharge(service_reduce.multiply(new BigDecimal("0.8")));
+					chargingOrderVO.setSharingAmount(service_reduce.multiply(new BigDecimal("0.2")));
+				}
 			}
 			// 充电时段数
 			int size = chargingOrderId.size();
@@ -1403,11 +1412,12 @@
 				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 
 		for (ChargingOrderVO chargingOrderVO : list1) {
+			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
+			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 			if (!chargingOrderVO.getOrderSource().equals(2)) {
 				paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
 			}else{
-				paymentMoney = paymentMoney.add(chargingOrderVO.getServiceCharge() != null ? chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0"));
-
+				paymentMoney = paymentMoney.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
 			}
 			if (chargingOrderVO.getRechargeAmount()!=null){
 				commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
@@ -1427,16 +1437,18 @@
 			for (TChargingOrderRefund tChargingOrderRefund : list2) {
 					refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
 			}
-			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
+			
+			//充电明细
+			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			electronicMoney = electronicMoney.add(electronic_reduce);
 			if (!chargingOrderVO.getOrderSource().equals(2)){
-				serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+				serviceMoney = serviceMoney.add(service_reduce);
 			}else{
-				serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
+				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
 			}
 		}
 		tCharingOrderVO.setTotal(total);
 		tCharingOrderVO.setTime(time);
-//		tCharingOrderVO.setIncome(paymentMoney.subtract(commissionMoney));
 		tCharingOrderVO.setIncome(paymentMoney);
 		tCharingOrderVO.setElectronicMoney(electronicMoney);
 		tCharingOrderVO.setServiceMoney(serviceMoney);
@@ -1494,17 +1506,17 @@
 	}
 
 	@Override
-	public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds) {
 		LocalDateTime start1 = start.atStartOfDay();
 		LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getSumByType(start1,end1);
+		return this.baseMapper.getSumByType(start1,end1, siteIds);
 	}
 
 	@Override
-	public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds) {
 		LocalDateTime start1 = start.atStartOfDay();
 		LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getDateData(start1,end1);
+		return this.baseMapper.getDateData(start1,end1, siteIds);
 	}
 
 	@Override
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index dfe3903..c92c846 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -435,6 +435,12 @@
         t_charging_order_accounting_strategy t1
         LEFT JOIN t_charging_order t2 on t1.charging_order_id = t2.id
         where t2.create_time between #{start} and #{end}
+        <if test="null != siteIds and siteIds.size() > 0">
+            and t2.site_id in
+            <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
+                #{item}
+            </foreach>
+        </if>
         GROUP BY
         t1.type
     </select>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
index 6948412..e231b05 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
@@ -78,7 +78,7 @@
     </select>
     <select id="getSumAmout" resultType="java.math.BigDecimal">
         SELECT
-            SUM(payment_amount-refund_amount) AS paymentAmount
+            SUM(payment_amount-ifnull(refund_amount,0)) AS paymentAmount
         FROM
             t_vip_order
         WHERE

--
Gitblit v1.7.1