From 0a2b23ad3f30dfb01c5d590fb98f39e93bfe1932 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期二, 31 十二月 2024 18:35:17 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 86 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 82 insertions(+), 4 deletions(-) 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 9a6275c..129b8da 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 @@ -8,6 +8,7 @@ import com.iailab.module.data.api.point.dto.ApiPointDTO; import com.iailab.module.data.api.point.dto.ApiPointValueDTO; import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; +import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO; import com.iailab.module.data.common.ApiDataQueryDTO; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.*; @@ -18,7 +19,9 @@ import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity; import com.iailab.module.model.mcs.pre.service.*; import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO; +import com.iailab.module.model.mcs.sche.entity.StScheduleModelOutEntity; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; +import com.iailab.module.model.mcs.sche.service.StScheduleModelOutService; import com.iailab.module.model.mcs.sche.service.StScheduleSchemeService; import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO; @@ -46,6 +49,9 @@ public class McsApiImpl implements McsApi { @Autowired + private DataPointApi dataPointApi; + + @Autowired private DmModuleService dmModuleService; @Autowired @@ -59,9 +65,6 @@ @Autowired private MmItemResultLastPointService mmItemResultLastPointService; - - @Autowired - private DataPointApi dataPointApi; @Autowired private MmItemResultJsonService mmItemResultJsonService; @@ -83,6 +86,9 @@ @Autowired private StScheduleSchemeService stScheduleSchemeService; + + @Autowired + private StScheduleModelOutService stScheduleModelOutService; private int HOUR_MINS = 60; @@ -550,10 +556,82 @@ } @Override - public List<StScheduleSchemeDTO> listScheduleScheme(Map<String, Object> params) { + public List<StScheduleSchemeDTO> listScheduleScheme(String triggerMethod, String triggerCondition) { + Map<String, Object> params = new HashMap<>(); + 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) { Date[] result = new Date[3]; -- Gitblit v1.9.3