From 95066d1bdaf67f414f01d1686e7ea9c0ebc07e26 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期四, 02 一月 2025 09:37:05 +0800 Subject: [PATCH] 调度模型下发 --- /dev/null | 14 --- iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java | 4 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java | 39 +++++++++ iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java | 5 - iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java | 8 -- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 73 ------------------ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java | 80 ++++++++++++++++++++ 7 files changed, 123 insertions(+), 100 deletions(-) diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java index aa162cf..cbc77d4 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java +++ b/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 = "获取调度方案列表") diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/MdkScheduleRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/MdkScheduleRespDTO.java deleted file mode 100644 index 738d510..0000000 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/MdkScheduleRespDTO.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.iailab.module.model.api.mcs.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Map; - -@Schema(description ="RPC 模型 - 调度 DTO") -@Data -public class MdkScheduleRespDTO { - private String scheduleCode; - private String scheduleTime; - private Map<String,Object> result; -} diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java index 54be190..f9d21ae 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java +++ b/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); } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java index 129b8da..92e3e0e 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java +++ b/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) { diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java index 221133c..92de7ba 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java +++ b/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; + } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java index cc50c48..9d270d6 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java +++ b/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); - } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/MdkApiController.java new file mode 100644 index 0000000..4be5711 --- /dev/null +++ b/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); + } +} \ No newline at end of file -- Gitblit v1.9.3