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 |  103 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 94 insertions(+), 9 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 8e6f6e9..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
@@ -2,25 +2,32 @@
 
 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.TParkingLotVO;
 import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO;
 import com.ruoyi.chargingPile.api.vo.TParkingRecordVO;
-import com.ruoyi.chargingPile.domain.SiteMenu;
+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;
 
@@ -39,28 +46,106 @@
     private SiteMapper siteMapper;
     @Autowired
     private TParkingLotMapper parkingLotMapper;
+    @Resource
+    private SiteClient siteClient;
 
     @Override
-    public BigDecimal getSum(LocalDate sixBefore) {
-        return this.baseMapper.getSum(sixBefore);
+    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());
-            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());
-            query.setLotIds(lotIds);
+            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);
+            }
+
         }
-        PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
         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