Commit 83265731 by qiuchaofei

1.不同步字段,2 需要字段时从repo获取,3系统id获取系统

parent 5e21c932
...@@ -374,6 +374,12 @@ public class MetaDataController { ...@@ -374,6 +374,12 @@ public class MetaDataController {
} }
@ApiOperation(tags = "", value = "获取系统总图")
@RequestMapping(path = "/getSystemGraphBySystemId", method = RequestMethod.GET)
public ReturnReslult getSystemGraphBySystemId(String systemId){
return systemService.getSystemBySystemId(systemId);
}
private String getParentId(String neo4jId, Map<String, String> child2Parent) { private String getParentId(String neo4jId, Map<String, String> child2Parent) {
String parentId = neo4jId; String parentId = neo4jId;
......
...@@ -243,7 +243,7 @@ public class RelationalGraphController { ...@@ -243,7 +243,7 @@ public class RelationalGraphController {
return returnReslult; return returnReslult;
} }
//表的分析,链路分析,表与其他表的上下游关系,其他表可以继续下钻,并且可以收缩。 //表的分析,链路分析,表与其他表的上下游关系,其他表可以继续下钻,并且可以收缩。
@ApiOperation(tags = "", value = "传入表的id,返回表的上下游一层关系。") @ApiOperation(tags = "", value = "全链分析,传入表的id,返回表的上下游一层关系。")
@RequestMapping(path = "/getRelationTablesTableId", method = RequestMethod.GET) @RequestMapping(path = "/getRelationTablesTableId", method = RequestMethod.GET)
public Map<String,List<ReturnNode>> getRelationTablesTableId(String tableId){ public Map<String,List<ReturnNode>> getRelationTablesTableId(String tableId){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
...@@ -310,7 +310,7 @@ public class RelationalGraphController { ...@@ -310,7 +310,7 @@ public class RelationalGraphController {
} }
//表的分析,关系分析--表与模型,表与质量,表与标准,表与作业的关系 //表的分析,关系分析--表与模型,表与质量,表与标准,表与作业的关系
@ApiOperation(tags = "", value = "传入表的id,返回与表相关的模型,标准,质量,资产,作业等对象") @ApiOperation(tags = "", value = "关系分析,传入表的id,返回与表相关的模型,标准,质量,资产,作业等对象")
@RequestMapping(path = "/getRelationObjectByTableId", method = RequestMethod.GET) @RequestMapping(path = "/getRelationObjectByTableId", method = RequestMethod.GET)
public Map<String,List<ReturnNode>> getRelationObjectByTableId(String tableId){ public Map<String,List<ReturnNode>> getRelationObjectByTableId(String tableId){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......
...@@ -112,4 +112,5 @@ public interface IMetadataService { ...@@ -112,4 +112,5 @@ public interface IMetadataService {
void syschro1104Relations(String catalogName); void syschro1104Relations(String catalogName);
void syschroTable2TableRelations(String catalogName); void syschroTable2TableRelations(String catalogName);
} }
...@@ -18,4 +18,5 @@ public interface ISystemService { ...@@ -18,4 +18,5 @@ public interface ISystemService {
//从环境id拿到系统 //从环境id拿到系统
Map<String ,ReturnNode> getSystemByEnvId(String envId); Map<String ,ReturnNode> getSystemByEnvId(String envId);
ReturnReslult getSystemBySystemId(String systemId);
} }
...@@ -1512,7 +1512,9 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -1512,7 +1512,9 @@ public class MetadataServiceImpl implements IMetadataService {
saveAllProcedureByBatch(catalogName,compositionRelationList,neo4jSchemaMap,neo4jSchema.getMetadataId()); saveAllProcedureByBatch(catalogName,compositionRelationList,neo4jSchemaMap,neo4jSchema.getMetadataId());
//专门做字段解析,批量获取字段,进行组装。 //专门做字段解析,批量获取字段,进行组装。
saveAllColumnByBatch(catalogName,compositionRelationList,neo4jTableIdMap,neo4jSchema.getMetadataId()); // saveAllColumnByBatch(catalogName,compositionRelationList,neo4jTableIdMap,neo4jSchema.getMetadataId());
// Neo4jSchema neo4jSchemaList = neo4jSchemaRepository.findNeo4jSchemaByMetadataId(neo4jSchema.getMetadataId()); // Neo4jSchema neo4jSchemaList = neo4jSchemaRepository.findNeo4jSchemaByMetadataId(neo4jSchema.getMetadataId());
// if(neo4jSchemaList==null ){ // if(neo4jSchemaList==null ){
//// neo4jSchemaRepository.save(neo4jSchema); //// neo4jSchemaRepository.save(neo4jSchema);
...@@ -2439,6 +2441,7 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -2439,6 +2441,7 @@ public class MetadataServiceImpl implements IMetadataService {
} }
private String getTargetColumnId(String targetTableId, String targetColumn) { private String getTargetColumnId(String targetTableId, String targetColumn) {
String targetColumnId = ""; String targetColumnId = "";
List<Neo4jColumn> targetColumnList = neo4jTableRepository.getColumnByTableId(targetTableId); List<Neo4jColumn> targetColumnList = neo4jTableRepository.getColumnByTableId(targetTableId);
...@@ -2545,7 +2548,7 @@ public class MetadataServiceImpl implements IMetadataService { ...@@ -2545,7 +2548,7 @@ public class MetadataServiceImpl implements IMetadataService {
} }
dependencyRelation.setStart(startNode); dependencyRelation.setStart(startNode);
dependencyRelation.setEnd(endNode); dependencyRelation.setEnd(endNode);
dependencyRelationMap.put(sourceId+"_"+targetId,dependencyRelation); // dependencyRelationMap.put(sourceId+"_"+targetId,dependencyRelation);
//从idpath 找出父节点id //从idpath 找出父节点id
String sourceIdPath = relation.getString("sourceIdPath"); String sourceIdPath = relation.getString("sourceIdPath");
......
...@@ -4,17 +4,22 @@ import com.keymobile.metadata.metadataRelation.pojo.MetaData; ...@@ -4,17 +4,22 @@ import com.keymobile.metadata.metadataRelation.pojo.MetaData;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jETLJob; import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jETLJob;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema; import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSchema;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem; import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jSystem;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.MetaModel;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnEdge;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode; import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnNode;
import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult; import com.keymobile.metadata.metadataRelation.pojo.returnBean.ReturnReslult;
import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository; import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository;
import com.keymobile.metadata.metadataRelation.service.ISystemService; import com.keymobile.metadata.metadataRelation.service.ISystemService;
import com.keymobile.metadata.metadataRelation.util.Neo4jTool; import com.keymobile.metadata.metadataRelation.util.Neo4jTool;
import com.keymobile.metadata.metadataRelation.util.SchemaLayerObject; import com.keymobile.metadata.metadataRelation.util.SchemaLayerObject;
import org.apache.commons.lang.StringUtils;
import org.neo4j.driver.v1.Record; import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Session; import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult; import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Value; import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.types.Node; import org.neo4j.driver.v1.types.Node;
import org.neo4j.driver.v1.types.Path;
import org.neo4j.driver.v1.types.Relationship;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -29,6 +34,7 @@ public class SystemServiceImpl implements ISystemService { ...@@ -29,6 +34,7 @@ public class SystemServiceImpl implements ISystemService {
@Autowired @Autowired
private Session neo4jSession; private Session neo4jSession;
private String SystemModelEqual = "System=";
/** /**
* @param systemId * @param systemId
...@@ -209,4 +215,112 @@ public class SystemServiceImpl implements ISystemService { ...@@ -209,4 +215,112 @@ public class SystemServiceImpl implements ISystemService {
} }
return systemMap; return systemMap;
} }
@Override
public ReturnReslult getSystemBySystemId(String systemId) {
ReturnReslult returnReslult = new ReturnReslult();
String cypher = "match data=(na:softplatform)<-[r]->(nb:softplatform) return data ";
StatementResult statementResult = neo4jSession.run(cypher);
Map<Long, ReturnNode> nodesMap = new HashMap<>();
Map<String, MetaModel> metaModelMap = new HashMap<>();
Map<String , ReturnEdge> returnEdgeMap = new HashMap<>();
int size = 300;
while (statementResult.hasNext()) {
Record record = statementResult.next();
List<Value> values = record.values();
for (Value value : values) {
if (value.type().name().equals("PATH")) {
Path p = value.asPath();
Iterable<Node> nodes = p.nodes();
getNodesMapFromNeo4jSystem(nodesMap, metaModelMap, nodes);
Iterable<Relationship> relationships = p.relationships();
getRelationFromneo4jRelationSystem(returnEdgeMap, nodesMap, relationships);
}
}
}
for(Object object:nodesMap.keySet()){
ReturnNode node = nodesMap.get(object);
returnReslult.getNodes().add(node);
}
for(Object object:returnEdgeMap.keySet()){
ReturnEdge returnEdge = returnEdgeMap.get(object);
returnReslult.getEdges().add(returnEdge);
}
returnReslult.setMetaModelMap(metaModelMap);
return returnReslult;
}
private void getRelationFromneo4jRelationSystem(Map<String ,ReturnEdge> returnEdgeMap, Map<Long, ReturnNode> nodesMap,
Iterable<Relationship> relationships) {
for (Relationship relationship : relationships) {
Long startID = relationship.startNodeId();
Long endID = relationship.endNodeId();
String rType = relationship.type();
/**
* asMap 相当于 节点的properties属性信息
*/
// relationship.id();
//
String xieyi =""+ relationship.asMap().get("协议");
String yewuleibie =""+ relationship.asMap().get("业务类别");
String shujujiegou =""+ relationship.asMap().get("数据结构");
String yewushuoming =""+ relationship.asMap().get("业务说明");
String startMetaId = "";
String endMetaId = "";
if (nodesMap.containsKey(startID)) {
startMetaId = nodesMap.get(startID).getId();
}
if (nodesMap.containsKey(endID)) {
endMetaId = nodesMap.get(endID).getId();
}
if(!StringUtils.isBlank(startMetaId) && !StringUtils.isBlank(endMetaId)){
ReturnEdge edge = new ReturnEdge();
String edgeId = ""+relationship.id();
edge.setEdgeId(edgeId);
edge.setFromId(startMetaId);
edge.setToId(endMetaId);
edge.setType(rType);
edge.getAttributeMaps().put("协议",xieyi);
edge.getAttributeMaps().put("业务类别",yewuleibie);
edge.getAttributeMaps().put("数据结构",shujujiegou);
edge.getAttributeMaps().put("业务说明",yewushuoming);
returnEdgeMap .put(edgeId,edge );
}
}
}
private void getNodesMapFromNeo4jSystem(Map<Long, ReturnNode> nodesMap, Map<String, MetaModel> metaModelMap, Iterable<Node> nodes) {
for (Node node : nodes) {
Map<String, Object> stringObjectMap = node.asMap();
Neo4jSystem neo4jSystem = new Neo4jSystem();
Neo4jTool.transMap2Bean(stringObjectMap, neo4jSystem);
// metaDataList.add(data);
if(neo4jSystem.getMetadataId() == null ){
neo4jSystem.setMetadataId(SystemModelEqual+neo4jSystem.getName());
}
ReturnNode returnNode = new ReturnNode();
returnNode.setId(neo4jSystem.getMetadataId());
returnNode.setName(neo4jSystem.getName());
returnNode.getAttributeMaps().put("内外部系统",""+stringObjectMap.get("内外部系统"));
returnNode.getAttributeMaps().put("行",""+stringObjectMap.get("行"));
returnNode.getAttributeMaps().put("列",""+stringObjectMap.get("列"));
returnNode.setType("Neo4jSystem");
nodesMap.put(node.id(), returnNode);
}
}
} }
...@@ -90,13 +90,13 @@ public class TableServiceImpl implements ITableService { ...@@ -90,13 +90,13 @@ public class TableServiceImpl implements ITableService {
List<ReturnNode> qualityList = new ArrayList<>(); List<ReturnNode> qualityList = new ArrayList<>();
try{ try{
//从表获取字段: //从表获取字段:
List<Neo4jColumn> neo4jColumnList = neo4jTableRepository.getColumnByTableId(tableId); List<Map<String, Object>> mapList =
metadataRepoRemoteService.getChild(tableId, Arrays.asList("Catalog,Server,ETLJob,ETLScript"));
List<String> reportIdList = new ArrayList<>(); List<String> reportIdList = new ArrayList<>();
for(Map<String, Object> columnRemote:mapList ){
String metaId =""+columnRemote.get("_id");
for(Neo4jColumn neo4jColumn :neo4jColumnList ){
//
String metaId =neo4jColumn.getMetadataId();
// metaId = "Column=1=55d151b1ba484d0cbe3ccd7e9e2f0bfe";
Map<String, String> dataQualityRepost = dataQualityReportRemoteService.getDataAssetGraphInfoByMetadataId(metaId); Map<String, String> dataQualityRepost = dataQualityReportRemoteService.getDataAssetGraphInfoByMetadataId(metaId);
if(dataQualityRepost ==null || dataQualityRepost.size()==0){ if(dataQualityRepost ==null || dataQualityRepost.size()==0){
continue; continue;
...@@ -113,6 +113,14 @@ public class TableServiceImpl implements ITableService { ...@@ -113,6 +113,14 @@ public class TableServiceImpl implements ITableService {
returnNode.setAttributeMaps(dataQualityRepost); returnNode.setAttributeMaps(dataQualityRepost);
qualityList.add(returnNode); qualityList.add(returnNode);
} }
//neo4jTableRepository.getColumnByTableId(tableId);
// for(Neo4jColumn neo4jColumn :neo4jColumnList ){
// //
// String metaId =neo4jColumn.getMetadataId();
//// metaId = "Column=1=55d151b1ba484d0cbe3ccd7e9e2f0bfe";
//
// }
}catch (Exception e){ }catch (Exception e){
logger.info(" 获取质量错误: "+e.getMessage()); logger.info(" 获取质量错误: "+e.getMessage());
// e.printStackTrace(); // e.printStackTrace();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment