From 3244b550596e0330031b3f4547356927df83b0ad Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 19 五月 2025 11:48:35 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 103 insertions(+), 6 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 bb2f544..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 @@ -35,6 +43,12 @@ @Resource private ParkingLotClient parkingLotClient; + @Resource + private ChargingOrderClient chargingOrderClient; + + @Resource + private AppUserClient appUserClient; + @@ -47,12 +61,15 @@ TParkingRecord parkingRecord = new TParkingRecord(); parkingRecord.setLicensePlate(order.getPlate()); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String code = "TC" + Math.random() * 1000 + sdf.format(new Date()); + String code = "TC" + Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date()); parkingRecord.setCode(code); parkingRecord.setVehicleColor(order.getPlateColor()); TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData(); + parkingRecord.setName(data.getName()); parkingRecord.setParkingLotId(data.getId()); - parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + LocalDateTime parse = LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ISO_DATE_TIME); + parse = parse.plusHours(8); + parkingRecord.setInParkingTime(parse); parkingRecord.setStatus(1); parkingRecord.setCreateTime(LocalDateTime.now()); parkingRecord.setSerialnumber(order.getId()); @@ -69,11 +86,51 @@ query.setLicensePlate(order.getPlate()); query.setStatus(1); TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData(); - parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + 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); parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime())); parkingRecord.setOrderAmount(new BigDecimal(order.getReceivable())); + parkingRecord.setPayment(new BigDecimal(order.getPayment())); + parkingRecord.setPayType(order.getPayType()); BigDecimal payment = new BigDecimal(order.getPayment()); 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); } @@ -95,12 +152,15 @@ TParkingRecord parkingRecord = new TParkingRecord(); parkingRecord.setLicensePlate(order.getPlatenumber()); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String code = "TC" + Math.random() * 1000 + sdf.format(new Date()); + String code = "TC" + Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date()); parkingRecord.setCode(code); parkingRecord.setVehicleColor(order.getPlatecolor()); TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData(); + parkingRecord.setName(data.getName()); parkingRecord.setParkingLotId(data.getId()); - parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + LocalDateTime parse = LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ISO_DATE_TIME); + parse = parse.plusHours(8); + parkingRecord.setInParkingTime(parse); parkingRecord.setStatus(1); parkingRecord.setCreateTime(LocalDateTime.now()); parkingRecord.setSerialnumber(order.getId()); @@ -117,9 +177,46 @@ query.setLicensePlate(order.getPlatenumber()); query.setStatus(1); TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData(); - parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + 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())); + BigDecimal payment = new BigDecimal(order.getMoney()); + 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