潘志宝
9 天以前 4c1658f05f5be04b135920366ad4c417fad0c491
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -23,12 +23,12 @@
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.enums.PredGranularityEnum;
import com.iailab.module.model.mcs.pre.service.*;
import com.iailab.module.model.mcs.pre.vo.MmItemOutputRespVO;
import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigSaveReqVO;
import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO;
import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity;
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.*;
@@ -216,7 +216,7 @@
            viewDto.setOutId(outId);
            viewDto.setResultstr(output.getResultstr());
            viewDto.setResultName(output.getResultName());
            viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime));
            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.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
@@ -272,7 +272,7 @@
            //处理预测累计
            if (output.getIscumulant() == 1) {
                if (StringUtils.isNotBlank(output.getCumulpoint())) {
                    viewDto.setCumulantRealData(getHisData(output.getCumulpoint(), startTime, endTime));
                    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));
            }
@@ -331,13 +331,13 @@
            legend.add(out.getResultName());
            PreDataSampleViewRespDTO viewDto = new PreDataSampleViewRespDTO();
            if (StringUtils.isNotBlank(out.getPointid())) {
                viewDto.setRealData(getHisData(out.getPointid(), startTime, endTime));
                viewDto.setRealData(getHisData(out.getPointid(), startTime, endTime, reqVO.getPrec()));
            }
            viewDto.setPreDataN(mmItemResultService.getData(out.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
            //处理预测累计
            if (out.getIscumulant() == 1) {
                if (StringUtils.isNotBlank(out.getCumulpoint())) {
                    viewDto.setCumulantRealData(getHisData(out.getCumulpoint(), startTime, endTime));
                    viewDto.setCumulantRealData(getHisData(out.getCumulpoint(), startTime, endTime, reqVO.getPrec()));
                }
                viewDto.setCumulantPreData(mmItemResultService.getData(out.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
            }
@@ -402,12 +402,25 @@
        dataView.setRangeL(rangeL);
        dataView.setLimitH(limitH);
        dataView.setLimitL(limitL);
        Map<String, Object> realDataMap = new HashMap<>();
        if (StringUtils.isNotBlank(outPut.getPointid())) {
            dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat));
            dataView.getRealData().forEach(item -> {
                realDataMap.put(item[0].toString(), item[1]);
            });
        } else {
            dataView.setRealData(new ArrayList<>());
        }
        dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3));
        if (!CollectionUtils.isEmpty(realDataMap)) {
            Object curReal = realDataMap.get(DateUtils.format(predictTime, timeFormat)) == null ?
                    dataView.getRealData().get(dataView.getRealData().size() - 1) : realDataMap.get(DateUtils.format(predictTime, timeFormat));
            // 当前值T0 + 当前预测值 20250409
            dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3, true, curReal));
        } else {
            dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3));
        }
        // 调整预测值
        dataView.setAdjData(stAdjustResultService.getData(outPut.getId(),predictTime,timeFormat));
        dataView.setLineType(lineType.getCode());
@@ -419,13 +432,22 @@
                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat));
                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat));
                break;
            case CL:
                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat));
                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat));
                break;
            default:
                break;
        }
        //处理预测累计
        if (outPut.getIscumulant() != null && outPut.getIscumulant() == 1) {
            /*if (StringUtils.isNotBlank(outPut.getCumulpoint())) {
                dataView.setCumulantRealData(getHisData(outPut.getCumulpoint(), startTime, endTime));
            }*/
            List<Object[]> cumulantPreList = mmItemResultService.getData(outPut.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
            dataView.setCumulantPreData(cumulantPreList);
            if (!CollectionUtils.isEmpty(cumulantPreList)) {
                dataView.setCumulantPreLast(new BigDecimal(cumulantPreList.get(cumulantPreList.size() - 1)[1].toString()).setScale(2, BigDecimal.ROUND_HALF_UP));
            }
        }
        if (!CollectionUtils.isEmpty(dataView.getRealData())) {
            Object[] rdo = dataView.getRealData().get(dataView.getRealData().size() - 1);
            dataView.setCurrValue(new BigDecimal(rdo[1].toString()));
@@ -553,9 +575,10 @@
     * @param pointId
     * @param startTime
     * @param endTime
     * @param prec
     * @return
     */
    private List<Object[]> getHisData(String pointId, Date startTime, Date endTime) {
    private List<Object[]> getHisData(String pointId, Date startTime, Date endTime, Integer prec) {
        List<Object[]> result = new ArrayList<>();
        if (StringUtils.isBlank(pointId)) {
            return result;
@@ -569,10 +592,17 @@
        if (CollectionUtils.isEmpty(valueDTOS)) {
            return result;
        }
        int defaultPrec = 3;
        valueDTOS.forEach(item -> {
            Object[] values = new Object[2];
            values[0] = DateUtils.format(item.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
            values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP);
            if (prec != null && prec < 0) {
                values[1] = item.getV();
            } else if (prec != null && prec > 0) {
                values[1] = new BigDecimal(item.getV()).setScale(prec, BigDecimal.ROUND_HALF_UP);
            } else {
                values[1] = new BigDecimal(item.getV()).setScale(defaultPrec, BigDecimal.ROUND_HALF_UP);
            }
            result.add(values);
        });
        return result;
@@ -699,7 +729,16 @@
            InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO();
            pojo.setOutPutIds(outPutIds);
            pojo.setType(DataTypeEnum.FLOAT.getCode());
            Map<String, List<InfluxModelResultVO>> outPutIdDoubles = influxDBService.queryModelResultsByOutPutIds(pojo, mmPredictItemRespVO.getLastTime(), mmPredictItemRespVO.getLastTime());
            // 查询时间加1粒度
            Calendar lastTime = Calendar.getInstance();
            lastTime.setTime(mmPredictItemRespVO.getLastTime());
            if (mmPredictItemRespVO.getGranularity() < PredGranularityEnum.D1.getCode()) {
                // 如果小于天粒度,则从下个时间粒度开始
                lastTime.add(Calendar.SECOND,mmPredictItemRespVO.getGranularity());
            }
            Map<String, List<InfluxModelResultVO>> outPutIdDoubles = influxDBService.queryModelResultsByOutPutIds(pojo, lastTime.getTime(), lastTime.getTime());
            Map<String, Double> outPutIdDouble = new HashMap<>(outPutIds.size());
            for (MmItemOutputRespVO outPut : mmPredictItemRespVO.getOutPuts()) {
                String outPutId = outPut.getId();
@@ -854,8 +893,9 @@
    }
    @Override
    public List<Object[]> getItemResult(String outputid, Date startTime, Date endTime, String timeFormat) {
        return mmItemResultService.getData(outputid,startTime,endTime,timeFormat);
    public List<Object[]> getItemResult(PreItemResultReqVO reqVO) {
        return mmItemResultService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat());
    }
    @Override
@@ -864,8 +904,18 @@
    }
    @Override
    public List<Object[]> getItemResultLastPoint(String outputid, Date startTime, Date endTime, String timeFormat) {
        return mmItemResultLastPointService.getData(outputid,startTime,endTime,timeFormat);
    public List<Object[]> getItemResultLastPoint(PreItemResultReqVO reqVO) {
        return mmItemResultLastPointService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat());
    }
    @Override
    public Boolean useSuggest(StAlarmAndSuggestReqVO reqVO) {
        return stScheduleSuggestService.useSuggest(reqVO);
    }
    @Override
    public List<ScheduleSuggestRespDTO> getLastSuggest(Map<String, Object> params) {
        return stScheduleSuggestService.getLastSuggest(params);
    }
    private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {