Pu Zhibing
7 天以前 7a4f9541331bef779a506b38a27ed5c3373c0bec
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -24,6 +24,9 @@
import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
@@ -638,10 +641,11 @@
        chargingOrderInfoVO.setList(list);
        return AjaxResult.success(chargingOrderInfoVO);
    }
    
    
    
    @Log(title = "【扫一扫】添加评价", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
    @ResponseBody
    @PostMapping(value = "/addEvaluate")
    @ApiOperation(value = "添加评价", tags = {"小程序-扫一扫"})
@@ -794,7 +798,7 @@
    }
    
    
    @Log(title = "【扫一扫】支付充电充值费用", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE)
    @ResponseBody
    @PostMapping(value = "/paymentChargingOrder")
    @ApiOperation(value = "支付充电充值费用", tags = {"小程序-扫一扫"})
@@ -888,8 +892,7 @@
    
    
    
    @ResponseBody
    @GetMapping(value = "/preChargeCheck/{id}")
    @ApiOperation(value = "获取安全检测数据", tags = {"小程序-扫一扫"})
@@ -903,7 +906,6 @@
    }
    
    
    @ResponseBody
    @GetMapping(value = "/getChargingDetails/{id}")
    @ApiOperation(value = "获取充电中页面数据", tags = {"小程序-扫一扫"})
@@ -914,8 +916,8 @@
        ChargingDetails chargingDetails = chargingOrderService.getChargingDetails(id);
        return AjaxResult.success(chargingDetails);
    }
    @Log(title = "【扫一扫】手动停止充电", businessType = BusinessType.STOP,operatorType = OperatorType.MOBILE)
    @ResponseBody
    @PutMapping(value = "/stopCharging/{id}")
    @ApiOperation(value = "手动停止充电", tags = {"小程序-扫一扫"})
@@ -1941,100 +1943,104 @@
    @PostMapping(value = "/work/chargeDetail")
    @ApiOperation(value = "运营情况", tags = {"管理后台-工作台"})
    public R workCharge(@RequestBody ChargingDetailQueryDto statisticsQueryDto) {
        List<Integer> siteIds = new ArrayList<>();
        if (statisticsQueryDto.getSiteId() == null) {
            Long userId = tokenService.getLoginUser().getUserid();
            //获取当前登录的siteIds
            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
            for (GetSiteListDTO datum : data) {
                siteIds.add(datum.getId());
            }
        } else {
            siteIds.add(statisticsQueryDto.getSiteId());
        }
        if (statisticsQueryDto.getDayType()==1) {
            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);
        try {
            List<Integer> siteIds = new ArrayList<>();
            if (statisticsQueryDto.getSiteId() == null) {
                Long userId = tokenService.getLoginUser().getUserid();
                //获取当前登录的siteIds
                List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
                for (GetSiteListDTO datum : data) {
                    siteIds.add(datum.getId());
                }
            } else {
                siteIds.add(statisticsQueryDto.getSiteId());
            }
          return R.ok(charMap);
        }else if (statisticsQueryDto.getDayType()==2){
            // 假设 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);
            if (statisticsQueryDto.getDayType()==1) {
                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);
                    }
                }
                // 移动到下一天
                startDate = startDate.plusDays(1);
            }
                return R.ok(charMap);
            }else if (statisticsQueryDto.getDayType()==2){
                // 假设 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);
                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);
                }
                // 移动到下一天
                startDate = startDate.plusMonths(1);
                return R.ok(dateRangeStatistics);
            }
            return R.ok(dateRangeStatistics);
        }catch (Exception e){
            e.printStackTrace();
        }
        return R.ok();
@@ -2343,4 +2349,14 @@
        return chargingOrderService.pushOrderInfo(code);
    }
    
    /**
     * 添加汇总数据(临时)
     * @return
     */
    @ResponseBody
    @GetMapping(value = "/addChargingOrderSummaryData")
    public R addChargingOrderSummaryData(){
        return chargingOrderService.addChargingOrderSummaryData();
    }
}