From 08049e5ac27458241cf3b054c1d38dbcb6ac91ac Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 23 十月 2024 13:59:21 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   94 +++++++++++++++++++++++++++++++---------------
 1 files changed, 63 insertions(+), 31 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 99dbb12..921dedc 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
@@ -812,21 +812,21 @@
 		chargingDetails.setId(one.getId().toString());
 		TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData();
 		TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
-			Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
-			chargingDetails.setName(site.getName() + "-" + chargingPile.getName());
-			chargingDetails.setCode(one.getCode());
-			chargingDetails.setStatus(one.getStatus());
-			chargingDetails.setChargingCost(one.getResidualAmount());
-			UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
-			if(null != data){
-				chargingDetails.setChargeCurrent(data.getOutput_current());
-				chargingDetails.setChargeVoltage(data.getOutput_voltage());
-				BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000));
-				chargingDetails.setChargePower(power);
-				chargingDetails.setCompletionRatio(data.getSoc());
-				chargingDetails.setRemainingChargeTime(data.getTime_remaining());
-				chargingDetails.setChargedDegrees(data.getCharging_degree());
-				Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60);
+		Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+		chargingDetails.setName(site.getName() + "-" + chargingPile.getName());
+		chargingDetails.setCode(one.getCode());
+		chargingDetails.setStatus(one.getStatus());
+		chargingDetails.setChargingCost(one.getResidualAmount());
+		UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
+		if(null != data){
+			chargingDetails.setChargeCurrent(data.getOutput_current());
+			chargingDetails.setChargeVoltage(data.getOutput_voltage());
+			BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000), new MathContext(4, RoundingMode.HALF_EVEN));
+			chargingDetails.setChargePower(power);
+			chargingDetails.setCompletionRatio(data.getSoc());
+			chargingDetails.setRemainingChargeTime(data.getTime_remaining());
+			chargingDetails.setChargedDegrees(data.getCharging_degree());
+			Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60);
 			Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60);
 			chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m));
 		}
@@ -1242,7 +1242,7 @@
 				dto.setUserIds(carIds);
 			}
 		}
-		if (StringUtils.hasLength(dto.getPhone())){
+		if (StringUtils.hasLength(dto.getLicensePlate())){
 			List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData();
 			if(data!=null){
 				if (!data.isEmpty()){
@@ -1260,6 +1260,12 @@
 		PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
 		List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
 		for (ChargingOrderListVO chargingOrderListVO : list) {
+			chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
+			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getOrderAmount());
+			BigDecimal bigDecimal = new BigDecimal("0.006");
+			if (chargingOrderListVO.getServiceCharge()!=null){
+				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getServiceCharge().multiply(bigDecimal));
+			}
 			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount()));
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
 			List<Integer> integers = new ArrayList<>();
@@ -1377,9 +1383,9 @@
 		BigDecimal ping = new BigDecimal("0");
 		BigDecimal gu = new BigDecimal("0");
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
-			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getChargingCapacity());
+			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
 
-			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getOrderAmount());
 			if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
 			if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
 			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -1466,6 +1472,10 @@
 		TChargingOrder chargingOrder= this.getById(uid);
 
 		ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
+		BigDecimal bigDecimal = new BigDecimal("0.006");
+		if (chargingOrder.getServiceCharge()!=null){
+			chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getServiceCharge().multiply(bigDecimal));
+		}
 		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
 		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
 		if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){
@@ -1505,6 +1515,13 @@
 		if (chargingOrder.getCode()!=null){
 			List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
 			if (data6!=null){
+				for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+					if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
+							uploadRealTimeMonitoringData.getOutput_voltage()!=null){
+						uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
+								.multiply(uploadRealTimeMonitoringData.getOutput_current()));
+					}
+				}
 				if (!data6.isEmpty()){
 					// 第一条数据soc为开始 最后一条数据soc为结束soc
 					chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
@@ -1616,11 +1633,6 @@
 			return;
 		}
 		
-		//计算用户标签
-		editUserTag(chargingOrder);
-		//用户推荐奖励
-		referralReward(chargingOrder);
-		
 		//如果使用优惠券需要判断优惠券是否满足使用条件
 		//根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
 		//退款金额=优惠券金额+剩余充电金额
@@ -1712,7 +1724,8 @@
 		if(null != chargingOrder.getVipDiscount()){
 			//服务费折扣
 			discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
-			
+			periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
+
 			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
 			if(null != appUser.getVipId()){
 				//判断会员是否还有充电优惠次数
@@ -1765,9 +1778,17 @@
 			if(1 == preferentialMode){
 				//满减
 				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
-					refundAmount = refundAmount.add(tCoupon.getDiscountAmount());
-					order.setCouponDiscountAmount(tCoupon.getDiscountAmount());
-					payAmount = payAmount.subtract(tCoupon.getDiscountAmount());
+					BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
+					//如果优惠金额大于服务费金额,以服务费作为最大限制
+					if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){
+						refundAmount = refundAmount.add(periodServicePrice_total);
+						order.setCouponDiscountAmount(periodServicePrice_total);
+						payAmount = payAmount.subtract(periodServicePrice_total);
+					}else{
+						refundAmount = refundAmount.add(couponDiscountAmount);
+						order.setCouponDiscountAmount(couponDiscountAmount);
+						payAmount = payAmount.subtract(couponDiscountAmount);
+					}
 				}else{
 					order.setAppCouponId(null);
 					order.setCouponDiscountAmount(BigDecimal.ZERO);
@@ -1780,9 +1801,16 @@
 					//折扣金额
 					BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
 					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
-					refundAmount = refundAmount.add(divide);
-					order.setCouponDiscountAmount(divide);
-					payAmount = payAmount.subtract(divide);
+					//如果优惠金额大于服务费金额,以服务费作为最大限制
+					if(periodServicePrice_total.compareTo(divide) < 0){
+						refundAmount = refundAmount.add(periodServicePrice_total);
+						order.setCouponDiscountAmount(periodServicePrice_total);
+						payAmount = payAmount.subtract(periodServicePrice_total);
+					}else{
+						refundAmount = refundAmount.add(divide);
+						order.setCouponDiscountAmount(divide);
+						payAmount = payAmount.subtract(divide);
+					}
 				}else{
 					order.setAppCouponId(null);
 					order.setCouponDiscountAmount(BigDecimal.ZERO);
@@ -1830,7 +1858,11 @@
 			appUserClient.updateAppUser(appUser);
 			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
 		}
-		
+
+		//计算用户标签
+		editUserTag(chargingOrder);
+		//用户推荐奖励
+		referralReward(chargingOrder);
 		
 		//开始构建退款费用
 		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){

--
Gitblit v1.7.1