puzhibing
2024-10-17 cd325f0b6e1ede0a350bd9182d19796864b74545
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1698,7 +1698,7 @@
      if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
         //获取当前的计费策略
         TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number()));
         BigDecimal residualAmount = chargingOrder.getResidualAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount());
         BigDecimal residualAmount = chargingOrder.getRechargeAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount());
         chargingOrder.setResidualAmount(residualAmount);
         if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){
            BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000));
@@ -1772,13 +1772,17 @@
      
      //获取订单的计费策略
      List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
      AccountingStrategyDetailOrder accountingStrategyDetailOrder = accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1);
      if(accountingStrategyDetailOrder.getEndTime().equals("00:00")){
         accountingStrategyDetailOrder.setEndTime("24:00");
      }
      chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
      for (int i = 0; i < 12; i++) {
         Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
         try {
            String time = (String) clazz.getMethod("getTime" + (i + 1)).invoke(vo);
            if(StringUtils.hasLength(time)){
               String[] split = time.split("-");
            Object invoke1 = clazz.getMethod("getTime" + (i + 1)).invoke(vo);
            if(null != invoke1){
               String[] split = invoke1.toString().split("-");
               AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[0]) && s.getEndTime().equals(split[1])).findFirst().get();
               //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
               Object invoke = null;
@@ -1894,10 +1898,10 @@
      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);
      order.setVipDiscountAmount(discountAmount);
      order.setServiceCharge(periodServicePrice_total);
      order.setElectrovalence(periodElectricPrice_total);
      order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
      order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
      order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
      order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
      order.setChargingCapacity(vo.getTotal_electricity());
      
      //计算优惠券
@@ -1935,8 +1939,8 @@
            }
         }
      }
      order.setPaymentAmount(payAmount);
      order.setRefundAmount(refundAmount);
      order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
      order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
      order.setRefundStatus(1);
      this.updateById(order);
      chargingOrder = this.getById(order.getId());