From 0f4459e4201fdc19185b7dd03215871f036acd70 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 28 五月 2025 16:45:01 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java |   84 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 81 insertions(+), 3 deletions(-)

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 e5e32fb..070eb77 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,23 +1,31 @@
 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;
 import com.ruoyi.chargingPile.api.model.TParkingLot;
 import com.ruoyi.chargingPile.api.model.TParkingRecord;
 import com.ruoyi.chargingPile.api.vo.GetParkingRecord;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.integration.barrierGate.model.CloudParkingOrder;
 import com.ruoyi.integration.barrierGate.model.CloudParkingSpace;
 import com.ruoyi.integration.barrierGate.model.OfflineParkingOrder;
 import com.ruoyi.integration.barrierGate.model.OfflineParkingSpace;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 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;
 
 /**
  * @author zhibing.pu
@@ -34,6 +42,12 @@
 	
 	@Resource
 	private ParkingLotClient parkingLotClient;
+	
+	@Resource
+	private ChargingOrderClient chargingOrderClient;
+	
+	@Resource
+	private AppUserClient appUserClient;
 	
 	
 	
@@ -72,6 +86,10 @@
 		query.setLicensePlate(order.getPlate());
 		query.setStatus(1);
 		TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
+		if(null == parkingRecord){
+			return;
+		}
+		TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
 		LocalDateTime parse = LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ISO_DATE_TIME);
 		parse = parse.plusHours(8);
 		parkingRecord.setOutParkingTime(parse);
@@ -83,6 +101,36 @@
 		parkingRecord.setStatus(BigDecimal.ZERO.compareTo(payment) == 0 ? 2 : 3);
 		parkingRecord.setOutParkingType(BigDecimal.ZERO.compareTo(payment) == 0 ? 2 : 1);
 		parkingRecord.setTitle("【停车缴费】" + payment + "元");
+		TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(parkingRecord.getLicensePlate()).getData();
+		TChargingOrder chargingOrder = null;
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		if(null != appUserCar){
+			List<TChargingOrder> data = chargingOrderClient.getCarChargingOrder(appUserCar.getId(), parkingRecord.getInParkingTime().format(formatter), LocalDateTime.now().format(formatter)).getData();
+			if(null != data && data.size() > 0){
+				chargingOrder = data.get(0);
+			}
+		}else if(StringUtils.isNotEmpty(parkingRecord.getLicensePlate())){
+			List<TChargingOrder> data = chargingOrderClient.getCarChargingOrderByPlateNum(parkingRecord.getLicensePlate(), parkingRecord.getInParkingTime().format(formatter), LocalDateTime.now().format(formatter)).getData();
+			if(null != data && data.size() > 0){
+				chargingOrder = data.get(0);
+			}
+		}
+		
+		
+		if(null != chargingOrder){
+			parkingRecord.setAppUserId(chargingOrder.getAppUserId());
+			parkingRecord.setChargingOrderId(chargingOrder.getId());
+			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+			parkingRecord.setPhone(appUser.getPhone());
+			parkingRecord.setFreeDuration(parkingLot.getChargeFreeDuration());
+			long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+			parkingRecord.setTimeoutAmount(m > parkingLot.getChargeFreeDuration() ? new BigDecimal(m - parkingLot.getChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
+		}else{
+			parkingRecord.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+			long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+			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);
 	}
 	
@@ -129,9 +177,8 @@
 		query.setLicensePlate(order.getPlatenumber());
 		query.setStatus(1);
 		TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
-		LocalDateTime parse = LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ISO_DATE_TIME);
-		parse = parse.plusHours(8);
-		parkingRecord.setOutParkingTime(parse);
+		TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
+		parkingRecord.setOutParkingTime(LocalDateTime.now());
 		parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
 		parkingRecord.setOrderAmount(new BigDecimal(order.getMoney()));
 		parkingRecord.setPayment(new BigDecimal(order.getMoney()));
@@ -139,6 +186,37 @@
 		parkingRecord.setStatus(BigDecimal.ZERO.compareTo(payment) == 0 ? 2 : 3);
 		parkingRecord.setOutParkingType(BigDecimal.ZERO.compareTo(payment) == 0 ? 2 : 1);
 		parkingRecord.setTitle("【停车缴费】" + payment + "元");
+		TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(parkingRecord.getLicensePlate()).getData();
+		TChargingOrder chargingOrder = null;
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		if(null != appUserCar){
+			List<TChargingOrder> data = chargingOrderClient.getCarChargingOrder(appUserCar.getId(), parkingRecord.getInParkingTime().format(formatter), LocalDateTime.now().format(formatter)).getData();
+			if(null != data && data.size() > 0){
+				chargingOrder = data.get(0);
+			}
+		}else if(StringUtils.isNotEmpty(parkingRecord.getLicensePlate())){
+			List<TChargingOrder> data = chargingOrderClient.getCarChargingOrderByPlateNum(parkingRecord.getLicensePlate(), parkingRecord.getInParkingTime().format(formatter), LocalDateTime.now().format(formatter)).getData();
+			if(null != data && data.size() > 0){
+				chargingOrder = data.get(0);
+			}
+		}
+		
+		if(null != chargingOrder){
+			parkingRecord.setAppUserId(chargingOrder.getAppUserId());
+			parkingRecord.setChargingOrderId(chargingOrder.getId());
+			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+			parkingRecord.setPhone(appUser.getPhone());
+			parkingRecord.setFreeDuration(parkingLot.getChargeFreeDuration());
+			long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+			parkingRecord.setTimeoutAmount(m > parkingLot.getChargeFreeDuration() ? new BigDecimal(m - parkingLot.getChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
+			
+		}else{
+			parkingRecord.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+			long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+			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);
 	}
 	

--
Gitblit v1.7.1