iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -80,14 +80,9 @@ @Operation(summary = "获取调度建议列表") List<ScheduleSuggestRespDTO> getLastLimitScheduleSuggest(@RequestParam("scheduleObj") String scheduleObj, @RequestParam("limit") Integer limit); @PostMapping(PREFIX + "/schedule-model-setting/modify") @Operation(summary = "修改调度模型设置参数") Boolean modifyScheduleModelSetting(@RequestBody List<ScheduleModelSettingReqDTO> dtos); @GetMapping(PREFIX + "/schedule-model/out") @Operation(summary = "调度模型数据下发") Boolean scheduleModelOut(@RequestParam MdkScheduleRespDTO dto); @GetMapping(PREFIX + "/schedule-scheme/list") @Operation(summary = "获取调度方案列表") iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/MdkScheduleRespDTO.java
文件已删除 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java
@@ -36,4 +36,8 @@ @PostMapping(PREFIX + "/schedule-scheme") @Operation(summary = "执行调度方案") MdkScheduleRespDTO doSchedule(@Valid @RequestBody 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/McsApiImpl.java
@@ -87,9 +87,6 @@ @Autowired private StScheduleSchemeService stScheduleSchemeService; @Autowired private StScheduleModelOutService stScheduleModelOutService; private int HOUR_MINS = 60; @Override @@ -561,76 +558,6 @@ params.put("triggerMethod", triggerMethod); params.put("triggerCondition", triggerCondition); return stScheduleSchemeService.list(params); } @Override public Boolean scheduleModelOut(MdkScheduleRespDTO dto) { String modelId = stScheduleSchemeService.getByCode(dto.getScheduleCode()).getModelId(); Map<String,Object> result = dto.getResult(); List<StScheduleModelOutDTO> list = stScheduleModelOutService.list(modelId); try{ list.forEach( item -> { double value = 0; //判断点位是否下发以及返回结果是否存在 if(item.getIsWrite()==1){ if(result.get(item.getResultKey())==null){ log.error(result.get(item.getResultKey()) + "resultKey匹配失败"); } Object resultValue = result.get(item.getResultKey()); //判断解析方式 if(item.getResultType().equals("double")){ if(resultValue instanceof Double) { value = (Double) resultValue; } }else if(item.getResultType().equals("double[]")){ ArrayList<Double> doubleList = (ArrayList<Double>) resultValue; double[] array = new double[doubleList.size()]; for (int i = 0; i < doubleList.size(); i++) { array[i] = doubleList.get(i); } if(array!= null && item.getResultPort() < array.length){ value = array[item.getResultPort()]; }else{ log.error(result.get(item.getResultKey()) + "下角标超限"); } }else if(item.getResultType().equals("double[][]")){ if (item.getResultType().equals("double[][]")) { if (resultValue instanceof ArrayList) { ArrayList<ArrayList<Double>> doubleListList = (ArrayList<ArrayList<Double>>) resultValue; double[][] array = new double[doubleListList.size()][]; for (int i = 0; i < doubleListList.size(); i++) { ArrayList<Double> doubleList = doubleListList.get(i); array[i] = new double[doubleList.size()]; for (int j = 0; j < doubleList.size(); j++) { array[i][j] = doubleList.get(j); } } if (array != null && item.getResultPort() < array.length && item.getResultIndex() < array[item.getResultPort()].length) { value = array[item.getResultPort()][item.getResultIndex()]; } else { log.error(result.get(item.getResultKey()) + "下标超限"); } } } } //下发到point点位 ApiPointValueWriteDTO ApiPointValueWriteDTO = new ApiPointValueWriteDTO(); ApiPointValueWriteDTO.setPointNo(item.getPointNo()); ApiPointValueWriteDTO.setValue(value); if (!dataPointApi.writePointRealValue(ApiPointValueWriteDTO)) { log.error(result.get(item.getResultKey()) + "下发数据异常"); } } } ); }catch (Exception ex){ log.error("下发数据异常"); ex.printStackTrace(); } return true; } private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) { iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java
@@ -1,11 +1,15 @@ package com.iailab.module.model.api; import com.alibaba.fastjson.JSON; 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.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.*; import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; import com.iailab.module.model.mcs.pre.service.DmModuleService; import com.iailab.module.model.mcs.pre.service.MmPredictItemService; import com.iailab.module.model.mcs.sche.service.StScheduleModelOutService; import com.iailab.module.model.mcs.sche.service.StScheduleRecordService; import com.iailab.module.model.mcs.sche.service.StScheduleSchemeService; import com.iailab.module.model.mdk.predict.PredictModuleHandler; @@ -54,6 +58,12 @@ @Autowired private StScheduleSchemeService stScheduleSchemeService; @Autowired private StScheduleModelOutService stScheduleModelOutService; @Autowired private DataPointApi dataPointApi; /** * 按模块预测 @@ -213,4 +223,74 @@ } return resp; } @Override public Boolean scheduleModelOut(MdkScheduleRespDTO dto) { String modelId = stScheduleSchemeService.getByCode(dto.getScheduleCode()).getModelId(); Map<String,Object> result = dto.getResult(); List<StScheduleModelOutDTO> list = stScheduleModelOutService.list(modelId); try{ list.forEach( item -> { double value = 0; //判断点位是否下发以及返回结果是否存在 if(item.getIsWrite()==1){ if(result.get(item.getResultKey())==null){ log.error(result.get(item.getResultKey()) + "resultKey匹配失败"); } Object resultValue = result.get(item.getResultKey()); //判断解析方式 if(item.getResultType().equals("double")){ if(resultValue instanceof Double) { value = (Double) resultValue; } }else if(item.getResultType().equals("double[]")){ ArrayList<Double> doubleList = (ArrayList<Double>) resultValue; double[] array = new double[doubleList.size()]; for (int i = 0; i < doubleList.size(); i++) { array[i] = doubleList.get(i); } if(array!= null && item.getResultPort() < array.length){ value = array[item.getResultPort()]; }else{ log.error(result.get(item.getResultKey()) + "下角标超限"); } }else if(item.getResultType().equals("double[][]")){ if (item.getResultType().equals("double[][]")) { if (resultValue instanceof ArrayList) { ArrayList<ArrayList<Double>> doubleListList = (ArrayList<ArrayList<Double>>) resultValue; double[][] array = new double[doubleListList.size()][]; for (int i = 0; i < doubleListList.size(); i++) { ArrayList<Double> doubleList = doubleListList.get(i); array[i] = new double[doubleList.size()]; for (int j = 0; j < doubleList.size(); j++) { array[i][j] = doubleList.get(j); } } if (array != null && item.getResultPort() < array.length && item.getResultIndex() < array[item.getResultPort()].length) { value = array[item.getResultPort()][item.getResultIndex()]; } else { log.error(result.get(item.getResultKey()) + "下标超限"); } } } } //下发到point点位 ApiPointValueWriteDTO ApiPointValueWriteDTO = new ApiPointValueWriteDTO(); ApiPointValueWriteDTO.setPointNo(item.getPointNo()); ApiPointValueWriteDTO.setValue(value); if (!dataPointApi.writePointRealValue(ApiPointValueWriteDTO)) { log.error(result.get(item.getResultKey()) + "下发数据异常"); } } } ); }catch (Exception ex){ log.error("下发数据异常"); ex.printStackTrace(); } return true; } } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java
@@ -145,12 +145,4 @@ List<ScheduleSuggestRespDTO> data = mcsApi.getLastLimitScheduleSuggest(scheduleObj, limit); return CommonResult.success(data); } @PostMapping("/schedule-model/out") @Operation(summary = "调度模型数据下发") public Boolean scheduleModelOut(HttpServletResponse response, HttpServletRequest request, @RequestBody MdkScheduleRespDTO dto) throws Exception { apiSecurityUtils.validate(request); return mcsApi.scheduleModelOut(dto); } } iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java
对比新文件 @@ -0,0 +1,39 @@ package com.iailab.module.model.api.controller.admin; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO; import com.iailab.module.model.common.utils.ApiSecurityUtils; 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; /** * @author DongYukun * @Description * @createTime 2025年1月2日 */ @Slf4j @RestController @RequestMapping("/model/api/mdk") @Tag(name = "数据") public class MdkApiController { @Resource private ApiSecurityUtils apiSecurityUtils; @Autowired private MdkApi mdkApi; @PostMapping("/schedule-model/out") @Operation(summary = "调度模型数据下发") public Boolean scheduleModelOut(HttpServletResponse response, HttpServletRequest request, @RequestBody MdkScheduleRespDTO dto) throws Exception { apiSecurityUtils.validate(request); return mdkApi.scheduleModelOut(dto); } }