| 
					
				 | 
			
			
				@ -0,0 +1,111 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.quota.controller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.constants.ApiVersion; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.constants.ServiceApi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.ehr.util.rest.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.model.cube.Cube; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.model.cube.CubeMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.model.cube.CubeMemberMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.model.rest.FieldInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.service.cube.CubeMappingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.service.cube.CubeMemberMappingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.service.cube.CubeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.util.ElasticSearchHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.vo.CubeMappingModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.quota.vo.CubeMemberMappingModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.Api; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.elasticsearch.client.transport.TransportClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RequestMethod; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RequestParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RestController; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by janseny on 2018/9/19. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RestController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RequestMapping(ApiVersion.Version1_0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Api(description = "OLAP 多维数据集 控制入口") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CubeController  extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CubeService cubeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CubeMappingService cubeMappingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CubeMemberMappingService cubeMemberMappingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "创建多维数据集ES的mapping结构 ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "tj/getQuotaReport", method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop getQuotaReport( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "id", value = "多维数据集ID", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "id", required = true) int id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Envelop envelop = new Envelop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<FieldInfo> fieldInfoList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Cube cube = cubeService.findOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String type = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(cube.getIndexName() != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                index = cube.getIndexName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(cube.getIndexType() != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                type = cube.getIndexType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 数据集维度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        fieldInfo.setFieldInfos(childFieldiList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                fieldInfoList.add(fieldInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ElasticSearchHandler esHandler = new ElasticSearchHandler(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            TransportClient client = esHandler.getTransportClient(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            esHandler.createIndexAndCreateMapping(index, type, fieldInfoList, client); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            envelop.setSuccessFlg(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            invalidUserException(e, -1, "创建失败:" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        envelop.setSuccessFlg(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |