Pu Zhibing
2025-03-19 cf32754f130955a617836cae7685c1a24979060c
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1334,13 +1334,6 @@
      dto.setSiteIds(siteIds);
      List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
      List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
       BigDecimal total = new BigDecimal("0");
       long time = 0L;
       BigDecimal electronicMoney = new BigDecimal("0");
       BigDecimal serviceMoney = new BigDecimal("0");
       BigDecimal commissionMoney = new BigDecimal("0");
       BigDecimal refundMoney = new BigDecimal("0");
       BigDecimal paymentMoney = new BigDecimal("0");
      List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
      for (ChargingOrderVO chargingOrderVO : list) {
@@ -1407,24 +1400,31 @@
         }
      }
      List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
            .eq(TChargingOrderRefund::getRefundStatus,2).list();
       BigDecimal total = new BigDecimal("0");
       long time = 0L;
       BigDecimal electronicMoney = new BigDecimal("0");
       BigDecimal serviceMoney = new BigDecimal("0");
       BigDecimal refundMoney = new BigDecimal("0");
       BigDecimal paymentMoney = new BigDecimal("0");
      for (ChargingOrderVO chargingOrderVO : list1) {
         if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
            continue;
         }
         List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.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);
         electronicMoney = electronicMoney.add(electronic_reduce);
         total = total.add(chargingCapacity);
         if (!chargingOrderVO.getOrderSource().equals(2)) {
            paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
            serviceMoney = serviceMoney.add(service_reduce);
            paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
         }else{
            paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
         }
//         if (chargingOrderVO.getRechargeAmount()!=null){
//            commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
//         }
         if (chargingOrderVO.getChargingCapacity()!=null){
            total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
            serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
            paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
         }
         if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
            LocalDateTime startTime = chargingOrderVO.getStartTime();
@@ -1438,20 +1438,12 @@
         for (TChargingOrderRefund tChargingOrderRefund : list2) {
            refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
         }
         //充电明细
         electronicMoney = electronicMoney.add(electronic_reduce);
         if (!chargingOrderVO.getOrderSource().equals(2)){
            serviceMoney = serviceMoney.add(service_reduce);
         }else{
            serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
         }
      }
      tCharingOrderVO.setTotal(total);
      tCharingOrderVO.setTime(time);
      tCharingOrderVO.setIncome(paymentMoney);
      tCharingOrderVO.setElectronicMoney(electronicMoney);
      tCharingOrderVO.setServiceMoney(serviceMoney);
      tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      pageInfo.setRecords(list);
      tCharingOrderVO.setList(pageInfo);
        return tCharingOrderVO;
@@ -1501,7 +1493,7 @@
   }
   @Override
   public Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds) {
   public Map<String, Object> countAll(LocalDateTime sixBefore,List<Integer> siteIds) {
      return this.baseMapper.countAll(sixBefore,siteIds);
   }
@@ -1520,24 +1512,24 @@
   }
   @Override
   public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end) {
   public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds) {
      LocalDateTime start1 = start.atStartOfDay();
      LocalDateTime end1 = end.atTime(LocalTime.MAX);
      return this.baseMapper.getWeekData(start1,end1);
      return this.baseMapper.getWeekData(start1,end1,siteIds);
   }
   @Override
   public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end) {
   public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds) {
      LocalDateTime start1 = start.atStartOfDay();
      LocalDateTime end1 = end.atTime(LocalTime.MAX);
      return this.baseMapper.getMonthData(start1,end1);
      return this.baseMapper.getMonthData(start1,end1,siteIds);
   }
   @Override
   public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end) {
   public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds) {
      LocalDateTime start1 = start.atStartOfDay();
      LocalDateTime end1 = end.atTime(LocalTime.MAX);
      return this.baseMapper.getYearData(start1,end1);
      return this.baseMapper.getYearData(start1,end1,siteIds);
   }
   @Resource
@@ -1802,22 +1794,18 @@
      BigDecimal gu = new BigDecimal("0");
      List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
      for (ChargingOrderListVO chargingOrderListVO : list1) {
         if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
         if (chargingOrderListVO.getPaymentAmount()!=null){
            if (chargingOrderListVO.getOrderSource().equals(2)){
               paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0"));
            }else{
               paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
            }
         }
         if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
         if (chargingOrderListVO.getServiceCharge()!=null){
            if (chargingOrderListVO.getOrderSource().equals(2)){
               serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
            }else{
               serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
            }
         List<TChargingOrderAccountingStrategy> collect = chargingOrderAccountingStrategies.stream().filter(s -> s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
         BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
         electronic = electronic.add(chargingCapacity);
         electrovalence = electrovalence.add(periodElectricPrice);
         if (chargingOrderListVO.getOrderSource().equals(2)){
            serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
            paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
         }else{
            serviceCharge = serviceCharge.add(periodServicePrice);
            paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
         }
         if (!chargingOrderListVO.getOrderSource().equals(2)){
            List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
@@ -1825,24 +1813,48 @@
            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());
                     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());
                     }
                     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());
                     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());
                     }
                     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());
                     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());
                     }
                     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());
                     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());
                     }
                     break;
               }
            }
@@ -1852,34 +1864,58 @@
            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().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                     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)));
                     }
                     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)));
                     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)));
                     }
                     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)));
                     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)));
                     }
                     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)));
                     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)));
                     }
                     break;
               }
            }
         }
      }
      chargingOrderTimeVO.setChargingCapacity(electronic);
      chargingOrderTimeVO.setPaymentAmount(paymentAmount);
      chargingOrderTimeVO.setElectrovalence(electrovalence);
      chargingOrderTimeVO.setServiceCharge(serviceCharge);
      chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      chargingOrderTimeVO.setPaymentAmount(paymentAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      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);
@@ -2559,11 +2595,11 @@
   
   
   @Override
   public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end) {
   public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end,List<Integer> siteIds) {
         LocalDateTime start1 = start.atStartOfDay();
         LocalDateTime end1 = end.atTime(LocalTime.MAX);
      return this.baseMapper.getByDate(start1,end1);
      return this.baseMapper.getByDate(start1,end1,siteIds);
   }
   @Override
@@ -3126,13 +3162,9 @@
         siteIds.add(-1);
      }
      List<Site> siteList = siteClient.getSiteAll().getData();
      List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
      List<TChargingPile> pileList = chargingGunClient.getAllPile().getData();
      List<TAppUser> userList = appUserClient.getAllUser().getData();
      List<TAppUserCar> carList = appUserCarClient.getAllCar().getData();
      List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
            .eq(TChargingOrder::getRechargePaymentStatus, 2));
      List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list();
            .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
      SettlementTotalVO res = new SettlementTotalVO();
      List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
      LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -3169,8 +3201,6 @@
      BigDecimal orderCommission = new BigDecimal("0");
      BigDecimal vipDiscount = new BigDecimal("0");
      BigDecimal couponDiscount = new BigDecimal("0");
//      tSettlementConfirm1.setIncomePercentage();
//      tSettlementConfirm1.setTotalPercentage();
      tSettlementConfirm1.setElectronicRefund(0);
      // 上月成本合计
      BigDecimal beforeCost= new BigDecimal("0");
@@ -3245,7 +3275,6 @@
         for (TChargingPile datum : data) {
            bigDecimal = bigDecimal.add(datum.getRatedPower());
         }
         tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
         //利用率=充电量/(桩数量*功率*时间)
@@ -3335,7 +3364,6 @@
         BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
         tSettlementConfirm.setIncomePercentage(subtract+"%");
         tSettlementConfirm.setIncomePercentage(subtract+"%");
      }
      // 比较总利润 收入合计-成本合计
      BigDecimal subtract1 = income.subtract(cost);