From e9506a872eb087da15a3ad317836c26bd8f0356c Mon Sep 17 00:00:00 2001 From: Jay <csj123456> Date: 星期四, 06 二月 2025 14:35:32 +0800 Subject: [PATCH] 新增修改模型设定参数接口 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java | 156 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 135 insertions(+), 21 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 affdaac..1e97f5f 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,31 +1,29 @@ package com.iailab.module.model.api.controller.admin; -import com.iailab.framework.apilog.core.annotation.ApiAccessLog; import com.iailab.framework.common.pojo.CommonResult; -import com.iailab.framework.excel.core.util.ExcelUtils; -import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; +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; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; 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.ArrayList; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import java.util.*; + +import static com.iailab.framework.common.pojo.CommonResult.success; /** * @author PanZhibao @@ -44,7 +42,6 @@ @Autowired private McsApi mcsApi; - @PermitAll @GetMapping("/predict-item/tree") @Operation(summary = "预测项树") public CommonResult<List<PredictItemTreeDTO>> getPredictItemTree(HttpServletResponse response, HttpServletRequest @@ -54,7 +51,6 @@ return CommonResult.success(list); } - @PermitAll @PostMapping("/predict-data/charts") @Operation(summary = "预测数据图表") public CommonResult<PreDataBarLineRespVO> getPreDataCharts(HttpServletResponse response, HttpServletRequest @@ -69,7 +65,6 @@ return CommonResult.success(respVO); } - @PermitAll @PostMapping("/predict-data/item-chart") @Operation(summary = "预测数据图表") public CommonResult<PreDataItemChartRespVO> getPreDataItemChart(HttpServletResponse response, HttpServletRequest @@ -79,19 +74,36 @@ 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 = "导出预测数据") - @ApiAccessLog(operateType = EXPORT) public void exportPointValue(@RequestParam("itemId") String itemId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @@ -101,13 +113,13 @@ reqVO.setItemId(itemId); try { if (startTime == "") { - reqVO.setStartTime(new Date((new Date()).getTime() - 60*60*1000)); + 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)); + reqVO.setEndTime(new Date((new Date()).getTime() + 60 * 60 * 1000)); } else { reqVO.setEndTime(formatter.parse(endTime)); } @@ -116,10 +128,112 @@ } PreDataItemChartRespVO respVO = mcsApi.getPreDataItemChart(reqVO); try { - String sheetTitle = "sheet1"; + 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("/schedule-suggest/list") + @Operation(summary = "获取调度建议") + public CommonResult<List<ScheduleSuggestRespDTO>> listScheduleSuggest(@RequestBody ScheduleSuggestReqDTO vo) { + List<ScheduleSuggestRespDTO> list = mcsApi.listScheduleSuggest(vo); + return CommonResult.success(list); + } + + @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("/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("/schedule-data/last/more") + @Operation(summary = "多个调度模型最新结果查询") + public CommonResult<Map<String,List<StScheduleRecordVO>>> getMoreLastScheduleData(@RequestBody Map<String,Object> params) { + if (!params.containsKey("scheduleCodes")) { + return success(new HashMap<>()); + } + Set<String> scheduleCodes = new HashSet<>(((List<String>) params.get("scheduleCodes"))); + if (CollectionUtils.isEmpty(scheduleCodes)) { + return success(new HashMap<>()); + } + Integer limit = 1; + if (params.containsKey("limit")) { + limit = Integer.parseInt(params.get("limit").toString()); + } + + Map<String,List<StScheduleRecordVO>> result = new HashMap<>(scheduleCodes.size()); + for (String scheduleCode : scheduleCodes) { + result.put(scheduleCode,mcsApi.getLastScheduleData(scheduleCode, limit)); + } + return CommonResult.success(result); + } + + @PostMapping("/predict-data/itemNo") + @Operation(summary = "查询时间范围内预测结果") + CommonResult<Map<String,List<Object[]>>> getPredictDataItemNo(@RequestBody PreDataItemNoReqVO reqVO) { + return CommonResult.success(mcsApi.getPredictDataItemNo(reqVO)); + } + + @GetMapping("/electricityPrice/list") + @Operation(summary = "电价表") + public CommonResult<List<ElectricityPriceSegmentedDTO>> getElectricityPriceList(@RequestParam("year") String year, @RequestParam("time") String time) { + List<ElectricityPriceSegmentedDTO> electricityPriceSegmentedList = mcsApi.getElectricityPriceList(year, time); + return CommonResult.success(electricityPriceSegmentedList); + } + + @GetMapping("/schedule/model/setting/update") + @Operation(summary = "修改调度模型配置") + public CommonResult<Boolean> updateScheduleModelSetting(@RequestParam("modelCode") String modelCode, @RequestParam("key") String key, @RequestParam("value") String value){ + mcsApi.updateScheduleModelSetting(modelCode, key, value); + return success( true); + } } \ No newline at end of file -- Gitblit v1.9.3