|
@ -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;
|
|
|
}
|
|
|
|
|
|
}
|