Procházet zdrojové kódy

数据模拟任务处理

wukai před 8 měsíci
rodič
revize
7bfe6e66b4

+ 1 - 0
jjt-biz/src/main/java/com/jjt/biz/service/impl/AlarmRecordServiceImpl.java

@@ -168,6 +168,7 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
         record.setAlarmValue(om.getDValue());
         record.setAlarmType("1");
         record.setAlarmTime(date);
+        record.setCreateTime(new Date());
         result.put("add", record);
         return result;
 //        insertAlarmRecord(record);

+ 1 - 0
jjt-biz/src/main/java/com/jjt/hl/service/impl/HlEventServiceImpl.java

@@ -125,6 +125,7 @@ public class HlEventServiceImpl implements IHlEventService {
                 hlEvent.setEventStatus("1");
                 hlEvent.setEventValue(om.getDValue());
                 hlEvent.setStartTime(date);
+                hlEvent.setCreateTime(new Date());
                 result.put("add", hlEvent);
 //                insertHlEvent(hlEvent);
             }

+ 41 - 11
jjt-biz/src/main/java/com/jjt/task/DataTask.java

@@ -3,12 +3,15 @@ package com.jjt.task;
 import com.jjt.biz.domain.BizObj;
 import com.jjt.biz.service.IBizObjMetricsService;
 import com.jjt.biz.service.IBizObjService;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Date;
+import java.util.List;
+import java.util.concurrent.*;
 
 /**
  * 定时任务调度测试
@@ -21,23 +24,50 @@ public class DataTask {
     private IBizObjMetricsService metricsService;
     @Resource
     private IBizObjService objService;
+    @Resource
+    private JdbcTemplate jdbcTemplate;
 
     public void imitate() {
-        Date s = new Date();
-        objService.selectBizObjList(new BizObj()).forEach(obj -> {
-            metricsService.imitate(obj.getObjId(),new Date());
-        });
-        Date e = new Date();
-        System.err.println(e.getTime()-s.getTime());
+        String sql = "SELECT MAX(create_time) from biz_obj_metrics_data";
+        LocalDateTime localDateTime = jdbcTemplate.queryForObject(sql, LocalDateTime.class);
+        //如果之前没数据,补一个月,如果有,则补至当前
         LocalDateTime ed = LocalDateTime.now();
-        LocalDateTime st = ed.minusDays(1);
+        LocalDateTime st = ed.minusDays(30);
+        if (localDateTime != null) {
+            st = localDateTime;
+        }
         do {
             Date date = Date.from(st.atZone(ZoneId.systemDefault()).toInstant());
-            objService.selectBizObjList(new BizObj()).forEach(obj -> {
-                metricsService.imitate(obj.getObjId(), date);
-            });
-            st = st.plusMinutes(15);
+            List<BizObj> list = objService.selectBizObjList(new BizObj());
+            list.forEach(obj -> metricsService.imitate(obj.getObjId(), date));
+            st = st.plusMinutes(5);
         } while (!st.isAfter(ed));
     }
 
+    public void imitateOne() {
+        try {
+            ExecutorService threadPool = new ThreadPoolExecutor(
+                    10,
+                    20,
+                    3,
+                    TimeUnit.SECONDS,
+                    new LinkedBlockingDeque<>(3),
+                    Executors.defaultThreadFactory(),
+                    new ThreadPoolExecutor.DiscardOldestPolicy());
+            LocalDateTime ed = LocalDateTime.now();
+            Date date = Date.from(ed.atZone(ZoneId.systemDefault()).toInstant());
+            List<BizObj> list = objService.selectBizObjList(new BizObj());
+            CountDownLatch latch = new CountDownLatch(list.size());
+            list.forEach(obj -> threadPool.submit(() -> {
+                metricsService.imitate(obj.getObjId(), date);
+                latch.countDown();
+            }));
+            // Wait for all threads to finish
+            latch.await();
+            threadPool.shutdown();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
 }