潘志宝
2 天以前 268c71b4154956daddfb7cd17d5baade9e59d46d
获取调度执行结果,不保存记录
已修改3个文件
55 ■■■■■ 文件已修改
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java
@@ -37,6 +37,10 @@
    @Operation(summary = "执行调度方案")
    MdkScheduleRespDTO doSchedule(@Valid @RequestBody MdkScheduleReqDTO reqDTO);
    @PostMapping(PREFIX + "/schedule-result")
    @Operation(summary = "获取调度执行结果,不保存记录")
    MdkScheduleRespDTO runSchedule(MdkScheduleReqDTO reqDTO);
    @PostMapping(PREFIX + "/schedule-model/out")
    @Operation(summary = "调度模型数据下发")
    Boolean scheduleModelOut(@RequestBody MdkScheduleRespDTO dto);
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java
@@ -1,6 +1,7 @@
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;
@@ -24,11 +25,13 @@
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;
@@ -69,6 +72,11 @@
    @Autowired
    private DataPointApi dataPointApi;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    public static final long offset = 60 * 3L;
    /**
     * 按模块预测
@@ -232,6 +240,40 @@
        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();
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java
@@ -1,5 +1,6 @@
package com.iailab.module.model.api.controller.admin;
import com.iailab.module.model.api.mdk.MdkApi;
import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO;
import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO;
import com.iailab.module.model.common.utils.ApiSecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
@@ -36,4 +37,12 @@
        apiSecurityUtils.validate(request);
        return mdkApi.scheduleModelOut(dto);
    }
    @PostMapping("/schedule-result")
    @Operation(summary = "获取调度执行结果,不保存记录")
    public MdkScheduleRespDTO runSchedule(HttpServletResponse response, HttpServletRequest
            request, @RequestBody MdkScheduleReqDTO reqDTO) throws Exception {
        apiSecurityUtils.validate(request);
        return mdkApi.runSchedule(reqDTO);
    }
}