Pu Zhibing
2024-10-17 e61c9a72006d91c1932e306aaf08dc7c676b2223
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1700,7 +1700,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));
@@ -1774,13 +1774,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;