已修改8个文件
180 ■■■■■ 文件已修改
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-system/iailab-module-system-biz/pom.xml 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -161,8 +161,8 @@
    @Operation(summary = "获取15分钟内最新预警建议信息")
    List<ScheduleSuggestRespDTO> getLastSuggest(@RequestParam Map<String, Object> params);
    @PostMapping(PREFIX + "/predict-item/autoAdjustByCode")
    @Operation(summary = "自动调整")
    Boolean autoAdjustByCode(@RequestBody MmPredictAutoAdjustReqVO reqVO);
    @PostMapping(PREFIX + "/predict-data/time-value")
    @Operation(summary = "根据预测时间获取最后预测值")
    Map<String, BigDecimal> getPredictValueByTime(@RequestBody PredictLastValueReqVO reqVO);
}
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java
@@ -1,8 +1,10 @@
package com.iailab.module.model.api.mcs.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
@@ -15,4 +17,7 @@
public class PredictLastValueReqVO {
    private List<String[]> itemNos;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date predictTime;
}
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java
@@ -1,5 +1,6 @@
package com.iailab.module.model.api.mdk;
import com.iailab.module.model.api.mcs.dto.MmPredictAutoAdjustReqVO;
import com.iailab.module.model.api.mdk.dto.*;
import com.iailab.module.model.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
@@ -48,4 +49,8 @@
    @PostMapping(PREFIX + "/schedule-model/out")
    @Operation(summary = "调度模型数据下发")
    Boolean scheduleModelOut(@RequestBody MdkScheduleRespDTO dto);
    @PostMapping(PREFIX + "/predict-item/autoAdjustByCode")
    @Operation(summary = "预测自动调整")
    Boolean autoAdjustByCode(@RequestBody MmPredictAutoAdjustReqVO reqVO);
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -117,9 +117,6 @@
    @Autowired
    private StScheduleModelSettingService stScheduleModelSettingService;
    @Autowired
    private MmPredictAutoAdjustConfigService autoAdjustService;
    private int HOUR_MINS = 60;
    @Override
@@ -458,12 +455,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);
@@ -786,6 +794,7 @@
        return result;
    }
    @Override
    public Map<String, BigDecimal> getPredictLastValue(PredictLastValueReqVO reqVO) {
        Map<String, BigDecimal> result = new HashMap<>(reqVO.getItemNos().size());
        if (CollectionUtils.isEmpty(reqVO.getItemNos())) {
@@ -808,6 +817,30 @@
            }
            Date predictTime = predictItem.getLastTime();
            List<Object[]> curData = mmItemResultJsonService.getData(outputId, predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
            if (CollectionUtils.isEmpty(curData)) {
                result.put(key, BigDecimal.ZERO);
            } else {
                result.put(key, new BigDecimal(curData.get(curData.size() - 1)[1].toString()));
            }
        }
        return result;
    }
    @Override
    public Map<String, BigDecimal> getPredictValueByTime(PredictLastValueReqVO reqVO) {
        Map<String, BigDecimal> result = new HashMap<>(reqVO.getItemNos().size());
        if (CollectionUtils.isEmpty(reqVO.getItemNos())) {
            return result;
        }
        List<String[]> itemNos = reqVO.getItemNos();
        for (String[] itemNo : itemNos) {
            String key = itemNo[0] + "," + itemNo[1] + "," + itemNo[2];
            ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemNo[0]);
            if (predictItem == null || predictItem.getLastTime() == null) {
                result.put(key, BigDecimal.ZERO);
            }
            MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]);
            List<Object[]> curData = mmItemResultJsonService.getData(outPut.getId(), reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
            if (CollectionUtils.isEmpty(curData)) {
                result.put(key, BigDecimal.ZERO);
            } else {
@@ -948,11 +981,6 @@
    @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());
    }
    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
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
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.MmPredictAutoAdjustReqVO;
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.*;
@@ -13,6 +14,7 @@
import com.iailab.module.model.enums.PredictItemTypeEnum;
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.MmPredictAutoAdjustConfigService;
import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity;
import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity;
@@ -80,6 +82,9 @@
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private MmPredictAutoAdjustConfigService autoAdjustService;
    public static final long offset = 60 * 3L;
@@ -409,4 +414,9 @@
        }
        return true;
    }
    @Override
    public Boolean autoAdjustByCode(MmPredictAutoAdjustReqVO reqVO) {
        return autoAdjustService.autoAdjustByCode(reqVO.getConfigCode(), reqVO.getAdjustStartTime());
    }
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java
@@ -29,7 +29,11 @@
        QueryWrapper<MmItemResultJsonEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("outputid", outputId)
                .eq("predicttime", DateUtils.format(predictTime,timeFormat));
        MmItemResultJsonEntity data = baseDao.selectOne(wrapper);
        MmItemResultJsonEntity data = null;
        List<MmItemResultJsonEntity> dataList = baseDao.selectList(wrapper);
        if (!CollectionUtils.isEmpty(dataList)) {
            data = dataList.get(0);
        }
        if (data == null || StringUtils.isBlank(data.getJsonvalue())) {
            return result;
        }
iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
@@ -37,6 +37,20 @@
                    #{item}
                </foreach>
            </if>
            <if test="params.title != null and params.title.size() > 0">
                and t.title in
                <foreach collection="params.title" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="params.contentKey != null and params.contentKey.size() > 0">
                AND (
                <foreach collection="params.contentKey" item="item"  open="" separator="OR" close="">
                    t.content like concat('%',#{item},'%')
                </foreach>
                )
            </if>
        </where>
        order by t.time desc
iailab-module-system/iailab-module-system-biz/pom.xml
@@ -168,45 +168,45 @@
        <!-- 设置构建的 jar 包名 -->
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.7.0</version>
                <executions>
                    <!-- 以下配置说明执行mvn的package命令时候,会执行proguard-->
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 -->
                    <injar>${project.build.finalName}.jar</injar>
                    <!-- 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 -->
                    <outjar>${project.build.finalName}.jar</outjar>
                    <!-- 是否混淆 默认是true -->
                    <obfuscate>true</obfuscate>
                    <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir>
                    <!-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->
                    <proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>
                    <!-- 额外的jar包,通常是项目编译所需要的jar -->
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>${java.home}/lib/jce.jar</lib>
                        <lib>${java.home}/lib/jsse.jar</lib>
                    </libs>
                    <!-- 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 -->
                    <inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter>
                    <!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar -->
                    <outputDirectory>${project.basedir}/target</outputDirectory>
                    <!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆-->
                    <options>
                        <!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->
                    </options>
                </configuration>
            </plugin>
<!--            <plugin>-->
<!--                <groupId>com.github.wvengen</groupId>-->
<!--                <artifactId>proguard-maven-plugin</artifactId>-->
<!--                <version>2.7.0</version>-->
<!--                <executions>-->
<!--                    &lt;!&ndash; 以下配置说明执行mvn的package命令时候,会执行proguard&ndash;&gt;-->
<!--                    <execution>-->
<!--                        <phase>package</phase>-->
<!--                        <goals>-->
<!--                            <goal>proguard</goal>-->
<!--                        </goals>-->
<!--                    </execution>-->
<!--                </executions>-->
<!--                <configuration>-->
<!--                    &lt;!&ndash; 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 &ndash;&gt;-->
<!--                    <injar>${project.build.finalName}.jar</injar>-->
<!--                    &lt;!&ndash; 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 &ndash;&gt;-->
<!--                    <outjar>${project.build.finalName}.jar</outjar>-->
<!--                    &lt;!&ndash; 是否混淆 默认是true &ndash;&gt;-->
<!--                    <obfuscate>true</obfuscate>-->
<!--                    <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir>-->
<!--                    &lt;!&ndash; 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 &ndash;&gt;-->
<!--                    <proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>-->
<!--                    &lt;!&ndash; 额外的jar包,通常是项目编译所需要的jar &ndash;&gt;-->
<!--                    <libs>-->
<!--                        <lib>${java.home}/lib/rt.jar</lib>-->
<!--                        <lib>${java.home}/lib/jce.jar</lib>-->
<!--                        <lib>${java.home}/lib/jsse.jar</lib>-->
<!--                    </libs>-->
<!--                    &lt;!&ndash; 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 &ndash;&gt;-->
<!--                    <inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter>-->
<!--                    &lt;!&ndash; 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar &ndash;&gt;-->
<!--                    <outputDirectory>${project.basedir}/target</outputDirectory>-->
<!--                    &lt;!&ndash;这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆&ndash;&gt;-->
<!--                    <options>-->
<!--                        &lt;!&ndash; 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 &ndash;&gt;-->
<!--                    </options>-->
<!--                </configuration>-->
<!--            </plugin>-->
            <!-- 打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>