浏览代码

数据解析 增加 数据关联查询

jkzlzhoujie 6 年之前
父节点
当前提交
77ed935550

+ 5 - 0
pom.xml

@ -155,6 +155,11 @@
            <groupId>com.yihu.ehr</groupId>
            <artifactId>commons-data-mysql</artifactId>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>2.4.5</version>
        </dependency>
    </dependencies>
    <build>

+ 4 - 1
src/main/java/com/yihu/quota/controller/CubeController.java

@ -164,7 +164,9 @@ public class CubeController  extends BaseController {
            @ApiParam(name = "cloumnValue", value = "列值", required = true)
            @RequestParam(value = "cloumnValue", required = true) Object cloumnValue,
            @ApiParam(name = "profileId", value = "关联父级主表rowKey值", required = false)
            @RequestParam(value = "profileId", required = false) String profileId
            @RequestParam(value = "profileId", required = false) String profileId,
            @ApiParam(name = "database", value = "数据库", required = false)
            @RequestParam(value = "database", required = false) String database
    ){
        Envelop envelop = new Envelop();
@ -172,6 +174,7 @@ public class CubeController  extends BaseController {
        try {
            Gson gson = new Gson();
            Map<String, Object> source  = new HashMap<>();
            source.put("database", database);
            source.put("dataSource", dataSource);
            source.put("table",table);
            source.put("rowkey",rowkey);

+ 2 - 2
src/main/java/com/yihu/quota/dao/cube/JdbcBasicDao.java

@ -25,11 +25,11 @@ public class JdbcBasicDao {
        try {
            String URL = datasourceUrl;
            String oldDatabase = datasourceUrl.substring(datasourceUrl.lastIndexOf("/")+1,datasourceUrl.indexOf("?"));
            URL.replaceAll(oldDatabase, database);
            URL = URL.replaceAll(oldDatabase, database);
            //1.加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2.获得数据库链接
            Connection conn = DriverManager.getConnection(URL, datasourceUsername, datasourceUrl);
            Connection conn = DriverManager.getConnection(URL, datasourceUsername, datasourcePassword);
            //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);

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

@ -102,7 +102,7 @@ public class CubeMappingService extends BaseJpaService<CubeMapping, CubeMappingD
                " 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 odstf.field_code = ? and odst.table_code = ? ";
                " 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;

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

@ -62,7 +62,7 @@ public class CubeMemberMappingService extends BaseJpaService<CubeMemberMapping,
                " 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 = ? ";
                " 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;

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

@ -8,6 +8,8 @@ import com.yihu.quota.etl.formula.DictFunc;
import com.yihu.quota.etl.formula.DivisionFunc;
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.source.DataSourcesTableFieldService;
import com.yihu.quota.vo.CubeMappingModel;
import com.yihu.quota.vo.CubeMemberMappingModel;
import org.apache.commons.lang.StringUtils;
@ -46,6 +48,8 @@ public class ElasticSearchDataProcessService {
    @Autowired
    private CubeMemberMappingService cubeMemberMappingService;
    @Autowired
    private DataSourcesTableFieldService dataSourcesTableFieldService;
    @Autowired
    private ElasticSearchUtil elasticSearchUtil;
    /**
@ -144,7 +148,8 @@ public class ElasticSearchDataProcessService {
                    List<CubeMappingModel> relationMappingModels = cubeMappingService.findRelationMappingModelsByFieldCode(table, baseCloumnCode);
                    if(relationMappingModels != null && relationMappingModels.size() > 0) {
                        for (CubeMappingModel cubeMappingModel : relationMappingModels) {
                            Object object = jdbcBasicService.getEntityByRelationId(database ,table, baseCloumnCode, cubeMappingModel.getRelationFieldId());
                            DataSourcesTableField dataSourcesTableField = dataSourcesTableFieldService.findById(cubeMappingModel.getDataFieldId());
                            Object object = jdbcBasicService.getEntityByRelationId(database ,table, dataSourcesTableField.getFieldCode(), cubeMappingModel.getRelationFieldId());
                            String value = converMapObject(object);
                            String index = cubeMappingModel.getIndexName();
                            String type = cubeMappingModel.getIndexType();
@ -160,8 +165,8 @@ public class ElasticSearchDataProcessService {
                        for (CubeMemberMappingModel cubeMemberMappingModel : relationMemberMappingModels) {
                            //父级对象
                            if(cubeMemberMappingModel.getChildSaveType() == 1){
                                Object object = jdbcBasicService.getEntityByRelationId(database ,table, baseCloumnCode, cubeMemberMappingModel.getRelationFieldId());
                                String value = converMapObject(object);
                                DataSourcesTableField dataSourcesTableField = dataSourcesTableFieldService.findById(cubeMemberMappingModel.getDataFieldId());
                                String value = jdbcBasicService.getEntityByRelationId(database ,table, dataSourcesTableField.getFieldCode(), cubeMemberMappingModel.getRelationFieldId());
                                String index = cubeMemberMappingModel.getIndexName();
                                String type = cubeMemberMappingModel.getIndexType();
                                String subRowKey = rowKey;

+ 1 - 1
src/main/java/com/yihu/quota/service/cube/JdbcBasicService.java

@ -16,7 +16,7 @@ public class JdbcBasicService {
    private JdbcBasicDao jdbcBasicDao;
    public Object getEntityByRelationId(String database ,String table, String cloumnCode ,String relationId)
    public String getEntityByRelationId(String database ,String table, String cloumnCode ,String relationId)
    {
        String sql = " SELECT " + cloumnCode + " FROM " + table + " WHERE " + relationId + "= " + relationId;
        return jdbcBasicDao.getConnection(sql,database,cloumnCode);

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

@ -3,6 +3,7 @@ package com.yihu.quota.service.source;
import com.yihu.ehr.query.BaseJpaService;
import com.yihu.quota.dao.source.DataSourcesTableFieldDao;
import com.yihu.quota.model.source.DataSourcesTableField;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
@ -15,6 +16,10 @@ import java.util.List;
 */
@Service
public class DataSourcesTableFieldService extends BaseJpaService<DataSourcesTableField, DataSourcesTableFieldDao> {
    @Autowired
    private DataSourcesTableFieldDao dataSourcesTableFieldDao;
    /**
     * 定义基础数据类型
     */
@ -33,4 +38,8 @@ public class DataSourcesTableFieldService extends BaseJpaService<DataSourcesTabl
        }
        return false;
    }
    public DataSourcesTableField findById(int id){
        return dataSourcesTableFieldDao.findOne(id);
    }
}

+ 1 - 1
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;      //字段名
    private Integer dataFieldId;      //s数据库字段
    private Integer dimensionId;      //维度ID
    private String dimensionCode;    //维度编码
    private String fieldName;        //字段名称