Pu Zhibing
5 天以前 88f8a06039ddb14cb1c8ac0c012b6d1ee8bd933a
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2323,6 +2323,10 @@
         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();
@@ -2533,31 +2537,28 @@
         //退款金额=充值金额-实际支付金额
         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));
         }
         
         //计算优惠券
@@ -2582,9 +2583,9 @@
                  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) {
@@ -2604,8 +2605,8 @@
                  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());
               }
            }
@@ -2619,13 +2620,15 @@
         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()) {
@@ -2642,9 +2645,9 @@
         }
         
         //开始将优惠券优惠的金额添加到明细中
         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();