|  | @ -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语句
 | 
	
		
			
				|  |  |                 ) ;
 | 
	
		
			
				|  |  |         );
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |