From c05a14bba4b86d83918d7cdc01635785bf5694c2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 03 六月 2025 00:26:08 +0800
Subject: [PATCH] 拆分mongodb查询服务

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
index 12d98fa..dfab1ea 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
@@ -1,10 +1,35 @@
 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>
@@ -17,4 +42,110 @@
 @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() {
+        return this.baseMapper.getSum();
+    }
+
+    @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);
+    }
 }

--
Gitblit v1.7.1