iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql
@@ -443,3 +443,5 @@ PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='定时归档设置表'; ALTER TABLE `t_da_cumulate_point` ADD COLUMN `cumulate_unit` varchar(10) DEFAULT 'min' COMMENT '累计单位'; iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java
@@ -9,6 +9,7 @@ import com.iailab.module.data.influxdb.pojo.InfluxPointValuePOJO; import com.iailab.module.data.point.collection.PointCollector; import com.iailab.module.data.point.collection.utils.GenInfluxPointValueUtils; import com.iailab.module.data.point.common.PointCumulateUnitEnum; import com.iailab.module.data.point.dto.DaPointDTO; import com.iailab.module.data.point.service.DaPointService; import lombok.extern.slf4j.Slf4j; @@ -101,12 +102,15 @@ } return CommonConstant.BAD_VALUE; } // 动态长度 Calendar calendar = Calendar.getInstance(); calendar.setTime(collectTime); calendar.add(Calendar.MINUTE, -1); calendar.add(Calendar.SECOND, -1 * DataPointFreqEnum.getEumByCode(dto.getMinfreqid()).getValue()); Date endTime = calendar.getTime(); calendar.add(Calendar.MINUTE, dto.getLength() * -1); Date startTime = calendar.getTime(); Date startTime = PointCumulateUnitEnum.getStartTime(calendar,dto.getLength(),dto.getCumulateUnit()); ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO(); queryDto.setStart(startTime); queryDto.setEnd(endTime); iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/common/PointCumulateUnitEnum.java
对比新文件 @@ -0,0 +1,73 @@ package com.iailab.module.data.point.common; import com.iailab.framework.common.util.date.DateUtils; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Calendar; import java.util.Date; import java.util.function.BiFunction; /** * 累计测点累计单位 */ @Getter @AllArgsConstructor public enum PointCumulateUnitEnum { MIN("min", (end, length) -> { Calendar cal = (Calendar) end.clone(); cal.add(Calendar.MINUTE, -length); return cal; }), HOUR("hour", (end, length) -> { Calendar cal = (Calendar) end.clone(); cal.add(Calendar.HOUR_OF_DAY, -length); return cal; }), DAY("day", (end, length) -> { Calendar cal = (Calendar) end.clone(); cal.add(Calendar.DAY_OF_MONTH, -length); return cal; }), THIS_MONTH("this_month", (end, length) -> { Calendar cal = (Calendar) end.clone(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal; }); private final String code; private final BiFunction<Calendar, Integer, Calendar> calculator; public Calendar calculate(Calendar endTime, Integer length) { return calculator.apply(endTime, length); } public static PointCumulateUnitEnum fromCode(String code) { for (PointCumulateUnitEnum unit : values()) { if (unit.code.equals(code)) { return unit; } } return null; } public static Date getStartTime(Calendar endTime, Integer length, String cumulateUnit) { PointCumulateUnitEnum unit = PointCumulateUnitEnum.fromCode(cumulateUnit); if (unit == null) { return endTime.getTime(); }else if (unit != THIS_MONTH) { if (length == null || length <= 0) { return endTime.getTime(); } } Calendar startCal = unit.calculate(endTime, length); return startCal.getTime(); } } iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaCumulatePointDTO.java
@@ -34,6 +34,9 @@ @Schema(description = "累计长度", required = true) private Integer length; @Schema(description = "累计单位", required = true) private String cumulateUnit; @Schema(description = "除数", required = true) private Integer divisor; } iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointDTO.java
@@ -114,6 +114,9 @@ @Schema(description = "累计长度") private Integer length; @Schema(description = "累计单位") private String cumulateUnit; @Schema(description = "除数") private Integer divisor; iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaCumulatePointEntity.java
@@ -41,6 +41,11 @@ private Integer length; /** * 累计单位 */ private String cumulateUnit; /** * 除数 */ private Integer divisor; iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointExcelVO.java
@@ -93,6 +93,10 @@ @ExcelProperty("累计长度") private Integer length; @Schema(description = "累计单位") @ExcelProperty("累计单位") private String cumulateUnit; @Schema(description = "除数") @ExcelProperty("除数") private Integer divisor; iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/PointImportExcelVO.java
@@ -92,6 +92,9 @@ @ExcelProperty("累计长度") private Integer length; @ExcelProperty("累计单位") private String cumulateUnit; @ExcelProperty("除数") private Integer divisor; iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml
@@ -274,6 +274,7 @@ t1.minfreqid, t2.moment_point, t2.length, t2.cumulate_unit, t2.divisor FROM t_da_point t1 LEFT JOIN t_da_cumulate_point t2 ON t2.point_id = t1.id