| | |
| | | package com.iailab.module.model.api; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.iailab.module.data.api.point.DataPointApi; |
| | | import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO; |
| | | import com.iailab.module.model.api.mcs.dto.StScheduleModelOutDTO; |
| | |
| | | import com.iailab.module.model.mdk.vo.ScheduleResultVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.iailab.module.model.common.enums.ModelOutResultType.D; |
| | |
| | | |
| | | @Autowired |
| | | private DataPointApi dataPointApi; |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | public static final long offset = 60 * 3L; |
| | | |
| | | /** |
| | | * 按模块预测 |
| | |
| | | return resp; |
| | | } |
| | | |
| | | /** |
| | | * 执行调度模型 |
| | | * |
| | | * @param reqDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MdkScheduleRespDTO runSchedule(MdkScheduleReqDTO reqDTO) { |
| | | MdkScheduleRespDTO resp = new MdkScheduleRespDTO(); |
| | | resp.setScheduleCode(reqDTO.getScheduleCode()); |
| | | resp.setScheduleTime(reqDTO.getScheduleTime()); |
| | | String catchKey = "ScheduleResult:" + reqDTO.getScheduleCode(); |
| | | try { |
| | | if (redisTemplate.hasKey(catchKey)) { |
| | | log.info("查找调度结果缓存: " + catchKey); |
| | | return JSON.parseObject(JSONObject.toJSONString(redisTemplate.opsForValue().get(catchKey)), MdkScheduleRespDTO.class); |
| | | } |
| | | log.info("调度计算开始: " + System.currentTimeMillis()); |
| | | log.info("reqDTO=" + JSON.toJSONString(reqDTO)); |
| | | ScheduleResultVO scheduleResult = scheduleModelHandler.doSchedule(reqDTO.getScheduleCode(), reqDTO.getScheduleTime(), |
| | | reqDTO.getDynamicDataLength(), reqDTO.getDynamicSettings()); |
| | | resp.setStatusCode(scheduleResult.getResultCode()); |
| | | resp.setResult(scheduleResult.getResult()); |
| | | redisTemplate.opsForValue().set(catchKey, JSON.toJSONString(resp), offset, TimeUnit.SECONDS); |
| | | stScheduleSchemeService.updateTime(scheduleResult.getSchemeId(), scheduleResult.getScheduleTime(), scheduleResult.getResultCode()); |
| | | log.info("预测计算结束: " + System.currentTimeMillis()); |
| | | } catch (Exception ex) { |
| | | log.info("调度计算异常: " + System.currentTimeMillis()); |
| | | ex.printStackTrace(); |
| | | return resp; |
| | | } |
| | | return resp; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean scheduleModelOut(MdkScheduleRespDTO dto) { |
| | | String modelId = stScheduleSchemeService.getByCode(dto.getScheduleCode()).getModelId(); |