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>
|
* 服务实现类
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-07
|
*/
|
@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.getLoginUserApplet().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;
|
}
|
}
|