From 801164d62ea165e90e77cd7da90829b1615532e3 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期五, 27 九月 2024 13:30:50 +0800 Subject: [PATCH] 9.27 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 140 insertions(+), 17 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 f011021..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.*; @@ -584,7 +585,7 @@ } @ResponseBody - @GetMapping(value = "/work/shop") + @PostMapping(value = "/work/shop") @ApiOperation(value = "购物收入", tags = {"后台-工作台"}) public R workShop(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { //count近6个月的数据 @@ -625,7 +626,7 @@ @ResponseBody @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) - public AjaxResult<TCharingOrderVO> watchChargingOrder(@RequestBody ChargingOrderQuery dto) { + public R<List<ChargingOrderAndUploadRealTimeMonitoringDataDto>> watchChargingOrder(@RequestBody ChargingOrderQuery dto) { Integer page = dto.getPageCurr(); Integer pageSize = dto.getPageSize(); List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); @@ -652,7 +653,7 @@ } - return AjaxResult.success(res); + return R.ok(dtos); } @@ -971,23 +972,118 @@ siteIds.add(statisticsQueryDto.getSiteId()); } if (statisticsQueryDto.getDayType()==1) { - List<Map<String,Object>> charMap = chargingOrderService.getHourType(siteIds,statisticsQueryDto); + List<Map<String,Object>> charMap1 = chargingOrderService.getHourType(siteIds,statisticsQueryDto); + 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(charMap1, time); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("electrovalence", 0); + timeMap.put("orderCount", 0); + timeMap.put("servicecharge", 0); + timeMap.put("electricity", 0); + charMap.add(timeMap); + } + } return R.ok(charMap); }else if (statisticsQueryDto.getDayType()==2){ - List<Map<String,Object>> charMap = chargingOrderService.getDateType(siteIds,statisticsQueryDto); - return R.ok(charMap); - }else if (statisticsQueryDto.getDayType()==3){ - List<Map<String,Object>> charMap = chargingOrderService.getMonthType(siteIds,statisticsQueryDto); - } + // 假设 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>> 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(); } + 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 = "/work/use") - @ApiOperation(value = "运营情况", tags = {"管理后台-工作台"}) + @ApiOperation(value = "利用率", tags = {"管理后台-工作台"}) public R workUse(@RequestBody ChargingDetailQueryDto statisticsQueryDto) { List<Integer> siteIds = new ArrayList<>(); if (statisticsQueryDto.getSiteId() == null) { @@ -1011,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); } @@ -1019,9 +1142,9 @@ @Resource private TOrderInvoiceService invoiceService; @ResponseBody - @PostMapping(value = "/work/shopOrder") + @GetMapping(value = "/work/shopOrder") @ApiOperation(value = "购物订单统计", tags = {"管理后台-工作台"}) - public R shopOrder(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { + public R shopOrder() { Long count = shoppingOrderService.lambdaQuery().eq(TShoppingOrder::getStatus, 1).count(); Long count1 = shoppingOrderService.lambdaQuery().eq(TShoppingOrder::getStatus, 2).count(); List<Long> counts = new ArrayList<>(); @@ -1031,9 +1154,9 @@ } @ResponseBody - @PostMapping(value = "/work/invoice") + @GetMapping(value = "/work/invoice") @ApiOperation(value = "开票统计", tags = {"管理后台-工作台"}) - public R invoice(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { + public R invoice() { Long count = invoiceService.lambdaQuery().eq(TOrderInvoice::getStatus, 1).count(); Long count1 = invoiceService.lambdaQuery().eq(TOrderInvoice::getStatus, 3).count(); List<Long> counts = new ArrayList<>(); @@ -1043,9 +1166,9 @@ } @ResponseBody - @PostMapping(value = "/work/users/count") + @GetMapping(value = "/work/users/count") @ApiOperation(value = "用户数量", tags = {"管理后台-工作台"}) - public R usersCount(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { + public R usersCount() { List<Map<String,Object>> userMap = chargingOrderService.countAllUserData(); return R.ok(userMap); -- Gitblit v1.7.1