Pu Zhibing
2025-11-13 8ca33caf9f4c2bef4c6775d7d9eb7002673110b5
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1804,7 +1804,11 @@
      PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
      List<Site> sites = siteClient.getSiteAll().getData();
      List<Long> collect1 = list.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
      if(collect1.isEmpty()){
         collect1.add(-1L);
      }
      List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
      for (ChargingOrderListVO chargingOrderListVO : list) {
         if (roleType == 2) {
            List<Boolean> data = partnerClient.getChargingListMenu(sysUser.getObjectId(), chargingOrderListVO.getSiteId()).getData();
@@ -1840,21 +1844,13 @@
         }
         // 获取开始SOC 结束soc
         if (chargingOrderListVO.getCode() != null) {
            List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode());
            if (data6 != null && !data6.isEmpty()) {
               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();
                  }
               }
               chargingOrderListVO.setEndSoc(max + "");
               chargingOrderListVO.setStartSoc(min + "");
            UploadRealTimeMonitoringData asc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "asc");
            UploadRealTimeMonitoringData desc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "desc");
            if(null != asc){
               chargingOrderListVO.setStartSoc(asc.getSoc().toString());
            }
            if(null != desc){
               chargingOrderListVO.setEndSoc(desc.getSoc().toString());
            }
         }
         
@@ -1876,8 +1872,7 @@
               chargingOrderListVO.setPhone(data3.getPhone());
            }
         }
         List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
               .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
         List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(s->s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
         // 尖峰平谷充电量 度数
         BigDecimal jian = new BigDecimal("0");
         BigDecimal feng = new BigDecimal("0");
@@ -1925,6 +1920,9 @@
            chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
         }
      }
      // 不分页
      PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999);
      List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2);
@@ -1975,7 +1973,6 @@
      BigDecimal feng = new BigDecimal("0");
      BigDecimal ping = new BigDecimal("0");
      BigDecimal gu = new BigDecimal("0");
      List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
      for (ChargingOrderListVO chargingOrderListVO : list1) {
         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);
@@ -1991,9 +1988,7 @@
            paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
         }
         if (!chargingOrderListVO.getOrderSource().equals(2)) {
            List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
                  .collect(Collectors.toList());
            for (TChargingOrderAccountingStrategy temp : list2) {
            for (TChargingOrderAccountingStrategy temp : collect) {
               switch (temp.getType()) {
                  case 1:
                     jian = jian.add(temp.getChargingCapacity());
@@ -2018,9 +2013,7 @@
               }
            }
         } else {
            List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
                  .collect(Collectors.toList());
            for (TChargingOrderAccountingStrategy temp : list2) {
            for (TChargingOrderAccountingStrategy temp : collect) {
               BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8"));
               switch (temp.getType()) {
                  case 1:
@@ -2684,15 +2677,14 @@
            
            //开始构建退款费用
            refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
            Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
            if (refundAmount.compareTo(BigDecimal.ZERO) > 0) {
               Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
               //构建退款明细
               TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
               chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
               SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
               chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
               chargingOrderRefund.setRefundAmount(refundAmount);
               chargingOrderRefund.setRefundStatus(1);
               chargingOrderRefund.setPayType(rechargePaymentType);
               chargingOrderRefund.setRefundStatus(1);
               chargingOrderRefund.setCode(chargingOrder.getCode());
@@ -2748,6 +2740,28 @@
                     this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
                  }
               }
            }else{
               //构建退款明细
               TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
               chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
               SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
               chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
               chargingOrderRefund.setRefundAmount(refundAmount);
               chargingOrderRefund.setRefundStatus(2);
               chargingOrderRefund.setPayType(rechargePaymentType);
               chargingOrderRefund.setCode(chargingOrder.getCode());
               chargingOrderRefund.setRefundTitle("充电完成退款");
               chargingOrderRefund.setRefundContent("充电完成退款");
               chargingOrderRefund.setRefundReason("充电完成退款");
               chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
               chargingOrderRefund.setRefundTotalAmount(refundAmount);
               chargingOrderRefund.setPayAmount(rechargeAmount);
               chargingOrderRefund.setRefundTime(LocalDateTime.now());
               chargingOrderRefundService.save(chargingOrderRefund);
               chargingOrder.setRefundStatus(2);
               chargingOrder.setRefundTime(LocalDateTime.now());
               this.updateById(chargingOrder);
            }
         }