From 05116c23053aa66c3532870f1900ba0a5f252a0a Mon Sep 17 00:00:00 2001 From: Jay <csj123456> Date: 星期三, 04 六月 2025 16:04:27 +0800 Subject: [PATCH] 增加取消采纳建议接口 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 219 +++++++++++++++++++++--------------------------------- 1 files changed, 84 insertions(+), 135 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 2640d3e..eaf63a2 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 @@ -23,6 +23,7 @@ import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity; +import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity; import com.iailab.module.model.mcs.pre.enums.PredGranularityEnum; import com.iailab.module.model.mcs.pre.service.*; import com.iailab.module.model.mcs.pre.vo.MmItemOutputRespVO; @@ -32,7 +33,9 @@ import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity; import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity; import com.iailab.module.model.mcs.sche.service.*; +import com.iailab.module.model.mcs.sche.vo.StScheduleRecordRespVO; import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO; +import com.iailab.module.model.mcs.sche.vo.StSuggestOperationRecordReqVO; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mpk.service.ChartParamService; import com.iailab.module.model.mpk.service.ChartService; @@ -92,6 +95,9 @@ private StScheduleSuggestService stScheduleSuggestService; @Autowired + private StSuggestSnapshotRecordService stSuggestSnapshotRecordService; + + @Autowired private PlanItemApi planItemApi; @Autowired @@ -119,8 +125,13 @@ private StScheduleModelSettingService stScheduleModelSettingService; @Autowired - private MmPredictAutoAdjustConfigService autoAdjustService; - private int HOUR_MINS = 60; + private MmPredictModelService mmPredictModelService; + + @Autowired + private MmModelArithSettingsService mmModelArithSettingsService; + + @Autowired + private StSuggestOperationRecordService stSuggestOperationRecordService; @Override public List<PredictItemTreeDTO> getPredictItemTree() { @@ -141,6 +152,7 @@ PredictItemTreeDTO chd = new PredictItemTreeDTO(); chd.setLabel(item1.getItemName()); chd.setId(item1.getId()); + chd.setDisabled(true); List<PredictItemTreeDTO> chd1 = new ArrayList<>(); List<MmItemOutputEntity> outList = mmItemOutputService.getByItemid(item1.getId()); if (!CollectionUtils.isEmpty(outList)) { @@ -162,131 +174,7 @@ @Override public PreDataBarLineRespVO getPreDataCharts(PreDataBarLineReqVO reqVO) { - PreDataBarLineRespVO result = new PreDataBarLineRespVO(); - List<String> outIds = reqVO.getOutIds(); - List<String> legends = new ArrayList<>(); - List<PreDataViewRespDTO> dataViewList = new ArrayList<>(); - if (CollectionUtils.isEmpty(outIds)) { - return result; - } - Date predictTime = reqVO.getPredictTime(); - if (predictTime == null) { - MmItemOutputEntity output = null; - for (String outId : outIds) { - output = mmItemOutputService.getOutPutById(outId); - if (output != null) { - break; - } - } - ItemVO predictItem = mmPredictItemService.getItemById(output.getItemid()); - if (predictItem.getLastTime() != null) { - predictTime = predictItem.getLastTime(); - } else { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.MILLISECOND, 0); - calendar.set(Calendar.SECOND, 0); - predictTime = calendar.getTime(); - } - } - Date startTime = reqVO.getStartTime(); - if (startTime == null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictTime); - calendar.add(Calendar.HOUR_OF_DAY, -1); - startTime = calendar.getTime(); - } - Date endTime = reqVO.getEndTime(); - if (endTime == null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictTime); - calendar.add(Calendar.HOUR_OF_DAY, 1); - calendar.add(Calendar.MINUTE, 1); - endTime = calendar.getTime(); - } - - for (int i = 0; i < outIds.size(); i++) { - PreDataViewRespDTO viewDto = new PreDataViewRespDTO(); - String outId = outIds.get(i); - MmItemOutputEntity output = mmItemOutputService.getOutPutById(outId); - if (output == null) { - continue; - } - legends.add(output.getResultName()); - viewDto.setItemId(output.getItemid()); - viewDto.setOutId(outId); - viewDto.setResultstr(output.getResultstr()); - viewDto.setResultName(output.getResultName()); - viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime, reqVO.getPrec())); - viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - viewDto.setPreDataLOriginal(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, DataTypeEnum.FLOAT_LAST_BAK)); - viewDto.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - // 模拟调整曲线 - viewDto.setAdjData(stAdjustResultService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - - List<Double> values = new ArrayList<>(); - if (!CollectionUtils.isEmpty(viewDto.getRealData())) { - List<Double> hisValues = new ArrayList<>(); - viewDto.getRealData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - hisValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setHisMax(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setHisMin(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setHisAvg(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setHisCumulant(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).sum()) - .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getPreDataN())) { - viewDto.getPreDataN().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - }); - } - if (!CollectionUtils.isEmpty(viewDto.getPreDataL())) { - List<Double> preValues = new ArrayList<>(); - viewDto.getPreDataL().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - preValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setPreMax(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setPreMin(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setPreAvg(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getCurData())) { - List<Double> preValues = new ArrayList<>(); - viewDto.getCurData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - preValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setPreCumulant(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).sum()) - .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getAdjData())) { - viewDto.getAdjData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - }); - } - if (!CollectionUtils.isEmpty(values)) { - viewDto.setMaxValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - viewDto.setMinValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - } - //处理预测累计 - if (output.getIscumulant() == 1) { - if (StringUtils.isNotBlank(output.getCumulpoint())) { - viewDto.setCumulantRealData(getHisData(output.getCumulpoint(), startTime, endTime, reqVO.getPrec())); - } - viewDto.setCumulantPreData(mmItemResultService.getData(output.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - } - - dataViewList.add(viewDto); - } - result.setStartTime(startTime); - result.setEndTime(endTime); - result.setPredictTime(predictTime); - result.setCategories(DateUtils.getTimeScale(startTime, endTime, 60)); - result.setLegend(legends); - result.setDataViewList(dataViewList); - return result; + return mmItemResultService.getPreDataCharts(reqVO); } @Override @@ -458,12 +346,23 @@ if (!CollectionUtils.isEmpty(dataView.getCurData())) { List<Double> curList = dataView.getCurData().stream().map(t -> { - return new Double(t[1].toString()); - }).collect(Collectors.toList()); - dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); - dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1)).setScale(2, BigDecimal.ROUND_HALF_UP)); - dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()).setScale(2, BigDecimal.ROUND_HALF_UP)); + try { + return new Double(t[1].toString()); + } catch (NumberFormatException e) { + return null; + } + }).filter(Objects::nonNull).collect(Collectors.toList()); + if (!curList.isEmpty()) { + dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1)).setScale(2, BigDecimal.ROUND_HALF_UP)); + dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()).setScale(2, BigDecimal.ROUND_HALF_UP)); + } else { + dataView.setPreMax(null); + dataView.setPreMin(null); + dataView.setPreLast(null); + dataView.setPreCumulant(null); + } } String alarmObj = chartParams.get(CommonConstant.ALARM_OBJ); @@ -703,7 +602,11 @@ @Override public Boolean createScheduleSuggest(ScheduleSuggestRespDTO dto) { + String suggestId = UUID.randomUUID().toString(); + dto.setId(suggestId); stScheduleSuggestService.create(ConvertUtils.sourceToTarget(dto, StScheduleSuggestSaveReqVO.class)); + // 根据建议产生快照 + stSuggestSnapshotRecordService.createSnapshotRecord(dto.getModelId(),dto.getScheduleObj(),dto.getScheduleTime(),suggestId); return true; } @@ -971,13 +874,59 @@ } @Override + public Boolean cancelUseSuggest(StAlarmAndSuggestReqVO reqVO) { + return stScheduleSuggestService.cancelUseSuggest(reqVO); + } + + @Override + public Boolean ignoreSuggest(StAlarmAndSuggestReqVO reqVO) { + return stScheduleSuggestService.ignoreSuggest(reqVO); + } + + @Override public List<ScheduleSuggestRespDTO> getLastSuggest(Map<String, Object> params) { return stScheduleSuggestService.getLastSuggest(params); } @Override - public Boolean autoAdjustByCode(MmPredictAutoAdjustReqVO reqVO) { - return autoAdjustService.autoAdjustByCode(reqVO.getConfigCode(), reqVO.getAdjustStartTime()); + public Boolean updatePredictModelSetting(String modelCode, String key, String value) { + MmPredictModelEntity model = mmPredictModelService.getByModelCode(modelCode); + mmModelArithSettingsService.updateByModelIdAndKey(model.getId(), key, value); + return true; + } + + @Override + public Boolean saveSuggestOperationRecord(SuggestOperationRecordReqVO reqVO) { + StSuggestOperationRecordReqVO operationRecordVo = new StSuggestOperationRecordReqVO(); + operationRecordVo.setSuggestId(reqVO.getId()); + operationRecordVo.setOperate(reqVO.getOperate()); + operationRecordVo.setReason(reqVO.getReason()); + operationRecordVo.setHandler(reqVO.getHandler()); + operationRecordVo.setHandlerId(reqVO.getHandlerId()); + //获取建议信息 + StScheduleSuggestEntity entity = stScheduleSuggestService.getInfo(reqVO.getId()); + if (entity != null){ + operationRecordVo.setTitle(entity.getTitle()); + operationRecordVo.setContent(entity.getContent()); + operationRecordVo.setScheduleObj(entity.getScheduleObj()); + if (StringUtils.isNotBlank(entity.getModelId())){ + //获取模型记录信息 + StScheduleRecordRespVO scheduleRecordVO = stScheduleRecordService.getInfoByModelIdAndScheduleTime(entity.getModelId(), entity.getScheduleTime()); + operationRecordVo.setSchemeId(scheduleRecordVO.getSchemeId()); + operationRecordVo.setModelId(entity.getModelId()); + operationRecordVo.setModelName(scheduleRecordVO.getModelName()); + operationRecordVo.setScheduleTime(entity.getScheduleTime()); + operationRecordVo.setResultCode(scheduleRecordVO.getResultCode()); + operationRecordVo.setResultData(scheduleRecordVO.getResultData()); + } + } + stSuggestOperationRecordService.create(operationRecordVo); + return true; + } + + @Override + public List<StSuggestSnapshotRecordRespVO> getSuggestSnapshotAllChartData(String suggestId) { + return stSuggestSnapshotRecordService.getAllChartData(suggestId); } private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) { -- Gitblit v1.9.3