无关风月
2024-11-05 1167ff4a569fa05d557bb8cdeb00db13f68950a6
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -461,7 +461,6 @@
      chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
      chargingOrder.setOrderSource(0);
      chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
      chargingOrder.setStatus(1);
      
      Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
      Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
@@ -1275,7 +1274,7 @@
         electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
         serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
         income = income.add(chargingOrderVO.getOrderAmount());
         income = income.add(chargingOrderVO.getPaymentAmount());
@@ -1299,9 +1298,9 @@
            payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
         }
         if (payOrderDto.getType()==1&&payOrderDto.getStatus()==3){
            payOrderDto.setFinalAmount(payOrderDto.getRechargeAmount());
            payOrderDto.setOrderAmount(payOrderDto.getRechargeAmount());
            payOrderDto.setPaymentAmount(payOrderDto.getRechargeAmount());
            payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
            payOrderDto.setOrderAmount(payOrderDto.getOrderAmount());
            payOrderDto.setPaymentAmount(payOrderDto.getOrderAmount());
         }
      }
      pageInfo.setRecords(list);
@@ -1638,7 +1637,8 @@
      chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
      BigDecimal bigDecimal = new BigDecimal("0.006");
      if (chargingOrder.getOrderAmount()!=null){
         chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getOrderAmount().multiply(bigDecimal));
         BigDecimal multiply = chargingOrder.getPaymentAmount().multiply(bigDecimal);
         chargingOrderListInfoVO.setCommissionAmount(multiply.setScale(2, BigDecimal.ROUND_HALF_UP));
      }
      chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
      chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
@@ -1672,6 +1672,7 @@
            }
         }
      }
      chargingOrderListInfoVO.setChargingCapacity(chargingOrder.getChargingCapacity());
      chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
@@ -1687,10 +1688,18 @@
               }
            }
            if (!data6.isEmpty()){
               // 第一条数据soc为开始 最后一条数据soc为结束soc
               chargingOrderListInfoVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
               chargingOrderListInfoVO.setEndSoc(data6.get(0).getSoc().toString());
               chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
                  int min = 100;
                  int max = 0;
                  for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
                     if (uploadRealTimeMonitoringData.getSoc()>max){
                        max = uploadRealTimeMonitoringData.getSoc();
                     }
                     if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){
                        min = uploadRealTimeMonitoringData.getSoc();
                     }
                  }
               chargingOrderListInfoVO.setEndSoc(max+"");
               chargingOrderListInfoVO.setStartSoc(min+"");
               SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
@@ -1817,7 +1826,7 @@
      
      //获取订单的计费策略
      List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
      accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59");
      //开始处理计费明细数据和优惠数据
      chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
      SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -2491,8 +2500,8 @@
         return null;
      }
      TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
            .eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
            .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, 5));
            .eq(TChargingOrder::getDelFlag, 0).between(TChargingOrder::getStartTime, query.getStartTime(), LocalDateTime.now())
            .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
      return one;
   }
@@ -2583,18 +2592,19 @@
            couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
         }
         if (tChargingOrder.getPaymentAmount()!=null){
            paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
            paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
            orderCommission = orderCommission.add(tChargingOrder.getPaymentAmount().multiply(new BigDecimal("0.006"))
                  .setScale(2,BigDecimal.ROUND_DOWN));
         }
      }
      // 三方交易手续费 三方收费*0.6%
      commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
      // 订单手续费 订单支付金额 - 退款金额*0.6%
      orderCommission = paymentAmount.multiply(new BigDecimal("0.006").setScale(2,RoundingMode.HALF_DOWN));
      tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setServiceCharge(serviceCharge.subtract(orderCommission).setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setOrderCommission(orderCommission);
      tSettlementConfirm.setVipDiscount(vipDiscount);
      tSettlementConfirm.setCouponDiscount(couponDiscount);
@@ -2606,6 +2616,8 @@
      tSettlementConfirm.setType(dto.getType());
      if (dto.getState() == 2){
         tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
               .subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
         tSettlementConfirm.setSupplyElectronic(dto.getSupplyElectronic());
         tSettlementConfirm.setVenue(dto.getVenue());
         tSettlementConfirm.setMetering(dto.getMetering());
@@ -2620,26 +2632,26 @@
         tSettlementConfirm.setTotalService(dto.getTotalService());
         tSettlementConfirm.setRemark(dto.getRemark());
         tSettlementConfirm.setServicePartner(dto.getServicePartner());
         tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
         BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner().multiply(new BigDecimal("0.01")));
         BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner());
         BigDecimal subtract9 = new BigDecimal("1").subtract(dto.getServicePartner());
         // 总电损费用
         BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN);
         // 平台承担电损
         BigDecimal subtract1 = divide.subtract(tSettlementConfirm.getProportionMoney());
         BigDecimal multiply = dto.getServiceMoney().multiply(subtract);
         BigDecimal subtract2 = multiply.subtract(subtract1);
         tSettlementConfirm.setNewMoney(subtract2);
         tSettlementConfirm.setNewMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
               .subtract(dto.getMaintain()).multiply(subtract9).subtract(subtract1));
         tSettlementConfirm.setTotalService(dto.getTotalService());
         tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
         tSettlementConfirm.setDistribution(dto.getDistribution());
         tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
         tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getSupplyElectronic()));
         BigDecimal divide1 = tSettlementConfirm.getProportionMoney().divide(tSettlementConfirm.getProportionPartner(), 2, RoundingMode.HALF_DOWN);
         tSettlementConfirm.setProfitMoney(tSettlementConfirm.getServiceCharge().multiply(tSettlementConfirm.getServicePartner())
               .subtract(divide1));
         tSettlementConfirm.setNewSettlement(subtract2.subtract(tSettlementConfirm.getCost()));
         tSettlementConfirm.setProfitMoney(tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost()));
         tSettlementConfirm.setNewSettlement(tSettlementConfirm.getProfitMoney().add(tSettlementConfirm.getCost()));
         tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
               .subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
         tSettlementConfirmMapper.insert(tSettlementConfirm);
      }
      return tSettlementConfirm;
@@ -2731,7 +2743,9 @@
      BigDecimal beforeCost= new BigDecimal("0");
      // 上月利润合计
      BigDecimal beforeIncome= new BigDecimal("0");
      int i = 1;
      for (TSettlementConfirm tSettlementConfirm : list1) {
         tSettlementConfirm.setXuhao(i);
         tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
         List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
         if (!data1.isEmpty()){
@@ -2834,6 +2848,8 @@
         for (TSettlementConfirm settlementConfirm : list2) {
            int value = parse.getMonth().getValue();
            settlementConfirm.setMonth(value);
            settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
            tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
            if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
@@ -2856,11 +2872,11 @@
               tSettlementConfirm.setTotalPercentage(bigDecimal1+"%");            }
            beforeCost = beforeCost.add(settlementConfirm.getCost());
            beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
         }
         i++;
      }
      TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
      tSettlementConfirm.setMonth(parse.getMonthValue());
      tSettlementConfirm.setMeteringElectronic(meteringElectronic);
      tSettlementConfirm.setChargingElectronic(chargingElectronic);
      tSettlementConfirm.setLossElectronic(lossElectronic);