Browse Source

olap 数据二级关联获取数据

jkzlzhoujie 6 years ago
parent
commit
85496a691c

+ 18 - 8
src/main/java/com/yihu/quota/model/cube/CubeMapping.java

@ -9,7 +9,7 @@ import javax.persistence.*;
 * @author janseny
 */
@Entity
@Table(name = "olap_cube_mapping_test")
@Table(name = "olap_cube_mapping")
public class CubeMapping {
    private Integer id;
    private Integer cubeId;            //多维数据集ID
@ -20,10 +20,11 @@ public class CubeMapping {
    private String parm;                        //算法参数
    private Integer childSaveType;              //子集映射格式类型 1 对象 2 子集
    private Integer parentId;                   //父级ID
    private Integer isNestedPrimarykey;         // 是否指定唯一字段 1是 0 否
    private Integer isNestedPrimarykey;        // 是否指定唯一字段 1是 0 否
    private Integer dataGetType;                //数据获取方式 1 直接获取 2 算法方式获取  3关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;             //关联表主键字段ID
    private String relationDataFieldId;      //关联表数据关联字段ID
    private Integer relationFieldId;            //关联表主键字段ID
    private Integer relationDataFieldId;       //关联表数据关联字段ID
    private Integer secondRelationId;           //二级关联维度ID
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
@ -127,20 +128,29 @@ public class CubeMapping {
    }
    @Column(name = "relation_field_id")
    public String getRelationFieldId() {
    public Integer getRelationFieldId() {
        return relationFieldId;
    }
    public void setRelationFieldId(String relationFieldId) {
    public void setRelationFieldId(Integer relationFieldId) {
        this.relationFieldId = relationFieldId;
    }
    @Column(name = "relation_data_field_id")
    public String getRelationDataFieldId() {
    public Integer getRelationDataFieldId() {
        return relationDataFieldId;
    }
    public void setRelationDataFieldId(String relationDataFieldId) {
    public void setRelationDataFieldId(Integer relationDataFieldId) {
        this.relationDataFieldId = relationDataFieldId;
    }
    @Column(name = "second_relation_id")
    public Integer getSecondRelationId() {
        return secondRelationId;
    }
    public void setSecondRelationId(Integer secondRelationId) {
        this.secondRelationId = secondRelationId;
    }
}

+ 9 - 0
src/main/java/com/yihu/quota/service/cube/CubeMappingService.java

@ -33,6 +33,15 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
        return cubeMapping.getId();
    }
    public List<CubeMappingModel> findSencodRelationDimension(int cubeId,int secondRelationId) {
        String sql = "SELECT ocm.*,od.`code`,od.data_type from olap_cube_mapping ocm " +
                " LEFT JOIN olap_dimension od on ocm.dimension_id = od.id " +
                " where ocm.cube_id = ? and ocm.second_relation_id = ? ";
        Object param[] = {cubeId,secondRelationId};
        List<CubeMappingModel> cubeMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMappingModel.class), param);
        return cubeMappingModels;
    }
    public void deleteOlapcubeMapping(Integer id) {
        cubeMappingDao.delete(id);
    }

+ 12 - 2
src/main/java/com/yihu/quota/service/cube/ElasticSearchDataProcessService.java

@ -303,6 +303,16 @@ public class ElasticSearchDataProcessService {
                }else if(StringUtils.isNotEmpty(relationFieldId) && dataGetType == 3 ) {// 关联获取
                    String value = relevanceFunc.getRelationFieldVal(cubeMappingModel.getRelationDataFieldId(), relationFieldId, baseCloumnValue);
                    objChildMap.put(cloumnCode,dataConver(cubeMappingModel.getDataType(),value));
                    // 是否存在二级关联
                    List<CubeMappingModel> secondMappingList = cubeMappingService.findSencodRelationDimension(cubeMappingModel.getCubeId(), cubeMappingModel.getId());
                    if(secondMappingList != null && secondMappingList.size() > 0){
                        for(CubeMappingModel cubeMappingSecond : secondMappingList){
                            String secondRelationValue = relevanceFunc.getRelationFieldVal(cubeMappingSecond.getRelationDataFieldId(), cubeMappingSecond.getRelationFieldId(), value);
                            objChildMap.put(cloumnCode,dataConver(cubeMappingSecond.getDataType(),secondRelationValue));
                        }
                    }
                }else {
                    objChildMap.put(cloumnCode,dataConver(dataType,baseCloumnValue));
                }
@ -465,8 +475,8 @@ public class ElasticSearchDataProcessService {
        NumberFormat nf = NumberFormat.getInstance();
        try {
            if(StringUtils.isNotEmpty(keyValue)){
                dataType = dataType.toLowerCase();
                if(dataType.equals("string")){
                    dataType = dataType.toLowerCase();
                    if(dataType.equals("string")){
                    value = keyValue;
                }else if(dataType.equals("integer")){
                    int intValue = Integer.valueOf(keyValue);

+ 9 - 0
src/main/java/com/yihu/quota/vo/CubeMappingModel.java

@ -20,6 +20,7 @@ public class CubeMappingModel {
    private Integer dataGetType;        //数据获取方式 1 直接获取 2 算法方式获取  3关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    private String relationDataFieldId; //关联表数据关联字段ID
    private String secondRelationId;    //二级关联维度ID
    private String indexName;
    private String indexType;
    private String basedata;
@ -195,4 +196,12 @@ public class CubeMappingModel {
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
    public String getSecondRelationId() {
        return secondRelationId;
    }
    public void setSecondRelationId(String secondRelationId) {
        this.secondRelationId = secondRelationId;
    }
}