package com.ruoyi.chargingPile.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TParkingLot;
import com.ruoyi.chargingPile.api.model.TParkingRecord;
import com.ruoyi.chargingPile.api.query.ParkingRecordQuery;
import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
import com.ruoyi.chargingPile.api.vo.TParkingRecordVO;
import com.ruoyi.chargingPile.dto.ParkingRecordQueryDto;
import com.ruoyi.chargingPile.mapper.SiteMapper;
import com.ruoyi.chargingPile.mapper.TParkingLotMapper;
import com.ruoyi.chargingPile.mapper.TParkingRecordMapper;
import com.ruoyi.chargingPile.service.TParkingRecordService;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author xiaochen
* @since 2024-08-08
*/
@Service
public class TParkingRecordServiceImpl extends ServiceImpl implements TParkingRecordService {
@Autowired
private SiteMapper siteMapper;
@Autowired
private TParkingLotMapper parkingLotMapper;
@Resource
private SiteClient siteClient;
@Override
public BigDecimal getSum(List siteIds, LocalDate sixBefore) {
return this.baseMapper.getSum(siteIds, sixBefore);
}
@Autowired
private TokenService tokenService;
@Override
public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) {
Long userId = tokenService.getLoginUser().getUserid();
//如果没传siteId,获取当前登陆人所有的siteIds
List siteIds = new ArrayList<>();
if (query.getSiteId()==null){
if (userId != null){
List data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
}
}else {
siteIds.add(query.getSiteId());
}
if (siteIds.isEmpty()){
siteIds.add(-1);
}
query.setSiteIds(siteIds);
PageInfo pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
// 查询站点的停车场id
if(Objects.nonNull(query.getSiteId())){
Site site = siteMapper.selectById(query.getSiteId());
if (site!=null){
List tParkingLots = parkingLotMapper.selectList(Wrappers.lambdaQuery(TParkingLot.class)
.eq(TParkingLot::getSiteId, site.getId()));
List lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList());
if(CollectionUtils.isEmpty(lotIds)){
TParkingRecordPageInfoVO tParkingRecordPageInfoVO = new TParkingRecordPageInfoVO();
tParkingRecordPageInfoVO.setParkingRecordVOS(new PageInfo());
return tParkingRecordPageInfoVO;
}
query.setLotIds(lotIds);
}
}
List list = this.baseMapper.pageList(query,pageInfo);
for (TParkingRecordVO tParkingRecordVO : list) {
if (tParkingRecordVO.getParkingDuration()==null){
tParkingRecordVO.setFeeDuration(0);
}else if(tParkingRecordVO.getFreeDuration()==null){
tParkingRecordVO.setFeeDuration(tParkingRecordVO.getParkingDuration());
}else{
tParkingRecordVO.setFeeDuration(tParkingRecordVO.getParkingDuration()-tParkingRecordVO.getFreeDuration());
}
}
pageInfo.setRecords(list);
// 查询总数
TParkingRecordPageInfoVO infoVO = this.baseMapper.getParkingRecordCount(query);
if (infoVO==null){
infoVO = new TParkingRecordPageInfoVO();
infoVO.setTimeoutAmountSum(new BigDecimal("0"));
infoVO.setOrderCount(0);
infoVO.setParkingDurationSum(0);
infoVO.setFeeDurationSum(0);
}
infoVO.setParkingRecordVOS(pageInfo);
return infoVO;
}
@Override
public List