| | |
| | | return R.ok(); |
| | | } |
| | | try { |
| | | Object cacheObject = redisService.getCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number()); |
| | | if(null != cacheObject && 5 == (int)cacheObject){ |
| | | return R.ok(); |
| | | } |
| | | TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); |
| | | if (null == chargingOrder) { |
| | | return R.ok(); |
| | |
| | | //退款金额=充值金额-实际支付金额 |
| | | BigDecimal refundAmount = rechargeAmount.subtract(payAmount); |
| | | |
| | | TChargingOrder order = new TChargingOrder(); |
| | | order.setId(chargingOrder.getId()); |
| | | order.setAppUserId(chargingOrder.getAppUserId()); |
| | | UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); |
| | | if (null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()) { |
| | | Integer soc = uploadRealTimeMonitoringData.getSoc(); |
| | | if (soc >= 98) { |
| | | order.setEndMode(2); |
| | | chargingOrder.setEndMode(2); |
| | | } else if (chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) { |
| | | order.setEndMode(3); |
| | | chargingOrder.setEndMode(3); |
| | | } else { |
| | | order.setEndMode(0); |
| | | chargingOrder.setEndMode(0); |
| | | } |
| | | } |
| | | 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.HALF_EVEN)); |
| | | order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); |
| | | order.setChargingCapacity(vo.getTotal_electricity()); |
| | | order.setElectricity(vo.getTotal_electricity()); |
| | | order.setVipDiscountAmount(vipDiscountAmount_total); |
| | | chargingOrder.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); |
| | | chargingOrder.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); |
| | | chargingOrder.setStatus(5); |
| | | chargingOrder.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setChargingCapacity(vo.getTotal_electricity()); |
| | | chargingOrder.setElectricity(vo.getTotal_electricity()); |
| | | chargingOrder.setVipDiscountAmount(vipDiscountAmount_total); |
| | | if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) { |
| | | order.setVipDiscount(BigDecimal.valueOf(1)); |
| | | chargingOrder.setVipDiscount(BigDecimal.valueOf(1)); |
| | | } |
| | | |
| | | //计算优惠券 |
| | |
| | | appCoupon.setStatus(2); |
| | | appCouponClient.updateAppCoupon(appCoupon); |
| | | } else { |
| | | order.setAppCouponId(null); |
| | | order.setCouponDiscountAmount(BigDecimal.ZERO); |
| | | appCouponClient.refund(chargingOrder.getAppCouponId().toString()); |
| | | chargingOrder.setAppCouponId(null); |
| | | chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO); |
| | | } |
| | | } |
| | | if (2 == preferentialMode) { |
| | |
| | | appCoupon.setStatus(2); |
| | | appCouponClient.updateAppCoupon(appCoupon); |
| | | } else { |
| | | order.setAppCouponId(null); |
| | | order.setCouponDiscountAmount(BigDecimal.ZERO); |
| | | chargingOrder.setAppCouponId(null); |
| | | chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO); |
| | | appCouponClient.refund(chargingOrder.getAppCouponId().toString()); |
| | | } |
| | | } |
| | |
| | | if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) { |
| | | serviceCharge_total = serviceCharge_total.subtract(couponDiscount); |
| | | } |
| | | order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | order.setServiceCharge(serviceCharge_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()); |
| | | chargingOrder.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN)); |
| | | chargingOrder.setRefundStatus(1); |
| | | this.updateById(chargingOrder); |
| | | redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS); |
| | | |
| | | chargingOrder = this.getById(chargingOrder.getId()); |
| | | |
| | | //推送三方平台 |
| | | if (2 == chargingOrder.getOrderSource()) { |
| | |
| | | } |
| | | |
| | | //开始将优惠券优惠的金额添加到明细中 |
| | | BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); |
| | | BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount(); |
| | | if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) { |
| | | List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); |
| | | List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())); |
| | | BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) { |
| | | BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); |