From 77894e68af1bffbcc73150dc56f969fda0b31d7e Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期一, 07 四月 2025 13:40:42 +0800 Subject: [PATCH] 累计测点 添加累计单位 --- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/PointImportExcelVO.java | 3 + iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql | 4 + iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointDTO.java | 3 + iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaCumulatePointDTO.java | 3 + iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml | 1 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointExcelVO.java | 4 ++ iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java | 10 +++- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/common/PointCumulateUnitEnum.java | 73 ++++++++++++++++++++++++++++++++++++ iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaCumulatePointEntity.java | 5 ++ 9 files changed, 102 insertions(+), 4 deletions(-) diff --git a/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql b/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql index 31bcd5a..78635e5 100644 --- a/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql +++ b/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql @@ -442,4 +442,6 @@ `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='定时归档设置表'; \ No newline at end of file +) 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 '累计单位'; \ No newline at end of file diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java index c6fb0f2..932746a 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java +++ b/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); diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/common/PointCumulateUnitEnum.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/common/PointCumulateUnitEnum.java new file mode 100644 index 0000000..ee49986 --- /dev/null +++ b/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(); + } +} diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaCumulatePointDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaCumulatePointDTO.java index 55c078d..b790bd5 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaCumulatePointDTO.java +++ b/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; } \ No newline at end of file diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointDTO.java index 55a1c57..1a48545 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/dto/DaPointDTO.java +++ b/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; diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaCumulatePointEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaCumulatePointEntity.java index 7b5954d..1a5706f 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/entity/DaCumulatePointEntity.java +++ b/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; diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointExcelVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointExcelVO.java index 2c019df..92eab10 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/DaPointExcelVO.java +++ b/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; diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/PointImportExcelVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/PointImportExcelVO.java index 902d3f7..ca3af46 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/vo/PointImportExcelVO.java +++ b/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; diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml b/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml index 2b625f4..6a37163 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/resources/mapper/point/DaPointDao.xml +++ b/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 -- Gitblit v1.9.3