package com.ruoyi.http.controller; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.http.service.StatisticEleService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @Tag(name = "能耗电表统计") @RequestMapping("/statisticEle") @RequiredArgsConstructor public class StatisticEleController extends BaseController { private final StatisticEleService statisticEleService; @GetMapping("/list") @Operation(summary = "能耗数据-列表查询(本地库)") @Log(title = "能耗数据-列表查询", businessType = BusinessType.OTHER) public AjaxResult list( @RequestParam(defaultValue = "hour") String dimension, @RequestParam String startTime, @RequestParam String endTime, @RequestParam(defaultValue = "1") Integer ignoreRadio) { return AjaxResult.success(statisticEleService.listRecords(dimension, startTime, endTime, ignoreRadio)); } @GetMapping("/summary") @Operation(summary = "能耗数据-汇总统计(本地库)") @Log(title = "能耗数据-汇总统计", businessType = BusinessType.OTHER) public AjaxResult summary( @RequestParam(defaultValue = "hour") String dimension, @RequestParam String startTime, @RequestParam String endTime) { return AjaxResult.success(statisticEleService.getSummary(dimension, startTime, endTime)); } @GetMapping("/analytics") @Operation(summary = "能耗数据-综合分析") public AjaxResult analytics( @RequestParam(defaultValue = "day") String dimension, @RequestParam String startTime, @RequestParam String endTime, @RequestParam(required = false) String trendGranularity) { return AjaxResult.success(statisticEleService.getAnalytics(dimension, startTime, endTime, trendGranularity)); } @GetMapping("/yesterday") @Operation(summary = "昨日用电量汇总") public AjaxResult yesterday() { return AjaxResult.success(statisticEleService.getYesterdaySummary()); } @GetMapping("/syncStatus") @Operation(summary = "能耗数据-同步状态") public AjaxResult syncStatus() { return AjaxResult.success(statisticEleService.getSyncStatus()); } @GetMapping("/raw") @Operation(summary = "能耗数据-原始接口(调试用,慎用)") @Log(title = "能耗数据-原始接口", businessType = BusinessType.OTHER) public AjaxResult raw( @RequestParam(defaultValue = "hour") String dimension, @RequestParam String startTime, @RequestParam String endTime) { return AjaxResult.success(statisticEleService.fetchRawData(dimension, startTime, endTime)); } @PostMapping("/export") @Operation(summary = "能耗数据-导出") @Log(title = "能耗数据-导出", businessType = BusinessType.EXPORT) public void export( @RequestParam(defaultValue = "hour") String dimension, @RequestParam String startTime, @RequestParam String endTime, HttpServletResponse response) { statisticEleService.exportRecords(dimension, startTime, endTime, response); } }