From 3d5b12473c18cd48e70fc76fbc61968eecd7121e Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期一, 05 五月 2025 16:29:01 +0800
Subject: [PATCH] 数据归档

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/controller/admin/ArcDataController.java |    7 +++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointArchivingTaskNetDay.java      |    6 ++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java    |   44 ++++++++++------------
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/ArcDataService.java             |    5 ++
 4 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/controller/admin/ArcDataController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/controller/admin/ArcDataController.java
index 6697823..0d2ad56 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/controller/admin/ArcDataController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/controller/admin/ArcDataController.java
@@ -12,6 +12,8 @@
 
 import javax.validation.Valid;
 
+import java.util.Calendar;
+
 import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
@@ -30,7 +32,10 @@
 
     @PostMapping("archiving")
     public CommonResult<Boolean> archiving(@RequestBody String type) {
-        arcDataService.archiving(type);
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 0);
+        arcDataService.archiving(type, calendar);
         return success(true);
     }
 
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/ArcDataService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/ArcDataService.java
index e0eabba..6ac95ca 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/ArcDataService.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/ArcDataService.java
@@ -5,9 +5,12 @@
 import com.iailab.module.data.arc.entity.ArcDataEntity;
 import com.iailab.module.data.arc.vo.ArcDataPageReqVO;
 
+import java.util.Calendar;
+import java.util.Date;
+
 public interface ArcDataService extends BaseService<ArcDataEntity> {
     //根据归档类型进行归档
-    void archiving(String type);
+    void archiving(String type, Calendar calendar);
 
     PageResult<ArcDataEntity> queryPage(ArcDataPageReqVO reqVO);
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java
index 9f71963..f3d62a7 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/arc/service/impl/ArcDataServiceImpl.java
@@ -35,31 +35,30 @@
 
     //根据归档类型进行归档
     @Override
-    public void archiving(String type) {
+    public void archiving(String type, Calendar calendar) {
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("type", type);
         switch (ArcTypeEnum.getEumByCode(type)) {
             case HOUR:
                 //查询对应类型的归档设置列表
                 List<ArcSettingEntity> arcHourList = arcPointSettingService.list(params);
+                Date endTime1 = calendar.getTime();
+                calendar.add(Calendar.HOUR_OF_DAY, -1);
+                Date startTime1 = calendar.getTime();
                 //遍历列表
                 arcHourList.forEach(item -> {
                     log.debug("开始归档,point:"+item.getPoint());
-                    //获取开始时间
-                    Calendar calendar = Calendar.getInstance();
-                    calendar.add(Calendar.HOUR_OF_DAY, -1);
-                    Date startTime = calendar.getTime();
                     //通过point编号查询数据
                     ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
                     queryDto.setPointNo(item.getPoint());
-                    queryDto.setStart(startTime);
-                    queryDto.setEnd(new Date());
+                    queryDto.setStart(startTime1);
+                    queryDto.setEnd(endTime1);
                     List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto);
                     //判断根据计算类型计算
                     BigDecimal value = calculate(item.getCalculate(), valueList);
                     //归档
                     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
-                    String arcTime = dateFormat.format(startTime);
+                    String arcTime = dateFormat.format(startTime1);
                     ArcDataEntity arcDataEntity = new ArcDataEntity();
                     arcDataEntity.setId(String.valueOf(new Date().getTime()));
                     arcDataEntity.setArcTime(arcTime);
@@ -72,24 +71,23 @@
             case SHIFT:
                 //查询对应类型的归档设置列表
                 List<ArcSettingEntity> arcShiftList = arcPointSettingService.list(params);
+                Date endTime2 = calendar.getTime();
+                calendar.add(Calendar.HOUR_OF_DAY, -1);
+                Date startTime2 = calendar.getTime();
                 //遍历列表
                 arcShiftList.forEach(item -> {
                     log.debug("开始归档,point:"+item.getPoint());
-                    //获取开始时间
-                    Calendar calendar = Calendar.getInstance();
-                    calendar.add(Calendar.HOUR_OF_DAY, -12);
-                    Date startTime = calendar.getTime();
                     //通过point编号查询数据
                     ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
                     queryDto.setPointNo(item.getPoint());
-                    queryDto.setStart(startTime);
-                    queryDto.setEnd(new Date());
+                    queryDto.setStart(startTime2);
+                    queryDto.setEnd(endTime2);
                     List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto);
                     //判断根据计算类型计算
                     BigDecimal value = calculate(item.getCalculate(), valueList);
                     //归档
                     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
-                    String arcTime = dateFormat.format(startTime);
+                    String arcTime = dateFormat.format(startTime2);
                     ArcDataEntity arcDataEntity = new ArcDataEntity();
                     arcDataEntity.setId(String.valueOf(new Date().getTime()));
                     arcDataEntity.setArcTime(arcTime);
@@ -102,24 +100,23 @@
             case DAY:
                 //查询对应类型的归档设置列表
                 List<ArcSettingEntity> arcDayList = arcPointSettingService.list(params);
+                Date endTime3 = calendar.getTime();
+                calendar.add(Calendar.DAY_OF_YEAR, -1);
+                Date startTime3 = calendar.getTime();
                 //遍历列表
                 arcDayList.forEach(item -> {
                     log.debug("开始归档,point:"+item.getPoint());
-                    //获取开始时间
-                    Calendar calendar = Calendar.getInstance();
-                    calendar.add(Calendar.DAY_OF_MONTH, -1);
-                    Date startTime = calendar.getTime();
                     //通过point编号查询数据
                     ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
                     queryDto.setPointNo(item.getPoint());
-                    queryDto.setStart(startTime);
-                    queryDto.setEnd(new Date());
+                    queryDto.setStart(startTime3);
+                    queryDto.setEnd(endTime3);
                     List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDto);
                     //判断根据计算类型计算
                     BigDecimal value = calculate(item.getCalculate(), valueList);
                     //归档
                     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-                    String arcTime = dateFormat.format(startTime);
+                    String arcTime = dateFormat.format(startTime3);
                     ArcDataEntity arcDataEntity = new ArcDataEntity();
                     arcDataEntity.setId(String.valueOf(new Date().getTime()));
                     arcDataEntity.setArcTime(arcTime);
@@ -138,7 +135,6 @@
                 arcMonthList.forEach(item -> {
                     log.debug("开始归档,point:"+item.getPoint());
                     //获取开始时间
-                    Calendar calendar = Calendar.getInstance();
                     calendar.add(Calendar.MONTH, -1);
                     Date startTime = calendar.getTime();
                     //通过point编号查询数据
@@ -170,7 +166,7 @@
                 arcYearList.forEach(item -> {
                     log.debug("开始归档,point:"+item.getPoint());
                     //获取开始时间
-                    Calendar calendar = Calendar.getInstance();
+                    //Calendar calendar = Calendar.getInstance();
                     calendar.add(Calendar.YEAR, -1);
                     Date startTime = calendar.getTime();
                     //通过point编号查询数据
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointArchivingTaskNetDay.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointArchivingTaskNetDay.java
index 002b329..863bc65 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointArchivingTaskNetDay.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/job/task/PointArchivingTaskNetDay.java
@@ -8,6 +8,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.Calendar;
 
 /**
  * @description: Point归档日
@@ -24,8 +25,11 @@
     @Override
     public void run(String params){
         logger.debug("PointArchivingTaskNetDay定时任务正在执行,参数为:{}", params);
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 0);
         try {
-            arcPointDataService.archiving(ArcTypeEnum.DAY.getCode());
+            arcPointDataService.archiving(ArcTypeEnum.DAY.getCode(), calendar);
             logger.info("PointArchivingTaskNetDay定时任务完成时间:" + LocalDateTime.now());
         } catch (Exception ex) {
             ex.printStackTrace();

--
Gitblit v1.9.3