Commit 83265731 by qiuchaofei

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

parent 5e21c932
......@@ -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) {
String parentId = neo4jId;
......
......@@ -243,7 +243,7 @@ public class RelationalGraphController {
return returnReslult;
}
//表的分析,链路分析,表与其他表的上下游关系,其他表可以继续下钻,并且可以收缩。
@ApiOperation(tags = "", value = "传入表的id,返回表的上下游一层关系。")
@ApiOperation(tags = "", value = "全链分析,传入表的id,返回表的上下游一层关系。")
@RequestMapping(path = "/getRelationTablesTableId", method = RequestMethod.GET)
public Map<String,List<ReturnNode>> getRelationTablesTableId(String tableId){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......@@ -310,7 +310,7 @@ public class RelationalGraphController {
}
//表的分析,关系分析--表与模型,表与质量,表与标准,表与作业的关系
@ApiOperation(tags = "", value = "传入表的id,返回与表相关的模型,标准,质量,资产,作业等对象")
@ApiOperation(tags = "", value = "关系分析,传入表的id,返回与表相关的模型,标准,质量,资产,作业等对象")
@RequestMapping(path = "/getRelationObjectByTableId", method = RequestMethod.GET)
public Map<String,List<ReturnNode>> getRelationObjectByTableId(String tableId){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......
......@@ -112,4 +112,5 @@ public interface IMetadataService {
void syschro1104Relations(String catalogName);
void syschroTable2TableRelations(String catalogName);
}
......@@ -18,4 +18,5 @@ public interface ISystemService {
//从环境id拿到系统
Map<String ,ReturnNode> getSystemByEnvId(String envId);
ReturnReslult getSystemBySystemId(String systemId);
}
......@@ -1512,7 +1512,9 @@ public class MetadataServiceImpl implements IMetadataService {
saveAllProcedureByBatch(catalogName,compositionRelationList,neo4jSchemaMap,neo4jSchema.getMetadataId());
//专门做字段解析,批量获取字段,进行组装。
saveAllColumnByBatch(catalogName,compositionRelationList,neo4jTableIdMap,neo4jSchema.getMetadataId());
// saveAllColumnByBatch(catalogName,compositionRelationList,neo4jTableIdMap,neo4jSchema.getMetadataId());
// Neo4jSchema neo4jSchemaList = neo4jSchemaRepository.findNeo4jSchemaByMetadataId(neo4jSchema.getMetadataId());
// if(neo4jSchemaList==null ){
//// neo4jSchemaRepository.save(neo4jSchema);
......@@ -2439,6 +2441,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
private String getTargetColumnId(String targetTableId, String targetColumn) {
String targetColumnId = "";
List<Neo4jColumn> targetColumnList = neo4jTableRepository.getColumnByTableId(targetTableId);
......@@ -2545,7 +2548,7 @@ public class MetadataServiceImpl implements IMetadataService {
}
dependencyRelation.setStart(startNode);
dependencyRelation.setEnd(endNode);
dependencyRelationMap.put(sourceId+"_"+targetId,dependencyRelation);
// dependencyRelationMap.put(sourceId+"_"+targetId,dependencyRelation);
//从idpath 找出父节点id
String sourceIdPath = relation.getString("sourceIdPath");
......
......@@ -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.Neo4jSchema;
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.ReturnReslult;
import com.keymobile.metadata.metadataRelation.respository.metadata.Neo4jSystemRepository;
import com.keymobile.metadata.metadataRelation.service.ISystemService;
import com.keymobile.metadata.metadataRelation.util.Neo4jTool;
import com.keymobile.metadata.metadataRelation.util.SchemaLayerObject;
import org.apache.commons.lang.StringUtils;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Value;
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.stereotype.Service;
......@@ -29,6 +34,7 @@ public class SystemServiceImpl implements ISystemService {
@Autowired
private Session neo4jSession;
private String SystemModelEqual = "System=";
/**
* @param systemId
......@@ -209,4 +215,112 @@ public class SystemServiceImpl implements ISystemService {
}
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 {
List<ReturnNode> qualityList = new ArrayList<>();
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<>();
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);
if(dataQualityRepost ==null || dataQualityRepost.size()==0){
continue;
......@@ -113,6 +113,14 @@ public class TableServiceImpl implements ITableService {
returnNode.setAttributeMaps(dataQualityRepost);
qualityList.add(returnNode);
}
//neo4jTableRepository.getColumnByTableId(tableId);
// for(Neo4jColumn neo4jColumn :neo4jColumnList ){
// //
// String metaId =neo4jColumn.getMetadataId();
//// metaId = "Column=1=55d151b1ba484d0cbe3ccd7e9e2f0bfe";
//
// }
}catch (Exception e){
logger.info(" 获取质量错误: "+e.getMessage());
// 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