From c29266b44ee2eb4b327f553c8f55846c9720cb60 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 17 十月 2024 14:15:08 +0800
Subject: [PATCH] 合并代码

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   43 ++++++++++++++++++++++++++++++-------------
 1 files changed, 30 insertions(+), 13 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 e1dfdfd..23bc3eb 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
@@ -1698,14 +1698,14 @@
 		if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
 			//获取当前的计费策略
 			TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number()));
-			BigDecimal residualAmount = chargingOrder.getResidualAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount());
+			BigDecimal residualAmount = chargingOrder.getRechargeAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount());
 			chargingOrder.setResidualAmount(residualAmount);
 			if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){
 				BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000));
 				chargingOrder.setChargingPower(divide);
 				chargingOrder.setCurrent(query.getOutput_current());
 				chargingOrder.setVoltage(query.getOutput_voltage());
-				chargingOrder.setPower(query.getOutput_current().multiply(query.getOutput_voltage()));
+				chargingOrder.setPower(divide);
 				chargingOrder.setNeedElec(query.getOutput_current());
 				
 				TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
@@ -1772,25 +1772,42 @@
 		
 		//获取订单的计费策略
 		List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+		AccountingStrategyDetailOrder accountingStrategyDetailOrder = accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1);
+		if(accountingStrategyDetailOrder.getEndTime().equals("00:00")){
+			accountingStrategyDetailOrder.setEndTime("24:00");
+		}
 		chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
 		for (int i = 0; i < 12; i++) {
 			Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
 			try {
-				String time = (String) clazz.getMethod("getTime" + (i + 1)).invoke(vo);
-				if(StringUtils.hasLength(time)){
-					//充电度数
-					Object invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo);
+				Object invoke1 = clazz.getMethod("getTime" + (i + 1)).invoke(vo);
+				if(null != invoke1){
+					String[] split = invoke1.toString().split("-");
+					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
+					//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
+					Object invoke = null;
+					switch (strategyDetail.getType()){
+						case 1:
+							//充电度数
+							invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo);
+							break;
+						case 2:
+							//充电度数
+							invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
+							break;
+						case 3:
+							//充电度数
+							invoke = clazz.getMethod("getFlat_peak_charge" + (i + 1)).invoke(vo);
+							break;
+						case 4:
+							//充电度数
+							invoke = clazz.getMethod("getLow_peak_charge" + (i + 1)).invoke(vo);
+							break;
+					}
 					if(null == invoke || invoke.toString().equals("0")){
 						continue;
 					}
 					BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString());
-					//充电金额
-					Object invoke1 = clazz.getMethod("getSharp_peak_amount" + (i + 1)).invoke(vo);
-					BigDecimal sharp_peak_amount = new BigDecimal(invoke1.toString());
-					
-					String[] split = time.split("-");
-					AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
-					
 					TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
 					chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
 					chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());

--
Gitblit v1.7.1