| 
					
				 | 
			
			
				@@ -1,7 +1,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.fs.statis.service.utils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.statis.dto.RewardMoneyTrendDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.statis.dto.WatchEndPlayTrendDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.LocalDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.format.DateTimeFormatter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Collections; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -12,6 +14,79 @@ import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 时序数据补全工具类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class TrendDataFiller { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static List<RewardMoneyTrendDTO> fillRewardHourData(List<RewardMoneyTrendDTO> data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean[] hourExists = new boolean[24]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (RewardMoneyTrendDTO dto : data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int hour = Integer.parseInt(dto.getStartDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (hour >= 0 && hour < 24) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hourExists[hour] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setX(String.valueOf(hour)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 填充不存在的小时数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < 24; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!hourExists[i]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                RewardMoneyTrendDTO dto = new RewardMoneyTrendDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setX(String.valueOf(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setRewardMoney(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data.add(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data.sort((a, b) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int intA = Integer.parseInt(a.getX()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int intB = Integer.parseInt(b.getX()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return Integer.compare(intA, intB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 填充日期段数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static List<RewardMoneyTrendDTO> fillRewardDateSegmentData(List<RewardMoneyTrendDTO> data,String startDate,String endDate){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDate current = start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (!current.isAfter(end)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dateStr = current.format(dateFormatter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean found = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (RewardMoneyTrendDTO dto : data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (dateStr.equals(dto.getStartDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    found = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    dto.setX(dateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!found) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                RewardMoneyTrendDTO dto = new RewardMoneyTrendDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setStartDate(dateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setX(dateStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dto.setRewardMoney(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data.add(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            current = current.plusDays(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data.sort((a, b) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LocalDate dateA = LocalDate.parse(a.getX(), dateFormatter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LocalDate dateB = LocalDate.parse(b.getX(), dateFormatter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return dateA.compareTo(dateB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 填充24小时类数据 
			 |