| 
					
				 | 
			
			
				@@ -12,6 +12,7 @@ import com.jjt.hl.domain.HlClass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.jjt.hl.domain.HlObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.jjt.hl.mapper.HlObjMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.jjt.hl.service.IHlClassService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.jjt.hl.service.IHlMetricsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.jjt.hl.service.IHlObjService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.ibatis.session.ExecutorType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.ibatis.session.SqlSession; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -19,6 +20,8 @@ import org.apache.ibatis.session.SqlSessionFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.RoundingMode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,6 +42,10 @@ public class BizModelServiceImpl implements IBizModelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IHlClassService hlClassService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IHlObjService hlObjService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IHlMetricsService hlMetricsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SqlSessionFactory factory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -129,15 +136,13 @@ public class BizModelServiceImpl implements IBizModelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public int insertObj(Long modelId, Long[] objIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (objIds.length == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (Long objId : objIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BizModelDetail detail = new BizModelDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             detail.setModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             detail.setObjId(objId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             modelDetailService.insertBizModelDetail(detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        impClass(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -166,10 +171,22 @@ public class BizModelServiceImpl implements IBizModelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Map<String, List<BizModelDetail>> map = details.stream().collect(Collectors.groupingBy(d -> d.getBizObj().getObjType())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<HlObj> hlObjList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int size = map.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal total = BigDecimal.valueOf(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int avg = total.divide(BigDecimal.valueOf(size), 0, RoundingMode.HALF_DOWN).intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int one = avg * size == total.intValue() ? avg : total.intValue() - avg * (size - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (String s : map.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 HlClass hlClass = new HlClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hlClass.setObjType(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hlClass.setModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClass.setScoreType("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (flag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlClass.setHlScore(BigDecimal.valueOf(one)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlClass.setHlScore(BigDecimal.valueOf(avg)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hlClassService.insertHlClass(hlClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 List<BizModelDetail> detailList = map.get(s); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -191,4 +208,94 @@ public class BizModelServiceImpl implements IBizModelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 导入分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param modelId 模型ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void impClass(Long modelId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, List<BizModelDetail>> map = details.stream().collect(Collectors.groupingBy(d -> d.getBizObj().getObjType())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<HlClass> list = hlClassService.selectHlClassList4modelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> typeList = list.stream().map(HlClass::getObjType).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<HlObj> hlObjList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String t : map.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!typeList.contains(t)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //添加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HlClass hlClass = new HlClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClass.setObjType(t); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClass.setModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClass.setScoreType("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClass.setHlScore(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClassService.insertHlClass(hlClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BizModelDetail> detailList = map.get(t); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                detailList.forEach(d -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    HlObj hlObj = new HlObj(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlObj.setHlClassId(hlClass.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlObj.setObjId(d.getObjId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlObjList.add(hlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HlObjMapper mapper = sqlSession.getMapper(HlObjMapper.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hlObjList.forEach(mapper::insertHlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sqlSession.commit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 清理分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param modelId 模型ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void cleanClass(Long modelId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Long> objList = details.stream().map(BizModelDetail::getObjId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<HlClass> list = hlClassService.selectHlClassList4modelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.forEach(hc -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<HlObj> objs = hlObjService.selectHlObjListByClassId(hc.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int delTimes = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (HlObj obj : objs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!objList.contains(obj.getHlObjId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hlObjService.deleteHlObjByHlObjId(obj.getHlObjId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    delTimes++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (delTimes == objs.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //如果该类型对象已经被全部删除。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //那么需要删除当前类型,和该类型下的指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlMetricsService.deleteHlMetricsByClassId(hc.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hlClassService.deleteHlClassByHlClassId(hc.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        List<String> typeList = list.stream().map(HlClass::getObjType).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        List<HlObj> hlObjList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        for (String t : map.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (!typeList.contains(t)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                //添加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                HlClass hlClass = new HlClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                hlClass.setObjType(t); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                hlClass.setModelId(modelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                hlClass.setScoreType("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                hlClass.setHlScore(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                hlClassService.insertHlClass(hlClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                List<BizModelDetail> detailList = map.get(t); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                detailList.forEach(d -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    HlObj hlObj = new HlObj(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    hlObj.setHlClassId(hlClass.getHlClassId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    hlObj.setObjId(d.getObjId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    hlObjList.add(hlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            HlObjMapper mapper = sqlSession.getMapper(HlObjMapper.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            hlObjList.forEach(mapper::insertHlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            sqlSession.commit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |