Pu Zhibing
2025-04-17 64d91e3c3414b928254d36c6a2c9cb0dd7262dcf
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -731,7 +731,7 @@
         Integer counter = counter_map.get(code);
         PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
         //5分钟内还未插枪则取消充电,退回金额。
         if(failure_cause == 5 && (null == counter || counter < 300)){
         if(failure_cause == 5 && (null == counter || counter < 1800)){
            counter = (null == counter ? 0 : counter) + 1;
            counter_map.put(code, counter);
            //启动失败
@@ -772,7 +772,7 @@
         log.info(code + ":-------------------未上传开启充电结果-------------------" + counter);
         PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
         //5分钟内未启动成功,退回金额。
         if(null == counter || counter < 300){
         if(null == counter || counter < 1800){
            counter = (null == counter ? 0 : counter) + 1;
            boot_failed_map.put(code, counter);
            //启动失败
@@ -1819,48 +1819,24 @@
            for (TChargingOrderAccountingStrategy temp : list2) {
               switch (temp.getType()){
                  case 1:
                     if (temp.getChargingCapacity()!=null){
                        jian = jian.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        jianElectronic = jianElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        jianService = jianService.add(temp.getServiceCharge());
                     }
                     jian = jian.add(temp.getChargingCapacity());
                     jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     jianService = jianService.add(temp.getPeriodServicePrice());
                     break;
                  case 2:
                     if (temp.getChargingCapacity()!=null){
                        feng = feng.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        fengElectronic = fengElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        fengService = fengService.add(temp.getServiceCharge());
                     }
                     feng = feng.add(temp.getChargingCapacity());
                     fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     fengService = fengService.add(temp.getPeriodServicePrice());
                     break;
                  case 3:
                     if (temp.getChargingCapacity()!=null){
                        ping = ping.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        pingElectronic = pingElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        pingService = pingService.add(temp.getServiceCharge());
                     }
                     ping = ping.add(temp.getChargingCapacity());
                     pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     pingService = pingService.add(temp.getPeriodServicePrice());
                     break;
                  case 4:
                     if (temp.getChargingCapacity()!=null){
                        gu = gu.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        guElectronic = guElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        guService = guService.add(temp.getServiceCharge());
                     }
                     gu = gu.add(temp.getChargingCapacity());
                     guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     guService = guService.add(temp.getPeriodServicePrice());
                     break;
               }
            }
@@ -1868,50 +1844,27 @@
            List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
                  .collect(Collectors.toList());
            for (TChargingOrderAccountingStrategy temp : list2) {
               BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8"));
               switch (temp.getType()){
                  case 1:
                     if (temp.getChargingCapacity()!=null){
                        jian = jian.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        jianElectronic = jianElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                     }
                     jian = jian.add(temp.getChargingCapacity());
                     jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     jianService = jianService.add(multiply);
                     break;
                  case 2:
                     if (temp.getChargingCapacity()!=null){
                        feng = feng.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        fengElectronic = fengElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                     }
                     feng = feng.add(temp.getChargingCapacity());
                     fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     fengService = fengService.add(multiply);
                     break;
                  case 3:
                     if (temp.getChargingCapacity()!=null){
                        ping = ping.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        pingElectronic = pingElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                     }
                     ping = ping.add(temp.getChargingCapacity());
                     pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     pingService = pingService.add(multiply);
                     break;
                  case 4:
                     if (temp.getChargingCapacity()!=null){
                        gu = gu.add(temp.getChargingCapacity());
                     }
                     if (temp.getElectrovalence()!=null){
                        guElectronic = guElectronic.add(temp.getElectrovalence());
                     }
                     if (temp.getServiceCharge()!=null){
                        guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                     }
                     gu = gu.add(temp.getChargingCapacity());
                     guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     guService = guService.add(multiply);
                     break;
               }
            }
@@ -1923,7 +1876,6 @@
      chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      chargingOrderTimeVO.setServiceCharge(serviceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      // 计算尖峰平谷充电到账占比
      BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
      // 计算尖峰平谷服务费占比
      BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
@@ -2915,6 +2867,8 @@
   @Override
   public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) {
      List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
      List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
      TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
      if (!data.isEmpty()){
         tSettlementConfirm.setSiteName(data.get(0).getName());
@@ -2970,25 +2924,37 @@
      // 支付订单金额 需要减去退款金额
      BigDecimal paymentAmount = new BigDecimal("0");
      for (TChargingOrder tChargingOrder : tChargingOrders) {
         // 累加充电总度数
         if (tChargingOrder.getChargingCapacity()!=null){
            chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
         if(null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()){
            continue;
         }
         List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.getId())).collect(Collectors.toList());
         BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
         // 累加充电总度数
         chargingElectronic = chargingElectronic.add(chargingCapacity);
         // 累加分佣
         if (tChargingOrder.getOrderSource()==2) {
            sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
            sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
         }
         // 累加电费
         if (tChargingOrder.getElectrovalence()!=null) {
         electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
         electrovalence = electrovalence.add(electronic_reduce);
         if (tChargingOrder.getPaymentAmount()!=null && tChargingOrder.getOrderSource()!=2){
            paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
         }
         if (tChargingOrder.getRechargeAmount()!=null){
            orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
                  .setScale(2,BigDecimal.ROUND_DOWN));
         }
         // 累加服务费
         if (tChargingOrder.getServiceCharge()!=null){
            if (tChargingOrder.getOrderSource()==2) {
               serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
               serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2,BigDecimal.ROUND_DOWN));
               paymentAmount = paymentAmount.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
            }else{
               serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
               serviceCharge = serviceCharge.add(service_reduce);
            }
         }
         // 累加会员折扣
@@ -2999,11 +2965,7 @@
         if (tChargingOrder.getCouponDiscountAmount()!=null){
            couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
         }
         if (tChargingOrder.getPaymentAmount()!=null){
            paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
            orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
                  .setScale(2,BigDecimal.ROUND_DOWN));
         }
      }