iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
@@ -38,7 +38,6 @@ 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.math.RoundingMode; import java.util.*; iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -40,6 +40,10 @@ @Operation(summary = "预测数据图表") PreDataSingleChartRespVO getPreDataSingleChart(@RequestBody PreDataSingleChartReqVO reqVO); @PostMapping(PREFIX + "/predict-data/cur") @Operation(summary = "获取当前预测数据") Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO); @PostMapping(PREFIX + "/plan-data/single-chart") @Operation(summary = "计划数据图表") PlanDataSingleChartRespVO getPlanDataSingleChart(@RequestBody PreDataSingleChartReqVO reqVO); @@ -56,6 +60,10 @@ @Operation(summary = "获取预警配置列表") List<AlarmConfigRespDTO> listAlarmConfig(@RequestParam Map<String, Object> params); @GetMapping(PREFIX + "/alarm-message/last-one") @Operation(summary = "获取最新预警信息") AlarmMessageRespDTO getLastAlarmMessage(@RequestParam("alarmObj") String alarmObj); @PostMapping(PREFIX + "/schedule-suggest/create") @Operation(summary = "添加调度建议") Boolean createScheduleSuggest(@RequestBody ScheduleSuggestRespDTO dto); iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataJsonReqVO.java
对比新文件 @@ -0,0 +1,26 @@ package com.iailab.module.model.api.mcs.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; import java.util.Date; import java.util.List; /** * @author PanZhibao * @Description * @createTime 2024年11月27日 */ @Data public class PreDataJsonReqVO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "预测时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date predictTime; @Schema(description = "预测输出ID") private List<String> outputIdList; } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -15,8 +15,12 @@ import com.iailab.module.model.common.enums.PreLineTypeEnum; import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity; import com.iailab.module.model.mcs.pre.service.*; import com.iailab.module.model.mcs.pre.service.impl.MmPredictAlarmConfigServiceImpl; import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mpk.service.ChartService; import lombok.extern.slf4j.Slf4j; @@ -63,6 +67,12 @@ @Autowired private ChartService chartService; @Autowired private MmPredictAlarmMessageService mmPredictAlarmMessageService; @Autowired private StScheduleSuggestService stScheduleSuggestService; @Autowired private PlanItemApi planItemApi; @@ -350,6 +360,18 @@ } @Override public Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO) { Map<String, List<Object[]>> result = new HashMap<>(); if (reqVO == null || reqVO.getPredictTime() == null || CollectionUtils.isEmpty(reqVO.getOutputIdList())) { return result; } reqVO.getOutputIdList().forEach(outPutId -> { result.put(outPutId, mmItemResultJsonService.getData(outPutId, reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); }); return result; } @Override public PlanDataSingleChartRespVO getPlanDataSingleChart(PreDataSingleChartReqVO reqVO) { PlanDataSingleChartRespVO result = new PlanDataSingleChartRespVO(); Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode()); @@ -456,9 +478,20 @@ return result; } /** * 新增预警信息 * * @param dto * @return */ @Override public Boolean createAlarmMessage(AlarmMessageRespDTO dto) { return true; try { mmPredictAlarmMessageService.create(ConvertUtils.sourceToTarget(dto, MmPredictAlarmMessageSaveReqVO.class)); return true; } catch (Exception e) { return false; } } @Override @@ -472,13 +505,20 @@ } @Override public AlarmMessageRespDTO getLastAlarmMessage(String alarmObj) { MmPredictAlarmMessageEntity entity = mmPredictAlarmMessageService.getLast(alarmObj); return ConvertUtils.sourceToTarget(entity, AlarmMessageRespDTO.class); } @Override public Boolean createScheduleSuggest(ScheduleSuggestRespDTO dto) { return true; } @Override public List<ScheduleSuggestRespDTO> listScheduleSuggest(ScheduleSuggestReqDTO params) { return null; public List<ScheduleSuggestRespDTO> getLastLimitScheduleSuggest(String scheduleObj, Integer limit) { List<StScheduleSuggestEntity> list = stScheduleSuggestService.getList(scheduleObj, limit); return ConvertUtils.sourceToTarget(list, ScheduleSuggestRespDTO.class); } @Override iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java
@@ -19,6 +19,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT; /** @@ -90,7 +91,6 @@ @GetMapping("/predict-data/exportValue") @Operation(summary = "导出预测数据") @ApiAccessLog(operateType = EXPORT) public void exportPointValue(@RequestParam("itemId") String itemId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @@ -100,13 +100,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)); } @@ -115,10 +115,26 @@ } 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); } } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java
@@ -17,6 +17,8 @@ MmPredictAlarmMessageEntity getInfo(String id); MmPredictAlarmMessageEntity getLast(String alarmObj); void create(MmPredictAlarmMessageSaveReqVO reqVO); void update(MmPredictAlarmMessageSaveReqVO reqVO); iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java
@@ -1,5 +1,6 @@ package com.iailab.module.model.mcs.pre.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.object.BeanUtils; @@ -9,8 +10,10 @@ import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessagePageReqVO; import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.UUID; /** @@ -34,6 +37,15 @@ } @Override public MmPredictAlarmMessageEntity getLast(String alarmObj) { QueryWrapper<MmPredictAlarmMessageEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("alarm_obj", alarmObj) .orderByDesc("alarm_time") .last("limit 1"); return baseDao.selectOne(queryWrapper); } @Override public void create(MmPredictAlarmMessageSaveReqVO reqVO) { MmPredictAlarmMessageEntity entity = BeanUtils.toBean(reqVO, MmPredictAlarmMessageEntity.class); entity.setId(UUID.randomUUID().toString()); iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java
@@ -1,8 +1,11 @@ package com.iailab.module.model.mcs.sche.dao; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.mybatis.core.mapper.BaseMapperX; import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX; import com.iailab.framework.tenant.core.db.dynamic.TenantDS; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO; import org.apache.ibatis.annotations.Mapper; /** @@ -13,4 +16,11 @@ @TenantDS @Mapper public interface StScheduleSuggestDao extends BaseMapperX<StScheduleSuggestEntity> { default PageResult<StScheduleSuggestEntity> selectPage(StScheduleSuggestPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleSuggestEntity>() .likeIfPresent(StScheduleSuggestEntity::getTitle, reqVO.getTitle()) .likeIfPresent(StScheduleSuggestEntity::getScheduleObj, reqVO.getScheduleObj()) .orderByDesc(StScheduleSuggestEntity::getCreateTime)); } } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java
@@ -111,7 +111,7 @@ private Date scheduleTime; /** * 状态 * 状态(0未处理 1已采纳 2已忽略) */ private Integer status; iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
@@ -1,7 +1,12 @@ package com.iailab.module.model.mcs.sche.service; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.BaseService; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO; import java.util.List; /** * @author PanZhibao @@ -9,4 +14,16 @@ * @createTime 2024年09月06日 */ public interface StScheduleSuggestService extends BaseService<StScheduleSuggestEntity> { PageResult<StScheduleSuggestEntity> page(StScheduleSuggestPageReqVO reqVO); void create(StScheduleSuggestSaveReqVO createReqVO); void update(StScheduleSuggestSaveReqVO createReqVO); void delete(String id); StScheduleSuggestEntity getInfo(String id); List<StScheduleSuggestEntity> getList(String scheduleObj, Integer limit); } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
@@ -1,10 +1,18 @@ package com.iailab.module.model.mcs.sche.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.model.mcs.sche.dao.StScheduleSuggestDao; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO; import org.springframework.stereotype.Service; import java.util.List; import java.util.UUID; /** * @author PanZhibao @@ -14,4 +22,42 @@ @Service public class StScheduleSuggestServiceImpl extends BaseServiceImpl<StScheduleSuggestDao, StScheduleSuggestEntity> implements StScheduleSuggestService { @Override public PageResult<StScheduleSuggestEntity> page(StScheduleSuggestPageReqVO reqVO) { return baseDao.selectPage(reqVO); } @Override public void create(StScheduleSuggestSaveReqVO createReqVO) { StScheduleSuggestEntity entity = BeanUtils.toBean(createReqVO, StScheduleSuggestEntity.class); entity.setId(UUID.randomUUID().toString()); baseDao.insert(entity); } @Override public void update(StScheduleSuggestSaveReqVO createReqVO) { StScheduleSuggestEntity entity = BeanUtils.toBean(createReqVO, StScheduleSuggestEntity.class); baseDao.updateById(entity); } @Override public void delete(String id) { baseDao.deleteById(id); } @Override public StScheduleSuggestEntity getInfo(String id) { return baseDao.selectById(id); } @Override public List<StScheduleSuggestEntity> getList(String scheduleObj, Integer limit) { QueryWrapper<StScheduleSuggestEntity> queryWrapper = new QueryWrapper<>(); limit = limit == null ? 1 : limit; queryWrapper.eq("schedule_obj", scheduleObj) .orderByDesc("create_time") .last("limit " + limit); return baseDao.selectList(queryWrapper); } } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestPageReqVO.java
对比新文件 @@ -0,0 +1,25 @@ package com.iailab.module.model.mcs.sche.vo; import com.iailab.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; /** * @author PanZhibao * @Description * @createTime 2024年11月27日 */ @Schema(description = "模型服务 - 调度建议分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class StScheduleSuggestPageReqVO extends PageParam { @Schema(description = "标题,模糊匹配", example = "") private String title; @Schema(description = "调整对象,模糊匹配", example = "") private String scheduleObj; } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestRespVO.java
对比新文件 @@ -0,0 +1,83 @@ package com.iailab.module.model.mcs.sche.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author PanZhibao * @Description * @createTime 2024年11月27日 */ @Schema(description = "模型服务 - 调度建议 Response VO") @Data public class StScheduleSuggestRespVO { @Schema(description = "ID") private String id; @Schema(description = "标题") private String title; @Schema(description = "内容") private String content; @Schema(description = "排序") private Integer sort; @Schema(description = "方案ID") private String schemeId; @Schema(description = "预警ID") private String alarmId; @Schema(description = "预测项ID") private String itemId; @Schema(description = "模型ID") private String modelId; @Schema(description = "调整对象") private String scheduleObj; @Schema(description = "调整类型") private String scheduleType; @Schema(description = "调整策略") private String scheduleStrategy; @Schema(description = "调整方式") private String adjustMode; @Schema(description = "调整值") private BigDecimal adjustValue; @Schema(description = "调整单位") private String adjustUnit; @Schema(description = "持续时长") private BigDecimal adjustTimes; @Schema(description = "调整开始时间") private Date adjustStart; @Schema(description = "调整结束时间") private Date adjustEnd; @Schema(description = "调度时间") private Date scheduleTime; @Schema(description = "状态(0未处理 1已采纳 2已忽略)") private Integer status; @Schema(description = "处理人") private String handler; @Schema(description = "处理时间") private Date handleTime; @Schema(description = "创建时间") private Date createTime; } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestSaveReqVO.java
对比新文件 @@ -0,0 +1,88 @@ package com.iailab.module.model.mcs.sche.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; /** * @author PanZhibao * @Description * @createTime 2024年11月27日 */ @Schema(description = "模型服务 - 调度建议创建/修改 Request VO") @Data public class StScheduleSuggestSaveReqVO { @Schema(description = "ID") private String id; @Schema(description = "标题") @NotNull(message = "应用编号不能为空") private String title; @Schema(description = "内容") @NotNull(message = "应用编号不能为空") private String content; @Schema(description = "排序") @NotNull(message = "应用编号不能为空") private Integer sort; @Schema(description = "方案ID") private String schemeId; @Schema(description = "预警ID") private String alarmId; @Schema(description = "预测项ID") private String itemId; @Schema(description = "模型ID") private String modelId; @Schema(description = "调整对象") @NotNull(message = "应用编号不能为空") private String scheduleObj; @Schema(description = "调整类型") private String scheduleType; @Schema(description = "调整策略") private String scheduleStrategy; @Schema(description = "调整方式") private String adjustMode; @Schema(description = "调整值") private BigDecimal adjustValue; @Schema(description = "调整单位") private String adjustUnit; @Schema(description = "持续时长") private BigDecimal adjustTimes; @Schema(description = "调整开始时间") private Date adjustStart; @Schema(description = "调整结束时间") private Date adjustEnd; @Schema(description = "调度时间") private Date scheduleTime; @Schema(description = "状态(0未处理 1已采纳 2已忽略)") private Integer status; @Schema(description = "处理人") private String handler; @Schema(description = "处理时间") private Date handleTime; @Schema(description = "创建时间") private Date createTime; }