|  | @ -31,7 +31,7 @@ import java.util.List;
 | 
	
		
			
				|  |  |  * Created by janseny on 2018/9/19.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @RestController
 | 
	
		
			
				|  |  | @RequestMapping(ApiVersion.Version1_0)
 | 
	
		
			
				|  |  | @RequestMapping(ApiVersion.Version1_0 + "/cube")
 | 
	
		
			
				|  |  | @Api(description = "OLAP 多维数据集 控制入口")
 | 
	
		
			
				|  |  | public class CubeController  extends BaseController {
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -41,10 +41,11 @@ public class CubeController  extends BaseController {
 | 
	
		
			
				|  |  |     private CubeMappingService cubeMappingService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private CubeMemberMappingService cubeMemberMappingService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ElasticSearchHandler esHandler;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @ApiOperation(value = "创建多维数据集ES的mapping结构 ")
 | 
	
		
			
				|  |  |     @RequestMapping(value = "tj/getQuotaReport", method = RequestMethod.GET)
 | 
	
		
			
				|  |  |     @RequestMapping(value = "/elasticSearchMapping", method = RequestMethod.GET)
 | 
	
		
			
				|  |  |     public Envelop getQuotaReport(
 | 
	
		
			
				|  |  |             @ApiParam(name = "id", value = "多维数据集ID", required = true)
 | 
	
		
			
				|  |  |             @RequestParam(value = "id", required = true) int id
 | 
	
	
		
			
				|  | @ -61,48 +62,70 @@ public class CubeController  extends BaseController {
 | 
	
		
			
				|  |  |             if(cube.getIndexType() != null){
 | 
	
		
			
				|  |  |                 type = cube.getIndexType();
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             boolean isExist =  esHandler.isExistsIndex(index,esHandler.getTransportClient());
 | 
	
		
			
				|  |  |             if(isExist){
 | 
	
		
			
				|  |  |                 envelop.setSuccessFlg(false);
 | 
	
		
			
				|  |  |                 envelop.setErrorMsg("索引已存在");
 | 
	
		
			
				|  |  |                 return envelop;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             // 数据集维度
 | 
	
		
			
				|  |  |             List<CubeMappingModel> cubeMappingModels = cubeMappingService.findCubeMappingModels(id);
 | 
	
		
			
				|  |  |             for(CubeMappingModel cubeMappingModel : cubeMappingModels){
 | 
	
		
			
				|  |  |                 FieldInfo fieldInfo =  new FieldInfo();
 | 
	
		
			
				|  |  |                 String fieldName = cubeMappingModel.getDimensionCode();
 | 
	
		
			
				|  |  |                 fieldInfo.setField(fieldName);
 | 
	
		
			
				|  |  |                 fieldInfo.setDataType(cubeMappingModel.getDataType());
 | 
	
		
			
				|  |  |                 if(StringUtils.isNotEmpty(cubeMappingModel.getDict())){
 | 
	
		
			
				|  |  |                     //数据字典 扩展
 | 
	
		
			
				|  |  |                     List<FieldInfo> childDictFieldiList = new ArrayList<>();
 | 
	
		
			
				|  |  |                     FieldInfo childFieldCode =  new FieldInfo();
 | 
	
		
			
				|  |  |                     childFieldCode.setField(fieldName + "Name");
 | 
	
		
			
				|  |  |                     childFieldCode.setDataType("String");
 | 
	
		
			
				|  |  |                     FieldInfo childFieldName =  new FieldInfo();
 | 
	
		
			
				|  |  |                     childFieldName.setField(fieldName + "Code");
 | 
	
		
			
				|  |  |                     childFieldName.setDataType("String");
 | 
	
		
			
				|  |  |                     childDictFieldiList.add(childFieldCode);
 | 
	
		
			
				|  |  |                     childDictFieldiList.add(childFieldName);
 | 
	
		
			
				|  |  |                     fieldInfo.setFieldInfos(childDictFieldiList);
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     // 子成员 扩展
 | 
	
		
			
				|  |  |                     List<CubeMemberMappingModel>  cubeMemberMappingModels = cubeMemberMappingService.findCubeMappingModels(cubeMappingModel.getId());
 | 
	
		
			
				|  |  |                     if(cubeMemberMappingModels != null){
 | 
	
		
			
				|  |  |                         List<FieldInfo> childFieldiList = new ArrayList<>();
 | 
	
		
			
				|  |  |                         for(CubeMemberMappingModel cubeMemberMappingModel : cubeMemberMappingModels){
 | 
	
		
			
				|  |  |                             FieldInfo childFieldInfo =  new FieldInfo();
 | 
	
		
			
				|  |  |                             childFieldInfo.setField(cubeMemberMappingModel.getDimensionCode());
 | 
	
		
			
				|  |  |                             childFieldInfo.setDataType(cubeMemberMappingModel.getDataType());
 | 
	
		
			
				|  |  |                             childFieldiList.add(childFieldInfo);
 | 
	
		
			
				|  |  |                 String fieldCode = cubeMappingModel.getDimensionCode();
 | 
	
		
			
				|  |  |                 fieldInfo.setField(fieldCode);
 | 
	
		
			
				|  |  |                 // 子成员 扩展
 | 
	
		
			
				|  |  |                 List<CubeMemberMappingModel>  cubeMemberMappingModels = cubeMemberMappingService.findCubeMappingModels(cubeMappingModel.getId());
 | 
	
		
			
				|  |  |                 if(cubeMemberMappingModels != null){
 | 
	
		
			
				|  |  |                     //如果存在子集设置 子集属性
 | 
	
		
			
				|  |  |                     if(cubeMappingModel.getChildSaveType() != null){
 | 
	
		
			
				|  |  |                         if(cubeMappingModel.getChildSaveType().equals(1)){
 | 
	
		
			
				|  |  |                             fieldInfo.setDataType("object");
 | 
	
		
			
				|  |  |                         }else if(cubeMappingModel.getChildSaveType().equals(2)){
 | 
	
		
			
				|  |  |                             fieldInfo.setDataType("nested");
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         fieldInfo.setFieldInfos(childFieldiList);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     List<FieldInfo> childFieldiList = new ArrayList<>();
 | 
	
		
			
				|  |  |                     for(CubeMemberMappingModel cubeMemberMappingModel : cubeMemberMappingModels){
 | 
	
		
			
				|  |  |                         FieldInfo childFieldInfo =  new FieldInfo();
 | 
	
		
			
				|  |  |                         childFieldInfo.setField(cubeMemberMappingModel.getDimensionCode());
 | 
	
		
			
				|  |  |                         childFieldInfo.setDataType(cubeMemberMappingModel.getDataType());
 | 
	
		
			
				|  |  |                         childFieldiList.add(childFieldInfo);
 | 
	
		
			
				|  |  |                         if(StringUtils.isNotEmpty(cubeMemberMappingModel.getDict())){
 | 
	
		
			
				|  |  |                             //子集 的 数据字典 扩展
 | 
	
		
			
				|  |  |                             FieldInfo dictFieldCode =  new FieldInfo();
 | 
	
		
			
				|  |  |                             dictFieldCode.setField(fieldCode + "Name");
 | 
	
		
			
				|  |  |                             dictFieldCode.setDataType("String");
 | 
	
		
			
				|  |  |                             FieldInfo dictFieldName =  new FieldInfo();
 | 
	
		
			
				|  |  |                             dictFieldName.setField(fieldCode + "Code");
 | 
	
		
			
				|  |  |                             dictFieldName.setDataType("String");
 | 
	
		
			
				|  |  |                             childFieldiList.add(dictFieldCode);
 | 
	
		
			
				|  |  |                             childFieldiList.add(dictFieldName);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     fieldInfo.setFieldInfos(childFieldiList);
 | 
	
		
			
				|  |  |                 }else {
 | 
	
		
			
				|  |  |                     fieldInfo.setDataType(cubeMappingModel.getDataType());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 fieldInfoList.add(fieldInfo);
 | 
	
		
			
				|  |  |                 if(StringUtils.isNotEmpty(cubeMappingModel.getDict())){
 | 
	
		
			
				|  |  |                     //数据字典 扩展
 | 
	
		
			
				|  |  |                     FieldInfo dictFieldCode =  new FieldInfo();
 | 
	
		
			
				|  |  |                     dictFieldCode.setField(fieldCode + "Name");
 | 
	
		
			
				|  |  |                     dictFieldCode.setDataType("String");
 | 
	
		
			
				|  |  |                     FieldInfo dictFieldName =  new FieldInfo();
 | 
	
		
			
				|  |  |                     dictFieldName.setField(fieldCode + "Code");
 | 
	
		
			
				|  |  |                     dictFieldName.setDataType("String");
 | 
	
		
			
				|  |  |                     fieldInfoList.add(dictFieldCode);
 | 
	
		
			
				|  |  |                     fieldInfoList.add(dictFieldName);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             ElasticSearchHandler esHandler = new ElasticSearchHandler();
 | 
	
		
			
				|  |  |             TransportClient client = esHandler.getTransportClient();
 | 
	
		
			
				|  |  |             esHandler.createIndexAndCreateMapping(index, type, fieldInfoList, client);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             esHandler.createIndexAndCreateMapping(index, type, fieldInfoList, esHandler.getTransportClient());
 | 
	
		
			
				|  |  |             envelop.setSuccessFlg(true);
 | 
	
		
			
				|  |  |             return envelop;
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             invalidUserException(e, -1, "创建失败:" + e.getMessage());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         envelop.setSuccessFlg(false);
 |