| 
					
				 | 
			
			
				@@ -366,15 +366,97 @@ public class HlScoreServiceImpl implements IHlScoreService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 模拟扣分判断 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 日健康度评分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param date    时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param modelId 模型Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private boolean flag() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Random r = new Random(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int x = r.nextInt(8889) + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return x % 2 == 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void day(Date date, Long modelId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HlScore score = new HlScore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        score.setModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        score.setHlDate(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        score.setHlType("2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        insertHlScore(score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal totalScore = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //所有扣分的指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Long, List<HlMetricsVO>> lostMetricsMap = hlMetricsService.hlMetricsDayList(modelId, date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查找健康度分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<HlClass> classList = modelService.selectHlClassList4modelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<HlMetricsScoreDetail> details = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (HlClass hlClass : classList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HlClassScore hlClassScore = new HlClassScore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BeanUtils.copyBeanProp(hlClassScore, hlClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlClassScore.setHlScoreId(score.getHlScoreId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlClassScoreService.insertHlClassScore(hlClassScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HlMetrics hm = new HlMetrics(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hm.setHlClassId(hlClass.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<HlMetrics> hlMetricsList = hlMetricsService.selectHlMetricsList(hm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //当前分类下所有指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Long, List<HlMetricsVO>> metricsMap = hlMetricsService.hlMetricsList(hlClass.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal lostClass = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (HlMetrics hlMetrics : hlMetricsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if ("1".equals(hlClass.getScoreType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //1.均分 2.细项分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //如果是均分,需要计算,如果是细项分,直接用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BigDecimal metricsScore = hlClass.getHlScore().divide(BigDecimal.valueOf(hlMetricsList.size()), RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlMetrics.setHlScore(metricsScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //总的指标数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<HlMetricsVO> vos1 = metricsMap.get(hlMetrics.getMetricsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int total = vos1 != null ? vos1.size() : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //扣分指标数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<HlMetricsVO> vos = lostMetricsMap.get(hlMetrics.getMetricsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int lostNum = vos != null ? vos.size() : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //扣分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal lost = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //(告警组件数量/总数量 )*细项分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (lostNum > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lost = BigDecimal.valueOf(lostNum).divide(BigDecimal.valueOf(total), RoundingMode.HALF_UP).multiply(hlMetrics.getHlScore()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //最终得分 = 分数-扣分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal score2 = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (hlMetrics.getHlScore().compareTo(lost) >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    score2 = hlMetrics.getHlScore().subtract(lost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HlMetricsScore metricsScore = new HlMetricsScore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BeanUtils.copyBeanProp(metricsScore, hlMetrics); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                metricsScore.setLoseScore(lost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                metricsScore.setScore(score2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                metricsScore.setScoreClassId(hlClassScore.getScoreClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlMetricsScoreService.insertHlMetricsScore(metricsScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (vos != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (HlMetricsVO vo : vos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        HlMetricsScoreDetail detail = new HlMetricsScoreDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        detail.setScoreMetricsId(metricsScore.getScoreMetricsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        detail.setEventId(vo.getEventId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        details.add(detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lostClass = lostClass.add(lost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlClassScore.setLoseScore(lostClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal df = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (hlClassScore.getHlScore().compareTo(lostClass) >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                df = hlClassScore.getHlScore().subtract(lostClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlClassScore.setScore(df); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            totalScore = totalScore.add(df); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlClassScoreService.updateHlClassScore(hlClassScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (details.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HlMetricsScoreDetailMapper mapper = sqlSession.getMapper(HlMetricsScoreDetailMapper.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                details.forEach(mapper::insertHlMetricsScoreDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sqlSession.commit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        score.setHlScore(totalScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateHlScore(score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |