潘志宝
2024-11-08 e7812194c9cb2c6e38af05524b55f687905fb5f6
计划数据查询
已修改6个文件
已重命名1个文件
已添加3个文件
211 ■■■■ 文件已修改
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/dto/ApiPlanItemDTO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/TimeGranularityEnum.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/plan/PlanItemApiImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ModelParamType.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java
@@ -1,12 +1,15 @@
package com.iailab.module.data.api.plan;
import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO;
import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO;
import com.iailab.module.data.common.ApiDataQueryDTO;
import com.iailab.module.data.common.ApiDataValueDTO;
import com.iailab.module.data.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -31,4 +34,8 @@
    @PostMapping(PREFIX + "/query-plans/record-value")
    @Operation(summary = "查询计划记录")
    LinkedHashMap<String, List<ApiPlanDataDTO>> queryPlanItemRecordValue(@RequestBody ApiDataQueryDTO dto);
    @GetMapping(PREFIX + "/info/no/{itemNo}")
    @Operation(summary = "根据测点编号查询测点信息")
    ApiPlanItemDTO getInfoByNo(@PathVariable("itemNo") String itemNo);
}
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/dto/ApiPlanItemDTO.java
对比新文件
@@ -0,0 +1,33 @@
package com.iailab.module.data.api.plan.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年11月08日
 */
@Data
@Tag(name = "计划项")
public class ApiPlanItemDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Schema(description = "ID")
    private String id;
    @Schema(description = "指标编码")
    private String itemNo;
    @Schema(description = "指标名称")
    private String itemName;
    @Schema(description = "指标分类")
    private String itemCategory;
    @Schema(description = "时间粒度")
    private String timeGranularity;
}
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreqEnum.java
文件名从 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreq.java 修改
@@ -8,21 +8,21 @@
 */
@Getter
@AllArgsConstructor
public enum DataPointFreq {
    NET10("NET10", 10),
    NET30("NET30", 30),
    NET60("NET60",60);
public enum DataPointFreqEnum {
    NET_10S("10s", 10),
    NET_30S("30s", 30),
    NET_1MIN("1min",60);
    private String code;
    private Integer value;
    public static DataPointFreq getEumByCode(String code) {
    public static DataPointFreqEnum getEumByCode(String code) {
        if (code == null) {
            return null;
        }
        for (DataPointFreq statusEnum : DataPointFreq.values()) {
        for (DataPointFreqEnum statusEnum : DataPointFreqEnum.values()) {
            if (statusEnum.getCode().equals(code)) {
                return statusEnum;
            }
iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/TimeGranularityEnum.java
对比新文件
@@ -0,0 +1,38 @@
package com.iailab.module.data.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Calendar;
/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年11月08日
 */
@Getter
@AllArgsConstructor
public enum TimeGranularityEnum {
    TG_MIN("min", Calendar.MINUTE),
    TG_HOUR("hour", Calendar.HOUR_OF_DAY),
    TG_DAY("day", Calendar.DAY_OF_YEAR),
    TG_MON("mon",Calendar.MONTH);
    private String code;
    private Integer value;
    public static TimeGranularityEnum getEumByCode(String code) {
        if (code == null) {
            return null;
        }
        for (TimeGranularityEnum statusEnum : TimeGranularityEnum.values()) {
            if (statusEnum.getCode().equals(code)) {
                return statusEnum;
            }
        }
        return null;
    }
}
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/plan/PlanItemApiImpl.java
@@ -2,14 +2,18 @@
import com.iailab.framework.common.util.object.ConvertUtils;
import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO;
import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO;
import com.iailab.module.data.common.ApiDataQueryDTO;
import com.iailab.module.data.common.ApiDataValueDTO;
import com.iailab.module.data.plan.item.collection.PlanItemCollector;
import com.iailab.module.data.plan.item.entity.PlanItemEntity;
import com.iailab.module.data.plan.item.service.PlanItemService;
import com.iailab.module.data.plan.item.vo.PlanItemDataVO;
import com.iailab.module.data.plan.item.vo.PlanItemValueVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
@@ -27,11 +31,16 @@
    @Autowired
    private PlanItemCollector planItemCollector;
    @Autowired
    private PlanItemService planItemService;
    @Override
    public List<ApiDataValueDTO> queryPlanItemHistoryValue(ApiDataQueryDTO dto) {
        List<PlanItemValueVO> list = planItemCollector.queryValue(dto.getItemNo(), dto.getStart(), dto.getEnd());
        return ConvertUtils.sourceToTarget(list, ApiDataValueDTO.class);
    }
    @Override
    public LinkedHashMap<String, List<ApiPlanDataDTO>> queryPlanItemRecordValue(ApiDataQueryDTO dto) {
        LinkedHashMap<String, List<ApiPlanDataDTO>> result = new LinkedHashMap<>();
        if (CollectionUtils.isEmpty(dto.getItemNos())) {
@@ -44,4 +53,10 @@
        return result;
    }
    @Override
    public ApiPlanItemDTO getInfoByNo(String itemNo){
        PlanItemEntity entity = planItemService.getInfoByNo(itemNo);
        return ConvertUtils.sourceToTarget(entity, ApiPlanItemDTO.class);
    }
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java
@@ -1,5 +1,6 @@
package com.iailab.module.model.framework.rpc.config;
import com.iailab.module.data.api.plan.PlanItemApi;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.infra.api.config.ConfigApi;
import com.iailab.module.system.api.tenant.TenantApi;
@@ -7,6 +8,6 @@
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {DataPointApi.class, ConfigApi.class, TenantApi.class})
@EnableFeignClients(clients = {DataPointApi.class, PlanItemApi.class, ConfigApi.class, TenantApi.class})
public class RpcConfiguration {
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ModelParamType.java
对比新文件
@@ -0,0 +1,37 @@
package com.iailab.module.model.mdk.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * 模型参数类型
 *
 * @author PanZhibao
 * @Description
 * @createTime 2024年11月08日
 */
@Getter
@AllArgsConstructor
public enum ModelParamType {
    DATAPOINT("DATAPOINT", "测点值"),
    PREDICTITEM("PREDICTITEM", "预测值"),
    IND("IND", "指标值"),
    PLAN("PLAN", "计划值");
    private String code;
    private String desc;
    public static ModelParamType getEumByCode(String code) {
        if (code == null) {
            return null;
        }
        for (ModelParamType statusEnum : ModelParamType.values()) {
            if (statusEnum.getCode().equals(code)) {
                return statusEnum;
            }
        }
        return null;
    }
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java
@@ -2,7 +2,7 @@
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.data.api.point.dto.ApiPointDTO;
import com.iailab.module.data.enums.DataPointFreq;
import com.iailab.module.data.enums.DataPointFreqEnum;
import com.iailab.module.model.mcs.pre.service.MmItemResultService;
import com.iailab.module.model.mdk.factory.ItemEntityFactory;
import com.iailab.module.model.mdk.vo.MmItemOutputVO;
@@ -49,7 +49,7 @@
            dateTimeList.add(tempTime);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(tempTime);
            calendar.add(Calendar.SECOND, DataPointFreq.getEumByCode(point.getMinfreqid()).getValue());
            calendar.add(Calendar.SECOND, DataPointFreqEnum.getEumByCode(point.getMinfreqid()).getValue());
            tempTime = calendar.getTime();
        }
        for (Integer i = 0; i < columns; i++) {
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java
@@ -2,7 +2,7 @@
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.data.api.point.dto.ApiPointDTO;
import com.iailab.module.data.enums.DataPointFreq;
import com.iailab.module.data.enums.DataPointFreqEnum;
import com.iailab.module.model.mdk.common.enums.ItemPredictStatus;
import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
import com.iailab.module.model.mdk.factory.ItemEntityFactory;
@@ -71,7 +71,7 @@
                        Calendar calendar = Calendar.getInstance();
                        calendar.setTime(endTime);
                        calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreq.getEumByCode(pointEntity.getMinfreqid()).getValue());
                        calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreqEnum.getEumByCode(pointEntity.getMinfreqid()).getValue());
                        endTime = new Timestamp(calendar.getTime().getTime());
                        List<DataValueVO> predictValueList = predictResultHandler.getPredictValueByItemNo(itemNo, predictTime, endTime);
                        if (predictValueList.size() != predictLength) {
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
@@ -1,8 +1,12 @@
package com.iailab.module.model.mdk.sample;
import com.iailab.module.data.api.plan.PlanItemApi;
import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.data.api.point.dto.ApiPointDTO;
import com.iailab.module.data.enums.DataPointFreq;
import com.iailab.module.data.enums.DataPointFreqEnum;
import com.iailab.module.data.enums.TimeGranularityEnum;
import com.iailab.module.model.mdk.common.enums.ModelParamType;
import com.iailab.module.model.mdk.factory.ItemEntityFactory;
import com.iailab.module.model.mdk.sample.dto.ColumnItem;
import com.iailab.module.model.mdk.sample.dto.ColumnItemPort;
@@ -25,6 +29,9 @@
    @Autowired
    private ItemEntityFactory itemEntityFactory;
    @Autowired
    private PlanItemApi planItemApi;
    /**
     * prepareSampleInfo
@@ -64,21 +71,21 @@
        Date dateTime = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(originalTime);
        switch (columnItem.getParamType()) {
            case "DATAPOINT":
        switch (ModelParamType.getEumByCode(columnItem.getParamType())) {
            case DATAPOINT:
                ApiPointDTO dataPoint = dataPointApi.getInfoById(columnItem.getParamId());
                if (dataPoint == null) {
                    return null;
                }
                dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue());
                dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue());
                break;
            case "PREDICTITEM":
            case PREDICTITEM:
                dateTime = calendar.getTime();
                break;
            case "IND-HIS":
            case IND:
                dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), 60);
                break;
            case "IND-PLAN":
            case PLAN:
                dateTime = calendar.getTime();
                break;
            default:
@@ -99,22 +106,27 @@
        Date dateTime = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(originalTime);
        switch (columnItem.getParamType()) {
            case "DATAPOINT":
        switch (ModelParamType.getEumByCode(columnItem.getParamType())) {
            case DATAPOINT:
                ApiPointDTO dataPoint = dataPointApi.getInfoById(columnItem.getParamId());
                if (dataPoint == null) {
                    return null;
                }
                calendar.add(Calendar.SECOND, DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue() * -1);
                calendar.add(Calendar.SECOND, DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue() * -1);
                break;
            case "PREDICTITEM":
            case PREDICTITEM:
                dateTime = calculateTime(originalTime, false, columnItem.getDataLength(), 60);
                break;
            case "IND-HIS":
            case IND:
                dateTime = calendar.getTime();
                break;
            case "IND-PLAN":
                dateTime = calculateTime(originalTime, false, columnItem.getDataLength(), 60);
            case PLAN:
                ApiPlanItemDTO planItem = planItemApi.getInfoByNo(columnItem.getParamId());
                if (planItem == null) {
                    return null;
                }
                dateTime = calculateDate(originalTime, false, columnItem.getDataLength(),
                        TimeGranularityEnum.getEumByCode(planItem.getTimeGranularity()).getValue());
                break;
            default:
                break;
@@ -134,7 +146,7 @@
        switch (columnItem.getParamType()) {
            case "DATAPOINT":
                ApiPointDTO dataPoint = dataPointApi.getInfoById(columnItem.getParamId());
                granularity = DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue();
                granularity = DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue();
                break;
            case "PREDICTITEM":
                granularity = itemEntityFactory.getItemById(columnItem.getParamId()).getGranularity();
@@ -192,4 +204,20 @@
        calendar.add(Calendar.SECOND, timeLength * granularity);
        return calendar.getTime();
    }
    public Date calculateDate(Date originalTime, Boolean backward, int dataLength, int field) {
        int timeLength;
        if (backward) {
            timeLength = (-1) * dataLength;
        } else {
            timeLength = dataLength - 1;
        }
        Date desTime = originalTime;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(desTime);
        calendar.set(Calendar.MILLISECOND, 0);
        // 数据长度 * 粒度
        calendar.add(Calendar.SECOND, timeLength);
        return calendar.getTime();
    }
}