无关风月
2024-09-03 85c4410b0948799a93f19f345b4ed18c253c89f3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
@@ -19,6 +20,8 @@
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.ChargingOrderGroup;
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -47,6 +50,7 @@
import com.ruoyi.order.service.TOrderEvaluateService;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import com.ruoyi.payment.api.model.RefundReq;
@@ -62,6 +66,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
@@ -95,7 +100,7 @@
   @Resource
   private ChargingPileClient chargingPileClient;
   @Resource
   private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
   
@@ -109,6 +114,8 @@
   private AliPaymentClient aliPaymentClient;
   
   @Resource
   private AppUserVipDetailClient appUserVipDetailClient;
   
@@ -120,27 +127,28 @@
   
   @Resource
   private ChargingHandshakeClient chargingHandshakeClient;
   @Resource
   private SendMessageClient sendMessageClient;
   @Resource
   private TOrderEvaluateService orderEvaluateService;
   @Resource
   private AccountingStrategyDetailClient accountingStrategyDetailClient;
   @Resource
   private PlatformStartChargingReplyClient platformStartChargingReplyClient;
   @Resource
   private TChargingOrderRefundService chargingOrderRefundService;
   //计数器
   private Map<String, Integer> counter_map = new HashMap<>();
   /**
    * 获取小程序充电记录列表数据
@@ -450,7 +458,7 @@
      chargingOrder.setRechargeSerialNumber(transaction_id);
      chargingOrder.setStatus(2);
      this.updateById(chargingOrder);
      //添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
      PreChargeCheck preChargeCheck = new PreChargeCheck();
      preChargeCheck.setElectronicLockLock(false);
@@ -472,7 +480,7 @@
      //计算电费金额和服务费
      BigDecimal serviceCharge = strategyDetail.getServiceCharge().multiply(degrees);
      BigDecimal electrovalence = strategyDetail.getElectrovalence().multiply(degrees);
      //再处理会员折扣
      BigDecimal discount = BigDecimal.ZERO;
      TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
@@ -488,8 +496,8 @@
         }
      }
      electrovalence = electrovalence.add(discount);
      TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
      //调用远程启动充电消息
      PlatformStartCharging platformStartCharging = new PlatformStartCharging();
@@ -606,11 +614,11 @@
               }
            }
         }
      }
   }
   /**
    * 启动失败后微信退款的回调处理
    * @param out_refund_no
@@ -629,10 +637,10 @@
      }
      return AjaxResult.success();
   }
   /**
    * 获取充电中的详情
    * @param id
@@ -695,21 +703,18 @@
      chargingOrder.setEndMode(1);
      this.updateById(chargingOrder);
      //调用硬件停止充电,停止成功后开始计算费用退款
      // todo 待完善
      return AjaxResult.success();
   }
   public void endCharge(){
   }
    @Override
    public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
@@ -764,8 +769,8 @@
         BigDecimal electronicMoney1 = new BigDecimal("0");
         // 单个订单累计服务费
         BigDecimal serviceMoney1 = new BigDecimal("0");
         // todo 调用第三方获取充电时长 秒
         UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
         chargingOrderVO.setChargingSecond(data5.getTime_remaining()*60L);
         // 总收入
         if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){
            income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount()));
@@ -832,6 +837,53 @@
   }
   @Override
   public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) {
      return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto);
   }
   @Override
   public List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds) {
      return this.baseMapper.charge(sixBefore,siteIds);
   }
   @Override
   public List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore) {
      return this.baseMapper.circle(siteIds,sixBefore);
   }
   @Override
   public Map<String, BigDecimal> countAll(LocalDate sixBefore) {
      return this.baseMapper.countAll(sixBefore);
   }
   @Override
   public List<Map<String, BigDecimal>> getSumByType(List<Long> chargingOrderIds) {
      return this.baseMapper.getSumByType(chargingOrderIds);
   }
   @Override
   public List<Map<String, BigDecimal>> getDateData(List<Long> chargingOrderIds) {
      return this.baseMapper.getDateData(chargingOrderIds);
   }
   @Override
   public List<Map<String, BigDecimal>> getWeekData(List<Long> chargingOrderIds) {
      return this.baseMapper.getWeekData(chargingOrderIds);
   }
   @Override
   public List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds) {
      return this.baseMapper.getMonthData(chargingOrderIds);
   }
   @Override
   public List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds) {
      return this.baseMapper.getYearData(chargingOrderIds);
   }
   @Override
   public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
      String startTime1 = null;
      String startTime2 = null;
@@ -854,6 +906,7 @@
      PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
      for (ChargingOrderListVO chargingOrderListVO : list) {
         chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
         List<Integer> integers = new ArrayList<>();
         integers.add(chargingOrderListVO.getSiteId());
         List<Site> data = siteClient.getSiteByIds(integers).getData();
@@ -865,7 +918,21 @@
         if (data2 != null && data1 != null) {
            chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
         }
         // todo 充电时长 调用第三方获取
         // 获取充电时间
         UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderListVO.getCode()).getData();
         if (data5!=null){
            if (data5.getTime_remaining()!=null){
               chargingOrderListVO.setChargingSecond(data5.getTime_remaining()*60L);
            }
         }
         // 获取开始SOC 结束soc
         List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
         if (!data6.isEmpty()){
            // 第一条数据soc为开始 最后一条数据soc为结束soc
            chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString());
            chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
         }
         TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
         List<Long> carId = new ArrayList<>();
         if (chargingOrderListVO.getAppUserCarId() != null) {
@@ -992,8 +1059,58 @@
      chargingOrderTimeVO.setList(pageInfo);
      return chargingOrderTimeVO;
   }
   @Override
   public ChargingOrderListInfoVO chargingInfo(String uid) {
      TChargingOrder chargingOrder= this.getById(uid);
      ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
      chargingOrderListInfoVO.setCode(chargingOrder.getCode());
      List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData();
      if (!data.isEmpty()){
         chargingOrderListInfoVO.setSiteName(data.get(0).getName());
         chargingOrderListInfoVO.setSiteAddress(data.get(0).getAddress());
      }
      TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
      TChargingPile data2 = chargingPileClient.getChargingPileById(data1.getChargingPileId()).getData();
      if (data1!=null){
         chargingOrderListInfoVO.setGunCode(data1.getCode());
         chargingOrderListInfoVO.setTerminalName(data2.getName()+data1.getName());
      }
      chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
      // todo 周一完善
      // 获取开始SOC 结束soc
      List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
      if (!data6.isEmpty()){
         // 第一条数据soc为开始 最后一条数据soc为结束soc
         chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
         chargingOrderListInfoVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
         chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
         chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+"");
      }
      if (chargingOrder.getAppUserCarId()!=null){
         List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData();
         if (!data3.isEmpty())chargingOrderListInfoVO.setLicensePlate(data3.get(0).getLicensePlate());
      }
      chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime());
      chargingOrderListInfoVO.setEndTime(chargingOrder.getEndTime());
      chargingOrderListInfoVO.setId(chargingOrder.getId());
      chargingOrderListInfoVO.setUid(chargingOrder.getId().toString());
      chargingOrderListInfoVO.setList(data6);
      chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
      chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
      chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
      chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getCommissionAmount());
      // 查询费用明细列表
      List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery()
            .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())
            .list();
      chargingOrderListInfoVO.setList1(list);
      return chargingOrderListInfoVO;
   }
   /**
    * 处理充电订单实时监控数据相关的业务逻辑
    * @param query