| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					package com.epmet.service.evaluationindex.extract.dataToIndex.impl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.alibaba.fastjson.JSON; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.constant.NumConstant; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.DateUtils; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -310,9 +311,12 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //网格总项目数 从议题根据状态获取
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log.info("网格总项目数{}", JSON.toJSONString(gridProjectTotalList)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //网格议题转项目率
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log.info("网格近两个月的议题{}", JSON.toJSONString(gridIssueCountList)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<GridProjectCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridProjectTotalList); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log.info("网格议题转项目率{}", JSON.toJSONString(gridIssueShiftProjectRatio)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //网格自治项目数 从议题创建到项目关闭,包括处理人,自始至终没有出过议题所属网格
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<AutoNoMyResultDTO> projectAutoNoMyList = projectLogService.selectProjectAutoNoMy(customerId, monthId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Map<String,Integer> autoMap = new HashMap<>(16); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -353,33 +357,23 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // 根据网格分组
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Map<String, List<ProjectEvaluateResultDTO>> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            groupByGrid.forEach((gridId,projectEvaluateInfoList) -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Map<String,Integer> scoreMap = new HashMap<>(16); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                // 根据项目分组
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Map<String, List<ProjectEvaluateResultDTO>> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                groupByProject.forEach((projectId,projectList) -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    projectList.forEach(project -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        switch (project.getActionCode()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                projectEvaluateInfoList.forEach(p -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    switch (p.getActionCode()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        case ExtractConstant.EVALUATE_BAD: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                project.setScore(ProjectEvaluateConstant.BAD); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            p.setScore(ProjectEvaluateConstant.BAD); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        case ExtractConstant.EVALUATE_GOOD: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                project.setScore(ProjectEvaluateConstant.GOOD); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            p.setScore(ProjectEvaluateConstant.GOOD); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        case ExtractConstant.EVALUATE_PERFECT: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                project.setScore(ProjectEvaluateConstant.PERFECT); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            p.setScore(ProjectEvaluateConstant.PERFECT); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", project.getActionCode()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", p.getActionCode()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Integer projectAllScore = projectList.stream().mapToInt(ProjectEvaluateResultDTO::getScore).sum(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    scoreMap.put(projectId,projectAllScore/projectList.size()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                AtomicReference<Integer> allScore = new AtomicReference<>(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                scoreMap.forEach((k,v) -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    allScore.set(++v); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                resultSatisfactionScore.put(gridId,getRound(new BigDecimal(allScore.get()/scoreMap.size()))); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                Integer projectAllScore = projectEvaluateInfoList.stream().collect(Collectors.summingInt(ProjectEvaluateResultDTO::getScore)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                resultSatisfactionScore.put(gridId,getRound(new BigDecimal(projectAllScore/projectEvaluateInfoList.size()))); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        String quarterId = DateUtils.getQuarterId(monthId); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -398,7 +392,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // 2. 网格总项目数,网格议题转项目率
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (!CollectionUtils.isEmpty(gridIssueTotalList)){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (!CollectionUtils.isEmpty(gridIssueShiftProjectRatio)){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                gridIssueShiftProjectRatio.forEach(projectTotal -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (r.getGridId().equals(projectTotal.getGridId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        r.setProjectTotal(projectTotal.getProjectTotal()); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -555,7 +549,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            gridProjectTotalList.forEach(project -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                gridIssueTotalList.forEach(issue -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (project.getGridId().equals(issue.getGridId())) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        project.setIssueToProjectRatio(getRound(new BigDecimal(project.getProjectTotal() / issue.getIssueTotal()).multiply(NumConstant.ONE_HUNDRED_DECIMAL))); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        project.setIssueToProjectRatio(getRound(new BigDecimal(project.getProjectTotal()).divide(new BigDecimal(issue.getIssueTotal()),NumConstant.EIGHT,BigDecimal.ROUND_HALF_UP).multiply(NumConstant.ONE_HUNDRED_DECIMAL))); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |