Browse Source

olap 数据解析 优化调整

jkzlzhoujie 6 years ago
parent
commit
7d7b23f65f

+ 26 - 24
src/main/java/com/yihu/quota/controller/CubeController.java

@ -101,33 +101,35 @@ public class CubeController  extends BaseController {
                    FieldInfo fieldInfo =  new FieldInfo();
                    fieldInfo.setField(fieldCode);
                    // 子成员 扩展
                    List<CubeMemberMappingModel>  cubeMemberMappingModels = cubeMemberMappingService.findCubeMemberMappingModelsById(cubeMappingModel.getId());
                    if(cubeMemberMappingModels != null && cubeMemberMappingModels.size() > 0){
                        List<FieldInfo> childFieldiList = new ArrayList<>();
                        //如果存在子集设置 子集属性
                        if(cubeMappingModel.getChildSaveType() != null){
                            if(cubeMappingModel.getChildSaveType().equals(1)){
                                fieldInfo.setDataType("object");
                            }else if(cubeMappingModel.getChildSaveType().equals(2)){
                                fieldInfo.setDataType("nested");
                    if(cubeMappingModel.getChildSaveType() != null){
                        List<CubeMappingModel> childMapping = cubeMappingService.findCubeChildMappingModelsByCubeId(id,cubeMappingModel.getId());
                        if(childMapping != null && childMapping.size() > 0){
                            List<FieldInfo> childFieldiList = new ArrayList<>();
                            //如果存在子集设置 子集属性
                            if(cubeMappingModel.getChildSaveType() != null){
                                if(cubeMappingModel.getChildSaveType().equals(1)){
                                    fieldInfo.setDataType("object");
                                }else if(cubeMappingModel.getChildSaveType().equals(2)){
                                    fieldInfo.setDataType("nested");
                                }
                            }
                        }
                        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 dictFieldName =  new FieldInfo();
                                dictFieldName.setField(fieldCode + "_name");
                                dictFieldName.setDataType("String");
                                childFieldiList.add(dictFieldName);
                            for(CubeMappingModel cubeMappingModel1 : childMapping){
                                FieldInfo childFieldInfo =  new FieldInfo();
                                childFieldInfo.setField(cubeMappingModel1.getDimensionCode());
                                childFieldInfo.setDataType(cubeMappingModel1.getDataType());
                                childFieldiList.add(childFieldInfo);
                                //数据字典名称作为一个子属性 扩展
                                if(StringUtils.isNotEmpty(cubeMappingModel1.getDict())){
                                    FieldInfo dictFieldName =  new FieldInfo();
                                    dictFieldName.setField(fieldCode + "_name");
                                    dictFieldName.setDataType("String");
                                    childFieldiList.add(dictFieldName);
                                }
                            }
                            fieldInfo.setFieldInfos(childFieldiList);
                        }else {
                            fieldInfo.setDataType(cubeMappingModel.getDataType());
                        }
                        fieldInfo.setFieldInfos(childFieldiList);
                    }else {
                        fieldInfo.setDataType(cubeMappingModel.getDataType());
                    }
                    fieldInfoList.add(fieldInfo);
                }

+ 85 - 0
src/main/java/com/yihu/quota/etl/formula/RelevanceFunc.java

@ -0,0 +1,85 @@
package com.yihu.quota.etl.formula;
import com.yihu.quota.service.cube.CubeMemberMappingService;
import com.yihu.quota.service.source.DataSourcesTableFieldService;
import com.yihu.quota.vo.DataSourcesTableModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 表关联
 * @author janseny
 */
@Component
public class RelevanceFunc {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private DataSourcesTableFieldService dataSourcesTableFieldService;
    /**
     * 获取关联字段值
     * @param  dataFieldId  数据 对应源字段ID
     * @param relationFieldId 关联字段ID
     * @param relationFieldVal 关联字段值
     */
    public String getRelationFieldVal(String dataFieldId,String relationFieldId ,String relationFieldVal) throws Exception {
        try {
            String value = null;
            DataSourcesTableModel dtm = dataSourcesTableFieldService.findDataSourcesTableModel(dataFieldId);
            DataSourcesTableModel subDtm = dataSourcesTableFieldService.findDataSourcesTableModel(relationFieldId);
            if(dtm != null && subDtm != null){
                value = getEntityByRelationId(subDtm.getDatabaseName() ,subDtm.getTableCode(), dtm.getFieldCode(),subDtm.getFieldCode(),subDtm.getFieldType(),relationFieldVal);
            }
            return value;
        }catch (Exception e){
            throw e;
        }
    }
    /**
     *
     * @param database 数据库名
     * @param table    表名
     * @param cloumnCode 列名
     * @param relationCode 关联字段名
     * @param relationColDataType 关联字段类型
     * @param relationVal 关联字段值
     * @return
     * @throws Exception
     */
    public String getEntityByRelationId(String database ,String table, String cloumnCode ,String relationCode,String relationColDataType ,
                                        String relationVal) throws Exception {
        try {
            String sql = "";
            if(relationColDataType.toLowerCase().equals("string")){
                sql = " SELECT " + cloumnCode + " FROM " + database + "." + table + " WHERE " + relationCode + "= '" + relationVal + "' ";
            }else {
                sql = " SELECT " + cloumnCode + " FROM " + database + "." + table + " WHERE " + relationCode + "= " + relationVal;
            }
            List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
            if(list != null && list.size() > 0){
                Map<String, Object> map  = list.get(0);
                if(map.get(cloumnCode) == null ){
                    return null;
                }
                return map.get(cloumnCode).toString();
            }else {
                return null;
            }
        }catch (Exception e){
            throw new Exception(" 数据查询异常");
        }
    }
}

+ 58 - 19
src/main/java/com/yihu/quota/model/cube/CubeMapping.java

@ -12,17 +12,21 @@ import java.util.List;
 * @author janseny
 */
@Entity
@Table(name = "olap_cube_mapping")
@Table(name = "olap_cube_mapping_test")
public class CubeMapping {
    private Integer id;
    private Integer cubeId;            //多维数据集ID
    private Integer dataFieldId;      //字段名
    private Integer dimensionId;      //维度ID
    private String dimensionCode;    //维度编码
    private String fieldName;        //字段名称
    private Integer childSaveType; //子集映射格式类型 1 对象 2 子集
    private String dataGetType;        //数据获取方式 1 直接获取 2 关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    private Integer dataFieldId;      //字段ID
    private String dict;                //字典
    private String algorithm;                   //中间算法
    private String parm;                        //算法参数
    private Integer childSaveType;              //子集映射格式类型 1 对象 2 子集
    private Integer parentId;                   //父级ID
    private Integer isNestedPrimarykey;         // 是否指定唯一字段 1是 0 否
    private Integer dataGetType;                //数据获取方式 1 直接获取 2 算法方式获取  3关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;             //关联表主键字段ID
    private String relationDataFieldId;      //关联表数据关联字段ID
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
@ -62,22 +66,31 @@ public class CubeMapping {
        this.dimensionId = dimensionId;
    }
    @Column(name = "dimension_code")
    public String getDimensionCode() {
        return dimensionCode;
    @Column(name = "dict")
    public String getDict() {
        return dict;
    }
    public void setDimensionCode(String dimensionCode) {
        this.dimensionCode = dimensionCode;
    public void setDict(String dict) {
        this.dict = dict;
    }
    @Column(name = "field_name")
    public String getFieldName() {
        return fieldName;
    @Column(name = "algorithm")
    public String getAlgorithm() {
        return algorithm;
    }
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    public void setAlgorithm(String algorithm) {
        this.algorithm = algorithm;
    }
    @Column(name = "parm")
    public String getParm() {
        return parm;
    }
    public void setParm(String parm) {
        this.parm = parm;
    }
    @Column(name = "child_save_type")
@ -89,12 +102,30 @@ public class CubeMapping {
        this.childSaveType = childSaveType;
    }
    @Column(name = "parent_id")
    public Integer getParentId() {
        return parentId;
    }
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }
    @Column(name = "is_nested_primarykey")
    public Integer getIsNestedPrimarykey() {
        return isNestedPrimarykey;
    }
    public void setIsNestedPrimarykey(Integer isNestedPrimarykey) {
        this.isNestedPrimarykey = isNestedPrimarykey;
    }
    @Column(name = "data_get_type")
    public String getDataGetType() {
    public Integer getDataGetType() {
        return dataGetType;
    }
    public void setDataGetType(String dataGetType) {
    public void setDataGetType(Integer dataGetType) {
        this.dataGetType = dataGetType;
    }
@ -107,4 +138,12 @@ public class CubeMapping {
        this.relationFieldId = relationFieldId;
    }
    @Column(name = "relation_data_field_id")
    public String getRelationDataFieldId() {
        return relationDataFieldId;
    }
    public void setRelationDataFieldId(String relationDataFieldId) {
        this.relationDataFieldId = relationDataFieldId;
    }
}

+ 35 - 35
src/main/java/com/yihu/quota/model/dimension/Dimension.java

@ -25,19 +25,19 @@ public class Dimension {
     * 类型 : 1 维度 2 属性 3 指标
     */
    private Integer type;
    /**
     * 数据字典
     */
    private String dict;
    /**
     * 中间算法
     */
    private String algorithm;
    /**
     * 中间算法参数
     */
    private String parm;
//    /**
//     * 数据字典
//     */
//    private String dict;
//    /**
//     * 中间算法
//     */
//    private String algorithm;
//
//    /**
//     * 中间算法参数
//     */
//    private String parm;
    /**
     * 数据类型
@ -84,21 +84,21 @@ public class Dimension {
        this.type = type;
    }
    public String getDict() {
        return dict;
    }
    public void setDict(String dict) {
        this.dict = dict;
    }
    public String getAlgorithm() {
        return algorithm;
    }
    public void setAlgorithm(String algorithm) {
        this.algorithm = algorithm;
    }
//    public String getDict() {
//        return dict;
//    }
//
//    public void setDict(String dict) {
//        this.dict = dict;
//    }
//
//    public String getAlgorithm() {
//        return algorithm;
//    }
//
//    public void setAlgorithm(String algorithm) {
//        this.algorithm = algorithm;
//    }
    @Column(name = "data_type")
    public String getDataType() {
@ -109,13 +109,13 @@ public class Dimension {
        this.dataType = dataType;
    }
    public String getParm() {
        return parm;
    }
    public void setParm(String parm) {
        this.parm = parm;
    }
//    public String getParm() {
//        return parm;
//    }
//
//    public void setParm(String parm) {
//        this.parm = parm;
//    }
    @Transient
    public List<DimensionMember> getDimensionMembers() {

+ 85 - 20
src/main/java/com/yihu/quota/service/cube/CubeMappingService.java

@ -48,12 +48,24 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @return
     */
    public List<CubeMappingModel> findCubeMappingModelsByCubeId(int cubeId) {
        String sql = "SELECT ocm.*,od.data_type,od.dict from olap_cube_mapping ocm ,olap_dimension od " +
                " where ocm.dimension_id = od.id AND ocm.cube_id = ? order by ocm.id asc";
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,od.data_type from olap_cube_mapping_test ocm ,olap_dimension od " +
                " where ocm.dimension_id = od.id AND ocm.cube_id = ? and ocm.parent_id is null order by ocm.id asc";
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), cubeId);
        return cubeMappingModels;
    }
    /**
     * 根据数据集 查询对应的维度的子集维度信息
     * @param cubeId
     * @return
     */
    public List<CubeMappingModel> findCubeChildMappingModelsByCubeId(int cubeId ,int parentId ) {
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,od.data_type from olap_cube_mapping_test ocm ,olap_dimension od " +
                " where ocm.dimension_id = od.id AND ocm.cube_id = ? and ocm.parent_id = ? order by ocm.id asc";
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), cubeId,parentId);
        return cubeMappingModels;
    }
    /**
     * 根据表编码和字段编码 查询对应的维度信息
@ -62,7 +74,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @return
     */
    public List<CubeMappingModel> findCubeMappingModelsByFieldCode(String tableCode,String fieldCode) {
        String sql = "SELECT ocm.*,oc.index_name,oc.index_type,odstf.field_code,od.dict,od.data_type,od.`algorithm`,od.parm from olap_cube_mapping ocm  " +
        String sql = "SELECT ocm.*,oc.index_name,oc.index_type,odstf.field_code,od.dict,od.data_type,od.`algorithm`,od.parm from olap_cube_mapping_test ocm  " +
                " LEFT JOIN olap_data_sources_table_field odstf ON ocm.data_field_id = odstf.id "+
                " LEFT JOIN olap_data_sources_table odst ON odst.id = odstf.table_id " +
                " LEFT JOIN olap_cube oc ON oc.id = ocm.cube_id " +
@ -72,6 +84,56 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
        return cubeMappingModels;
    }
    /**
     * 根据表编码和字段编码 查询对应的维度信息
     * @param fieldCode
     * @param tableCode
     * @return
     */
    public List<CubeMappingModel> findCubeMappingModelsByField(String tableCode,String fieldCode) {
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,oc.index_name,oc.index_type,odstf.field_code,od.data_type from olap_cube_mapping_test ocm " +
                " LEFT JOIN olap_data_sources_table_field odstf ON ocm.data_field_id = odstf.id "+
                " LEFT JOIN olap_data_sources_table odst ON odst.id = odstf.table_id " +
                " LEFT JOIN olap_cube oc ON oc.id = ocm.cube_id " +
                " LEFT JOIN olap_dimension od ON ocm.dimension_id = od.id where odstf.field_code = ? and odst.table_code = ? ";
        String param[] = {fieldCode,tableCode};
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), param);
        return cubeMappingModels;
    }
    /**
     * 查询 父级维度信息
     * @param parentId
     * @return
     */
    public CubeMappingModel findParentDimension(int parentId){
        String sql = "SELECT ocm.* ,od.`code` as dimensionCode ,od.data_type from olap_cube_mapping_test ocm, olap_dimension od  " +
                " where ocm.dimension_id = od.id  and ocm.id = ? ";
        Object param[] = {parentId};
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), param);
        if(cubeMappingModels != null && cubeMappingModels.size() > 0 ){
            return  cubeMappingModels.get(0);
        }
        return null;
    }
    /**
     * 查询子集中 主键字段
     * @param parentId
     * @return
     */
    public CubeMappingModel findCubeMappingPrimary(int parentId){
        String[] fields = {"parentId","isPrimarykey"};
        Object[] param = {parentId,1};
        String sql = "SELECT ocm.* ,od.`code` as dimensionCode ,od.data_type from olap_cube_mapping_test ocm, olap_dimension od  " +
                " where ocm.dimension_id = od.id  and ocm.parent_id = ? and ocm.is_nested_primarykey = ? ";
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), param);
        if(cubeMappingModels != null && cubeMappingModels.size() > 0 ){
            return  cubeMappingModels.get(0);
        }
        return null;
    }
    /**
     * 根据数据集和维度编码 查询对应的维度信息
@ -80,7 +142,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @return
     */
    public CubeMappingModel findCubeMappingModelByCubeAndCode(String cubeCode,String dimensionCode) {
        String sql = "SELECT ocm.*,oc.`code` as cubeCode ,od.data_type from olap_cube_mapping ocm " +
        String sql = "SELECT ocm.*,oc.`code` as cubeCode ,od.data_type from olap_cube_mapping_test ocm " +
                " LEFT JOIN olap_cube oc on oc.id = ocm.cube_id " +
                " LEFT JOIN olap_dimension od on od.id = ocm.dimension_id where oc.`code` = ? and ocm.dimension_code = ? ";
        String param[] = {cubeCode,dimensionCode};
@ -91,21 +153,24 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
        return null;
    }
//    /**
//     * 根据表编码和关联字段编码 查询对应的维度信息
//     * @param RelationFieldCode 关联字段
//     * @param tableCode
//     * @return
//     */
//    public List<CubeMappingModel> findRelationMappingModelsByFieldCode(String tableCode,String RelationFieldCode) {
//        String sql = "SELECT ocm.*,oc.index_name,oc.index_type,odstf.field_code,od.dict,od.data_type,od.`algorithm`,od.parm from olap_cube_mapping ocm  " +
//                " LEFT JOIN olap_data_sources_table_field odstf ON ocm.relation_field_id = odstf.id "+
//                " LEFT JOIN olap_data_sources_table odst ON odst.id = odstf.table_id " +
//                " LEFT JOIN olap_cube oc ON oc.id = ocm.cube_id " +
//                " LEFT JOIN olap_dimension od ON ocm.dimension_id = od.id where ocm.child_save_type is null and  odstf.field_code = ? and odst.table_code = ? ";
//        String param[] = {RelationFieldCode,tableCode};
//        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), param);
//        return cubeMappingModels;
//    }
    /**
     * 根据 表编码 查询对应的 保存索引和类型
     * @param tableCode
     * @return
     */
    public Cube findCubeByTableCode(String tableCode) {
        String sql = "SELECT oc.* from olap_cube oc " +
                " LEFT JOIN olap_cube_mapping ocm ON oc.id = ocm.cube_id " +
                " LEFT JOIN olap_data_sources_table_field odst ON odst.id = ocm.data_field_id " +
                " LEFT JOIN olap_data_sources_table ods ON ods.id = odst.table_id  " +
                " where ods.table_code = ? ";
        String param[] = {tableCode};
        List<Cube> cubes = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Cube.class), param);
        if(cubes != null && cubes.size() > 0){
            return cubes.get(0);
        }else {
            return null;
        }
    }
}

+ 181 - 234
src/main/java/com/yihu/quota/service/cube/ElasticSearchDataProcessService.java

@ -7,9 +7,11 @@ import com.yihu.ehr.util.datetime.DateUtil;
import com.yihu.quota.etl.formula.AgeGroupFunc;
import com.yihu.quota.etl.formula.DictFunc;
import com.yihu.quota.etl.formula.DivisionFunc;
import com.yihu.quota.etl.formula.RelevanceFunc;
import com.yihu.quota.model.cube.Cube;
import com.yihu.quota.model.cube.CubeMemberMapping;
import com.yihu.quota.model.source.DataSourcesTableField;
import com.yihu.quota.service.dimension.DimensionService;
import com.yihu.quota.service.source.DataSourcesTableFieldService;
import com.yihu.quota.vo.CubeMappingModel;
import com.yihu.quota.vo.CubeMemberMappingModel;
@ -46,20 +48,18 @@ public class ElasticSearchDataProcessService {
    private static String profileId_k = "profile_id";
    private static String action_k = "action";
    @Autowired
    private JdbcBasicService jdbcBasicService;
    @Autowired
    private CubeMappingService cubeMappingService;
    @Autowired
    private CubeMemberMappingService cubeMemberMappingService;
    @Autowired
    private DataSourcesTableFieldService dataSourcesTableFieldService;
    @Autowired
    private ElasticSearchUtil elasticSearchUtil;
    @Autowired
    private CubeService cubeService;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private RelevanceFunc relevanceFunc;
    @Autowired
    private DimensionService dimensionService;
    /**
     *
@ -97,100 +97,62 @@ public class ElasticSearchDataProcessService {
        String database = "";
        if (dataMap.containsKey(database_k)) {
            database = dataMap.remove(database_k).toString();
            dataMap.remove(database_k);
        }
        if(dataMap.containsKey(table_k)){
            table = dataMap.get(table_k).toString();
            dataMap.remove(table_k);
        }
        if(dataMap.containsKey(rowKey_k)){
            rowKey = dataMap.get(rowKey_k).toString();
        }
        if(dataMap.containsKey(cubeId_k)){
            cubeId = dataMap.get(cubeId_k).toString();
            dataMap.remove(rowKey_k);
        }
        if(dataMap.containsKey(profileId_k)){
            profileId = dataMap.get(profileId_k).toString();
            dataMap.remove(profileId_k);
        }
        if(dataMap.containsKey(action_k)){
            action = dataMap.get(action_k).toString();
            dataMap.remove(action_k);
        }
        if(dataMap.containsKey(cubeId_k)){
            cubeId = dataMap.get(cubeId_k).toString();
        }
        if(StringUtils.isEmpty(profileId)){
            profileId = rowKey;
        }
        String subRowKey = rowKey;
        try {
            dataMap.remove(table_k);
            dataMap.remove(rowKey_k);
            dataMap.remove(action_k);
            String baseCloumnValue = null;
            if(action.equals(action_put)){
                for(String baseCloumnCode : dataMap.keySet()){
                    if(dataMap.get(baseCloumnCode)!= null){
                        baseCloumnValue = dataMap.get(baseCloumnCode).toString();
                    }else {
                        baseCloumnValue = null;
                    }
                    System.out.println("开始解析数据:" + baseCloumnCode + " ,值为 = " + baseCloumnValue);
                    List<CubeMappingModel> cubeMappingModels = cubeMappingService.findCubeMappingModelsByFieldCode(table, baseCloumnCode);
                    if(cubeMappingModels != null && cubeMappingModels.size() > 0){
                        for(CubeMappingModel cubeMappingModel :cubeMappingModels){
                            Map<String, Object> source  = new HashMap<>();
                            source.put(id_k,rowKey);
                            source.put(rowKey_k,rowKey);
                            String index = cubeMappingModel.getIndexName();
                            String type = cubeMappingModel.getIndexType();
                            String cloumnCode = cubeMappingModel.getDimensionCode();
                            System.out.println("维度code = " + cloumnCode +  ",维度类型:" + cubeMappingModel.getDataType());
                            //维度数据扩展保存
                            Map<String, Object> esDataMap = new HashMap<>();
                            esDataMap = dimensionDataExtendToMap(cubeMappingModel,cloumnCode,baseCloumnValue);
                            source.putAll(esDataMap);
                            saveElasticSearchData(index, type,rowKey,source);
                        }
                    }
                    //如果存在维度的话 rowkey 赋值给 profileId
                    if(cubeMappingModels != null && cubeMappingModels.size() > 0 && StringUtils.isEmpty(profileId)){
                        profileId = rowKey;
                    }
                    // 是否是子集属性
                    List<CubeMemberMappingModel> cubeMemberMappingModels = cubeMemberMappingService.findCubeMemberMappingModels(table,baseCloumnCode);
                    if(cubeMemberMappingModels != null && cubeMemberMappingModels.size() > 0){
                        for(CubeMemberMappingModel cubeMemberMappingModel :cubeMemberMappingModels){
                            String index = cubeMemberMappingModel.getIndexName();
                            String type = cubeMemberMappingModel.getIndexType();
                            String subRowKey = rowKey;
                            if(action.contains(action_put)){
                                //维度成员数据扩展保存
                        List<CubeMappingModel> cubeMappingModels = cubeMappingService.findCubeMappingModelsByField(table, baseCloumnCode);
                        if(cubeMappingModels != null && cubeMappingModels.size() > 0){
                            for(CubeMappingModel cubeMappingModel :cubeMappingModels){
                                System.out.println("维度code = " + cubeMappingModel.getDimensionCode() +  ",维度类型:" + cubeMappingModel.getDataType() + ",值=" + baseCloumnValue );
                                Map<String, Object> source  = new HashMap<>();
                                source = dimensionMemberDataExtendToMap(cubeMemberMappingModel,baseCloumnValue,subRowKey,profileId);
                                saveElasticSearchData(index, type,profileId,source);
                            }
                        }
                    }
//                    //主表字段关联出相关表数据 start
                    List<CubeMemberMappingModel> relationMemberMappingModels = cubeMemberMappingService.findRelationMemberMappingModels(table,baseCloumnCode);
                    if(relationMemberMappingModels != null && relationMemberMappingModels.size() > 0) {
                        profileId = rowKey;
                        for (CubeMemberMappingModel cubeMemberMappingModel : relationMemberMappingModels) {
                            //父级对象
                            if(cubeMemberMappingModel.getChildSaveType() == 1 && cubeMemberMappingModel.getRelationSubFieldId() != null){
                                DataSourcesTableModel dataSourcesTableModel = dataSourcesTableFieldService.findDataSourcesTableModel(cubeMemberMappingModel.getDataFieldId());
                                DataSourcesTableModel subdataSourcesTableModel = dataSourcesTableFieldService.findDataSourcesTableModel(cubeMemberMappingModel.getRelationSubFieldId());
                                if(dataSourcesTableModel != null && subdataSourcesTableModel != null){
                                    String value = jdbcBasicService.getEntityByRelationId(subdataSourcesTableModel.getDatabaseName() ,subdataSourcesTableModel.getTableCode(), dataSourcesTableModel.getFieldCode(),subdataSourcesTableModel.getFieldCode(),subdataSourcesTableModel.getFieldType(),baseCloumnValue);
                                    if(StringUtils.isNotEmpty(value)){
                                        String index = cubeMemberMappingModel.getIndexName();
                                        String type = cubeMemberMappingModel.getIndexType();
                                        if(action.contains(action_put)){
                                            //维度成员数据扩展保存
                                            Map<String, Object> source  = new HashMap<>();
                                            source = dimensionMemberDataExtendToMap(cubeMemberMappingModel,value,null,profileId);
                                            saveElasticSearchData(index, type,profileId,source);
                                        }
                                    }
                                if(cubeMappingModel.getParentId() == null){
                                    source.put(id_k,rowKey);
                                    source.put(rowKey_k,rowKey);
                                    source.putAll(dimensionDataExtendToMap(cubeMappingModel,cubeMappingModel.getDimensionCode(),baseCloumnValue));
                                }else { // 子集成员
                                    rowKey = profileId;
                                    source.put(id_k,profileId);
                                    source.put(rowKey_k,profileId);
                                    source.putAll(dimensionMemberDataExtendToMap(cubeMappingModel,baseCloumnValue,subRowKey,profileId));
                                }
                                String index = cubeMappingModel.getIndexName();
                                String type = cubeMappingModel.getIndexType();
                                saveElasticSearchData(index, type,rowKey,source);
                            }
                        }
                    }
                }
            }else if(action.equals(action_del)){
                //一个表只能对应到一个 索引type
                Cube cube = cubeMemberMappingService.findCubeByTableCode(table);
                Cube cube = cubeMappingService.findCubeByTableCode(table);
                if(cube != null){
                    elasticSearchUtil.delete(cube.getIndexName(),cube.getIndexType(),rowKey);
                }else {
@ -198,7 +160,7 @@ public class ElasticSearchDataProcessService {
                }
            }else if (action.equals(action_putAll)) {
                if (dataMap.containsKey("cubeId")) {
                    Cube cube = this.getIndexTypeById(cubeId);
                    Cube cube = cubeService.findOne(Integer.parseInt(cubeId));
                    if (null != cube) {
                        String index = cube.getIndexName();
                        String type = cube.getIndexType();
@ -209,44 +171,29 @@ public class ElasticSearchDataProcessService {
                            System.out.println("列:" + baseCloumnCode );
                            if(dataMap.get(baseCloumnCode)!= null){
                                baseCloumnValue = dataMap.get(baseCloumnCode).toString();
                                List<CubeMappingModel> cubeMappingModels = cubeMappingService.findCubeMappingModelsByFieldCode(table, baseCloumnCode);
                                List<CubeMappingModel> cubeMappingModels = cubeMappingService.findCubeMappingModelsByField(table, baseCloumnCode);
                                if(cubeMappingModels != null && cubeMappingModels.size() > 0){
                                    for(CubeMappingModel cubeMappingModel :cubeMappingModels){
                                        source.putAll(dimensionDataExtendToMap(cubeMappingModel,cubeMappingModel.getDimensionCode(),baseCloumnValue));
                                    }
                                }
                                // 是否是子集属性
                                profileId = rowKey;
                                String subRowKey = rowKey;
                                List<CubeMemberMappingModel> cubeMemberMappingModels = cubeMemberMappingService.findCubeMemberMappingModels(table,baseCloumnCode);
                                if(cubeMemberMappingModels != null && cubeMemberMappingModels.size() > 0){
                                    for(CubeMemberMappingModel cubeMemberMappingModel :cubeMemberMappingModels){
                                        source.putAll(dimensionMemberDataExtendToMap(cubeMemberMappingModel,baseCloumnValue,subRowKey,profileId));
                                    }
                                }
//                              //主表字段关联出相关表数据 start
                                List<CubeMemberMappingModel> relationMemberMappingModels = cubeMemberMappingService.findRelationMemberMappingModels(table,baseCloumnCode);
                                if(relationMemberMappingModels != null && relationMemberMappingModels.size() > 0) {
                                    for (CubeMemberMappingModel cubeMemberMappingModel : relationMemberMappingModels) {
                                        //父级对象
                                        if(cubeMemberMappingModel.getChildSaveType() == 1 && cubeMemberMappingModel.getRelationSubFieldId() != null){
                                            DataSourcesTableModel dtm = dataSourcesTableFieldService.findDataSourcesTableModel(cubeMemberMappingModel.getDataFieldId());
                                            DataSourcesTableModel subDtm = dataSourcesTableFieldService.findDataSourcesTableModel(cubeMemberMappingModel.getRelationSubFieldId());
                                            if(dtm != null && subDtm != null){
                                                String value = jdbcBasicService.getEntityByRelationId(subDtm.getDatabaseName() ,subDtm.getTableCode(), dtm.getFieldCode(),subDtm.getFieldCode(),subDtm.getFieldType(),baseCloumnValue);
                                                if(StringUtils.isNotEmpty(value)){
                                                    String parentCode = cubeMemberMappingModel.getParentCode();
                                                    Map<String,Object> childMap = new HashMap<>();
                                                    childMap = dimensionMemberDataExtendToMap(cubeMemberMappingModel, value, null, profileId);
                                                    if(source.get(parentCode) != null ){
                                                        Map<String, Object> parentMap  = (Map<String, Object>) source.get(parentCode);
                                                        parentMap.putAll((Map<String, Object>)childMap.get(parentCode));
                                                        source.put(parentCode,parentMap);
                                                    }else {
                                                        source.put(parentCode,childMap.get(parentCode));
                                                    }
                                        System.out.println("维度code = " + cubeMappingModel.getDimensionCode() +  ",维度类型:" + cubeMappingModel.getDataType() + ",值=" + baseCloumnValue );
                                        if(cubeMappingModel.getParentId() == null){
                                            source.putAll(dimensionDataExtendToMap(cubeMappingModel, cubeMappingModel.getDimensionCode(), baseCloumnValue));
                                        }else { // 子集成员
                                            CubeMappingModel mappingModel = cubeMappingService.findParentDimension(cubeMappingModel.getParentId());
                                            String parentCode = mappingModel.getDimensionCode();
                                            cubeMappingModel.setParentCode(parentCode);
                                            cubeMappingModel.setChildSaveType(mappingModel.getChildSaveType());
                                            if(mappingModel != null){
                                                Map<String,Object> childMap = new HashMap<>();
                                                childMap = dimensionMemberDataExtendToMap(cubeMappingModel,baseCloumnValue,subRowKey,profileId);
                                                if(source.get(parentCode) != null ){
                                                    Map<String, Object> parentMap  = (Map<String, Object>) source.get(parentCode);
                                                    parentMap.putAll((Map<String, Object>)childMap.get(parentCode));
                                                    source.put(parentCode,parentMap);
                                                }else {
                                                    source.put(parentCode,childMap.get(parentCode));
                                                }
                                            }
                                        }
                                    }
                                }
@ -259,7 +206,7 @@ public class ElasticSearchDataProcessService {
                }
            }else if (action.contains(action_delAll)) {
                if (dataMap.containsKey("cubeId")) {
                    Cube cube = this.getIndexTypeById(cubeId);
                    Cube cube = cubeService.findOne(Integer.parseInt(cubeId));
                    if (null != cube) {
                        elasticSearchUtil.deleteByField(cube.getIndexName(), cube.getIndexType(), "_index", cube.getIndexName());
                    } else {
@ -285,6 +232,9 @@ public class ElasticSearchDataProcessService {
     */
    public Map<String,Object> dimensionDataExtendToMap(CubeMappingModel cubeMappingModel,String cloumnCode,String baseCloumnValue) throws Exception {
        String dataType = cubeMappingModel.getDataType();
        int dataGetType = cubeMappingModel.getDataGetType();
        String relationFieldId = cubeMappingModel.getRelationFieldId();
        String relationDataFieldId = cubeMappingModel.getRelationDataFieldId();
        String dict = cubeMappingModel.getDict();
        String algorithm = cubeMappingModel.getAlgorithm();
        Map<String, Object> source  = new HashMap<>();
@ -301,10 +251,9 @@ public class ElasticSearchDataProcessService {
//            }else{
//                source.put(cloumnCode,data);
//            }
            //年龄段
            if(algorithm.contains("AgeGroupFunc")){
                source = extendAgeGroupData(source,cloumnCode,dict,baseCloumnValue);
            }
        }else if(StringUtils.isNotEmpty(relationFieldId) && dataGetType == 3 ) {// 关联获取
            String value = relevanceFunc.getRelationFieldVal(relationDataFieldId, relationFieldId, baseCloumnValue);
            source.put(cloumnCode,value);
        }else {
            source.put(cloumnCode,dataConver(dataType,baseCloumnValue));
        }
@ -313,29 +262,35 @@ public class ElasticSearchDataProcessService {
    /**
     * 维度成员数据扩展 转map
     * @param cubeMemberMappingModel
     * @param cubeMappingModel
     * @param baseCloumnValue
     * @param subRowKey
     * @return
     */
    public Map<String,Object> dimensionMemberDataExtendToMap(CubeMemberMappingModel cubeMemberMappingModel,String baseCloumnValue,String subRowKey,String profileId) throws Exception {
        Map<String, Object> source  = new HashMap<>();
        String cloumnCode = cubeMemberMappingModel.getDimensionCode();
        String parentCode = cubeMemberMappingModel.getParentCode();
        String dataType = cubeMemberMappingModel.getDataType();
        String dict = cubeMemberMappingModel.getDict();
        String algorithm = cubeMemberMappingModel.getAlgorithm();
        String algorithmParm = cubeMemberMappingModel.getParm();
        int childSaveType = cubeMemberMappingModel.getChildSaveType();
        String index = cubeMemberMappingModel.getIndexName();
        String type = cubeMemberMappingModel.getIndexType();
        if(childSaveType == 1 ){//对象方式
            Map<String, Object> objChildMap  = new HashMap<>();
            if(StringUtils.isNotEmpty(dict)){
                objChildMap = extendDictData(objChildMap,cloumnCode,dict,baseCloumnValue);
                source.put(parentCode,objChildMap);
            }else if(StringUtils.isNotEmpty(algorithm)){
    public Map<String,Object> dimensionMemberDataExtendToMap(CubeMappingModel cubeMappingModel,String baseCloumnValue,String subRowKey,String profileId) throws Exception {
        try {
            int parentId = cubeMappingModel.getParentId();
            int childSaveType = cubeMappingModel.getChildSaveType();
            String parentCode = cubeMappingModel.getParentCode();
            Map<String, Object> source  = new HashMap<>();
            String cloumnCode = cubeMappingModel.getDimensionCode();
            String dataType = cubeMappingModel.getDataType();
            String dict = cubeMappingModel.getDict();
            String algorithm = cubeMappingModel.getAlgorithm();
            String algorithmParm = cubeMappingModel.getParm();
            String relationFieldId = cubeMappingModel.getRelationFieldId();
            int dataGetType = cubeMappingModel.getDataGetType();
            String index = cubeMappingModel.getIndexName();
            String type = cubeMappingModel.getIndexType();
            if(childSaveType == 1 ){//对象方式
                Map<String, Object> objChildMap  = new HashMap<>();
                if(StringUtils.isNotEmpty(dict)){
                    objChildMap = extendDictData(objChildMap,cloumnCode,dict,baseCloumnValue);
                    source.put(parentCode,objChildMap);
                }else if(StringUtils.isNotEmpty(algorithm) && dataGetType == 2){//算法获取
//                //通过 反射方式进行  后续开放 暂时字典redis不通
//                FuncHelper funcHelper = new FuncHelper();
//                algorithmParm = algorithmParm.replace("value",cloumnCode);
@ -345,34 +300,45 @@ public class ElasticSearchDataProcessService {
//                }else{
//                    objChildMap.put(cloumnCode,data);
//                }
                //区域算法
                if(algorithm.contains("DivisionFunc") && StringUtils.isNotEmpty(algorithmParm)){
                    objChildMap = extendDivisionData(objChildMap, cloumnCode, algorithmParm, baseCloumnValue);
                    source.put(parentCode,objChildMap);
                }else if(StringUtils.isNotEmpty(relationFieldId) && dataGetType == 3 ) {// 关联获取
                    String value = relevanceFunc.getRelationFieldVal(cubeMappingModel.getRelationDataFieldId(), relationFieldId, baseCloumnValue);
                    objChildMap.put(cloumnCode,dataConver(cubeMappingModel.getDataType(),value));
                }else {
                    objChildMap.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                }
                source.put(parentCode,objChildMap);
            }else {
                objChildMap.put(cloumnCode,dataConver(dataType,baseCloumnValue));
            }
            source.put(parentCode,objChildMap);
        }else if(childSaveType == 2 ){//nested 方式
            //查找子集主键字段
            CubeMemberMapping primaryCubeMember = cubeMemberMappingService.findCubeMemberMappingPrimary(cubeMemberMappingModel.getCubeMappingId());
            String primaryKeyCode = "";
            if(primaryCubeMember != null ){
                primaryKeyCode = primaryCubeMember.getDimensionCode();
            }else {
                return null;
            }
            List<Map<String,Object>> nestedList = new ArrayList<>();
            //查出历史数据 然后组合保存
            Map<String, Object> oldMataMap = elasticSearchUtil.findById(index, type, profileId);
            if(oldMataMap != null && oldMataMap.size() > 0){
                //组装 子集历史数据,更改当前字段值 在添加
                List<Map<String, Object>> childList = (List<Map<String, Object>>)oldMataMap.get(parentCode);
                if(childList != null && childList.size() > 0){
                    boolean isexist = false;
                    for(Map<String, Object> map : childList){
                        if(subRowKey.equals(map.get(primaryKeyCode).toString())){
            }else if(childSaveType == 2 ){//nested 方式
                CubeMappingModel cubeMappingModelPri = cubeMappingService.findCubeMappingPrimary(parentId);
                String primaryKeyCode = "";
                if(cubeMappingModelPri != null ){
                    primaryKeyCode = cubeMappingModelPri.getDimensionCode();
                }else {
                    return null;
                }
                List<Map<String,Object>> nestedList = new ArrayList<>();
                //查出历史数据 然后组合保存
                Map<String, Object> oldMataMap = elasticSearchUtil.findById(index, type, profileId);
                if(oldMataMap != null && oldMataMap.size() > 0){
                    //组装 子集历史数据,更改当前字段值 在添加
                    List<Map<String, Object>> childList = (List<Map<String, Object>>)oldMataMap.get(parentCode);
                    if(childList != null && childList.size() > 0){
                        boolean isexist = false;
                        for(Map<String, Object> map : childList){
                            if(subRowKey.equals(map.get(primaryKeyCode).toString())){
                                map.put(primaryKeyCode,subRowKey);
                                map.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                                if(StringUtils.isNotEmpty(dict)){
                                    map = extendDictData(map,cloumnCode,dict,baseCloumnValue);
                                }else if(StringUtils.isNotEmpty(algorithm)){
                                    //其他算法 反射方式 todo
                                }
                                isexist = true;
                            }
                            nestedList.add(map);
                        }
                        if( !isexist){
                            Map<String,Object> map = new HashMap<>();
                            map.put(primaryKeyCode,subRowKey);
                            map.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                            if(StringUtils.isNotEmpty(dict)){
@ -380,34 +346,24 @@ public class ElasticSearchDataProcessService {
                            }else if(StringUtils.isNotEmpty(algorithm)){
                                //其他算法
                            }
                            isexist = true;
                            nestedList.add(map);
                        }
                        nestedList.add(map);
                    }
                    if( !isexist){
                        source.put(parentCode, nestedList);
                    }else{
                        Map<String,Object> map = new HashMap<>();
                        map.put(primaryKeyCode,subRowKey);
                        map.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                        if(StringUtils.isNotEmpty(dict)){
                            map = extendDictData(map,cloumnCode,dict,baseCloumnValue);
                        }else if(StringUtils.isNotEmpty(algorithm)){
                            //其他算法
                        }
                        nestedList.add(map);
                        source.put(parentCode, nestedList);
                    }
                    source.put(parentCode, nestedList);
                }else{
                    Map<String,Object> map = new HashMap<>();
                    map.put(primaryKeyCode,subRowKey);
                    map.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                    nestedList.add(map);
                    source.put(parentCode, nestedList);
                    throw new Exception("没有找到数据,无法更新");
                }
            }else{
                throw new Exception("没有找到数据,无法更新");
            }
            return source;
        }catch (Exception e){
           throw e;
        }
        return source;
    }
    /**
@ -429,56 +385,56 @@ public class ElasticSearchDataProcessService {
        return source;
    }
    /**
     * 年龄扩展年龄段 及年龄段字典
     * @param source 数据集合
     * @param cloumnCode 列code
     * @param dict 字典ID
     * @param sourceValue 年龄
     * @return
     */
    public Map<String, Object> extendAgeGroupData(Map<String, Object> source ,String cloumnCode,String dict,String sourceValue){
        String value = "";
        DictFunc dictFunc = new DictFunc();
        AgeGroupFunc ageGroupFunc = new AgeGroupFunc();
        String ageGroup = ageGroupFunc.execute(Integer.valueOf(sourceValue));
        String param[] = {dict,ageGroup};
//      value = dictFunc.execute(param);
        value = "年龄段=" + ageGroup;
        if(StringUtils.isNotEmpty(dict)){
            source.put(cloumnCode,ageGroup);
            source.put(cloumnCode + "Name",value);
        }
        return source;
    }
//    /**
//     * 年龄扩展年龄段 及年龄段字典
//     * @param source 数据集合
//     * @param cloumnCode 列code
//     * @param dict 字典ID
//     * @param sourceValue 年龄
//     * @return
//     */
//    public Map<String, Object> extendAgeGroupData(Map<String, Object> source ,String cloumnCode,String dict,String sourceValue){
//        String value = "";
//        DictFunc dictFunc = new DictFunc();
//        AgeGroupFunc ageGroupFunc = new AgeGroupFunc();
//        String ageGroup = ageGroupFunc.execute(Integer.valueOf(sourceValue));
//        String param[] = {dict,ageGroup};
////      value = dictFunc.execute(param);
//        value = "年龄段=" + ageGroup;
//        if(StringUtils.isNotEmpty(dict)){
//            source.put(cloumnCode,ageGroup);
//            source.put(cloumnCode + "Name",value);
//        }
//        return source;
//    }
    /**
     * 区域扩展
     * @param source 数据集合
     * @param cloumnCode 列code
     * @param algorithmParm 算法参数
     * @param sourceValue 年龄
     * @return
     */
    public Map<String, Object> extendDivisionData(Map<String, Object> source ,String cloumnCode,String algorithmParm,String sourceValue){
        DivisionFunc divisionFunc = new DivisionFunc();
        String level = "1";
        String divisionVal = "";
        if(cloumnCode.toLowerCase().equals("town")){
            level = "1";
            divisionVal = "婺源县";
        }else if(cloumnCode.toLowerCase().equals("city")){
            level = "2";
            divisionVal = "上饶市";
        }else if(cloumnCode.toLowerCase().equals("province")){
            level = "3";
            divisionVal = "江西省";
        }
        String divisionParam[] = {sourceValue,level};
//      divisionVal = divisionFunc.execute(divisionParam);
        source.put(cloumnCode,divisionVal);
        return source;
    }
//    /**
//     * 区域扩展
//     * @param source 数据集合
//     * @param cloumnCode 列code
//     * @param algorithmParm 算法参数
//     * @param sourceValue 年龄
//     * @return
//     */
//    public Map<String, Object> extendDivisionData(Map<String, Object> source ,String cloumnCode,String algorithmParm,String sourceValue){
//        DivisionFunc divisionFunc = new DivisionFunc();
//        String level = "1";
//        String divisionVal = "";
//        if(cloumnCode.toLowerCase().equals("town")){
//            level = "1";
//            divisionVal = "婺源县";
//        }else if(cloumnCode.toLowerCase().equals("city")){
//            level = "2";
//            divisionVal = "上饶市";
//        }else if(cloumnCode.toLowerCase().equals("province")){
//            level = "3";
//            divisionVal = "江西省";
//        }
//        String divisionParam[] = {sourceValue,level};
////      divisionVal = divisionFunc.execute(divisionParam);
//        source.put(cloumnCode,divisionVal);
//        return source;
//    }
    /**
@ -536,6 +492,7 @@ public class ElasticSearchDataProcessService {
                    }else {
                        dateValue = DateUtil.parseDate(keyValue, DateUtil.DEFAULT_DATE_YMD_FORMAT);
                    }
                    System.out.println("keyval=" + keyValue + ",dateVal=" + dateValue);
                    //es 保存是少8小时
                    Calendar ca = Calendar.getInstance();
                    ca.setTime(dateValue);
@ -558,14 +515,4 @@ public class ElasticSearchDataProcessService {
        return "";
    }
    /**
     * 根据数据集id获取索引名和索引类型
     * @param cubeId
     * @return
     */
    public Cube getIndexTypeById(String cubeId) {
        Cube cube = cubeService.findOne(Integer.parseInt(cubeId));
        return cube;
    }
}

+ 4 - 0
src/main/java/com/yihu/quota/service/dimension/DimensionService.java

@ -38,4 +38,8 @@ public class DimensionService extends BaseJpaService<Dimension, DimensionDao> {
        dimensionMemberDao.deleteByDimensionId(id);
    }
    public Dimension findOne(int id){
        return  dimensionDao.findOne(id);
    }
}

+ 2 - 2
src/main/java/com/yihu/quota/service/source/DataSourcesTableFieldService.java

@ -50,11 +50,11 @@ public class DataSourcesTableFieldService extends BaseJpaService<DataSourcesTabl
     * @param fieldId 关联字段
     * @return
     */
    public DataSourcesTableModel findDataSourcesTableModel(int fieldId) {
    public DataSourcesTableModel findDataSourcesTableModel(String fieldId) {
        String sql = "SELECT odstf.*,odst.table_code,odst.database_name from olap_data_sources_table_field odstf  " +
                " LEFT JOIN olap_data_sources_table odst on odst.id = odstf.table_id " +
                " WHERE odstf.id = ? ";
        String param[] = {String.valueOf(fieldId)};
        String param[] = {fieldId};
        List<DataSourcesTableModel> cubeMemberMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(DataSourcesTableModel.class), param);
        if(cubeMemberMappingModels != null && cubeMemberMappingModels.size() > 0){
            return  cubeMemberMappingModels.get(0);

+ 80 - 34
src/main/java/com/yihu/quota/vo/CubeMappingModel.java

@ -7,7 +7,7 @@ public class CubeMappingModel {
    private Integer id;
    private Integer cubeId;            //多维数据集ID
    private Integer dataFieldId;      //s数据库字段
    private Integer dataFieldId;      //数据库字段
    private Integer dimensionId;      //维度ID
    private String dimensionCode;    //维度编码
    private String fieldName;        //字段名称
@ -17,26 +17,16 @@ public class CubeMappingModel {
    private String dataType;        //数据类型
    private Integer childSaveType; //子集映射格式类型 1 对象 2 子集
    private String fieldCode;        //字段编码
    private Integer dataGetType;        //数据获取方式 1 直接获取 2 算法方式获取  3关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    private String relationDataFieldId; //关联表数据关联字段ID
    private String indexName;
    private String indexType;
    private String dataGetType;        //数据获取方式 1 直接获取 2 关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    public String getDataGetType() {
        return dataGetType;
    }
    private String basedata;
    private String table;
    private Integer parentId;
    private String parentCode;
    public void setDataGetType(String dataGetType) {
        this.dataGetType = dataGetType;
    }
    public String getRelationFieldId() {
        return relationFieldId;
    }
    public void setRelationFieldId(String relationFieldId) {
        this.relationFieldId = relationFieldId;
    }
    public Integer getId() {
        return id;
@ -86,10 +76,6 @@ public class CubeMappingModel {
        this.fieldName = fieldName;
    }
    public String getDataType() {
        return dataType;
    }
    public String getDict() {
        return dict;
    }
@ -98,6 +84,26 @@ public class CubeMappingModel {
        this.dict = dict;
    }
    public String getAlgorithm() {
        return algorithm;
    }
    public void setAlgorithm(String algorithm) {
        this.algorithm = algorithm;
    }
    public String getParm() {
        return parm;
    }
    public void setParm(String parm) {
        this.parm = parm;
    }
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
@ -118,20 +124,12 @@ public class CubeMappingModel {
        this.fieldCode = fieldCode;
    }
    public String getAlgorithm() {
        return algorithm;
    public Integer getParentId() {
        return parentId;
    }
    public void setAlgorithm(String algorithm) {
        this.algorithm = algorithm;
    }
    public String getParm() {
        return parm;
    }
    public void setParm(String parm) {
        this.parm = parm;
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }
    public String getIndexName() {
@ -149,4 +147,52 @@ public class CubeMappingModel {
    public void setIndexType(String indexType) {
        this.indexType = indexType;
    }
    public Integer getDataGetType() {
        return dataGetType;
    }
    public void setDataGetType(Integer dataGetType) {
        this.dataGetType = dataGetType;
    }
    public String getRelationFieldId() {
        return relationFieldId;
    }
    public void setRelationFieldId(String relationFieldId) {
        this.relationFieldId = relationFieldId;
    }
    public String getBasedata() {
        return basedata;
    }
    public void setBasedata(String basedata) {
        this.basedata = basedata;
    }
    public String getTable() {
        return table;
    }
    public void setTable(String table) {
        this.table = table;
    }
    public String getRelationDataFieldId() {
        return relationDataFieldId;
    }
    public void setRelationDataFieldId(String relationDataFieldId) {
        this.relationDataFieldId = relationDataFieldId;
    }
    public String getParentCode() {
        return parentCode;
    }
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
}