From 801164d62ea165e90e77cd7da90829b1615532e3 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期五, 27 九月 2024 13:30:50 +0800
Subject: [PATCH] 9.27

---
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java  |    4 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java            |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java |   52 ++++++++++------
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GunStatusStatisticsVO.java         |    6 +-
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java    |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                |  104 ++++++++++++++++++++++++++++++++--
 6 files changed, 138 insertions(+), 34 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GunStatusStatisticsVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GunStatusStatisticsVO.java
index 1fa2248..2611653 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GunStatusStatisticsVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GunStatusStatisticsVO.java
@@ -10,12 +10,12 @@
 
 @Data
 @ApiModel(value = "设备状态统计VO")
-public class GunStatusStatisticsVO implements Serializable {
+public class GunStatusStatisticsVO  {
 
     @ApiModelProperty(value = "充电桩类型统计 key:充电模式(1=超级快充,2=快充,3=慢充)")
-    private List<Map<Integer,Integer>> modeStatistics;
+    private List<Map<String,Object>> modeStatistics;
     @ApiModelProperty(value = "状态统计 key:充电模式(1=离线,2=故障,3=充电中)")
-    private Map<Integer,Integer> statusStatistics;
+    private List<Map<String,Integer>> statusStatistics;
     @ApiModelProperty(value = "状态统计根据类型分组")
     private List<StatusModeStatisticsVO> statusModeStatistics;
 }
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
index 1da5038..ff52f59 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
@@ -34,9 +34,9 @@
 public class GlobalExceptionHandler {
 	private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
 	
-	@Value("${spring.servlet.multipart.max-file-size}")
+	@Value("${spring.servlet.multipart.max-file-size:50MB}")
 	private String maxFileSize;
-	@Value("${spring.servlet.multipart.max-request-size}")
+	@Value("${spring.servlet.multipart.max-request-size:100MB}")
 	private String maxRequestSize;
 	
 	
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index b8db1ec..76886af 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -184,7 +184,7 @@
      */
     @ApiOperation(tags = {"后台-工作台"},value = "设备状态统计")
     @PutMapping(value = "/gunStatusStatistics")
-    public AjaxResult<GunStatusStatisticsVO> gunStatusStatistics() {
+    public R<GunStatusStatisticsVO> gunStatusStatistics() {
         List<Integer> siteIds = new ArrayList<>();
         Long userId = SecurityUtils.getUserId();
         //获取当前登录的siteIds
@@ -192,7 +192,7 @@
         for (GetSiteListDTO datum : siteList1.getRecords()) {
             siteIds.add(datum.getId());
         }
-        return AjaxResult.ok(chargingGunService.gunStatusStatistics(siteIds));
+        return R.ok(chargingGunService.gunStatusStatistics(siteIds));
     }
     
     /**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java
index 1dfd10a..822212c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingGunMapper.java
@@ -37,7 +37,7 @@
      * @param siteIds
      * @return
      */
-    List<Map<Integer, Integer>> getModeStatistics(@Param("siteIds")List<Integer> siteIds);
+    List<Map<String, Object>> getModeStatistics(@Param("siteIds")List<Integer> siteIds);
 
     /**
      * 统计充电枪状态
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
index 496022c..9badeb7 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -186,16 +186,22 @@
         GunStatusStatisticsVO gunStatusStatisticsVO = new GunStatusStatisticsVO();
 
         if(CollectionUtils.isEmpty(siteIds)){
-            List<Map<Integer, Integer>> modeStatisticsNull = new ArrayList<>();
-            modeStatisticsNull.add(new HashMap<>(1,0));
-            modeStatisticsNull.add(new HashMap<>(2,0));
-            modeStatisticsNull.add(new HashMap<>(3,0));
-            gunStatusStatisticsVO.setModeStatistics(modeStatisticsNull);
-            Map<Integer, Integer> statusStatisticsNull = new HashMap<>();
-            statusStatisticsNull.put(1, 0);
-            statusStatisticsNull.put(2, 0);
-            statusStatisticsNull.put(3, 0);
-            gunStatusStatisticsVO.setStatusStatistics(statusStatisticsNull);
+//            List<Map<Integer, Integer>> modeStatisticsNull = new ArrayList<>();
+//                HashMap<Integer, Integer> objectObjectHashMap1 = new HashMap<>();
+//            objectObjectHashMap1.put(1, 0);
+//            modeStatisticsNull.add(objectObjectHashMap1);
+//            HashMap<Integer, Integer> objectObjectHashMap2= new HashMap<>();
+//            objectObjectHashMap2.put(2, 0);
+//            modeStatisticsNull.add(objectObjectHashMap2);
+//            HashMap<Integer, Integer> objectObjectHashMap3= new HashMap<>();
+//            objectObjectHashMap3.put(3, 0);
+//            modeStatisticsNull.add(objectObjectHashMap3);
+//            gunStatusStatisticsVO.setModeStatistics(modeStatisticsNull);
+//            Map<Integer, Integer> statusStatisticsNull = new HashMap<>();
+//            statusStatisticsNull.put(1, 0);
+//            statusStatisticsNull.put(2, 0);
+//            statusStatisticsNull.put(3, 0);
+//            gunStatusStatisticsVO.setStatusStatistics(statusStatisticsNull);
             List<StatusModeStatisticsVO> statusModeStatistics = new ArrayList<>();
             for (int i = 1; i < 4; i++) {
                 StatusModeStatisticsVO statusModeStatisticsVO = new StatusModeStatisticsVO();
@@ -209,35 +215,41 @@
             gunStatusStatisticsVO.setStatusModeStatistics(statusModeStatistics);
         }
 
-        List<Map<Integer, Integer>> modeStatistics = this.baseMapper.getModeStatistics(siteIds);
+        List<Map<String, Object>> modeStatistics = this.baseMapper.getModeStatistics(siteIds);
         if(CollectionUtils.isEmpty(modeStatistics)){
-            Map<Integer, Integer> modeStatistics1 = new HashMap<>(3,0);
-            modeStatistics1.put(1, 0);
-            modeStatistics1.put(2, 0);
-            modeStatistics1.put(3, 0);
+            Map<String, Object> modeStatistics1 = new HashMap<>();
+            modeStatistics1.put("1", "0");
+            modeStatistics1.put("2", "0");
+            modeStatistics1.put("3", "0");
             modeStatistics.add(modeStatistics1);
         }
         gunStatusStatisticsVO.setModeStatistics(modeStatistics);
 
-        List<Map<Integer, Integer>> statusStatistics = new ArrayList<>();
+        List<Map<String, Integer>> statusStatistics = new ArrayList<>();
         // 离线
         Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class)
                 .eq(TChargingGun::getStatus, 1));
-        statusStatistics.add(new HashMap<>(1,count.intValue()));
+        HashMap<String, Integer> objectObjectHashMap1 = new HashMap<>();
+        objectObjectHashMap1.put("1", count.intValue());
+        statusStatistics.add(objectObjectHashMap1);
 //        statusStatistics.put(1, count.intValue());
         // 故障
         count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class)
                 .eq(TChargingGun::getStatus, 7));
-        statusStatistics.add(new HashMap<>(2,count.intValue()));
+        HashMap<String, Integer> objectObjectHashMap2 = new HashMap<>();
+        objectObjectHashMap2.put("2", count.intValue());
+        statusStatistics.add(objectObjectHashMap2);
 
 //        statusStatistics.put(2, count.intValue());
         // 充电中
         count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class)
                 .in(TChargingGun::getStatus, Arrays.asList(3,4,5,6)));
-        statusStatistics.add(new HashMap<>(3,count.intValue()));
+       HashMap<String, Integer> objectObjectHashMap = new HashMap<>();
+        objectObjectHashMap.put("3", count.intValue());
+        statusStatistics.add(objectObjectHashMap);
 
 //        statusStatistics.put(3, count.intValue());
-        gunStatusStatisticsVO.setModeStatistics(statusStatistics);
+        gunStatusStatisticsVO.setStatusStatistics(statusStatistics);
 
         List<StatusModeStatisticsVO> statusModeStatisticsVOS = new ArrayList<>();
         StatusModeStatisticsVO statusModeStatistics1 = this.baseMapper.getStatusModeStatistics(siteIds,1);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index d37b582..dca9702 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -72,6 +72,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
 import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -991,11 +992,67 @@
             }
           return R.ok(charMap);
         }else if (statisticsQueryDto.getDayType()==2){
-            List<Map<String,Object>> charMap =  chargingOrderService.getDateType(siteIds,statisticsQueryDto);
-            return R.ok(charMap);
+            // 假设 chargingOrderService.getDateType() 返回的是按天的数据
+            List<Map<String, Object>> charMap1 = chargingOrderService.getDateType(siteIds, statisticsQueryDto);
+
+            // 解析 startTime 和 endTime 为 LocalDate
+            LocalDate startDate = statisticsQueryDto.getStartTime();
+            LocalDate endDate = statisticsQueryDto.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(charMap1, 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);
+            }
+
+//            return dateRangeStatistics;
+            return R.ok(dateRangeStatistics);
         }else if (statisticsQueryDto.getDayType()==3){
-            List<Map<String,Object>> charMap =  chargingOrderService.getMonthType(siteIds,statisticsQueryDto);
-            return R.ok(charMap);
+            List<Map<String,Object>> charMap1 =  chargingOrderService.getMonthType(siteIds,statisticsQueryDto);
+            // 解析 startTime 和 endTime 为 LocalDate
+            LocalDate startDate = statisticsQueryDto.getStartTime();
+            LocalDate endDate = statisticsQueryDto.getEndTime();
+
+            List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
+
+            // 遍历日期范围
+            while (!startDate.isAfter(endDate)) {
+                String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+                Map<String, Object> dailyStats = findMapWithDateValue(charMap1, 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.plusMonths(1);
+            }
+            return R.ok(dateRangeStatistics);
 
         }
         return R.ok();
@@ -1012,13 +1069,21 @@
         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 = "/work/use")
-    @ApiOperation(value = "运营情况", tags = {"管理后台-工作台"})
+    @ApiOperation(value = "利用率", tags = {"管理后台-工作台"})
     public R workUse(@RequestBody ChargingDetailQueryDto statisticsQueryDto) {
         List<Integer> siteIds = new ArrayList<>();
         if (statisticsQueryDto.getSiteId() == null) {
@@ -1042,7 +1107,34 @@
             BigDecimal result = chargingCapacity.divide(totalRatedPower, 2, RoundingMode.HALF_UP);
             map.put("chargingCapacity", result);
         });
-        return R.ok(capMap);
+
+
+
+        //
+        // 解析 startTime 和 endTime 为 LocalDate
+        LocalDate startDate = statisticsQueryDto.getStartTime();
+        LocalDate endDate = statisticsQueryDto.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(capMap, formattedDate);
+
+            if (dailyStats != null) {
+                dateRangeStatistics.add(dailyStats);
+            } else {
+                Map<String, Object> dateMap = new HashMap<>();
+                dateMap.put("time", formattedDate);
+                dateMap.put("chargingCapacity", 0);
+                dateRangeStatistics.add(dateMap);
+            }
+
+            // 移动到下一天
+            startDate = startDate.plusDays(1);
+        }
+        return R.ok(dateRangeStatistics);
 
 
     }

--
Gitblit v1.7.1