puzhibing
2024-08-16 731c3d326b6cc2e08e703f06d06aa453bc52cda3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1,10 +1,33 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.model.TAppUserCar;
import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.order.dto.GetMyChargingOrderList;
import com.ruoyi.order.dto.MyChargingOrderInfo;
import com.ruoyi.order.dto.MyChargingOrderList;
import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
import com.ruoyi.order.service.TChargingOrderService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
 * <p>
@@ -16,5 +39,102 @@
 */
@Service
public class TChargingOrderServiceImpl extends ServiceImpl<TChargingOrderMapper, TChargingOrder> implements TChargingOrderService {
   @Resource
   private ChargingGunClient chargingGunClient;
   @Resource
   private SiteClient siteClient;
   @Resource
   private AppUserCarClient appUserCarClient;
   @Resource
   private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
   @Resource
   private TokenService tokenService;
   /**
    * 获取小程序充电记录列表数据
    * @param query
    * @return
    */
   @Override
   public Map<String, Object> getMyChargingOrderList(GetMyChargingOrderList query) {
      Long appUserId = tokenService.getLoginUser().getUserid();
      Map<String, Object> map = new HashMap<>();
      int size = this.baseMapper.getMyChargingOrderList(appUserId, 1, null, null).size();
      map.put("number", size);
      List<TChargingOrder> list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), query.getPageCurr(), query.getPageSize());
      List<MyChargingOrderList> orderLists = new ArrayList<>();
      for (TChargingOrder tChargingOrder : list) {
         MyChargingOrderList myChargingOrderList = new MyChargingOrderList();
         myChargingOrderList.setId(tChargingOrder.getId().toString());
         myChargingOrderList.setStatus(tChargingOrder.getStatus());
         Site site = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData().get(0);
         myChargingOrderList.setTitle(site.getName());
         myChargingOrderList.setChargingDegree(tChargingOrder.getChargingCapacity());
         String name = chargingGunClient.getAllName(tChargingOrder.getChargingGunId()).getData();
         myChargingOrderList.setName(name);
         myChargingOrderList.setEndMode(tChargingOrder.getEndMode());
         BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
         myChargingOrderList.setPayMoney(payMoney);
         myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         orderLists.add(myChargingOrderList);
      }
      map.put("list", orderLists);
      return map;
   }
   /**
    * 获取充电订单明细
    * @param id 订单id
    * @return
    */
   @Override
   public MyChargingOrderInfo getMyChargingOrderInfo(String id) {
      TChargingOrder chargingOrder = this.getById(id);
      MyChargingOrderInfo myChargingOrderInfo = new MyChargingOrderInfo();
      myChargingOrderInfo.setId(id);
      myChargingOrderInfo.setCode(chargingOrder.getCode());
      myChargingOrderInfo.setCreateTime(chargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
      myChargingOrderInfo.setStatus(chargingOrder.getStatus());
      Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
      myChargingOrderInfo.setTitle(site.getName());
      TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
      myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
      String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
      myChargingOrderInfo.setName(name);
      if(null != chargingOrder.getAppUserCarId()){
         TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData().get(0);
         myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
      }else{
         myChargingOrderInfo.setLicensePlate("无");
      }
      myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
      myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
      myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount());
      myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
      myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount());
      myChargingOrderInfo.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
      myChargingOrderInfo.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
      myChargingOrderInfo.setRefundAmount(chargingOrder.getRefundAmount());
      List<TChargingOrderAccountingStrategy> stageCost = chargingOrderAccountingStrategyService.list(
            new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, id)
                  .orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
      );
      myChargingOrderInfo.setStageCost(stageCost);
      // todo 待完善
      //再MongoDB中获取数据
      myChargingOrderInfo.setCurrentAndVoltage(null);
      //再MongoDB中获取数据
      myChargingOrderInfo.setPower(null);
      myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L > System.currentTimeMillis() ? 0 : 1);
      return myChargingOrderInfo;
   }
}