| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |