From d56e45a6bf3ad11809fbf51dff0dfbe853860d43 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 19 三月 2025 20:56:33 +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 |  206 +++++++++++++++++++++++++++++---------------------
 1 files changed, 119 insertions(+), 87 deletions(-)

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 75c13ed..7470c9b 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
@@ -1406,24 +1406,31 @@
 			}
 		}
 
-
 		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
 				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 
+	    BigDecimal total = new BigDecimal("0");
+	    long time = 0L;
+	    BigDecimal electronicMoney = new BigDecimal("0");
+	    BigDecimal serviceMoney = new BigDecimal("0");
+	    BigDecimal refundMoney = new BigDecimal("0");
+	    BigDecimal paymentMoney = new BigDecimal("0");
 		for (ChargingOrderVO chargingOrderVO : list1) {
+			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
+				continue;
+			}
 			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
 			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+			electronicMoney = electronicMoney.add(electronic_reduce);
+			total = total.add(chargingCapacity);
 			if (!chargingOrderVO.getOrderSource().equals(2)) {
-				paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
+				serviceMoney = serviceMoney.add(service_reduce);
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
 			}else{
-				paymentMoney = paymentMoney.add(electronic_reduce).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));
-//			}
-			if (chargingOrderVO.getChargingCapacity()!=null){
-				total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
+				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
 			}
 			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
 				LocalDateTime startTime = chargingOrderVO.getStartTime();
@@ -1437,20 +1444,12 @@
 			for (TChargingOrderRefund tChargingOrderRefund : list2) {
 				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
 			}
-			
-			//充电明细
-			electronicMoney = electronicMoney.add(electronic_reduce);
-			if (!chargingOrderVO.getOrderSource().equals(2)){
-				serviceMoney = serviceMoney.add(service_reduce);
-			}else{
-				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
-			}
 		}
 		tCharingOrderVO.setTotal(total);
 		tCharingOrderVO.setTime(time);
-		tCharingOrderVO.setIncome(paymentMoney);
-		tCharingOrderVO.setElectronicMoney(electronicMoney);
-		tCharingOrderVO.setServiceMoney(serviceMoney);
+		tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 		pageInfo.setRecords(list);
 		tCharingOrderVO.setList(pageInfo);
         return tCharingOrderVO;
@@ -1500,8 +1499,8 @@
 	}
 
 	@Override
-	public Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds) {
-		return this.baseMapper.countAll(sixBefore,siteIds);
+	public Map<String, Object> countAll(List<Integer> siteIds) {
+		return this.baseMapper.countAll(siteIds);
 	}
 
 	@Override
@@ -1519,24 +1518,24 @@
 	}
 
 	@Override
-	public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds) {
 		LocalDateTime start1 = start.atStartOfDay();
 		LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getWeekData(start1,end1);
+		return this.baseMapper.getWeekData(start1,end1,siteIds);
 	}
 
 	@Override
-	public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds) {
 		LocalDateTime start1 = start.atStartOfDay();
 		LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getMonthData(start1,end1);
+		return this.baseMapper.getMonthData(start1,end1,siteIds);
 	}
 
 	@Override
-	public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds) {
 		LocalDateTime start1 = start.atStartOfDay();
 		LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getYearData(start1,end1);
+		return this.baseMapper.getYearData(start1,end1,siteIds);
 	}
 
 	@Resource
@@ -1801,22 +1800,18 @@
 		BigDecimal gu = new BigDecimal("0");
 		List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
-			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
-
-			if (chargingOrderListVO.getPaymentAmount()!=null){
-				if (chargingOrderListVO.getOrderSource().equals(2)){
-					paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0"));
-				}else{
-					paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
-				}
-			}
-			if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
-			if (chargingOrderListVO.getServiceCharge()!=null){
-				if (chargingOrderListVO.getOrderSource().equals(2)){
-					serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
-				}else{
-					serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
-				}
+			List<TChargingOrderAccountingStrategy> collect = chargingOrderAccountingStrategies.stream().filter(s -> s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
+			BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+			electronic = electronic.add(chargingCapacity);
+			electrovalence = electrovalence.add(periodElectricPrice);
+			if (chargingOrderListVO.getOrderSource().equals(2)){
+				serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
+				paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
+			}else{
+				serviceCharge = serviceCharge.add(periodServicePrice);
+				paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
 			}
 			if (!chargingOrderListVO.getOrderSource().equals(2)){
 				List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
@@ -1824,24 +1819,48 @@
 				for (TChargingOrderAccountingStrategy temp : list2) {
 					switch (temp.getType()){
 						case 1:
-							if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge());
+							if (temp.getChargingCapacity()!=null){
+								jian = jian.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								jianElectronic = jianElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								jianService = jianService.add(temp.getServiceCharge());
+							}
 							break;
 						case 2:
-							if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge());
+							if (temp.getChargingCapacity()!=null){
+								feng = feng.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								fengElectronic = fengElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								fengService = fengService.add(temp.getServiceCharge());
+							}
 							break;
 						case 3:
-							if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge());
+							if (temp.getChargingCapacity()!=null){
+								ping = ping.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								pingElectronic = pingElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								pingService = pingService.add(temp.getServiceCharge());
+							}
 							break;
 						case 4:
-							if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge());
+							if (temp.getChargingCapacity()!=null){
+								gu = gu.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								guElectronic = guElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								guService = guService.add(temp.getServiceCharge());
+							}
 							break;
 					}
 				}
@@ -1851,34 +1870,58 @@
 				for (TChargingOrderAccountingStrategy temp : list2) {
 					switch (temp.getType()){
 						case 1:
-							if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							if (temp.getChargingCapacity()!=null){
+								jian = jian.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								jianElectronic = jianElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							}
 							break;
 						case 2:
-							if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							if (temp.getChargingCapacity()!=null){
+								feng = feng.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								fengElectronic = fengElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							}
 							break;
 						case 3:
-							if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							if (temp.getChargingCapacity()!=null){
+								ping = ping.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								pingElectronic = pingElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							}
 							break;
 						case 4:
-							if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
-							if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
-							if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							if (temp.getChargingCapacity()!=null){
+								gu = gu.add(temp.getChargingCapacity());
+							}
+							if (temp.getElectrovalence()!=null){
+								guElectronic = guElectronic.add(temp.getElectrovalence());
+							}
+							if (temp.getServiceCharge()!=null){
+								guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+							}
 							break;
 					}
 				}
 			}
 		}
 
-		chargingOrderTimeVO.setChargingCapacity(electronic);
-		chargingOrderTimeVO.setPaymentAmount(paymentAmount);
-		chargingOrderTimeVO.setElectrovalence(electrovalence);
-		chargingOrderTimeVO.setServiceCharge(serviceCharge);
+		chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		chargingOrderTimeVO.setPaymentAmount(paymentAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		chargingOrderTimeVO.setServiceCharge(serviceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 		// 计算尖峰平谷充电到账占比
 
 		BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
@@ -2558,11 +2601,11 @@
 	
 	
 	@Override
-	public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end) {
+	public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end,List<Integer> siteIds) {
 
 			LocalDateTime start1 = start.atStartOfDay();
 			LocalDateTime end1 = end.atTime(LocalTime.MAX);
-		return this.baseMapper.getByDate(start1,end1);
+		return this.baseMapper.getByDate(start1,end1,siteIds);
 	}
 
 	@Override
@@ -2575,10 +2618,7 @@
 		return this.baseMapper.queryPowerLevel(siteIds,statisticsQueryDto);
 	}
 
-	@Override
-	public List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(List<Integer> siteIds) {
-		return this.baseMapper.queryOrderCountAndMoneyBySiteIdDate(siteIds);
-	}
+
 
 	@Override
 	public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
@@ -3125,13 +3165,9 @@
 			siteIds.add(-1);
 		}
 		List<Site> siteList = siteClient.getSiteAll().getData();
-		List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
 		List<TChargingPile> pileList = chargingGunClient.getAllPile().getData();
-		List<TAppUser> userList = appUserClient.getAllUser().getData();
-		List<TAppUserCar> carList = appUserCarClient.getAllCar().getData();
 		List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
-				.eq(TChargingOrder::getRechargePaymentStatus, 2));
-		List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list();
+				.eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
 		SettlementTotalVO res = new SettlementTotalVO();
 		List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
 		LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -3168,8 +3204,6 @@
 		BigDecimal orderCommission = new BigDecimal("0");
 		BigDecimal vipDiscount = new BigDecimal("0");
 		BigDecimal couponDiscount = new BigDecimal("0");
-//		tSettlementConfirm1.setIncomePercentage();
-//		tSettlementConfirm1.setTotalPercentage();
 		tSettlementConfirm1.setElectronicRefund(0);
 		// 上月成本合计
 		BigDecimal beforeCost= new BigDecimal("0");
@@ -3244,7 +3278,6 @@
 			for (TChargingPile datum : data) {
 				bigDecimal = bigDecimal.add(datum.getRatedPower());
 			}
-
 
 			tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
 			//利用率=充电量/(桩数量*功率*时间)
@@ -3334,7 +3367,6 @@
 			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
-
 		}
 		// 比较总利润 收入合计-成本合计
 		BigDecimal subtract1 = income.subtract(cost);

--
Gitblit v1.7.1