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); 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(); } 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(); } 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; 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); } 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; } 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(); 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){ 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()); 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(); }