liujie
2025-07-21 26526de10d49c3422a6d6c2d55fe5a2997786ad9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -23,7 +23,6 @@
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient;
import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
@@ -33,6 +32,7 @@
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.feignClient.*;
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.api.vo.ChargingOrderVo;
import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
import com.ruoyi.integration.api.vo.StartChargeResult;
import com.ruoyi.order.api.dto.SettlementConfirmAdd;
@@ -52,6 +52,10 @@
import com.ruoyi.order.service.TChargingOrderService;
import com.ruoyi.order.service.TOrderEvaluateService;
import com.ruoyi.order.service.*;
import com.ruoyi.order.util.RedisLock;
import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService;
import com.ruoyi.order.util.mongodb.service.TransactionRecordService;
import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.order.vo.OrderCountByDate;
import com.ruoyi.order.vo.StatisticsOfBatteryVO;
@@ -69,10 +73,14 @@
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -147,7 +155,7 @@
   private RedisService redisService;
   
   @Resource
   private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
   private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
   
   @Resource
   private TCECClient tcecClient;
@@ -168,7 +176,7 @@
   private AccountingStrategyClient accountingStrategyClient;
   @Resource
   private PlatformStartChargingReplyClient platformStartChargingReplyClient;
   private PlatformStartChargingReplyService platformStartChargingReplyService;
   @Resource
   private TChargingOrderRefundService chargingOrderRefundService;
@@ -203,9 +211,6 @@
   @Resource
   private SecurityDetectionClient securityDetectionClient;
   
   @Resource
   private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
   //计数器
   private Map<String, Integer> counter_map = new HashMap<>();
   
@@ -216,18 +221,23 @@
   private OperatorClient operatorClient;
   
   @Resource
   private TransactionRecordClient transactionRecordClient;
   private TransactionRecordService transactionRecordService;
   
   @Resource
   private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
   @Resource
   private TOrderAppealService orderAppealService;
   @Autowired
   private RedissonClient redissonClient;
   @Resource
   private ChargingMessageClient chargingMessageClient;
   /**
    * 获取小程序充电记录列表数据
    *
    * @param query
    * @return
    */
@@ -268,6 +278,7 @@
   
   /**
    * 获取充电订单明细
    *
    * @param id 订单id
    * @return
    */
@@ -296,8 +307,12 @@
      }else{
         myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum());
      }
      if (null != chargingOrder.getStartTime()) {
      myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
      }
      if (null != chargingOrder.getEndTime()) {
      myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
      }
      myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount());
      myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
      myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount());
@@ -309,7 +324,7 @@
                  .orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
      );
      myChargingOrderInfo.setStageCost(stageCost);
      List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
      List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
      if(null != dataList){
         //在MongoDB中获取数据
         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
@@ -361,6 +376,7 @@
   
   /**
    * 获取待开票订单列表
    *
    * @param query
    * @return
    */
@@ -394,11 +410,11 @@
   
   /**
    * 充电支付
    *
    * @param addChargingOrder
    * @return
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) {
      Long userId = tokenService.getLoginUserApplet().getUserId();
      TAppUser appUser = appUserClient.getUserById(userId).getData();
@@ -441,7 +457,7 @@
      
      //检查当前枪是否是正在使用中
      TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
            .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0));
            .in(TChargingOrder::getStatus, Arrays.asList(3)).eq(TChargingOrder::getDelFlag, 0));
      if(null != one){
         return AjaxResult.error("充电枪正在充电中,启动失败");
      }
@@ -617,6 +633,7 @@
   
   /**
    * 支付成功后的回调处理逻辑
    *
    * @param paymentType 支付方式:1=微信,2=支付宝
    * @param out_trade_no 业务流水号
    * @param transaction_id 三方支付流水号
@@ -624,7 +641,6 @@
    * @return
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) {
      TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no));
      if(chargingOrder.getRechargePaymentStatus() == 2){
@@ -767,6 +783,7 @@
   
   /**
    * 定时检测mongodb数据库数据
    *
    * @param id
    * @return
    */
@@ -777,7 +794,7 @@
      }
      String code = chargingOrder.getCode();
      String key = "AQJC_" + chargingOrder.getChargingGunId();
      List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
      List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code);
      log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
      if(data.size() != 0){
         PlatformStartChargingReply platformStartChargingReply = data.get(1);
@@ -798,24 +815,30 @@
         
         //清除计时器中的无效数据
         counter_map.remove(code);
         TChargingOrder order = new TChargingOrder();
         order.setId(id);
         order.setAppUserId(chargingOrder.getAppUserId());
         if(0 == startup_result){
            //启动失败
            preChargeCheck1.setStartupSuccess(3);
            preChargeCheck1.setFailureCause(failure_cause);
            //启动失败后取消订单,退款操作
            refund(code);
            order.setStatus(-1);
            order.setEndMode(0);
            chargingOrder.setStatus(-1);
            chargingOrder.setEndMode(0);
         }else{
            //启动成功
            preChargeCheck1.setStartupSuccess(2);
            order.setStatus(3);
            order.setStartTime(LocalDateTime.now());
            chargingOrder.setStatus(3);
            chargingOrder.setStartTime(LocalDateTime.now());
         }
         this.updateById(order);
         this.updateById(chargingOrder);
         if (chargingOrder.getStatus() == 3) {
            //推送监管平台订单状态
            new Thread(() -> {
               ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
               BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
               chargingMessageClient.pushOrderStatus(chargingOrderVo);
            }).start();
         }
         redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
         //推送三方平台订单状态
         if(2 == chargingOrder.getOrderSource()){
@@ -862,6 +885,7 @@
   
   /**
    * 修改安全检测数据
    *
    * @param securityDetection
    */
   @Override
@@ -881,6 +905,7 @@
   
   /**
    * 启动充电应答
    *
    * @param message
    */
   @Override
@@ -919,6 +944,15 @@
      }
      redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
      this.updateById(order);
      if (3 == order.getStatus()) {
         //推送监管平台订单状态
         new Thread(() -> {
            ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
            BeanUtils.copyProperties(order, chargingOrderVo);
            chargingMessageClient.pushOrderStatus(chargingOrderVo);
         }).start();
      }
      //推送三方平台启动充电结果
      if(2 == order.getOrderSource()){
         StartChargeResult result = new StartChargeResult();
@@ -936,6 +970,7 @@
   
   /**
    * 启动失败后的退款,取消订单
    *
    * @param code
    */
   public void refund(String code){
@@ -1059,7 +1094,6 @@
   }
   
   
   public void refund1(String code, BigDecimal money){
      log.info(code + ":-------------------充电成功,执行手动退款-------------------");
      TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
@@ -1145,6 +1179,7 @@
   /**
    * 启动失败后微信退款的回调处理
    *
    * @param out_refund_no
    * @param refund_id
    * @param tradeState
@@ -1170,10 +1205,9 @@
   }
   /**
    * 获取充电中的详情
    *
    * @param id
    * @return
    */
@@ -1194,7 +1228,7 @@
      chargingDetails.setCode(one.getCode());
      chargingDetails.setStatus(one.getStatus());
      chargingDetails.setChargingCost(one.getResidualAmount());
      UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
      UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode());
      if(null != data){
         chargingDetails.setChargeCurrent(data.getOutput_current());
         chargingDetails.setChargeVoltage(data.getOutput_voltage());
@@ -1219,11 +1253,11 @@
   
   /**
    * 停止充电操作
    *
    * @param id 订单id
    * @return
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public AjaxResult stopCharging(String id) {
      TChargingOrder order = this.getById(id);
      Integer status = order.getStatus();
@@ -1237,13 +1271,11 @@
      if(!order.getAppUserId().equals(userId)){
         return AjaxResult.error("权限不足");
      }
      TChargingOrder chargingOrder = new TChargingOrder();
      chargingOrder.setId(Long.valueOf(id));
      chargingOrder.setAppUserId(order.getAppUserId());
      chargingOrder.setEndTime(LocalDateTime.now());
      chargingOrder.setStatus(4);
      chargingOrder.setEndMode(1);
      this.updateById(chargingOrder);
      order.setEndTime(LocalDateTime.now());
      order.setStatus(4);
      order.setEndMode(1);
      this.updateById(order);
      String code1 = order.getCode();
      TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
      //异步线程处理停机
@@ -1269,6 +1301,7 @@
   
   /**
    * 结束充电后处理用户标签数据
    *
    * @param chargingOrder
    */
   public void editUserTag(TChargingOrder chargingOrder){
@@ -1324,6 +1357,7 @@
   
   /**
    * 推荐奖励(被推荐首单奖励)
    *
    * @param chargingOrder
    */
   public void referralReward(TChargingOrder chargingOrder){
@@ -1383,9 +1417,9 @@
   }
   
   
   /**
    * 停止充电应答结果处理
    *
    * @param platformStopChargingReply
    */
   @Override
@@ -1426,10 +1460,6 @@
         this.updateById(chargingOrder);
      }
   }
    @Override
@@ -1835,7 +1865,7 @@
         }
         // 获取开始SOC 结束soc
         if (chargingOrderListVO.getCode()!=null){
            List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
            List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode());
         if (data6!=null && !data6.isEmpty()){
            int min = 100;
@@ -2092,8 +2122,6 @@
   }
   @Override
   public ChargingOrderListInfoVO chargingInfo(String uid) {
      TChargingOrder chargingOrder= this.getById(uid);
@@ -2144,7 +2172,7 @@
      // 获取开始SOC 结束soc
      if (chargingOrder.getCode()!=null){
         List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
         List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
         if (data6!=null){
            for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
               if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
@@ -2215,10 +2243,10 @@
   /**
    * 处理充电订单实时监控数据相关的业务逻辑
    *
    * @param query
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
      if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
         //获取当前的计费策略
@@ -2243,11 +2271,7 @@
         }
         chargingOrder.setChargingCapacity(query.getCharging_degree());
         chargingOrder.setElectricity(query.getCharging_degree());
         chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
         BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder1.getCode()).getData();
         if(null != data){
            chargingOrder.setNeedElec(data.getBms_current_requirements());
         }
         chargingOrder.setTotalElectricity(new BigDecimal(query.getSoc()));
         this.updateById(chargingOrder);
      }
   }
@@ -2255,10 +2279,10 @@
   /**
    * 自动结束充电后的处理逻辑
    *
    * @param orderCode
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public void endCharge(String orderCode, Integer endMode) {
      TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
      TChargingOrder chargingOrder = new TChargingOrder();
@@ -2270,6 +2294,7 @@
   /**
    * 异常结束充电处理逻辑
    *
    * @param orderCode
    */
   @Override
@@ -2280,11 +2305,24 @@
   
   /**
    * 停止充电返回账单后计算费用
    *
    * @param vo
    */
   @Override
   @GlobalTransactional(rollbackFor = Exception.class)
   public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
      RLock lock = redissonClient.getLock("endOrder:" + vo.getTransaction_serial_number());
      boolean tryLock = false;
      try {
         tryLock = lock.tryLock(100, TimeUnit.SECONDS);
      } catch (InterruptedException e) {
         e.printStackTrace();
         lock.unlock();
         return R.ok();
      }
      if (!tryLock) {
         return R.ok();
      }
      try {
      TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
      if(null == chargingOrder){
         return R.ok();
@@ -2304,12 +2342,14 @@
      
      //获取订单的计费策略
      List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
         if (accountingStrategyDetailOrderList.isEmpty()) {
            return R.fail("计费策略为空,无法计算费用");
         }
      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");
      List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>();
      try {
         //跨天
         if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){
            //当天的
@@ -2430,10 +2470,6 @@
               lists.add(vo1);
            }
         }
      }catch (Exception e){
         e.printStackTrace();
         R.fail("处理失败");
      }
      
      //开始处理明细
      for (int i = 0; i < lists.size(); i++) {
@@ -2500,7 +2536,7 @@
      TChargingOrder order = new TChargingOrder();
      order.setId(chargingOrder.getId());
      order.setAppUserId(chargingOrder.getAppUserId());
      UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
         UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
      if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
         Integer soc = uploadRealTimeMonitoringData.getSoc();
         if(soc >= 98){
@@ -2733,7 +2769,6 @@
                  this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
               }
            }
         }
      }
      
@@ -2766,10 +2801,19 @@
      summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      chargingOrderSummaryDataService.save(summaryData);
         //推送监管平台订单状态和订单详情
         ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
         BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
         chargingMessageClient.pushOrderInfo(chargingOrderVo);
         chargingMessageClient.pushOrderStatus(chargingOrderVo);
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         lock.unlock();
      }
      return R.ok();
   }
   
   
   @Override
@@ -2791,7 +2835,6 @@
   }
   @Override
   public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
      return this.baseMapper.usersDay(statisticsQueryDto);
@@ -2806,6 +2849,7 @@
   public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) {
      return this.baseMapper.usersByQuery(statisticsQueryDto);
   }
   @Override
   public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) {
      return this.baseMapper.usersByQuery1(statisticsQueryDto);
@@ -2860,8 +2904,6 @@
   private TVipOrderService vipOrderService;
   @Resource
   private TVipOrderRefundService vipOrderRefundService;
   
   
   @Override
@@ -3116,6 +3158,7 @@
   /**
    * 根据车牌号和开始时间查询充电数据
    *
    * @param query
    * @return
    */
@@ -3373,6 +3416,7 @@
   @Autowired
   private TChargingOrderService chargingOrderService;
   @Override
   public SettlementTotalVO settlementTotal(String time) {
      Long userId = tokenService.getLoginUser().getUserid();
@@ -3548,7 +3592,8 @@
                     .divide(subtract2, 2, RoundingMode.HALF_DOWN)
                     .multiply(new BigDecimal("100"))
                     .setScale(2, RoundingMode.HALF_DOWN);
               tSettlementConfirm.setTotalPercentage(bigDecimal1+"%");            }
               tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%");
            }
            beforeCost = beforeCost.add(settlementConfirm.getCost());
            beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
         }
@@ -3606,6 +3651,7 @@
      res.setList2(total);
      return res;
   }
   @Override
   public SettlementTotalVO settlementTotalR(String time,Long userId) {
      //如果没传siteId,获取当前登陆人所有的siteIds
@@ -3785,7 +3831,8 @@
                     .divide(subtract2, 2, RoundingMode.HALF_DOWN)
                     .multiply(new BigDecimal("100"))
                     .setScale(2, RoundingMode.HALF_DOWN);
               tSettlementConfirm.setTotalPercentage(bigDecimal1+"%");            }
               tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%");
            }
            beforeCost = beforeCost.add(settlementConfirm.getCost());
            beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
         }
@@ -3917,6 +3964,7 @@
   
   /**
    * 获取充电结束页面详情
    *
    * @param id
    * @return
    */
@@ -3987,6 +4035,7 @@
   
   /**
    * 添加三方平台充电订单数据
    *
    * @param query
    */
   @Override
@@ -4098,6 +4147,7 @@
   
   /**
    * 三方平台停止充电操作
    *
    * @param startChargeSeq
    * @return
    */
@@ -4118,7 +4168,6 @@
      chargingOrder.setStatus(4);
      chargingOrder.setEndMode(1);
      this.updateById(chargingOrder);
      tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
      
      String code1 = order.getCode();
@@ -4141,6 +4190,7 @@
   
   /**
    * 获取充电后没有扣除费用的数据
    *
    * @return
    */
   @Override
@@ -4149,7 +4199,7 @@
            .ne(TChargingOrder::getElectricity, 0).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
      List<Map<String, Object>> mapList = new ArrayList<>();
      for (TChargingOrder order : list) {
         TransactionRecord transactionRecord = transactionRecordClient.findTransactionRecord(order.getCode()).getData();
         TransactionRecord transactionRecord = transactionRecordService.findOne(order.getCode());
         Map<String, Object> map = new HashMap<>();
         map.put("order", order);
         map.put("transactionRecord", transactionRecord);
@@ -4160,8 +4210,8 @@
   
   
   /**
    *
    * 手动推送订单给第三方平台
    *
    * @param code
    * @return
    */
@@ -4174,8 +4224,6 @@
      tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      return R.ok();
   }
   
   
   public R addChargingOrderSummaryData(){
@@ -4274,10 +4322,44 @@
      vo.setCounts(counts);
      return R.ok(vo);
   }
   @Override
   public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) {
      return this.baseMapper.getSumDegreeBySiteIds(siteIds);
   }
   /**
    * 获取启动失败且时间超过1小时的订单
    *
    * @return
    */
   @Override
   public List<TChargingOrder> findFailedStartupOrder() {
      return this.baseMapper.findFailedStartupOrder();
   }
   /**
    * 获取停止中的数据
    *
    * @return
    */
   @Override
   public List<TChargingOrder> findStoppedOrder() {
      return this.baseMapper.findStoppedOrder();
   }
   /**
    * 获取充电中的数据
    *
    * @return
    */
   @Override
   public List<TChargingOrder> findChargingOrder() {
      return this.baseMapper.findChargingOrder();
   }
}