package com.southern.power.grid.controller; import com.alibaba.excel.EasyExcel; import com.southern.power.grid.common.Result; import com.southern.power.grid.entity.*; import com.southern.power.grid.listener.DataExcelListener; import com.southern.power.grid.service.IDnerDailyPowerOutageEventService; import com.southern.power.grid.service.IDnerHourlyPowerOutageEventService; import com.southern.power.grid.service.IDnerSiteAreaConfigurationService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; import java.util.List; import java.util.UUID; /** * 配网抢修-Controller * * @author: junzhangfm * @date: 2026/3/13 **/ @RestController @RequestMapping("/api/v1/dner") @Slf4j public class DnerController { @Autowired private DataExcelListener dataExcelListener; @Autowired private IDnerHourlyPowerOutageEventService dnerHourlyPowerOutageEventService; @Autowired private IDnerDailyPowerOutageEventService dnerDailyPowerOutageEventService; @Autowired private IDnerSiteAreaConfigurationService dnerSiteAreaConfigurationService; @PostMapping("/area-tree/query") public Result> queryAreaTree(@RequestBody AreaTreeReq req) { // TODO 使用POST请求,后续新增高级筛选时,加入请求入参 return Result.success(dnerSiteAreaConfigurationService.queryAreaTree()); } /** * 分时图数据查询 * * @param orgCode 地区编码 * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回结果 */ @GetMapping("/intraday/query") public Result queryIntradayData(@RequestParam String orgCode, @RequestParam String startDate, @RequestParam String endDate) { return Result.success(dnerHourlyPowerOutageEventService.queryIntradayData(orgCode, startDate, endDate)); } /** * K线数据查询 * * @param orgCode 地区编码 * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回结果 */ @GetMapping("/kline/query") public Result queryKlineData(@RequestParam String orgCode, @RequestParam String startDate, @RequestParam String endDate) { return Result.success(dnerDailyPowerOutageEventService.queryKlineData(orgCode, startDate, endDate)); } /** * 通过easyexcel流式读取导入数据 * * @param inputStream 文件流 * @return 返回结果 */ @PostMapping("/excel/import") public Result importExcel(@RequestParam("file") InputStream inputStream) { // 采用easyExcel流式读取,一行一行读,不加载整个excel文件,防止OOM EasyExcel.read(inputStream, DataExcelEntity.class, dataExcelListener) .sheet() .doRead(); return Result.success(Boolean.TRUE); } }