From d8786c8c3b5084bdad9ef318d056d81579e622f0 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期一, 30 九月 2024 11:11:04 +0800 Subject: [PATCH] 合并 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 121 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 117 insertions(+), 4 deletions(-) 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 28b28a6..a9d993a 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 @@ -572,7 +572,7 @@ } @ResponseBody - @GetMapping(value = "/work/shop") + @PostMapping(value = "/work/shop") @ApiOperation(value = "购物收入", tags = {"后台-工作台"}) public R workShop(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { //count近6个月的数据 @@ -790,9 +790,73 @@ //上方折现 if (statisticsQueryDto.getDayType()==1){ List<Map<String,Object>> map = chargingOrderService.usersDay(); - tCharingUserMapVO.setMap(map); + + 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(map, time); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("counts", 0); + + charMap.add(timeMap); + } + } + + List<Map<String,Object>> map1 = chargingOrderService.usersDay1(); + + List<Map<String, Object>> charMap1 = 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(map1, time); + if (mapWithTimeValue!=null){ + charMap1.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("counts", 0); + + charMap1.add(timeMap); + } + } + + + tCharingUserMapVO.setMap(charMap); + tCharingUserMapVO.setMap1(charMap1); }else { List<Map<String,Object>> map = chargingOrderService.usersByQuery(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(map, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("counts", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingUserMapVO.setMap(map); } @@ -881,18 +945,37 @@ List<Map<String,Object>> equipmentMap1 = chargingOrderService.equipmentUserType1(siteIds,statisticsQueryDto); //交流可用率 List<Map<String,Object>> equipmentMap2= chargingOrderService.equipmentUserType2(siteIds,statisticsQueryDto); + + //取出直流可用率和交流可用率的percent的平均值保留两位小数 + + double average1 = calculateAveragePercent(equipmentMap1, equipmentMap2); + System.out.printf("The average percent is: %.2f\n", average1); + + //直流故障率 List<Map<String,Object>> equipmentMapbroke1 = chargingOrderService.equipmentMapbroke1(siteIds,statisticsQueryDto); //交流故障率 List<Map<String,Object>> equipmentMapbroke2 = chargingOrderService.equipmentMapbroke2(siteIds,statisticsQueryDto); + + + double average2 = calculateAveragePercent(equipmentMapbroke1, equipmentMapbroke2); + System.out.printf("The average percent is: %.2f\n", average2); //直流离网率 List<Map<String,Object>> equipmentMapOut1 = chargingOrderService.equipmentMapOut1(siteIds,statisticsQueryDto); //交流离网率 List<Map<String,Object>> equipmentMapOut2 = chargingOrderService.equipmentMapOut2(siteIds,statisticsQueryDto); + double average3 = calculateAveragePercent(equipmentMapOut1, equipmentMapOut2); + System.out.printf("The average percent is: %.2f\n", average3); //需求电流满足率 - List<Map<String,Object>> needElec = chargingOrderService.needElec(siteIds,statisticsQueryDto); + List<Map<String,Object>> needElec1 = chargingOrderService.needElec(siteIds,statisticsQueryDto); + List<Map<String,Object>> needElec2 = chargingOrderService.needElec1(siteIds,statisticsQueryDto); + + double average4 = calculateAveragePercent(needElec1, needElec2); + System.out.printf("The average percent is: %.2f\n", average4); + + TCharingUserEquimentVO tCharingUserEquimentVO = new TCharingUserEquimentVO(); tCharingUserEquimentVO.setEquipmentMap1(equipmentMap1); @@ -901,11 +984,41 @@ tCharingUserEquimentVO.setEquipmentMapbroke2(equipmentMapbroke2); tCharingUserEquimentVO.setEquipmentMapOut1(equipmentMapOut1); tCharingUserEquimentVO.setEquipmentMapOut2(equipmentMapOut2); - tCharingUserEquimentVO.setNeedElec(needElec); + tCharingUserEquimentVO.setNeedElec1(needElec1); + tCharingUserEquimentVO.setNeedElec2(needElec2); + tCharingUserEquimentVO.setAverage1(average1); + tCharingUserEquimentVO.setAverage2(average2); + tCharingUserEquimentVO.setAverage3(average3); + tCharingUserEquimentVO.setAverage4(average4); return R.ok(tCharingUserEquimentVO); } + private static double calculateAveragePercent(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) { + int totalElements = mapList1.size() + mapList2.size(); + double sum = 0.0; + + // 累加两个列表中所有元素的 "percent" 值 + for (Map<String, Object> map : mapList1) { + if (map.containsKey("percent")) { + sum += Double.parseDouble((String) map.get("percent")); + } + } + for (Map<String, Object> map : mapList2) { + if (map.containsKey("percent")) { + sum += Double.parseDouble((String) map.get("percent")); + } + } + + // 防止除以零错误 + if (totalElements == 0) { + return 0.0; + } + + // 计算平均值 + return sum / totalElements; + } + @ResponseBody @PostMapping(value = "/work/charge") @ApiOperation(value = "上方充电数据统计", tags = {"管理后台-工作台"}) -- Gitblit v1.7.1