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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-08
|
*/
|
@Service
|
public class TParkingRecordServiceImpl extends ServiceImpl<TParkingRecordMapper, TParkingRecord> implements TParkingRecordService {
|
|
@Autowired
|
private SiteMapper siteMapper;
|
@Autowired
|
private TParkingLotMapper parkingLotMapper;
|
@Resource
|
private SiteClient siteClient;
|
|
@Override
|
public BigDecimal getSum(LocalDate sixBefore) {
|
return this.baseMapper.getSum(sixBefore);
|
}
|
|
@Autowired
|
private TokenService tokenService;
|
@Override
|
public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) {
|
Long userId = tokenService.getLoginUser().getUserid();
|
//如果没传siteId,获取当前登陆人所有的siteIds
|
List<Integer> siteIds = new ArrayList<>();
|
if (query.getSiteId()==null){
|
if (userId != null){
|
List<GetSiteListDTO> 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<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
|
// 查询站点的停车场id
|
if(Objects.nonNull(query.getSiteId())){
|
Site site = siteMapper.selectById(query.getSiteId());
|
if (site!=null){
|
List<TParkingLot> tParkingLots = parkingLotMapper.selectList(Wrappers.lambdaQuery(TParkingLot.class)
|
.eq(TParkingLot::getSiteId, site.getId()));
|
List<Integer> lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList());
|
if(CollectionUtils.isEmpty(lotIds)){
|
TParkingRecordPageInfoVO tParkingRecordPageInfoVO = new TParkingRecordPageInfoVO();
|
tParkingRecordPageInfoVO.setParkingRecordVOS(new PageInfo<TParkingRecordVO>());
|
return tParkingRecordPageInfoVO;
|
}
|
query.setLotIds(lotIds);
|
}
|
|
}
|
List<TParkingRecordVO> 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());
|
}
|
tParkingRecordVO.setOrderAmount(tParkingRecordVO.getOrderAmount()!=null?tParkingRecordVO.getOrderAmount():new BigDecimal("0")
|
.add(tParkingRecordVO.getTimeoutAmount()!=null?tParkingRecordVO.getTimeoutAmount():new BigDecimal("0")));
|
tParkingRecordVO.setParkingFee(tParkingRecordVO.getOrderAmount());
|
}
|
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<Map<String, Object>> parkingData(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.parkingData(parkingRecordQueryDto);
|
}
|
|
@Override
|
public List<Map<String, Object>> parkingDataByDate(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.parkingDataByDate(parkingRecordQueryDto);
|
}
|
|
@Override
|
public List<Map<String, Object>> getCarColor(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.getCarColor(parkingRecordQueryDto);
|
}
|
|
@Override
|
public List<Map<String, Object>> getOutType(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.getOutType(parkingRecordQueryDto);
|
}
|
|
@Override
|
public List<Map<String, Object>> getIsCharge(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.getIsCharge(parkingRecordQueryDto);
|
}
|
|
@Override
|
public List<Map<String, Object>> income(ParkingRecordQueryDto parkingRecordQueryDto) {
|
return this.baseMapper.income(parkingRecordQueryDto);
|
}
|
}
|