Browse Source

olap 数据解析 优化调整

jkzlzhoujie 6 years ago
parent
commit
03d5e5e124

+ 0 - 8
src/main/java/com/yihu/quota/controller/CubeController.java

@ -2,24 +2,18 @@ package com.yihu.quota.controller;
import com.google.gson.Gson;
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.service.cube.ElasticSearchDataProcessService;
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;
@ -44,8 +38,6 @@ public class CubeController  extends BaseController {
    @Autowired
    private CubeMappingService cubeMappingService;
    @Autowired
    private CubeMemberMappingService cubeMemberMappingService;
    @Autowired
    private ElasticSearchHandler esHandler;
    @Autowired
    private ElasticSearchDataProcessService elasticSearchDataProcessService;

+ 1 - 10
src/main/java/com/yihu/quota/controller/DimensionController.java

@ -4,8 +4,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.util.rest.Envelop;
import com.yihu.quota.model.dimension.Dimension;
import com.yihu.quota.model.dimension.DimensionMember;
import com.yihu.quota.service.dimension.DimensionMemberService;
import com.yihu.quota.service.dimension.DimensionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -32,8 +30,6 @@ public class DimensionController extends BaseController {
    private ObjectMapper objectMapper;
    @Autowired
    private DimensionService dimensionService;
    @Autowired
    private DimensionMemberService dimensionMemberService;
    @RequestMapping(value = "/olap/searchDimension", method = RequestMethod.GET)
    @ApiOperation(value = "根据查询条件查询,具有分页功能;filters='id=1'")
@ -51,12 +47,7 @@ public class DimensionController extends BaseController {
        Envelop envelop = new Envelop();
        List<Dimension> search = dimensionService.search(fields, filters, sorts, page, size);
        if (null != search && search.size() > 0) {
            for (Dimension dimension : search) {
                List<DimensionMember> list = dimensionMemberService.search("dimensionId=" + dimension.getId());
                if (null != list && list.size() > 0) {
                    dimension.setDimensionMembers(list);
                }
            }
        }
        envelop.setSuccessFlg(true);
        envelop.setDetailModelList(search);

+ 0 - 82
src/main/java/com/yihu/quota/controller/DimensionMemberController.java

@ -1,82 +0,0 @@
package com.yihu.quota.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.constants.ApiVersion;
import com.yihu.ehr.util.rest.Envelop;
import com.yihu.quota.model.dimension.DimensionMember;
import com.yihu.quota.service.dimension.DimensionMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.net.URLDecoder;
import java.util.List;
/**
 * Created by wxw on 2018/9/7.
 * @author wxw
 */
@RestController
@RequestMapping(ApiVersion.Version1_0)
@Api(value = "DimensionMemberController", description = "OLAP-维度成员表", tags = {"OLAP-维度成员表"})
public class DimensionMemberController extends BaseController {
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private DimensionMemberService dimensionMemberService;
    @RequestMapping(value = "/olap/searchDimensionMenber", method = RequestMethod.GET)
    @ApiOperation(value = "根据查询条件查询,具有分页功能;filters='id=1'")
    public Envelop searchDimensionMenber(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+level")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
            @RequestParam(value = "size", required = false) int size,
            @ApiParam(name = "page", value = "页码", defaultValue = "1")
            @RequestParam(value = "page", required = false) int page) throws Exception {
        Envelop envelop = new Envelop();
        List<DimensionMember> search = dimensionMemberService.search(fields, filters, sorts, page, size);
        envelop.setSuccessFlg(true);
        envelop.setDetailModelList(search);
        return envelop;
    }
    @RequestMapping(value = "/olap/saveOrUpdateDimensionMember", method = RequestMethod.POST)
    @ApiOperation(value = "添加或修改操作")
    public Envelop saveDimension(
            @ApiParam(name = "model", value = "json数据模型", defaultValue = "")
            @RequestParam String model) throws Exception {
        Envelop envelop = new Envelop();
        DimensionMember dimensionMember = objectMapper.readValue(URLDecoder.decode(model, "UTF-8"), DimensionMember.class);
        if (null == dimensionMember.getId()) {
            // 新增
            dimensionMemberService.save(dimensionMember);
            envelop.setSuccessFlg(true);
        } else {
            dimensionMemberService.save(dimensionMember);
            envelop.setSuccessFlg(true);
        }
        return envelop;
    }
    @RequestMapping(value = "/olap/deleteDMById", method = RequestMethod.DELETE)
    @ApiOperation(value = "根据id删除")
    public Envelop deleteDMById(
            @ApiParam(name = "id", value = "编号", defaultValue = "")
            @RequestParam(value = "id") Integer id) throws Exception {
        Envelop envelop = new Envelop();
        dimensionMemberService.delete(id);
        envelop.setSuccessFlg(true);
        return envelop;
    }
}

+ 0 - 11
src/main/java/com/yihu/quota/dao/cube/CubeMemberMappingDao.java

@ -1,11 +0,0 @@
package com.yihu.quota.dao.cube;
import com.yihu.quota.model.cube.CubeMemberMapping;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by janseny on 2018/9/10.
 * @author janseny
 */
public interface CubeMemberMappingDao extends PagingAndSortingRepository<CubeMemberMapping, Integer> {
}

+ 0 - 20
src/main/java/com/yihu/quota/dao/dimension/DimensionMemberDao.java

@ -1,20 +0,0 @@
package com.yihu.quota.dao.dimension;
import com.yihu.quota.model.dimension.DimensionMember;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by wxw on 2018/9/7.
 * @author wxw
 */
public interface DimensionMemberDao extends PagingAndSortingRepository<DimensionMember, Integer> {
    @Modifying
    @Transactional
    @Query("delete from DimensionMember where dimensionId = :dimensionId")
    void deleteByDimensionId(@Param("dimensionId") Integer dimensionId);
}

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

@ -1,17 +1,11 @@
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;

+ 0 - 3
src/main/java/com/yihu/quota/model/cube/Cube.java

@ -1,10 +1,7 @@
package com.yihu.quota.model.cube;
import com.yihu.quota.model.dimension.DimensionMember;
import javax.persistence.*;
import java.util.List;
/**
 * 多维数据集 entity

+ 0 - 3
src/main/java/com/yihu/quota/model/cube/CubeMapping.java

@ -1,10 +1,7 @@
package com.yihu.quota.model.cube;
import com.yihu.quota.model.dimension.DimensionMember;
import javax.persistence.*;
import java.util.List;
/**
 * 多维数据集的维度 entity

+ 0 - 110
src/main/java/com/yihu/quota/model/cube/CubeMemberMapping.java

@ -1,110 +0,0 @@
package com.yihu.quota.model.cube;
import com.yihu.quota.model.dimension.DimensionMember;
import javax.persistence.*;
import java.util.List;
/**
 * 多维数据集的维度的成员 entity
 * Created by janseny on 2018/9/10.
 * @author janseny
 */
@Entity
@Table(name = "olap_cube_member_mapping")
public class CubeMemberMapping {
    private Integer id;
    private Integer cubeMappingId;    //多维数据集维度ID
    private Integer dataFieldId;      //字段名
    private Integer dimensionMemberId;//维度成员ID
    private String dimensionCode;    //维度编码
    private String fieldName;        //字段名称
    private Integer isPrimarykey;  //是否指定唯一字段 1是 0 否
    private String dataGetType;        //数据获取方式 1 直接获取 2 关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    @Column(name = "cube_mapping_id")
    public Integer getCubeMappingId() {
        return cubeMappingId;
    }
    public void setCubeMappingId(Integer cubeMappingId) {
        this.cubeMappingId = cubeMappingId;
    }
    @Column(name = "data_field_id")
    public Integer getDataFieldId() {
        return dataFieldId;
    }
    public void setDataFieldId(Integer dataFieldId) {
        this.dataFieldId = dataFieldId;
    }
    @Column(name = "dimension_member_id")
    public Integer getDimensionMemberId() {
        return dimensionMemberId;
    }
    public void setDimensionMemberId(Integer dimensionMemberId) {
        this.dimensionMemberId = dimensionMemberId;
    }
    @Column(name = "dimension_code")
    public String getDimensionCode() {
        return dimensionCode;
    }
    public void setDimensionCode(String dimensionCode) {
        this.dimensionCode = dimensionCode;
    }
    @Column(name = "field_name")
    public String getFieldName() {
        return fieldName;
    }
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }
    @Column(name = "is_primarykey")
    public Integer getIsPrimarykey() {
        return isPrimarykey;
    }
    public void setIsPrimarykey(Integer isPrimarykey) {
        this.isPrimarykey = isPrimarykey;
    }
    @Column(name = "data_get_type")
    public String getDataGetType() {
        return dataGetType;
    }
    public void setDataGetType(String dataGetType) {
        this.dataGetType = dataGetType;
    }
    @Column(name = "relation_field_id")
    public String getRelationFieldId() {
        return relationFieldId;
    }
    public void setRelationFieldId(String relationFieldId) {
        this.relationFieldId = relationFieldId;
    }
}

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

@ -25,30 +25,12 @@ public class Dimension {
     * 类型 : 1 维度 2 属性 3 指标
     */
    private Integer type;
//    /**
//     * 数据字典
//     */
//    private String dict;
//    /**
//     * 中间算法
//     */
//    private String algorithm;
//
//    /**
//     * 中间算法参数
//     */
//    private String parm;
    /**
     * 数据类型
     */
    private String dataType;
    /**
     * 临时字段,存放维度成员
     */
    private List<DimensionMember> dimensionMembers;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
@ -84,22 +66,6 @@ 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;
//    }
    @Column(name = "data_type")
    public String getDataType() {
        return dataType;
@ -108,21 +74,4 @@ public class Dimension {
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
//    public String getParm() {
//        return parm;
//    }
//
//    public void setParm(String parm) {
//        this.parm = parm;
//    }
    @Transient
    public List<DimensionMember> getDimensionMembers() {
        return dimensionMembers;
    }
    public void setDimensionMembers(List<DimensionMember> dimensionMembers) {
        this.dimensionMembers = dimensionMembers;
    }
}

+ 0 - 146
src/main/java/com/yihu/quota/model/dimension/DimensionMember.java

@ -1,146 +0,0 @@
package com.yihu.quota.model.dimension;
import org.hibernate.annotations.Formula;
import javax.persistence.*;
/**
 * 多维数据集维度的成员 entity
 * Created by wxw on 2018/9/7.
 * @author wxw
 */
@Entity
@Table(name = "olap_dimension_member")
public class DimensionMember {
    private Integer id;
    /**
     * 名称
     */
    private String name;
    /**
     * 编码
     */
    private String code;
    /**
     * 上级维度Id
     */
    private Integer dimensionId;
    /**
     * 维度层级
     */
    private Integer level;
    /**
     * 上级维度名称
     */
    private String dimensionName;
    /**
     * 数据类型
     */
    private String dataType;
    /**
     * 中间算法
     */
    private String algorithm;
    /**
     * 中间算法参数
     */
    private String parm;
    /**
     * 数据字典
     */
    private String dict;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "dimension_id")
    public Integer getDimensionId() {
        return dimensionId;
    }
    public void setDimensionId(Integer dimensionId) {
        this.dimensionId = dimensionId;
    }
    public Integer getLevel() {
        return level;
    }
    public void setLevel(Integer level) {
        this.level = level;
    }
    @Column(name = "data_type")
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
    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 getParm() {
        return parm;
    }
    public void setParm(String parm) {
        this.parm = parm;
    }
    @Formula("(SELECT odm.name FROM olap_dimension_member odm LEFT JOIN olap_dimension od ON od.id = odm.dimension_id WHERE odm.id  = id )")
    public String getDimensionName() {
        return dimensionName;
    }
    public void setDimensionName(String dimensionName) {
        this.dimensionName = dimensionName;
    }
}

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

@ -48,7 +48,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @return
     */
    public List<CubeMappingModel> findCubeMappingModelsByCubeId(int cubeId) {
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,od.data_type from olap_cube_mapping_test ocm ,olap_dimension od " +
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,od.data_type from olap_cube_mapping 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;
@ -60,7 +60,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @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 " +
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,od.data_type from olap_cube_mapping 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;
@ -74,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_test 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 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 " +
@ -91,7 +91,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @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 " +
        String sql = "SELECT ocm.*,od.`code` as dimensionCode,oc.index_name,oc.index_type,odstf.field_code,od.data_type from olap_cube_mapping 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 " +
@ -108,7 +108,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
     * @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  " +
        String sql = "SELECT ocm.* ,od.`code` as dimensionCode ,od.data_type from olap_cube_mapping 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);
@ -126,7 +126,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
    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  " +
        String sql = "SELECT ocm.* ,od.`code` as dimensionCode ,od.data_type from olap_cube_mapping 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 ){
@ -142,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_test ocm " +
        String sql = "SELECT ocm.*,oc.`code` as cubeCode ,od.data_type from olap_cube_mapping 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};

+ 0 - 144
src/main/java/com/yihu/quota/service/cube/CubeMemberMappingService.java

@ -1,144 +0,0 @@
package com.yihu.quota.service.cube;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.quota.dao.cube.CubeMappingDao;
import com.yihu.quota.dao.cube.CubeMemberMappingDao;
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.vo.CubeMemberMappingModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 多维数据集的维度的成员 service
 * Created by janseny on 2018/9/10.
 * @author janseny
 */
@Service
public class CubeMemberMappingService extends BaseJpaService<CubeMemberMapping, CubeMemberMappingDao> {
    @Autowired
    private CubeMemberMappingDao cubeMemberMappingDao;
    /**
     * 保存接口
     * @param cubeMemberMapping
     * @return 保存之后的id
     */
    public Integer saveOlapCubeMemberMapping(CubeMemberMapping cubeMemberMapping) {
        cubeMemberMapping = cubeMemberMappingDao.save(cubeMemberMapping);
        return cubeMemberMapping.getId();
    }
    public void deleteOlapcubeMemberMapping(Integer id) {
        cubeMemberMappingDao.delete(id);
    }
    /**
     * 根据数据集维度ID 查询对应的维度成员信息
     * @param id
     * @return
     */
    public List<CubeMemberMappingModel> findCubeMemberMappingModelsById(Integer id) {
        String sql = "SELECT ocmm.*,odm.data_type from olap_cube_member_mapping ocmm ,olap_dimension_member odm " +
                " where ocmm.dimension_member_id = odm.id  AND ocmm.cube_mapping_id = ?  order by ocmm.id asc ";
        List<CubeMemberMappingModel> cubeMemberMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMemberMappingModel.class), id);
        return cubeMemberMappingModels;
    }
    /**
     * 根据 表编码和字段编码 查询对应的维度信息
     * @param fieldCode
     * @return
     */
    public List<CubeMemberMappingModel> findCubeMemberMappingModels(String tableCode,String fieldCode) {
        String sql = "SELECT ocmm.*,oc.index_name,oc.index_type,ocm.dimension_code as parentCode,ocm.child_save_type,odstf.field_code,odm.dict,odm.data_type,odm.`algorithm`,odm.parm from olap_cube_member_mapping ocmm " +
                " LEFT JOIN olap_data_sources_table_field odstf ON ocmm.data_field_id = odstf.id " +
                " LEFT JOIN olap_data_sources_table odst ON odst.id = odstf.table_id " +
                " LEFT JOIN olap_dimension_member odm ON ocmm.dimension_member_id = odm.id  " +
                " LEFT JOIN olap_cube_mapping ocm ON ocm.id = ocmm.cube_mapping_id " +
                " LEFT JOIN olap_cube oc ON oc.id = ocm.cube_id " +
                " where   ocmm.dimension_member_id  is not null and odstf.field_code = ? and odst.table_code = ? ";
        String param[] = {fieldCode,tableCode};
        List<CubeMemberMappingModel> cubeMemberMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMemberMappingModel.class), param);
        return cubeMemberMappingModels;
    }
    /**
     * 根据 表编码 查询对应的 保存索引和类型
     * @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;
        }
    }
    /**
     * 查询子集中 主键字段
     * @param cubeMappingId
     * @return
     */
    public CubeMemberMapping findCubeMemberMappingPrimary(int cubeMappingId){
        String[] fields = {"cubeMappingId","isPrimarykey"};
        Object[] values = {cubeMappingId,1};
        List<CubeMemberMapping> cubeMemberMappings = findByFields(fields,values);
        if(cubeMemberMappings != null && cubeMemberMappings.size() > 0){
            return cubeMemberMappings.get(0);
        }else {
            return null;
        }
    }
    /**
     * 根据数据集和维度编码 查询对应的维度信息
     * @param dimensionCode 维度编码
     * @param cubeMappingId 父级维度ID
     * @return
     */
    public CubeMemberMappingModel findCubeMemberMappingModelByCubeAndCode(int dimensionCode,String cubeMappingId) {
        String sql = "SELECT ocmm.*,odm.data_type from olap_cube_member_mapping ocmm  " +
                " LEFT JOIN olap_cube_mapping ocm on ocm.id = ocmm.cube_mapping_id " +
                " LEFT JOIN olap_dimension_member odm on odm.dimension_id =  ocmm.dimension_member_id " +
                " where   ocmm.dimension_code = ? and ocmm.cube_mapping_id= ? ";
        Object param[] = {dimensionCode,cubeMappingId};
        List<CubeMemberMappingModel> cubeMemberMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMemberMappingModel.class), param);
        if(cubeMemberMappingModels != null && cubeMemberMappingModels.size() > 0){
            return cubeMemberMappingModels.get(0);
        }
        return null;
    }
    /**
     * 根据 表编码和关联字段编码 查询对应的维度信息
     * @param relationFieldCode 关联字段
     * @return
     */
    public List<CubeMemberMappingModel> findRelationMemberMappingModels(String tableCode,String relationFieldCode) {
        String sql = "SELECT ocmm.*,oc.index_name,oc.index_type,ocm.dimension_code as parentCode,ocm.child_save_type,odstf.field_code,odm.dict,odm.data_type,odm.`algorithm`,odm.parm from olap_cube_member_mapping ocmm " +
                " LEFT JOIN olap_data_sources_table_field odstf ON ocmm.relation_field_id = odstf.id " +
                " LEFT JOIN olap_data_sources_table odst ON odst.id = odstf.table_id " +
                " LEFT JOIN olap_dimension_member odm ON ocmm.dimension_member_id = odm.id  " +
                " LEFT JOIN olap_cube_mapping ocm ON ocm.id = ocmm.cube_mapping_id " +
                " LEFT JOIN olap_cube oc ON oc.id = ocm.cube_id " +
                " where odstf.field_code = ? and odst.table_code = ? ";
        String param[] = {relationFieldCode,tableCode};
        List<CubeMemberMappingModel> cubeMemberMappingModels = jdbcTemplate.query(sql, new BeanPropertyRowMapper(CubeMemberMappingModel.class), param);
        return cubeMemberMappingModels;
    }
}

+ 3 - 19
src/main/java/com/yihu/quota/service/cube/CubeService.java

@ -3,9 +3,7 @@ package com.yihu.quota.service.cube;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.quota.dao.cube.CubeDao;
import com.yihu.quota.model.cube.Cube;
import com.yihu.quota.model.cube.CubeMemberMapping;
import com.yihu.quota.vo.CubeMappingModel;
import com.yihu.quota.vo.CubeMemberMappingModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -22,8 +20,6 @@ public class CubeService extends BaseJpaService<Cube, CubeDao> {
    private CubeDao cubeDao;
    @Autowired
    private CubeMappingService cubeMappingService;
    @Autowired
    private CubeMemberMappingService cubeMemberMappingService;
    /**
     * 保存接口
@ -50,21 +46,9 @@ public class CubeService extends BaseJpaService<Cube, CubeDao> {
     * @return
     */
    public String findDimensionDataType(String cubeCode,String dimensionCode){
        if(dimensionCode.contains(".")){
            dimensionCode = dimensionCode.substring(0, dimensionCode.indexOf("."));
            String memberCode = dimensionCode.substring(dimensionCode.indexOf(".")+1);
            CubeMappingModel cubeMappingModel = cubeMappingService.findCubeMappingModelByCubeAndCode(cubeCode, dimensionCode);
            if(cubeMappingModel !=null){
                CubeMemberMappingModel cubeMemberMappingModel = cubeMemberMappingService.findCubeMemberMappingModelByCubeAndCode(cubeMappingModel.getId(), memberCode);
                if(cubeMemberMappingModel !=null){
                    return  cubeMemberMappingModel.getDataType();
                }
            }
        }else {
            CubeMappingModel cubeMappingModel = cubeMappingService.findCubeMappingModelByCubeAndCode(cubeCode, dimensionCode);
            if(cubeMappingModel !=null){
                return  cubeMappingModel.getDataType();
            }
        CubeMappingModel cubeMappingModel = cubeMappingService.findCubeMappingModelByCubeAndCode(cubeCode, dimensionCode);
        if(cubeMappingModel !=null){
            return  cubeMappingModel.getDataType();
        }
        return null;
    }

+ 0 - 8
src/main/java/com/yihu/quota/service/cube/ElasticSearchDataProcessService.java

@ -1,21 +1,13 @@
package com.yihu.quota.service.cube;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
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;
import com.yihu.quota.vo.DataSourcesTableModel;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

+ 0 - 19
src/main/java/com/yihu/quota/service/dimension/DimensionMemberService.java

@ -1,19 +0,0 @@
package com.yihu.quota.service.dimension;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.quota.dao.dimension.DimensionMemberDao;
import com.yihu.quota.model.dimension.Dimension;
import com.yihu.quota.model.dimension.DimensionMember;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by wxw on 2018/9/7.
 * @author wxw
 */
@Service
public class DimensionMemberService extends BaseJpaService<DimensionMember, DimensionMemberDao> {
    }

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

@ -2,13 +2,10 @@ package com.yihu.quota.service.dimension;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.quota.dao.dimension.DimensionDao;
import com.yihu.quota.dao.dimension.DimensionMemberDao;
import com.yihu.quota.model.dimension.Dimension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by wxw on 2018/9/7.
@ -19,8 +16,6 @@ public class DimensionService extends BaseJpaService<Dimension, DimensionDao> {
    @Autowired
    private DimensionDao dimensionDao;
    @Autowired
    private DimensionMemberDao dimensionMemberDao;
    /**
     * 保存接口
@ -34,8 +29,6 @@ public class DimensionService extends BaseJpaService<Dimension, DimensionDao> {
    public void deleteDimension(Integer id) {
        dimensionDao.delete(id);
        // 同时删掉隶属于该维度的成员
        dimensionMemberDao.deleteByDimensionId(id);
    }
    public Dimension findOne(int id){

+ 0 - 197
src/main/java/com/yihu/quota/vo/CubeMemberMappingModel.java

@ -1,197 +0,0 @@
package com.yihu.quota.vo;
/**
 * Created by janseny on 2018/9/19.
 */
public class CubeMemberMappingModel {
    private Integer id;
    private Integer cubeMappingId;    //多维数据集维度ID
    private Integer dataFieldId;      //字段名
    private Integer dimensionMemberId;//维度成员ID
    private String dimensionCode;    //维度编码
    private String fieldName;        //字段名称
    private String algorithm;       // 中间算法
    private String parm;            //中间算法参数
    private String dataType;        //数据类型
    private String dict;            //数据字典
    private String fieldCode;      //字段编码
    private String parentCode;      //父级属性code
    private Integer childSaveType;
    private String indexName;
    private String indexType;
    private Integer isPrimarykey;  //是否指定唯一字段 1是 0 否
    private String dataGetType;        //数据获取方式 1 直接获取 2 关联获取(一对一关联不支持一对多关联) 默认为一
    private String relationFieldId;    //关联主键字段
    private Integer relationSubFieldId;    //关联细表主键字段
    private String basedata;
    private String table;
    public String getDataGetType() {
        return dataGetType;
    }
    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;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getCubeMappingId() {
        return cubeMappingId;
    }
    public void setCubeMappingId(Integer cubeMappingId) {
        this.cubeMappingId = cubeMappingId;
    }
    public Integer getDataFieldId() {
        return dataFieldId;
    }
    public void setDataFieldId(Integer dataFieldId) {
        this.dataFieldId = dataFieldId;
    }
    public Integer getDimensionMemberId() {
        return dimensionMemberId;
    }
    public void setDimensionMemberId(Integer dimensionMemberId) {
        this.dimensionMemberId = dimensionMemberId;
    }
    public String getDimensionCode() {
        return dimensionCode;
    }
    public void setDimensionCode(String dimensionCode) {
        this.dimensionCode = dimensionCode;
    }
    public String getFieldName() {
        return fieldName;
    }
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
    public String getDict() {
        return dict;
    }
    public void setDict(String dict) {
        this.dict = dict;
    }
    public String getFieldCode() {
        return fieldCode;
    }
    public void setFieldCode(String fieldCode) {
        this.fieldCode = fieldCode;
    }
    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 getParentCode() {
        return parentCode;
    }
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }
    public Integer getChildSaveType() {
        return childSaveType;
    }
    public void setChildSaveType(Integer childSaveType) {
        this.childSaveType = childSaveType;
    }
    public String getIndexName() {
        return indexName;
    }
    public void setIndexName(String indexName) {
        this.indexName = indexName;
    }
    public String getIndexType() {
        return indexType;
    }
    public void setIndexType(String indexType) {
        this.indexType = indexType;
    }
    public Integer getIsPrimarykey() {
        return isPrimarykey;
    }
    public void setIsPrimarykey(Integer isPrimarykey) {
        this.isPrimarykey = isPrimarykey;
    }
    public Integer getRelationSubFieldId() {
        return relationSubFieldId;
    }
    public void setRelationSubFieldId(Integer relationSubFieldId) {
        this.relationSubFieldId = relationSubFieldId;
    }
    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;
    }
}