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> parkingData(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.parkingData(parkingRecordQueryDto); } @Override public List> parkingDataByDate(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.parkingDataByDate(parkingRecordQueryDto); } @Override public List> getCarColor(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.getCarColor(parkingRecordQueryDto); } @Override public List> getOutType(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.getOutType(parkingRecordQueryDto); } @Override public List> getIsCharge(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.getIsCharge(parkingRecordQueryDto); } @Override public List> income(ParkingRecordQueryDto parkingRecordQueryDto) { return this.baseMapper.income(parkingRecordQueryDto); } }