| 
						
						
						
					 | 
				
				 | 
				
					@ -1,8 +1,10 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					package com.epmet.service.evaluationindex.extract.impl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.constant.NumConstant; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.DateUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.Result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.ProjectDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.extract.FactOriginProjectMainDailyDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.extract.form.ExtractFormDTO; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -10,10 +12,12 @@ import com.epmet.dto.form.WorkDayFormDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.issue.IssueDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.party.PartyMemberDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.project.ProcessInfoDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.result.WorkDayResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.topic.ResiTopicDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.entity.evaluationindex.extract.FactOriginProjectLogDailyEntity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.entity.project.ProjectProcessEntity; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.feign.EpmetCommonServiceOpenFeignClient; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.service.Issue.IssueService; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -28,10 +32,12 @@ import com.epmet.util.DimIdGenerator; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.apache.commons.lang3.StringUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.stereotype.Service; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.util.CollectionUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.text.SimpleDateFormat; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.ArrayList; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.Date; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.LinkedList; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.List; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.stream.Collectors; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -59,7 +65,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private ProjectProcessService projectProcessService; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Autowired | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Autowired | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private FactOriginProjectOrgPeriodDailyDao factOriginProjectOrgPeriodDailyDao; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Override | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						public void saveOriginProjectDaily(ExtractFormDTO extractFormDTO) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -219,6 +226,72 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @Description 抽取项目节点历时逻辑 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param param | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @return | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @author wangc | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @date 2020.09.17 14:05 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 **/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Override | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						public void extractProjectPeriodData(ExtractFormDTO param) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							int trace = factOriginProjectOrgPeriodDailyDao.selectIfExisted(param.getCustomerId()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							Boolean isFirst = trace <= NumConstant.ZERO ? true : false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(StringUtils.isBlank(param.getDateId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								param.setDateId(format.format(yesterday)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							List<ProjectOrgPeriodResultDTO> extractData = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									projectProcessService.getProjectPeriod(isFirst,param.getCustomerId(),param.getDateId()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							List<FactOriginProjectOrgPeriodDailyEntity> formattingData = new LinkedList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							extractData.forEach(original -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								FactOriginProjectOrgPeriodDailyEntity dest | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										= ConvertUtils.sourceToTarget(original,FactOriginProjectOrgPeriodDailyEntity.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(StringUtils.isNotBlank(original.getDepartmentId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setOrgType("dept"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPid(original.getOrgId()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPids(original.getOrgIdPath()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								}else if(StringUtils.isNotBlank(original.getGridId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setOrgType("grid"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPid(original.getOrgId()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPids(original.getOrgIdPath()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								}else{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setOrgType("agency"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPids(""); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									String[] array = original.getOrgIdPath().split(":"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(null == array || array.length <= NumConstant.ZERO){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										dest.setPid(NumConstant.ZERO_STR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(array[NumConstant.ZERO] == original.getOrgId() && array.length == NumConstant.ONE){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										dest.setPid(NumConstant.ZERO_STR); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(array.length > NumConstant.ONE && original.getOrgId() == array[array.length - NumConstant.ONE]){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										dest.setPid(array[array.length - NumConstant.TWO]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										dest.setPids(original.getOrgIdPath().replace(original.getOrgId(),"")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(StringUtils.isNotBlank(dest.getPids())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										while(dest.getPids().endsWith(":")){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											dest.setPids(dest.getPids().substring(NumConstant.ZERO,dest.getPids().length() - NumConstant.ONE)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										while(dest.getPids().startsWith(":")){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											dest.setPids(dest.getPids().replaceFirst(":","")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									dest.setPids(dest.getPids().replaceAll(" ","")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								formattingData.add(dest); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(!CollectionUtils.isEmpty(formattingData)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								List<String> projectIds = formattingData.stream().map(FactOriginProjectOrgPeriodDailyEntity::getProjectId).distinct().collect(Collectors.toList()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if (!CollectionUtils.isEmpty(projectIds)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									factOriginProjectOrgPeriodDailyDao.deleteByProjectId(projectIds); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									factOriginProjectOrgPeriodDailyDao.insertBatch(formattingData); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * 工作日计算 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |