From 153763807debc575d0ee05e8db7d9ad20a58071b Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期五, 17 一月 2025 17:34:47 +0800 Subject: [PATCH] 电力页面数据绑定接口: 调度模型最新结果查询 动态limit 查询时间范围内预测结果 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java | 145 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 137 insertions(+), 8 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java index 7198837..96116e5 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java @@ -1,9 +1,13 @@ package com.iailab.module.model.api.controller.admin; import com.iailab.framework.common.pojo.CommonResult; +import com.iailab.framework.common.pojo.PageResult; +import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.*; +import com.iailab.module.model.api.mdk.dto.StScheduleRecordVO; import com.iailab.module.model.common.utils.ApiSecurityUtils; +import com.iailab.module.model.common.utils.ExcelUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -11,10 +15,16 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.Map; + +import static com.iailab.framework.common.pojo.CommonResult.success; /** * @author PanZhibao @@ -33,7 +43,6 @@ @Autowired private McsApi mcsApi; - @PermitAll @GetMapping("/predict-item/tree") @Operation(summary = "预测项树") public CommonResult<List<PredictItemTreeDTO>> getPredictItemTree(HttpServletResponse response, HttpServletRequest @@ -43,7 +52,6 @@ return CommonResult.success(list); } - @PermitAll @PostMapping("/predict-data/charts") @Operation(summary = "预测数据图表") public CommonResult<PreDataBarLineRespVO> getPreDataCharts(HttpServletResponse response, HttpServletRequest @@ -58,7 +66,6 @@ return CommonResult.success(respVO); } - @PermitAll @PostMapping("/predict-data/item-chart") @Operation(summary = "预测数据图表") public CommonResult<PreDataItemChartRespVO> getPreDataItemChart(HttpServletResponse response, HttpServletRequest @@ -68,13 +75,135 @@ return CommonResult.success(respVO); } - @PermitAll - @GetMapping("/predict-data/single-chart") + @PostMapping("/predict-data/single-chart") @Operation(summary = "预测数据图表") - public CommonResult<PreDataItemChartRespVO> getPreDataSingleChart(HttpServletResponse response, HttpServletRequest + public CommonResult<PreDataSingleChartRespVO> getPreDataSingleChart(HttpServletResponse response, HttpServletRequest request, @RequestBody PreDataSingleChartReqVO reqVO) throws Exception { apiSecurityUtils.validate(request); - PreDataItemChartRespVO respVO = mcsApi.getPreDataSingleChart(reqVO); + PreDataSingleChartRespVO respVO = mcsApi.getPreDataSingleChart(reqVO); return CommonResult.success(respVO); } + + @PostMapping("/plan-data/single-chart") + @Operation(summary = "预测数据图表") + public CommonResult<PlanDataSingleChartRespVO> getPlanDataSingleChart(HttpServletResponse response, HttpServletRequest + request, @RequestBody PreDataSingleChartReqVO reqVO) throws Exception { + apiSecurityUtils.validate(request); + PlanDataSingleChartRespVO respVO = mcsApi.getPlanDataSingleChart(reqVO); + return CommonResult.success(respVO); + } + + @PostMapping("/predict-data/cur") + @Operation(summary = "获取当前预测数据") + public CommonResult<Map<String, List<Object[]>>> getPreDataCur(HttpServletResponse response, HttpServletRequest + request, @RequestBody PreDataJsonReqVO reqVO)throws Exception { + apiSecurityUtils.validate(request); + reqVO.setPredictTime(new Date()); + Map<String, List<Object[]>> map = mcsApi.getPreDataCur(reqVO); + return CommonResult.success(map); + } + + @GetMapping("/predict-data/exportValue") + @Operation(summary = "导出预测数据") + public void exportPointValue(@RequestParam("itemId") String itemId, + @RequestParam("startTime") String startTime, + @RequestParam("endTime") String endTime, + HttpServletResponse response) throws IOException { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + PreDataItemChartReqVO reqVO = new PreDataItemChartReqVO(); + reqVO.setItemId(itemId); + try { + if (startTime == "") { + reqVO.setStartTime(new Date((new Date()).getTime() - 60 * 60 * 1000)); + } else { + reqVO.setStartTime(formatter.parse(startTime)); + + } + if (endTime == "") { + reqVO.setEndTime(new Date((new Date()).getTime() + 60 * 60 * 1000)); + } else { + reqVO.setEndTime(formatter.parse(endTime)); + } + } catch (Exception e) { + e.printStackTrace(); + } + PreDataItemChartRespVO respVO = mcsApi.getPreDataItemChart(reqVO); + try { + String sheetTitle = "sheet1"; + ExcelUtil.exportchart(sheetTitle, respVO, response); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @GetMapping("/alarm-message/last-one") + @Operation(summary = "根据监控对象获取最新预警信息") + public CommonResult<AlarmMessageRespDTO> getLastAlarmMessage(HttpServletResponse response, HttpServletRequest + request, @RequestParam("alarmObj") String alarmObj) { + AlarmMessageRespDTO data = mcsApi.getLastAlarmMessage(alarmObj); + return CommonResult.success(data); + } + + @GetMapping("/schedule-suggest/last-limit") + @Operation(summary = "根据监控对象获取最新预警信息") + public CommonResult<List<ScheduleSuggestRespDTO>> getLastLimitScheduleSuggest(HttpServletResponse response, HttpServletRequest + request, @RequestParam("scheduleObj") String scheduleObj, @RequestParam("limit") Integer limit) { + List<ScheduleSuggestRespDTO> data = mcsApi.getLastLimitScheduleSuggest(scheduleObj, limit); + return CommonResult.success(data); + } + + @PostMapping("/alarm-suggest/page") + @Operation(summary = "获取预警信息和调度建议分页列表") + public CommonResult<PageResult<StAlarmAndSuggestRespVO>> getAlarmAndSuggestPage(@RequestBody StAlarmAndSuggestPageReqVO reqVO) { + PageResult<StAlarmAndSuggestRespVO> page = mcsApi.getAlarmAndSuggestPage(reqVO); + return success(BeanUtils.toBean(page, StAlarmAndSuggestRespVO.class)); + } + + @GetMapping("/chart/param/list") + @Operation(summary = "图表配置列表") + public CommonResult<List<ChartParamDTO>> getChartParamList(@RequestParam("chartCode") String chartCode) { + List<ChartParamDTO> chartParamList = mcsApi.getChartParamList(chartCode); + return CommonResult.success(chartParamList); + } + + @PostMapping("/predict-data/doubleValue") + @Operation(summary = "获取多个预测项Double类型数据") + public CommonResult<Map<String, Map<String,Double>>> getPreDoubleData(@RequestBody PreDoubleDataReqVO reqVO) { + Map<String, Map<String,Double>> map = mcsApi.getPreDoubleData(reqVO); + return CommonResult.success(map); + } + + @PostMapping("/predict-data/last-value") + @Operation(summary = "获取最后预测值") + public CommonResult<Map<String, BigDecimal>> getPredictLastValue(@RequestBody PredictLastValueReqVO reqVO) { + Map<String, BigDecimal> data = mcsApi.getPredictLastValue(reqVO); + return CommonResult.success(data); + } + + @GetMapping("/predict-data/electric") + @Operation(summary = "电力功率因数预测结果查询") + public CommonResult<Map<String,List<Object[]>>> getElectricPredictData(@RequestParam String itemCode) { + Map<String,List<Object[]>> data = mcsApi.getElectricPredictData(itemCode); + return CommonResult.success(data); + } + @GetMapping("/schedule-data/last") + @Operation(summary = "调度模型最新结果查询") + public CommonResult<List<StScheduleRecordVO>> getLastScheduleData(@RequestParam String scheduleCode, @RequestParam Integer limit) { + if (null == limit) { + limit = 1; + } + return CommonResult.success(mcsApi.getLastScheduleData(scheduleCode,limit)); + } + + @PostMapping("/machineRealTimeStatus") + @Operation(summary = "发电机组实时状态查询") + CommonResult<List<Map<String, Object>>> getRealTimeStatus(@RequestBody List<Map<String, Object>> machines) { + return CommonResult.success(mcsApi.getRealTimeStatus(machines)); + } + + @PostMapping("/predict-data/itemNo") + @Operation(summary = "查询时间范围内预测结果") + CommonResult<Map<String,List<Object[]>>> getPredictDataItemNo(@RequestBody PreDataItemNoReqVO reqVO) { + return CommonResult.success(mcsApi.getPredictDataItemNo(reqVO)); + } } \ No newline at end of file -- Gitblit v1.9.3