From 1b81b84edaeea9b200c622e4a34c49b4b1aaac92 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 06 三月 2025 15:28:19 +0800
Subject: [PATCH] 修改bug和漏洞修复

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  414 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 257 insertions(+), 157 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 794968a..9910897 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
@@ -67,6 +67,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -647,21 +648,19 @@
 						long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue();
 						if(times > m){
 							//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
-							serviceCharge = s_server_amount.multiply(new BigDecimal(m));
+							serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(m)));
 							rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
-							if(null != discount){
-								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
-							}
 							nowTimeMillis = null;
 						}else{
-							serviceCharge = s_server_amount.multiply(new BigDecimal(times));
-							if(null != discount){
-								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
-							}
+							serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(times)));
 							break;
 						}
 					}
 				}
+				if(null != discount){
+					discountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(discount));
+				}
+				
 				if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
 					//计算会员最大优惠金额
 					TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
@@ -672,9 +671,12 @@
 					}
 				}
 				discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
+				if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
+					data.setChargeNum(data.getChargeNum() - 1);
+					appUserVipDetailClient.updateAppUserVipDetail(data);
+				}
 			}
 		}
-		
 		
 		//机子上显示的金额为用户充值的金额+会员折扣金额
 		BigDecimal account_balance = chargingOrder.getRechargeAmount().add(discountAmount).setScale(4, RoundingMode.HALF_EVEN);
@@ -858,7 +860,7 @@
 			chargingGun.setStatus(4);
 			chargingGunClient.updateChargingGunById(chargingGun);
 			//推送状态给三方平台
-			tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
+			tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
 		}
 		redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 		this.updateById(order);
@@ -914,9 +916,27 @@
 				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
 				amount.setCurrency("CNY");
 				model.setAmount(amount);
-				R<String> orderR = wxPaymentClient.refundOrderR(model);
+				R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
 				if(200 == orderR.getCode()){
 					chargingOrderRefundService.save(chargingOrderRefund);
+					//手续费
+					Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+					Object refund_fee1 = amount1.get("refund_fee");
+					BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+					chargingOrderRefund.setRefundFee(refund_fee);
+					chargingOrderRefundService.updateById(chargingOrderRefund);
+					//回退会员折扣次数
+					if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+						TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+						GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+						getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+						getAppUserVipDetail.setVipId(appUser.getVipId());
+						TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+						if(null != data){
+							data.setChargeNum(data.getChargeNum() + 1);
+							appUserVipDetailClient.updateAppUserVipDetail(data);
+						}
+					}
 				}
 			}
 			if(2 == rechargePaymentType){
@@ -928,6 +948,19 @@
 				RefundResp resp = aliPaymentClient.refund(dto).getData();
 				if(null != resp){
 					chargingOrderRefundService.save(chargingOrderRefund);
+					//回退会员折扣次数
+					if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+						TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+						GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+						getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+						getAppUserVipDetail.setVipId(appUser.getVipId());
+						TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+						if(null != data){
+							data.setChargeNum(data.getChargeNum() + 1);
+							appUserVipDetailClient.updateAppUserVipDetail(data);
+						}
+					}
+					
 					try {
 						Thread.sleep(1000);
 					} catch (InterruptedException e) {
@@ -1237,7 +1270,6 @@
 		List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
 		List<Site> data9 = siteClient.getSiteAll().getData();
 		List<TAppUser> data6 = appUserClient.getAllUser().getData();
-		List<Partner> data7 = siteClient.getAllPartner().getData();
 		List<TAppUserCar> data4 = appUserCarClient.getAllCar().getData();
 		String startTime1 = null;
 		String startTime2 = null;
@@ -1304,14 +1336,12 @@
 		List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
 		 BigDecimal total = new BigDecimal("0");
 		 long time = 0L;
-		 BigDecimal income = new BigDecimal("0");
 		 BigDecimal electronicMoney = new BigDecimal("0");
 		 BigDecimal serviceMoney = new BigDecimal("0");
 		 BigDecimal commissionMoney = new BigDecimal("0");
 		 BigDecimal refundMoney = new BigDecimal("0");
 		 BigDecimal paymentMoney = new BigDecimal("0");
-		List<String> collect2 = list.stream().map(TChargingOrder::getCode).collect(Collectors.toList());
-		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>());
+		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
 
 		for (ChargingOrderVO chargingOrderVO : list) {
 			if (roleType == 2){
@@ -1320,10 +1350,10 @@
 					List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData();
 					chargingOrderVO.setAuthRecord(t1.get(0));
 				}
-
 			}
-			chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
-			chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("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()+"");
 			TChargingGun data3 = allGun.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null);
 			TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null);
@@ -1369,15 +1399,19 @@
 		}
 
 
-		List<Long> orderIds = list1.stream().map(TChargingOrder::getId).collect(Collectors.toList());
-		if(orderIds.isEmpty())orderIds.add(-1L);
 		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
-				.in(TChargingOrderRefund::getChargingOrderId, orderIds)
 				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 
 		for (ChargingOrderVO chargingOrderVO : list1) {
-			paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
-			commissionMoney = commissionMoney.add(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
+			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"));
+
+			}
+			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"));
 			}
@@ -1394,11 +1428,16 @@
 					refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
 			}
 			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
-			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+			if (!chargingOrderVO.getOrderSource().equals(2)){
+				serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+			}else{
+				serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
+			}
 		}
 		tCharingOrderVO.setTotal(total);
 		tCharingOrderVO.setTime(time);
-		tCharingOrderVO.setIncome(paymentMoney.subtract(commissionMoney));
+//		tCharingOrderVO.setIncome(paymentMoney.subtract(commissionMoney));
+		tCharingOrderVO.setIncome(paymentMoney);
 		tCharingOrderVO.setElectronicMoney(electronicMoney);
 		tCharingOrderVO.setServiceMoney(serviceMoney);
 		pageInfo.setRecords(list);
@@ -1481,6 +1520,8 @@
 
 	@Resource
 	private SysUserClient sysUserClient;
+
+
 	@Override
 	public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
 		String startTime1 = null;
@@ -1576,7 +1617,7 @@
 			chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
 			BigDecimal bigDecimal = new BigDecimal("0.006");
 			if (chargingOrderListVO.getOrderAmount()!=null){
-				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getPaymentAmount().multiply(bigDecimal));
+				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getRechargeAmount().multiply(bigDecimal));
 			}
 			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
@@ -1679,7 +1720,13 @@
 						"0"+"%(平)/"+
 						"0"+"%(谷)");
 			}
-
+			if (chargingOrderListVO.getOrderSource().equals(2)){
+				chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge()!=null?
+						chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_HALF_UP)
+						:new BigDecimal("0"));
+			}else{
+				chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
+			}
 		}
 		// 不分页
 		PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999);
@@ -1731,39 +1778,78 @@
 		BigDecimal feng = new BigDecimal("0");
 		BigDecimal ping = new BigDecimal("0");
 		BigDecimal gu = new BigDecimal("0");
-		List<Long> collect = list1.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
-		List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.lambdaQuery()
-				.in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list();
+		List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
 			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
 
-			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+			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)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
-			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
-					.collect(Collectors.toList());
-			for (TChargingOrderAccountingStrategy temp : list2) {
-				switch (temp.getType()){
-					case 1:
-						if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
-						if (temp.getChargingCapacity()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
-						if (temp.getChargingCapacity()!=null)jianService = jianService.add(temp.getServiceCharge());
-						break;
-					case 2:
-						if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
-						if (temp.getChargingCapacity()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
-						if (temp.getChargingCapacity()!=null)fengService = fengService.add(temp.getServiceCharge());
-						break;
-					case 3:
-						if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
-						if (temp.getChargingCapacity()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
-						if (temp.getChargingCapacity()!=null)pingService = pingService.add(temp.getServiceCharge());
-						break;
-					case 4:
-						if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
-						if (temp.getChargingCapacity()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
-						if (temp.getChargingCapacity()!=null)guService = guService.add(temp.getServiceCharge());
-						break;
+			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());
+				}
+			}
+			if (!chargingOrderListVO.getOrderSource().equals(2)){
+				List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
+						.collect(Collectors.toList());
+				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());
+							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());
+							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());
+							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());
+							break;
+					}
+				}
+			}else{
+				List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
+						.collect(Collectors.toList());
+				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)));
+							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)));
+							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)));
+							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)));
+							break;
+					}
 				}
 			}
 		}
@@ -1772,28 +1858,29 @@
 		chargingOrderTimeVO.setPaymentAmount(paymentAmount);
 		chargingOrderTimeVO.setElectrovalence(electrovalence);
 		chargingOrderTimeVO.setServiceCharge(serviceCharge);
-		// 计算尖峰平谷充电量占比
+		// 计算尖峰平谷充电到账占比
+
 		BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
 		// 计算尖峰平谷服务费占比
 		BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
-		// 计算尖峰平谷充电到账占比
+		// 计算尖峰平谷充电量占比
 		BigDecimal add2 = jian.add(feng).add(ping).add(gu);
 		if (add.compareTo(new BigDecimal("0"))!=0){
-			chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
-					+jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+			chargingOrderTimeVO.setCapacityProportion(jian+"度/"+feng+"度/"+ping+"度/"+gu+"度-"
+					+jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
 			chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-"
 					+jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
 					+fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
 					+pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
 					+guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
-			chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-"
-					+jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
-					+gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+			chargingOrderTimeVO.setElectronicProportion(jianElectronic+"元/"+fengElectronic+"元/"+pingElectronic+"元/"+guElectronic+"元-"
+					+jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+					+guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
 		}else{
 			chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
 					+"0"+"%/"
@@ -1923,7 +2010,12 @@
 		chargingOrderListInfoVO.setUid(chargingOrder.getId().toString());
 		chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
 		chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
-		chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
+		if (chargingOrder.getOrderSource().equals(2)){
+			chargingOrderListInfoVO.setSharingAmount(chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP));
+		}else{
+			chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
+
+		}
 		// 查询费用明细列表
 		List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery()
 				.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())
@@ -2006,6 +2098,9 @@
 	@GlobalTransactional(rollbackFor = Exception.class)
 	public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
+		if(null == chargingOrder){
+			return R.ok();
+		}
 		Integer status = chargingOrder.getStatus();
 		if(status == 5){
 			return R.ok();
@@ -2072,7 +2167,7 @@
 					AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
 					BeanUtils.copyProperties(strategyDetail, vo1);
 					vo1.setChargingCapacity(sharp_peak_charge);
-					lists.add(vo1);
+					lists.add(0, vo1);
 				}
 				
 				//第二天的
@@ -2199,42 +2294,19 @@
 			total = total.add(electrovalenc.add(originalServicePrice));
 		}
 		
+		BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
+		//折扣金额
+		BigDecimal discountAmount = chargingOrder.getVipDiscountAmount();
 		//原金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
-		BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
 		//总金额(充值金额+会员折扣金额)
-		BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
+		BigDecimal decimal = rechargeAmount.add(discountAmount);
 		//退款金额(已经计算了折扣优惠部分)
 		//如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
 		BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
-		BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
-		BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
-		//折扣金额
-		BigDecimal discountAmount = BigDecimal.ZERO;
-		if(null != chargingOrder.getVipDiscount()){
-			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-			//判断会员是否还有充电优惠次数
-			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
-			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
-			getAppUserVipDetail.setVipId(appUser.getVipId());
-			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
-			if(null != data && data.getChargeNum() > 0){
-				data.setChargeNum(data.getChargeNum() - 1);
-				appUserVipDetailClient.updateAppUserVipDetail(data);
-				
-				//服务费折扣
-				discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
-				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
-				BigDecimal maximumDeduction = vip.getMaximumDeduction();
-				//普通会员有最高优惠限制
-				if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
-					discountAmount = maximumDeduction;
-				}
-			}
-		}
-		//会员折扣金额
-		discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
-		payAmount = payAmount.subtract(discountAmount);
+		//支付金额
+		BigDecimal payAmount = rechargeAmount.subtract(refundAmount);
+		//实际充值服务费-会员折扣
 		periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
 
 		TChargingOrder order = new TChargingOrder();
@@ -2256,10 +2328,12 @@
 		order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		order.setStatus(5);
 		order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
-		order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN));
 		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
 		order.setChargingCapacity(vo.getTotal_electricity());
 		order.setElectricity(vo.getTotal_electricity());
+		if(discountAmount.compareTo(BigDecimal.ZERO) == 0){
+			order.setVipDiscount(BigDecimal.valueOf(1));
+		}
 		
 		//计算优惠券
 		BigDecimal couponDiscount = BigDecimal.ZERO;
@@ -2313,7 +2387,9 @@
 		}
 		//优惠券优惠金额
 		couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
+		//退款金额+优惠券
 		refundAmount = refundAmount.add(couponDiscount);
+		//实际支付金额-优惠券
 		payAmount = payAmount.subtract(couponDiscount);
 		if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
 			periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
@@ -2357,7 +2433,7 @@
 		chargingGunClient.updateChargingGunById(chargingGun);
 		//推送状态给三方平台
 		if(2 == chargingOrder.getOrderSource()){
-			tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
+			tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
 		}
 		
 		//添加积分
@@ -2427,9 +2503,15 @@
 					amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
 					amount.setCurrency("CNY");
 					model.setAmount(amount);
-					R<String> orderR = wxPaymentClient.refundOrderR(model);
-					if(200 == orderR.getCode()){
+					R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model);
+					if(200 == result.getCode()){
 						chargingOrderRefundService.save(chargingOrderRefund);
+						//手续费
+						Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount");
+						Object refund_fee1 = amount1.get("refund_fee");
+						BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+						chargingOrderRefund.setRefundFee(refund_fee);
+						chargingOrderRefundService.updateById(chargingOrderRefund);
 					}
 				}
 				if(2 == rechargePaymentType){
@@ -2585,12 +2667,18 @@
 					amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
 					amount.setCurrency("CNY");
 					model.setAmount(amount);
-					R<String> orderR = wxPaymentClient.refundOrderR(model);
+					R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
 					if(200 == orderR.getCode()){
 						tChargingOrder.setRefundStatus(2);
 						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 						this.baseMapper.updateById(tChargingOrder);
 						chargingOrderRefundService.save(chargingOrderRefund);
+						//手续费
+						Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+						Object refund_fee1 = amount1.get("refund_fee");
+						BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+						chargingOrderRefund.setRefundFee(refund_fee);
+						chargingOrderRefundService.updateById(chargingOrderRefund);
 					}
 				}
 
@@ -2647,12 +2735,18 @@
 					amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
 					amount.setCurrency("CNY");
 					model.setAmount(amount);
-					R<String> orderR = wxPaymentClient.refundOrderR(model);
+					R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
 					if(200 == orderR.getCode()){
 						tChargingOrder.setRefundStatus(2);
 						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 						shoppingOrderService.updateById(tChargingOrder);
 						shoppingOrderRefundService.save(chargingOrderRefund);
+						//手续费
+						Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+						Object refund_fee1 = amount1.get("refund_fee");
+						BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+						chargingOrderRefund.setRefundFee(refund_fee);
+						shoppingOrderRefundService.updateById(chargingOrderRefund);
 					}
 				}
 
@@ -2706,12 +2800,18 @@
 				amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
 				amount.setCurrency("CNY");
 				model.setAmount(amount);
-				R<String> orderR = wxPaymentClient.refundOrderR(model);
+				R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
 				if(200 == orderR.getCode()){
 					tChargingOrder.setRefundStatus(2);
 					tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 					vipOrderService.updateById(tChargingOrder);
 					vipOrderRefundService.save(chargingOrderRefund);
+					//手续费
+					Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+					Object refund_fee1 = amount1.get("refund_fee");
+					BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+					chargingOrderRefund.setRefundFee(refund_fee);
+					vipOrderRefundService.updateById(chargingOrderRefund);
 				}
 			}
 
@@ -2813,8 +2913,8 @@
 
 			}
 			// 累加分佣
-			if (tChargingOrder.getSharingAmount()!=null) {
-				sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+			if (tChargingOrder.getOrderSource()==2) {
+				sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
 			}
 			// 累加电费
 			if (tChargingOrder.getElectrovalence()!=null) {
@@ -2822,8 +2922,11 @@
 			}
 			// 累加服务费
 			if (tChargingOrder.getServiceCharge()!=null){
-				serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
-
+				if (tChargingOrder.getOrderSource()==2) {
+					serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+				}else{
+					serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+				}
 			}
 			// 累加会员折扣
 			if (tChargingOrder.getVipDiscountAmount()!=null){
@@ -2835,7 +2938,7 @@
 			}
 			if (tChargingOrder.getPaymentAmount()!=null){
 				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
-				orderCommission = orderCommission.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
+				orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
 						.setScale(2,BigDecimal.ROUND_DOWN));
 			}
 
@@ -2980,6 +3083,8 @@
 		return pageInfo;
 	}
 
+	@Autowired
+	private TChargingOrderService chargingOrderService;
 	@Override
 	public SettlementTotalVO settlementTotal(String time) {
 		Long userId = tokenService.getLoginUser().getUserid();
@@ -2994,6 +3099,14 @@
 		if (siteIds.isEmpty()){
 			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();
 		SettlementTotalVO res = new SettlementTotalVO();
 		List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
 		LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -3041,9 +3154,9 @@
 		for (TSettlementConfirm tSettlementConfirm : list1) {
 			tSettlementConfirm.setXuhao(i);
 			tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
-			List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
-			if (!data1.isEmpty()){
-				tSettlementConfirm.setSiteName(data1.get(0).getName());
+			Site site = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).findFirst().orElse(null);
+			if (site!=null){
+				tSettlementConfirm.setSiteName(site.getName());
 			}
 			if (tSettlementConfirm.getMeteringElectronic()!=null){
 				meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
@@ -3088,26 +3201,17 @@
 					eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
 					break;
 			}
-			List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
-			Map<String,TChargingOrder> map = new HashMap<>();
-			StringBuilder stringBuilder = new StringBuilder();
-			for (TChargingOrder tChargingOrder : tChargingOrders) {
-				stringBuilder.append(tChargingOrder.getCode()).append(",");
-
-			}
+			List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime()
+					.isBefore(tSettlementConfirm.getEndTime())
+					&& e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
 			// 充电总时长
-
-			Long temp = 1L;
-			if (StringUtils.hasLength(stringBuilder.toString())){
-				String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
-				for (String s : substring.split(",")) {
-					UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
-					if (data6!=null){
-						temp+=(data6.getCumulative_charging_time()*60);
-
-					}
-
-				}
+			Long temp = 0L;
+			for (TChargingOrder tChargingOrder : tChargingOrders) {
+				LocalDateTime startTime = tChargingOrder.getStartTime();
+				LocalDateTime endTime = tChargingOrder.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				temp+=between;
 			}
 			List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
 			// 计算充电桩的功率平均值
@@ -3119,7 +3223,7 @@
 
 			tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
 			//利用率=充电量/(桩数量*功率*时间)
-			List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData();
+			List<TChargingPile> data2 = pileList.stream().filter(e -> e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
 			BigDecimal bigDecimal2 = new BigDecimal("0");
 
 			if (data2!=null && (!data2.isEmpty())){
@@ -3235,11 +3339,16 @@
 		if (siteIds.isEmpty()){
 			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));
 		SettlementTotalVO res = new SettlementTotalVO();
 		List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
 		LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-		// 减少一个月
-		LocalDateTime minus = parse.minusMonths(1);
 		List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
 		// 合计
 		List<TSettlementConfirm> total = new ArrayList<>();
@@ -3282,7 +3391,7 @@
 		for (TSettlementConfirm tSettlementConfirm : list1) {
 			tSettlementConfirm.setXuhao(i);
 			tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
-			List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
+			List<Site> data1 = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
 			if (!data1.isEmpty()){
 				tSettlementConfirm.setSiteName(data1.get(0).getName());
 			}
@@ -3329,26 +3438,18 @@
 					eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
 					break;
 			}
-			List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
-			Map<String,TChargingOrder> map = new HashMap<>();
-			StringBuilder stringBuilder = new StringBuilder();
-			for (TChargingOrder tChargingOrder : tChargingOrders) {
-				stringBuilder.append(tChargingOrder.getCode()).append(",");
 
-			}
+			List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime()
+					.isBefore(tSettlementConfirm.getEndTime())
+					&& e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
 			// 充电总时长
-
-			Long temp = 1L;
-			if (StringUtils.hasLength(stringBuilder.toString())){
-				String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
-				for (String s : substring.split(",")) {
-					UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
-					if (data6!=null){
-						temp+=(data6.getCumulative_charging_time()*60);
-
-					}
-
-				}
+			Long temp = 0L;
+			for (TChargingOrder tChargingOrder : tChargingOrders) {
+				LocalDateTime startTime = tChargingOrder.getStartTime();
+				LocalDateTime endTime = tChargingOrder.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				temp+=between;
 			}
 			List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
 			// 计算充电桩的功率平均值
@@ -3653,7 +3754,6 @@
 		chargingOrder.setStatus(2);
 		chargingOrder.setPayTime(LocalDateTime.now());
 		chargingOrder.setChargeAmount(chargingOrder.getRechargeAmount());
-		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
 		this.save(chargingOrder);
 		
 		Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();

--
Gitblit v1.7.1