| 
					
				 | 
			
			
				@ -8,10 +8,7 @@ import com.yihu.jw.quota.model.jpa.dimension.TjQuotaDimensionSlave; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.service.dimension.TjDimensionMainService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.service.dimension.TjDimensionSlaveService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.util.SpringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.DataModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.MainDimensionModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.QuotaVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.SaveModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.quota.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.context.annotation.Scope; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -33,9 +30,9 @@ public class ComputeHelper { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private TjDimensionSlaveService dimensionSlaveService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<SaveModel> compute(Object dataModels, QuotaVO quotaVO,String timeLevel,String saasid,String startTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<SaveModel> compute(Object dataModels, QuotaVO quotaVO, String timeLevel, String saasid, String startTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //返回的list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> saveModels=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> saveModels = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //只得到地址维度的所有主维度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<TjQuotaDimensionMain> quotaDimensionMains = dimensionMainService.findTjQuotaDimensionMainByQuotaIncudeAddress(quotaVO.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到从维度 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -43,15 +40,15 @@ public class ComputeHelper { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (Contant.compute.add.equals(quotaVO.getComputeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //判断是否是累加计算 如果强转成list类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<DataModel> dmList = (List<DataModel>) dataModels; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> one=getLastData(quotaVO, quotaDimensionMains, quotaDimensionSlaves, dmList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(Map.Entry<String,MainDimensionModel> tjone:one.entrySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel=new SaveModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(tjone.getValue(),saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> one = getLastData(quotaVO, quotaDimensionMains,Contant. init(quotaDimensionSlaves, Contant.slave_dimension_key.one), dmList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map.Entry<String, MainDimensionModel> tjone : one.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel = new SaveModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(tjone.getValue(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setTimeLevel(timeLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setSaasId(saasid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setQuotaDate(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setResult(tjone.getValue().getSlaveDimensionModels().size()+""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setResult(tjone.getValue().getSlaveDimensionModels().size() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModels.add(saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (Contant.compute.division.equals(quotaVO.getComputeType())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -61,41 +58,42 @@ public class ComputeHelper { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<DataModel> twoList = dmMap.get(Contant.extract.computeKey2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //计算出分子 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> one=getLastData(quotaVO, quotaDimensionMains, quotaDimensionSlaves, oneList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> one = getLastData(quotaVO, quotaDimensionMains, Contant. init(quotaDimensionSlaves, Contant.slave_dimension_key.one), oneList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //计算出分母 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> tow=getLastData(quotaVO, quotaDimensionMains, quotaDimensionSlaves, twoList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, MainDimensionModel> tow = getLastData(quotaVO, quotaDimensionMains, Contant. init(quotaDimensionSlaves, Contant.slave_dimension_key.two), twoList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(Map.Entry<String,MainDimensionModel> tjone:one.entrySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel=new SaveModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(tjone.getValue(),saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map.Entry<String, MainDimensionModel> tjone : one.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel = new SaveModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BeanUtils.copyProperties(tjone.getValue(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setTimeLevel(timeLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setSaasId(saasid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setQuotaDate(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setResult(new StringBuffer(tjone.getValue().getSlaveDimensionModels().size()+"/"+tow.get(tjone.getKey()).getSlaveDimensionModels()).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModel.setResult(new StringBuffer(tjone.getValue().getSlaveDimensionModels().size() + "/" + tow.get(tjone.getKey()).getSlaveDimensionModels()).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveModels.add(saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return saveModels; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private  Map<String, MainDimensionModel> getLastData(QuotaVO quotaVO, List<TjQuotaDimensionMain> quotaDimensionMains, List<TjQuotaDimensionSlave> quotaDimensionSlaves, List<DataModel> dmList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, MainDimensionModel> mainData=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Map<String, MainDimensionModel> getLastData(QuotaVO quotaVO, List<TjQuotaDimensionMain> quotaDimensionMains, List<QuotaDimensionSlaveVO> quotaDimensionSlaves, List<DataModel> dmList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, MainDimensionModel> mainData = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //先统计主维度的数据-----地址维度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        quotaDimensionMains.stream().forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        quotaDimensionMains.stream().forEach(one -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            mainData.putAll(SpringUtil.getBean(AreaCompute.class).compute( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    quotaVO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    dmList,//数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    one.getDitcSql(), //字典的sql语句 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Contant.main_dimension_areaLevel.getAreaLevelByMainDimension(one.getType()) //维度转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    )); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            )); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //再统计从维度的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return SpringUtil.getBean(SlaveCompute.class).compute( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mainData,//数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                quotaDimensionSlaves //字典的sql语句 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |