From 692775319bbf724fe5b796b9ea2a26fd4575fe52 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 06 十一月 2024 11:21:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java      |   10 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                    |  103 ++++++++++++++-----------
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java       |    5 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java                     |   32 +++++---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java        |   24 ++++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java       |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java                         |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java |   12 +-
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java              |    4 -
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java                               |    5 -
 10 files changed, 123 insertions(+), 77 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
index 1f67215..e486dd2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
@@ -68,6 +68,16 @@
 
         }
         List<TParkingRecordVO> list = this.baseMapper.pageList(query,pageInfo);
+        for (TParkingRecordVO tParkingRecordVO : list) {
+            if (tParkingRecordVO.getParkingDuration()==null){
+                tParkingRecordVO.setFeeDuration(0);
+            }else if(tParkingRecordVO.getFreeDuration()==null){
+                tParkingRecordVO.setFeeDuration(tParkingRecordVO.getParkingDuration());
+            }else{
+                tParkingRecordVO.setFeeDuration(tParkingRecordVO.getParkingDuration()-tParkingRecordVO.getFreeDuration());
+            }
+
+        }
         pageInfo.setRecords(list);
         // 查询总数
         TParkingRecordPageInfoVO infoVO = this.baseMapper.getParkingRecordCount(query);
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
index 30b9ded..e123a3c 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/CouponController.java
@@ -34,8 +34,9 @@
 	@ResponseBody
 	@PostMapping("/getCoupon")
 	public BaseResponse<GetCouponResp> getCoupon(GetCouponReq req){
-		log.warn("停车获取优惠券请求参数:{}", JSON.toJSONString(req));
+		log.info("停车获取优惠券请求参数:{}", JSON.toJSONString(req));
 		GetCouponResp coupon = couponService.getCoupon(req);
+		log.info("停车获取优惠券结果:{}", JSON.toJSONString(coupon));
 		return BaseResponse.ok(coupon);
 	}
 	
@@ -48,7 +49,7 @@
 	@ResponseBody
 	@PostMapping("/usedCoupon")
 	public BaseResponse usedCoupon(UsedCoupon req){
-		log.warn("停车使用优惠券请求参数:{}", JSON.toJSONString(req));
+		log.info("停车使用优惠券请求参数:{}", JSON.toJSONString(req));
 		couponService.usedCoupon(req);
 		return BaseResponse.ok();
 	}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
index 0979a75..1d5cd38 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/controller/ParkingOrderController.java
@@ -28,7 +28,7 @@
 	@ResponseBody
 	@PostMapping("/cloudParkingInOrder")
 	public BaseResponse cloudParkingInOrder(@RequestBody CloudParkingOrder order){
-		log.warn("云停车入场请求参数:{}", JSON.toJSONString(order));
+		log.info("云停车入场请求参数:{}", JSON.toJSONString(order));
 		parkingOrderService.cloudParkingInOrder(order);
 		return BaseResponse.ok();
 	}
@@ -41,7 +41,7 @@
 	@ResponseBody
 	@PostMapping("/cloudParkingOutOrder")
 	public BaseResponse cloudParkingOutOrder(@RequestBody CloudParkingOrder order){
-		log.warn("云停车出场请求参数:{}", JSON.toJSONString(order));
+		log.info("云停车出场请求参数:{}", JSON.toJSONString(order));
 		parkingOrderService.cloudParkingOutOrder(order);
 		return BaseResponse.ok();
 	}
@@ -54,7 +54,7 @@
 	@ResponseBody
 	@PostMapping("/cloudParkingSpace")
 	public BaseResponse cloudParkingSpace(@RequestBody CloudParkingSpace parkingSpace){
-		log.warn("云停车实时车位请求参数:{}", JSON.toJSONString(parkingSpace));
+		log.info("云停车实时车位请求参数:{}", JSON.toJSONString(parkingSpace));
 		parkingOrderService.cloudParkingSpace(parkingSpace);
 		return BaseResponse.ok();
 	}
@@ -67,7 +67,7 @@
 	@ResponseBody
 	@PostMapping("/offlineParkingInOrder")
 	public BaseResponse offlineParkingInOrder(@RequestBody OfflineParkingOrder order){
-		log.warn("线下停车场入场请求参数:{}", JSON.toJSONString(order));
+		log.info("线下停车场入场请求参数:{}", JSON.toJSONString(order));
 		parkingOrderService.offlineParkingInOrder(order);
 		OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
 		offlineParkingResponse.setCode(0);
@@ -84,7 +84,7 @@
 	@ResponseBody
 	@PostMapping("/offlineParkingOutOrder")
 	public BaseResponse offlineParkingOutOrder(@RequestBody OfflineParkingOrder order){
-		log.warn("线下停车场出场请求参数:{}", JSON.toJSONString(order));
+		log.info("线下停车场出场请求参数:{}", JSON.toJSONString(order));
 		parkingOrderService.offlineParkingOutOrder(order);
 		OfflineParkingResponse offlineParkingResponse = new OfflineParkingResponse();
 		offlineParkingResponse.setCode(0);
@@ -101,7 +101,7 @@
 	@ResponseBody
 	@PostMapping("/offlineParkingSpace")
 	public BaseResponse offlineParkingSpace(@RequestBody OfflineParkingSpace parkingSpace){
-		log.warn("线下停车场实时车位请求参数:{}", JSON.toJSONString(parkingSpace));
+		log.info("线下停车场实时车位请求参数:{}", JSON.toJSONString(parkingSpace));
 		parkingOrderService.offlineParkingSpace(parkingSpace);
 		return BaseResponse.ok();
 	}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
index f028d1a..a99be6a 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
@@ -85,10 +85,6 @@
 		}else{
 			resp.setCouponName("充电停车时长优惠");
 			parameter.setTime(parkingLot.getChargeFreeDuration());
-			data.setFreeDuration(parkingLot.getNonChargeFreeDuration());
-			data.setChargingOrderId(tChargingOrder.getId());
-			data.setAppUserId(tChargingOrder.getAppUserId());
-			parkingRecordClient.updateParkingRecord(data);
 		}
 		resp.setParameter(parameter);
 		return resp;
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
index 6628553..613a09e 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -1,6 +1,8 @@
 package com.ruoyi.integration.barrierGate.server;
 
 import com.ruoyi.account.api.feignClient.AppUserCarClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.api.model.TAppUserCar;
 import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
 import com.ruoyi.chargingPile.api.feignClient.ParkingRecordClient;
@@ -19,6 +21,7 @@
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
@@ -41,6 +44,9 @@
 	
 	@Resource
 	private ChargingOrderClient chargingOrderClient;
+	
+	@Resource
+	private AppUserClient appUserClient;
 	
 	
 	
@@ -79,6 +85,7 @@
 		query.setLicensePlate(order.getPlate());
 		query.setStatus(1);
 		TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
+		TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
 		LocalDateTime parse = LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ISO_DATE_TIME);
 		parse = parse.plusHours(8);
 		parkingRecord.setOutParkingTime(parse);
@@ -98,8 +105,25 @@
 				TChargingOrder chargingOrder = data.get(0);
 				parkingRecord.setAppUserId(chargingOrder.getAppUserId());
 				parkingRecord.setChargingOrderId(chargingOrder.getId());
+				TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+				parkingRecord.setPhone(appUser.getPhone());
+				parkingRecord.setFreeDuration(parkingLot.getChargeFreeDuration());
+				//超时占位费
+				long out = parkingRecord.getOutParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
+				long in = parkingRecord.getInParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
+				long m = (out - in) / 60;
+				parkingRecord.setTimeoutAmount(m > parkingLot.getChargeFreeDuration() ? new BigDecimal(m - parkingLot.getChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
+				
+			}else{
+				parkingRecord.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+				//超时占位费
+				long out = parkingRecord.getOutParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
+				long in = parkingRecord.getInParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
+				long m = (out - in) / 60;
+				parkingRecord.setTimeoutAmount(m > parkingLot.getNonChargeFreeDuration() ? new BigDecimal(m - parkingLot.getNonChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
 			}
 		}
+		parkingRecord.setFreeAmount(parkingRecord.getOrderAmount().subtract(parkingRecord.getPayment()));
 		parkingRecordClient.updateParkingRecord(parkingRecord);
 	}
 	
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
index ab49ae7..4bd5357 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
@@ -36,7 +36,7 @@
 		JSONObject jsonObject = JSON.parseObject(result);
 		Boolean success = jsonObject.getBoolean("success");
 		if(!success){
-			log.warn("调用开关道闸失败:\n请求参数:{}\n返回结果:{}", body, result);
+			log.info("调用开关道闸失败:\n请求参数:{}\n返回结果:{}", body, result);
 		}
 		return success;
 	}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index 7f68ade..5f3c9f4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -297,7 +297,8 @@
         for (TChargingOrder tChargingOrder : tChargingOrders) {
             // 账单信息
             paymentAmount = paymentAmount.add(tChargingOrder.getChargeAmount());
-            commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(bigDecimal1));
+            commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN))
+                    ;
             // 退款信息
             ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport();
             ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
index 12dc444..4085b34 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -154,6 +154,7 @@
             List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
             int chargingSecond = 0;
             BigDecimal paymentAmount = new BigDecimal("0");
+            BigDecimal rechargeAmount = new BigDecimal("0");
             BigDecimal orderAmount = new BigDecimal("0");
             BigDecimal electrovalence = new BigDecimal("0");
             BigDecimal serviceCharge = new BigDecimal("0");
@@ -275,6 +276,9 @@
                 if (tChargingOrder.getElectrovalence()!=null){
                     electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
                 }
+                if (tChargingOrder.getRechargeAmount()!=null){
+                    rechargeAmount = rechargeAmount.add(tChargingOrder.getRechargeAmount());
+                }
                 List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2)
                         .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list();
                 for (TChargingOrderRefund tChargingOrderRefund : list2) {
@@ -288,7 +292,8 @@
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getOrderAmount()!=null){
-                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(BigDecimal.valueOf(0.006)));
+                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(BigDecimal.valueOf(0.006))
+                            .setScale(2,BigDecimal.ROUND_DOWN));
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
@@ -311,7 +316,7 @@
                 chargingBillVO.setPaymentAmount(BigDecimal.ZERO);
             }
 
-            chargingBillListVO.setPaymentAmount(paymentAmount);
+            chargingBillListVO.setPaymentAmount(rechargeAmount);
             chargingBillListVO.setOrderAmount(paymentAmount == null?BigDecimal.ZERO:orderAmount.subtract(sharingAmount).subtract(commissionAmount));
             chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:refundAmount);
             chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence);
@@ -319,7 +324,7 @@
             chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount.setScale(2,BigDecimal.ROUND_DOWN));
             chargingBillListVO.setSharingAmount(sharingAmount == null?BigDecimal.ZERO:sharingAmount);
             chargingBillListVO.setChargingCapacity(chargingCapacity == null?BigDecimal.ZERO:chargingCapacity);
-            chargingBillListVO.setBillMoney(paymentAmount.subtract(refundAmount==null?BigDecimal.ZERO:refundAmount)
+            chargingBillListVO.setBillMoney(rechargeAmount.subtract(refundAmount==null?BigDecimal.ZERO:refundAmount)
                             .subtract(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN)).subtract(sharingAmount).setScale(2, BigDecimal.ROUND_DOWN));
             switch (chargingBillListVO.getType()){
                 case 1:
@@ -405,7 +410,8 @@
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getOrderAmount()!=null){
-                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006")));
+                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
+                            .setScale(2,BigDecimal.ROUND_DOWN));
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
@@ -638,8 +644,8 @@
                     paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
                 }
                 // 总金额
-                if (tChargingOrder.getOrderAmount()!=null){
-                orderAmount = orderAmount.add(tChargingOrder.getPaymentAmount());
+                if (tChargingOrder.getRechargeAmount()!=null){
+                orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount());
                 }
                 // 累加累计电费
                 if (tChargingOrder.getElectrovalence()!=null){
@@ -654,7 +660,8 @@
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getOrderAmount()!=null){
-                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(BigDecimal.valueOf(0.006)));
+                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(BigDecimal.valueOf(0.006))
+                            .setScale(2,BigDecimal.ROUND_DOWN));
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
@@ -672,9 +679,9 @@
             // 格式化为字符串
             String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds);
             chargingBillVO.setChargingTime(timeString);
+            chargingBillListVO.setOrderAmount(orderAmount.subtract(refundAmount));
 
-            chargingBillListVO.setPaymentAmount(orderAmount.subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN));
-            chargingBillListVO.setOrderAmount(orderAmount);
+            chargingBillListVO.setPaymentAmount(chargingBillListVO.getOrderAmount().subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN));
             chargingBillListVO.setElectrovalence(electrovalence);
             chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,BigDecimal.ROUND_DOWN));
             chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN));
@@ -697,7 +704,7 @@
             chargingBillListVO.setChargingSecond(chargingSecond);
         }
         for (ChargingBillListVO chargingBillListVO : list1) {
-            if (chargingBillListVO.getType() ==1){
+            if (chargingBillListVO.getType() ==2){
                 continue;
             }
             LocalDateTime billTime = chargingBillListVO.getBillTime();
@@ -765,8 +772,9 @@
                 }
                 // 累加平台手续费
                 if (tChargingOrder.getOrderAmount()!=null){
-                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006")));
-                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006")));
+                    commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
+                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
+                            .setScale(2,BigDecimal.ROUND_DOWN));
                 }
                 // 累加平台分佣
                 if (tChargingOrder.getSharingAmount()!=null){
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 be08b4b..4eec6ac 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
@@ -524,7 +524,7 @@
 		if(2 == addChargingOrder.getPaymentType()){
 			AliPaymentReq req = new AliPaymentReq();
 			req.setOutTradeNo(chargingOrder.getCode());
-			req.setTotalAmount(chargingOrder.getPaymentAmount().toString());
+			req.setTotalAmount(addChargingOrder.getPaymentAmount().toString());
 			req.setSubject("充电充值");
 			req.setBuyerOpenId(appUser.getAliOpenid());
 			req.setBody("充电充值");
@@ -1637,7 +1637,8 @@
 		chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
 		BigDecimal bigDecimal = new BigDecimal("0.006");
 		if (chargingOrder.getOrderAmount()!=null){
-			chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getOrderAmount().multiply(bigDecimal));
+			BigDecimal multiply = chargingOrder.getPaymentAmount().multiply(bigDecimal);
+			chargingOrderListInfoVO.setCommissionAmount(multiply.setScale(2, BigDecimal.ROUND_HALF_UP));
 		}
 		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
 		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
@@ -1671,6 +1672,7 @@
 				}
 			}
 		}
+		chargingOrderListInfoVO.setChargingCapacity(chargingOrder.getChargingCapacity());
 
 		chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
 
@@ -1686,10 +1688,18 @@
 					}
 				}
 				if (!data6.isEmpty()){
-					// 第一条数据soc为开始 最后一条数据soc为结束soc
-					chargingOrderListInfoVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
-					chargingOrderListInfoVO.setEndSoc(data6.get(0).getSoc().toString());
-					chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
+						int min = 100;
+						int max = 0;
+						for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+							if (uploadRealTimeMonitoringData.getSoc()>max){
+								max = uploadRealTimeMonitoringData.getSoc();
+							}
+							if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){
+								min = uploadRealTimeMonitoringData.getSoc();
+							}
+						}
+					chargingOrderListInfoVO.setEndSoc(max+"");
+					chargingOrderListInfoVO.setStartSoc(min+"");
 
 					SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 					for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
@@ -1919,26 +1929,26 @@
 			}
 			
 			//已充电总度数
-			BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
-			BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
+			BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.HALF_EVEN);
+			BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.HALF_EVEN);
 			BigDecimal serviceCharge = originalServicePrice;
 			BigDecimal vipDiscountAmount = BigDecimal.ZERO;
 			//计算优惠金额
 			if(null != chargingOrder.getVipDiscount()){
-				vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
-				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
+				vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.HALF_EVEN);
+				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.HALF_EVEN);
 			}
 			chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
-			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN));
-			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN));
-			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN));
-			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
+			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
+			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
 			chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
 			chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 			
-			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN));
-			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN));
-			total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN)));
+			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+			total = total.add(electrovalenc.add(originalServicePrice));
 		}
 		
 		
@@ -1949,6 +1959,7 @@
 		//总金额(充值金额+会员折扣金额)
 		BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
 		//退款金额(已经计算了折扣优惠部分)
+		//如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
 		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());
@@ -1967,8 +1978,6 @@
 				
 				//服务费折扣
 				discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
-				periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
-				
 				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 				BigDecimal maximumDeduction = vip.getMaximumDeduction();
 				//普通会员有最高优惠限制
@@ -1977,7 +1986,10 @@
 				}
 			}
 		}
+		//会员折扣金额
+		discountAmount = discountAmount.setScale(2, RoundingMode.HALF_EVEN);
 		payAmount = payAmount.subtract(discountAmount);
+		periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
 		
 		TChargingOrder order = new TChargingOrder();
 		order.setId(chargingOrder.getId());
@@ -1989,17 +2001,18 @@
 		}else{
 			order.setEndMode(1);
 		}
-		order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
+		order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
 		order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		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.DOWN));
-		order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
-		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
+		order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
+		order.setVipDiscountAmount(discountAmount);
+		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
 		order.setChargingCapacity(vo.getTotal_electricity());
 		order.setElectricity(vo.getTotal_electricity());
 		
 		//计算优惠券
+		BigDecimal couponDiscount = BigDecimal.ZERO;
 		if(null != chargingOrder.getAppCouponId()){
 			//判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
 			TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
@@ -2012,17 +2025,11 @@
 					BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
 					//如果优惠金额大于服务费金额,以服务费作为最大限制
 					if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){
-						refundAmount = refundAmount.add(periodServicePrice_total);
-						order.setCouponDiscountAmount(periodServicePrice_total);
-						payAmount = payAmount.subtract(periodServicePrice_total);
+						couponDiscount = periodServicePrice_total;
 						periodServicePrice_total = BigDecimal.ZERO;
 					}else{
-						refundAmount = refundAmount.add(couponDiscountAmount);
-						order.setCouponDiscountAmount(couponDiscountAmount);
-						payAmount = payAmount.subtract(couponDiscountAmount);
-						periodServicePrice_total = periodServicePrice_total.subtract(couponDiscountAmount);
+						couponDiscount = couponDiscountAmount;
 					}
-					
 					appCoupon.setStatus(2);
 					appCouponClient.updateAppCoupon(appCoupon);
 				}else{
@@ -2039,15 +2046,10 @@
 					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
 					//如果优惠金额大于服务费金额,以服务费作为最大限制
 					if(periodServicePrice_total.compareTo(divide) < 0){
-						refundAmount = refundAmount.add(periodServicePrice_total);
-						order.setCouponDiscountAmount(periodServicePrice_total);
-						payAmount = payAmount.subtract(periodServicePrice_total);
+						couponDiscount = periodServicePrice_total;
 						periodServicePrice_total = BigDecimal.ZERO;
 					}else{
-						refundAmount = refundAmount.add(divide);
-						order.setCouponDiscountAmount(divide);
-						payAmount = payAmount.subtract(divide);
-						periodServicePrice_total = periodServicePrice_total.subtract(divide);
+						couponDiscount = divide;
 					}
 					
 					appCoupon.setStatus(2);
@@ -2059,10 +2061,17 @@
 				}
 			}
 		}
-		
-		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
-		order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
-		order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
+		//优惠券优惠金额
+		couponDiscount = couponDiscount.setScale(2, RoundingMode.HALF_EVEN);
+		refundAmount = refundAmount.add(couponDiscount);
+		payAmount = payAmount.subtract(couponDiscount);
+		if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
+			periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
+		}
+		order.setCouponDiscountAmount(couponDiscount);
+		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.HALF_EVEN));
+		order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
+		order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
 		order.setRefundStatus(1);
 		this.updateById(order);
 		chargingOrder = this.getById(order.getId());
@@ -2076,8 +2085,8 @@
 				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
 				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
 				periodServicePrice = periodServicePrice.subtract(multiply);
-				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.DOWN));
-				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.DOWN));
+				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN));
+				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN));
 			}
 			chargingOrderAccountingStrategyService.updateBatchById(list);
 		}
@@ -2584,19 +2593,19 @@
 			}
 			if (tChargingOrder.getPaymentAmount()!=null){
 				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+				orderCommission = orderCommission.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
+						.setScale(2,BigDecimal.ROUND_DOWN));
 			}
 
 		}
 
 		// 三方交易手续费 三方收费*0.6%
 		commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
-		// 订单手续费 订单支付金额 - 退款金额*0.6%
-		orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
 		tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setServiceCharge(serviceCharge.subtract(orderCommission).setScale(2, RoundingMode.HALF_DOWN));
-		tSettlementConfirm.setOrderCommission(orderCommission.setScale(2,BigDecimal.ROUND_DOWN));
+		tSettlementConfirm.setOrderCommission(orderCommission);
 		tSettlementConfirm.setVipDiscount(vipDiscount);
 		tSettlementConfirm.setCouponDiscount(couponDiscount);
 		tSettlementConfirm.setSiteId(dto.getSiteId());
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 89a24f0..a6d2e71 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -380,10 +380,7 @@
                 return AjaxResult.success(data);
             }
         }
-
-
-        return R.ok();
-
+        return AjaxResult.success();
     }
 
     

--
Gitblit v1.7.1