|  | @@ -2582,38 +2582,47 @@ public class DataDashboardService {
 | 
	
		
			
				|  |  |              result.add(item);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // sum
 | 
	
		
			
				|  |  | -        result.add(buildContentFunnelGroupSum(dateStr, result));
 | 
	
		
			
				|  |  | +        result.add(buildContentFunnelGroupSum(dateStr, result, "文章"));
 | 
	
		
			
				|  |  | +        result.add(buildContentFunnelGroupSum(dateStr, result, "视频"));
 | 
	
		
			
				|  |  | +        result.add(buildContentFunnelGroupSum(dateStr, result, "SUM"));
 | 
	
		
			
				|  |  | +        result.removeIf(o -> o.getCrawlerCount() == 0 && o.getProduceCount() == 0 && o.getProduceAuditCount() == 0
 | 
	
		
			
				|  |  | +                && o.getVideoPoolPQAuditCount() == 0 && o.getVideoAuditCount() == 0);
 | 
	
		
			
				|  |  | +        result.sort(Comparator.comparing(ContentGroupFunnelExport::getType));
 | 
	
		
			
				|  |  |          return result;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private ContentGroupFunnelExport buildContentFunnelGroupSum(String dateStr, List<ContentGroupFunnelExport> result) {
 | 
	
		
			
				|  |  | +    private ContentGroupFunnelExport buildContentFunnelGroupSum(String dateStr, List<ContentGroupFunnelExport> result,
 | 
	
		
			
				|  |  | +                                                                String type) {
 | 
	
		
			
				|  |  |          ContentGroupFunnelExport sum = ContentGroupFunnelExport.getDefault();
 | 
	
		
			
				|  |  | -        sum.setType("SUM");
 | 
	
		
			
				|  |  | +        sum.setType(type);
 | 
	
		
			
				|  |  |          sum.setSource("SUM");
 | 
	
		
			
				|  |  |          sum.setDateStr(dateStr);
 | 
	
		
			
				|  |  | -        for (ContentGroupFunnelExport contentGroupFunnelExport : result) {
 | 
	
		
			
				|  |  | -            sum.setCrawlerCount(sum.getCrawlerCount() + contentGroupFunnelExport.getCrawlerCount());
 | 
	
		
			
				|  |  | -            sum.setProduceCount(sum.getProduceCount() + contentGroupFunnelExport.getProduceCount());
 | 
	
		
			
				|  |  | +        for (ContentGroupFunnelExport export : result) {
 | 
	
		
			
				|  |  | +            if (!export.getType().equals(type) && !"SUM".equals(type)) {
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            sum.setCrawlerCount(sum.getCrawlerCount() + export.getCrawlerCount());
 | 
	
		
			
				|  |  | +            sum.setProduceCount(sum.getProduceCount() + export.getProduceCount());
 | 
	
		
			
				|  |  |              if (sum.getCrawlerCount() > 0) {
 | 
	
		
			
				|  |  |                  sum.setProduceRate(sum.getProduceCount() * 1.0 / sum.getCrawlerCount());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            sum.setProduceAuditCount(sum.getProduceAuditCount() + contentGroupFunnelExport.getProduceAuditCount());
 | 
	
		
			
				|  |  | -            sum.setProduceAuditPassCount(sum.getProduceAuditPassCount() + contentGroupFunnelExport.getProduceAuditPassCount());
 | 
	
		
			
				|  |  | +            sum.setProduceAuditCount(sum.getProduceAuditCount() + export.getProduceAuditCount());
 | 
	
		
			
				|  |  | +            sum.setProduceAuditPassCount(sum.getProduceAuditPassCount() + export.getProduceAuditPassCount());
 | 
	
		
			
				|  |  |              if (sum.getProduceAuditCount() > 0) {
 | 
	
		
			
				|  |  |                  sum.setProduceAuditPassRate(sum.getProduceAuditPassCount() * 1.0 / sum.getProduceAuditCount());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            sum.setMatchCount(sum.getMatchCount() + contentGroupFunnelExport.getMatchCount());
 | 
	
		
			
				|  |  | -            sum.setMatchSuccessCount(sum.getMatchSuccessCount() + contentGroupFunnelExport.getMatchSuccessCount());
 | 
	
		
			
				|  |  | +            sum.setMatchCount(sum.getMatchCount() + export.getMatchCount());
 | 
	
		
			
				|  |  | +            sum.setMatchSuccessCount(sum.getMatchSuccessCount() + export.getMatchSuccessCount());
 | 
	
		
			
				|  |  |              if (sum.getMatchCount() > 0) {
 | 
	
		
			
				|  |  |                  sum.setMatchSuccessRate(sum.getMatchSuccessCount() * 1.0 / sum.getMatchCount());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            sum.setVideoAuditCount(sum.getVideoAuditCount() + contentGroupFunnelExport.getVideoAuditCount());
 | 
	
		
			
				|  |  | -            sum.setVideoAuditPassCount(sum.getVideoAuditPassCount() + contentGroupFunnelExport.getVideoAuditPassCount());
 | 
	
		
			
				|  |  | +            sum.setVideoAuditCount(sum.getVideoAuditCount() + export.getVideoAuditCount());
 | 
	
		
			
				|  |  | +            sum.setVideoAuditPassCount(sum.getVideoAuditPassCount() + export.getVideoAuditPassCount());
 | 
	
		
			
				|  |  |              if (sum.getVideoAuditCount() > 0) {
 | 
	
		
			
				|  |  |                  sum.setVideoAuditPassRate(sum.getVideoAuditPassCount() * 1.0 / sum.getVideoAuditCount());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            sum.setVideoPoolPQAuditCount(sum.getVideoPoolPQAuditCount() + contentGroupFunnelExport.getVideoPoolPQAuditCount());
 | 
	
		
			
				|  |  | -            sum.setVideoPoolPQAuditPassCount(sum.getVideoPoolPQAuditPassCount() + contentGroupFunnelExport.getVideoPoolPQAuditPassCount());
 | 
	
		
			
				|  |  | +            sum.setVideoPoolPQAuditCount(sum.getVideoPoolPQAuditCount() + export.getVideoPoolPQAuditCount());
 | 
	
		
			
				|  |  | +            sum.setVideoPoolPQAuditPassCount(sum.getVideoPoolPQAuditPassCount() + export.getVideoPoolPQAuditPassCount());
 | 
	
		
			
				|  |  |              if (sum.getVideoPoolPQAuditCount() > 0) {
 | 
	
		
			
				|  |  |                  sum.setVideoPoolPQAuditPassRate(sum.getVideoPoolPQAuditPassCount() * 1.0 / sum.getVideoPoolPQAuditCount());
 | 
	
		
			
				|  |  |              }
 |