潘志宝
2025-03-17 82e98b24e0871366a5fc8bddab07bbabfc321eb3
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java
@@ -61,48 +61,18 @@
        switch (ModelParamType.getEumByCode(paramType)) {
            case NORMALITEM:
            case MERGEITEM:
                // 预测值
                oneMin = granularity * 1000L;
                // 设置时间偏移量
                if (granularity >= 24*60*60) {
                    // 如果时间粒度大于等于一天,因为时区问题,特殊处理,否则时间为8:00,而非0:00
                    start = start - ((start+8*60*60*1000) % oneMin);
                    end = end - ((end+8*60*60*1000) % oneMin);
                } else {
                    start = start - (start % oneMin);
                    end = end - (end % oneMin);
                }
                mins = ((end - start) / oneMin);
                mins = calMins(start, end, granularity);
                break;
            case DATAPOINT:
            case PLAN:
                // 测点值
                oneMin = 1000L * granularity;
                // 设置时间偏移量
                if (granularity >= 24*60*60) {
                    // 如果时间粒度大于等于一天,因为时区问题,特殊处理,否则时间为8:00,而非0:00
                    start = start - ((start+8*60*60*1000) % oneMin);
                    end = end - ((end+8*60*60*1000) % oneMin);
                } else {
                    start = start - (start % oneMin);
                    end = end - (end % oneMin);
                }
                mins = ((end - start) / oneMin);
                mins = calMins(start, end, granularity);
                break;
            case IND:
            case IND_ASCII:
                // 测点值
                oneMin = 1000L * granularity;
                // 设置时间偏移量
                if (granularity >= 24*60*60) {
                    // 如果时间粒度大于等于一天,因为时区问题,特殊处理,否则时间为8:00,而非0:00
                    start = start - ((start+8*60*60*1000) % oneMin);
                    end = end - ((end+8*60*60*1000) % oneMin);
                } else {
                    start = start - (start % oneMin);
                    end = end - (end % oneMin);
                }
                mins = ((end - start) / oneMin) + 1;
                mins = calMins(start, end, granularity) + 1;
                break;
            default:
                break;
@@ -142,6 +112,20 @@
        return completionDataEntityList;
    }
    private long calMins(long start, long end, Integer granularity) {
        long oneMin = granularity * 1000L;
        // 设置时间偏移量
        if (granularity >= 24 * 60 * 60) {
            // 如果时间粒度大于等于一天,因为时区问题,特殊处理,否则时间为8:00,而非0:00
            start = start - ((start + 8 * 60 * 60 * 1000) % oneMin);
            end = end - ((end + 8 * 60 * 60 * 1000) % oneMin);
        } else {
            start = start - (start % oneMin);
            end = end - (end % oneMin);
        }
        return ((end - start) / oneMin);
    }
    /**
     * getFirstValue
     *