| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					package com.epmet.service.impl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.DateUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.constant.RobotConstant; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.org.result.CustomerAreaCodeResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.entity.crm.CustomerEntity; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -78,10 +79,10 @@ public class StatsDimServiceImpl implements StatsDimService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Date now = new Date(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (lastDimEntity == null) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // 首次初始化
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            grids = customerGridService.listGridsByCreateTime(null, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            grids = customerGridService.listGridsByCreateTime(null, null, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Date lastInitTime = lastDimEntity.getCreatedTime(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            grids = customerGridService.listGridsByCreateTime(lastInitTime, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            grids = customerGridService.listGridsByCreateTime(null, lastInitTime, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return convertCustomerGrid2GridDim(grids, now); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -127,7 +128,7 @@ public class StatsDimServiceImpl implements StatsDimService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @param initTime 创建时间会用来作为下一次查询的输入条件,因此必须和本次初始化查询的endTime一致 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @return | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private List<DimGridEntity> convertCustomerGrid2GridDim(List<CustomerGridEntity> grids, Date initTime) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public List<DimGridEntity> convertCustomerGrid2GridDim(List<CustomerGridEntity> grids, Date initTime) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return grids.stream().map(grid -> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DimGridEntity dimGrid = new DimGridEntity(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            dimGrid.setAgencyId(grid.getPid()); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -168,7 +169,7 @@ public class StatsDimServiceImpl implements StatsDimService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastInitTime = latestCreatedAgencyDim.getCreatedTime(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return customerAgencyService.listAgenciesByCreateTime(lastInitTime, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return customerAgencyService.listAgenciesByCreateTime(null, lastInitTime, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /** | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -268,7 +269,7 @@ public class StatsDimServiceImpl implements StatsDimService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (lastCreatedDeptDim != null) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastInitTime = lastCreatedDeptDim.getCreatedTime(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return departmentService.listDepartmentsByCreatedTime(lastInitTime, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return departmentService.listDepartmentsByCreatedTime(null, lastInitTime, now); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public List<CustomerDepartmentEntity> listUpdatedDepartments(Date initTime) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -321,4 +322,55 @@ public class StatsDimServiceImpl implements StatsDimService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Override | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public void syncCustomerAgencyDims(String customerId) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 1.列出现有的agency 维度id列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<String> dimAgencyIds = dimAgencyService.listAgencyIds(customerId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 2.查询业务表的agency列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Date endDate = DateUtils.integrate(new Date(), DateUtils.DATE_PATTERN); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CustomerAgencyEntity> bizAgencies = customerAgencyService.listAgenciesByCreateTime(customerId, null, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 3.将没有同步过来的插入到dim表。创建和更新时间存为今天凌晨
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (CustomerAgencyEntity bizAgency : bizAgencies) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (!dimAgencyIds.contains(bizAgency.getId())) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                dimAgencyService.initAgencyAllDim(bizAgency, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                dimAgencyService.initAgencySelfDim(bizAgency, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Override | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public void syncCustomerGridDims(String customerId) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 1.列出现有的grid维度id列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<String> dimGridIds = dimGridService.listGridIds(customerId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 2.查询业务表的grid列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 时间截止到今天凌晨,防止把今天的数据同步过来,影响定时任务查询,漏掉其他客户的数据
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Date endDate = DateUtils.integrate(new Date(), DateUtils.DATE_PATTERN); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CustomerGridEntity> bizGrids = customerGridService.listGridsByCreateTime(customerId, null, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 3.将没有同步过来的插入到dim表。创建和更新时间存为今天凌晨
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CustomerGridEntity> grids2insert = bizGrids.stream().filter(bg -> !dimGridIds.contains(bg.getId())).collect(Collectors.toList()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<DimGridEntity> dimGridEntities = convertCustomerGrid2GridDim(grids2insert, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dimGridEntities.forEach(g -> dimGridService.insert(g)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Override | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public void syncCustomerDepartmentDims(String customerId) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 1.列出现有的grid维度id列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<String> dimDeptIds = dimDepartmentService.listDepartmentIds(customerId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 2.查询业务表的grid列表
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 时间截止到今天凌晨,防止把今天的数据同步过来,影响定时任务查询,漏掉其他客户的数据
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Date endDate = DateUtils.integrate(new Date(), DateUtils.DATE_PATTERN); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CustomerDepartmentEntity> bizDepts = departmentService.listDepartmentsByCreatedTime(customerId, null, endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CustomerDepartmentEntity> depts2insert = bizDepts.stream().filter(bd -> !dimDeptIds.contains(bd.getId())).collect(Collectors.toList()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 3.将没有同步过来的插入到dim表。创建和更新时间存为今天凌晨
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dimDepartmentService.initDepartmentDims(depts2insert, new ArrayList<>(), endDate); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  |