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.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.*; 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.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT; /** * @author PanZhibao * @Description * @createTime 2024年11月14日 */ @Slf4j @RestController @RequestMapping("/model/api/mcs") @Tag(name = "数据") public class McsApiController { @Resource private ApiSecurityUtils apiSecurityUtils; @Autowired private McsApi mcsApi; @GetMapping("/predict-item/tree") @Operation(summary = "预测项树") public CommonResult> getPredictItemTree(HttpServletResponse response, HttpServletRequest request) throws Exception { apiSecurityUtils.validate(request); List list = mcsApi.getPredictItemTree(); return CommonResult.success(list); } @PostMapping("/predict-data/charts") @Operation(summary = "预测数据图表") public CommonResult getPreDataCharts(HttpServletResponse response, HttpServletRequest request, @RequestBody PreDataBarLineReqVO reqVO) throws Exception { apiSecurityUtils.validate(request); PreDataBarLineRespVO respVO = new PreDataBarLineRespVO(); try { respVO = mcsApi.getPreDataCharts(reqVO); } catch (Exception e) { e.printStackTrace(); } return CommonResult.success(respVO); } @PostMapping("/predict-data/item-chart") @Operation(summary = "预测数据图表") public CommonResult getPreDataItemChart(HttpServletResponse response, HttpServletRequest request, @RequestBody PreDataItemChartReqVO reqVO) throws Exception { apiSecurityUtils.validate(request); PreDataItemChartRespVO respVO = mcsApi.getPreDataItemChart(reqVO); return CommonResult.success(respVO); } @PostMapping("/predict-data/single-chart") @Operation(summary = "预测数据图表") public CommonResult getPreDataSingleChart(HttpServletResponse response, HttpServletRequest request, @RequestBody PreDataSingleChartReqVO reqVO) throws Exception { apiSecurityUtils.validate(request); PreDataSingleChartRespVO respVO = mcsApi.getPreDataSingleChart(reqVO); return CommonResult.success(respVO); } @PostMapping("/plan-data/single-chart") @Operation(summary = "预测数据图表") public CommonResult getPlanDataSingleChart(HttpServletResponse response, HttpServletRequest request, @RequestBody PreDataSingleChartReqVO reqVO) throws Exception { apiSecurityUtils.validate(request); PlanDataSingleChartRespVO respVO = mcsApi.getPlanDataSingleChart(reqVO); return CommonResult.success(respVO); } @GetMapping("/predict-data/exportValue") @Operation(summary = "导出预测数据") @ApiAccessLog(operateType = EXPORT) 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(); } } }