From 7a4f9541331bef779a506b38a27ed5c3373c0bec Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 15 五月 2025 13:53:22 +0800
Subject: [PATCH] 开发二级等保功能及心跳消息队列修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  153 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 119 insertions(+), 34 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 a205fb2..896a517 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
@@ -210,6 +210,9 @@
 	
 	@Resource
 	private TransactionRecordClient transactionRecordClient;
+	
+	@Resource
+	private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
 
 
 
@@ -1476,42 +1479,50 @@
 //				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 	
 	
-	    List<ChargingOrderVO> list1 = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
-		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)) {
-				serviceMoney = serviceMoney.add(service_reduce);
-				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
-			}else{
-				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();
-				LocalDateTime endTime = chargingOrderVO.getEndTime();
-				// 计算时间差 单位秒
-				long between = ChronoUnit.SECONDS.between(startTime, endTime);
-				time+=between;
-			}
-//			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
-//					.collect(Collectors.toList());
-//			for (TChargingOrderRefund tChargingOrderRefund : list2) {
-//				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
+	    Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
+//		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)) {
+//				serviceMoney = serviceMoney.add(service_reduce);
+//				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+//			}else{
+//				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();
+//				LocalDateTime endTime = chargingOrderVO.getEndTime();
+//				// 计算时间差 单位秒
+//				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+//				time+=between;
+//			}
+////			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
+////					.collect(Collectors.toList());
+////			for (TChargingOrderRefund tChargingOrderRefund : list2) {
+////				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
+////			}
+//		}
+		if(null != map){
+			tCharingOrderVO.setTotal(map.get("total")==null?BigDecimal.ZERO:(BigDecimal) map.get("total"));
+			tCharingOrderVO.setTime(map.get("time")==null?0L:(Long) map.get("time"));
+			tCharingOrderVO.setIncome((map.get("paymentMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			tCharingOrderVO.setElectronicMoney((map.get("electronicMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			tCharingOrderVO.setServiceMoney((map.get("serviceMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		}else{
+			tCharingOrderVO.setTotal(BigDecimal.ZERO);
+			tCharingOrderVO.setTime(0L);
+			tCharingOrderVO.setIncome(BigDecimal.ZERO);
+			tCharingOrderVO.setElectronicMoney(BigDecimal.ZERO);
+			tCharingOrderVO.setServiceMoney(BigDecimal.ZERO);
 		}
-		tCharingOrderVO.setTotal(total);
-		tCharingOrderVO.setTime(time);
-		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;
@@ -2614,6 +2625,36 @@
 				
 			}
 		}
+		
+		//添加汇总统计数据
+		List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", chargingOrder.getId()));
+		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);
+		BigDecimal serviceMoney = BigDecimal.ZERO;
+		BigDecimal paymentMoney = BigDecimal.ZERO;
+		long time = 0;
+		if (!chargingOrder.getOrderSource().equals(2)) {
+			serviceMoney = serviceMoney.add(service_reduce);
+			paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+		}else{
+			serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+			paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
+		}
+		if (chargingOrder.getStartTime()!=null && chargingOrder.getEndTime()!=null){
+			LocalDateTime startTime = chargingOrder.getStartTime();
+			LocalDateTime endTime = chargingOrder.getEndTime();
+			// 计算时间差 单位秒
+			time = ChronoUnit.SECONDS.between(startTime, endTime);
+		}
+		TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
+		summaryData.setChargingOrderId(chargingOrder.getId());
+		summaryData.setChargingCapacity(chargingCapacity);
+		summaryData.setChargingDuration(time);
+		summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		chargingOrderSummaryDataService.save(summaryData);
 		return R.ok();
 	}
 	
@@ -3979,4 +4020,48 @@
 		tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 		return R.ok();
 	}
+	
+	
+	
+	
+	public R addChargingOrderSummaryData(){
+		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+		List<TChargingOrder> list1 = this.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0));
+		for (TChargingOrder 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);
+			BigDecimal serviceMoney = new BigDecimal("0");
+			BigDecimal paymentMoney = new BigDecimal("0");
+			if (!chargingOrderVO.getOrderSource().equals(2)) {
+				serviceMoney = serviceMoney.add(service_reduce);
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+			}else{
+				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
+			}
+			Long time = 0L;
+			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+				LocalDateTime startTime = chargingOrderVO.getStartTime();
+				LocalDateTime endTime = chargingOrderVO.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				time+=between;
+			}
+			
+			TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
+			summaryData.setChargingOrderId(chargingOrderVO.getId());
+			summaryData.setChargingCapacity(chargingCapacity);
+			summaryData.setChargingDuration(time);
+			summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			chargingOrderSummaryDataService.save(summaryData);
+		}
+		return R.ok();
+	}
 }

--
Gitblit v1.7.1