From 72a76cd3ad51a520100ec59481d99118ffebd33c Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 28 十月 2024 15:18:50 +0800
Subject: [PATCH] 合并代码

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 106 insertions(+), 5 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
index dc6ca04..3ead497 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -21,6 +21,7 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.log.enums.OperatorType;
 import com.ruoyi.order.api.query.TOrderInvoiceQuery;
 import com.ruoyi.order.api.vo.TCharingUserEquimentVO;
 import com.ruoyi.order.api.vo.TOrderInvoiceVO;
@@ -35,7 +36,10 @@
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -59,8 +63,7 @@
     @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表")
     @PostMapping(value = "/page")
     public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) {
-        Page<TParkingRecord> page = parkingRecordService.lambdaQuery().ge(query.getStart() != null, TParkingRecord::getCreateTime, query.getStart())
-                .le(query.getEnd() != null, TParkingRecord::getCreateTime, query.getEnd())
+        Page<TParkingRecord> page = parkingRecordService.lambdaQuery()
                 .like(query.getLicensePlate() != null, TParkingRecord::getLicensePlate, query.getLicensePlate())
                 .eq(query.getStatus() != null, TParkingRecord::getStatus, query.getStatus())
                 .eq(query.getOutParkingType() != null, TParkingRecord::getOutParkingType, query.getOutParkingType())
@@ -80,6 +83,7 @@
     }
     @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出")
     @PutMapping("/export")
+    @Log(title = "【停车记录】导出停车记录", businessType = BusinessType.EXPORT,operatorType = OperatorType.MANAGE)
     public void export(@RequestBody ParkingRecordQuery query)
     {
         List<TParkingRecordVO> records = parkingRecordService.pageList(query).getParkingRecordVOS().getRecords();
@@ -130,6 +134,7 @@
 
     @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "出场")
     @GetMapping(value = "/out")
+    @Log(title = "【停车记录】修改出场状态", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
     public R out(Long id) {
         TParkingRecord byId = parkingRecordService.getById(id);
         byId.setStatus(2);
@@ -192,9 +197,62 @@
 
         if (parkingRecordQueryDto.getDayType()==1) {
             List<Map<String, Object>> maps = parkingRecordService.parkingData(parkingRecordQueryDto);
-            tParkLotRecordVO.setMaps(maps);
+
+
+            List<Map<String, Object>> charMap = new ArrayList<>();
+            // 生成从 "00:00" 到 "23:00" 的时间数据
+            for (int hour = 0; hour < 24; hour++) {
+                String time = String.format("%02d:00", hour);
+                Map<String, Object> mapWithTimeValue = findMapWithTimeValue(maps, time);
+                if (mapWithTimeValue!=null){
+                    charMap.add(mapWithTimeValue);
+                }else {
+                    Map<String, Object> timeMap = new HashMap<>();
+                    timeMap.put("time", time); // 初始化值为 null
+                    timeMap.put("orders", 0);
+                    timeMap.put("timeoutAmount", 0);
+
+                    charMap.add(timeMap);
+                }
+            }
+
+            tParkLotRecordVO.setMaps(charMap);
         }else {
             List<Map<String, Object>> maps = parkingRecordService.parkingDataByDate(parkingRecordQueryDto);
+            if(parkingRecordQueryDto.getDayType()==2||parkingRecordQueryDto.getDayType()==3){
+                //按日
+                // 解析 startTime 和 endTime 为 LocalDate
+                LocalDate startDate = parkingRecordQueryDto.getStartTime();
+                LocalDate endDate = parkingRecordQueryDto.getEndTime();
+
+                List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
+
+                // 遍历日期范围
+                while (!startDate.isAfter(endDate)) {
+                    String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    Map<String, Object> dailyStats = findMapWithDateValue(maps, formattedDate);
+
+                    if (dailyStats != null) {
+                        dateRangeStatistics.add(dailyStats);
+                    } else {
+                        Map<String, Object> dateMap = new HashMap<>();
+                        dateMap.put("time", formattedDate);
+                        dateMap.put("electrovalence", 0);
+                        dateMap.put("orderCount", 0);
+                        dateMap.put("servicecharge", 0);
+                        dateMap.put("electricity", 0);
+                        dateRangeStatistics.add(dateMap);
+                    }
+
+                    // 移动到下一天
+                    startDate = startDate.plusDays(1);
+                }
+                tParkLotRecordVO.setMaps(dateRangeStatistics);
+
+            }else {
+
+            }
+
             tParkLotRecordVO.setMaps(maps);
         }
 
@@ -214,14 +272,57 @@
         return R.ok(tParkLotRecordVO);
 
     }
+    private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1,String timeValue) {
+        for (Map<String, Object> map : charMap1) {
+            if (map.containsKey("time") && map.get("time").equals(timeValue)) {
+                return map;
+            }
+        }
+        return null; // 如果没有找到,返回 null
+    }
 
-
+    private Map<String, Object> findMapWithDateValue(List<Map<String, Object>> list, String date) {
+        for (Map<String, Object> map : list) {
+            if (date.equals(map.get("time"))) {
+                return map;
+            }
+        }
+        return null;
+    }
     @ResponseBody
     @PostMapping(value = "/parking/work")
     @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
     public R<TParkLotRecordCountVo> work(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
         List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId())
-                .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list();
+                .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime())
+                .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list();
+        int count1 = list.size();
+        //统计出list中chargingOrderId为null的数据个数
+        int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size();
+        int count3 = list.stream().filter(item -> item.getOutParkingType() == 2).collect(Collectors.toList()).size();
+        //计算出list中parkingDuration的总和
+        int count4 = 0;
+        for (TParkingRecord tParkingRecord : list) {
+            count4 = count4+tParkingRecord.getParkingDuration();
+        }
+        //计算出list中orderAmount的总和
+        BigDecimal count5 = list.stream().map(TParkingRecord::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        TParkLotRecordCountVo tParkLotRecordCountVo = new TParkLotRecordCountVo();
+        tParkLotRecordCountVo.setCount1(count1);
+        tParkLotRecordCountVo.setCount2(count2);
+        tParkLotRecordCountVo.setCount3(count3);
+        tParkLotRecordCountVo.setCount4(count4);
+        tParkLotRecordCountVo.setCount5(count5);
+
+        return R.ok(tParkLotRecordCountVo);
+
+    }
+    @ResponseBody
+    @PostMapping(value = "/parking/work1")
+    @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"})
+    public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){
+        List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list();
         int count1 = list.size();
         //统计出list中chargingOrderId为null的数据个数
         int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size();

--
Gitblit v1.7.1