|
@@ -235,7 +235,7 @@ def resource_handle_meta_data_model(id_lists, data_model_node_id):
|
|
query = """
|
|
query = """
|
|
MATCH (source:DataModel), (target:DataMeta)
|
|
MATCH (source:DataModel), (target:DataMeta)
|
|
WHERE id(source)=$source_id AND id(target) IN $target_ids
|
|
WHERE id(source)=$source_id AND id(target) IN $target_ids
|
|
- MERGE (source)-[:INCLUDE]->(target)
|
|
|
|
|
|
+ MERGE (source)-[:INCLUDES]->(target)
|
|
RETURN count(*) as count
|
|
RETURN count(*) as count
|
|
"""
|
|
"""
|
|
with connect_graph().session() as session:
|
|
with connect_graph().session() as session:
|
|
@@ -440,7 +440,7 @@ def handle_id_model(id):
|
|
node_id = id
|
|
node_id = id
|
|
cql = """
|
|
cql = """
|
|
MATCH (n:DataModel) WHERE id(n) = $nodeId
|
|
MATCH (n:DataModel) WHERE id(n) = $nodeId
|
|
- OPTIONAL MATCH (n)-[:INCLUDE]->(meta:DataMeta)
|
|
|
|
|
|
+ OPTIONAL MATCH (n)-[:INCLUDES]->(meta:DataMeta)
|
|
OPTIONAL MATCH (n)-[:DERIVES_FROM]->(resource:DataResource)
|
|
OPTIONAL MATCH (n)-[:DERIVES_FROM]->(resource:DataResource)
|
|
OPTIONAL MATCH (n)-[:label]->(tag:DataLabel)
|
|
OPTIONAL MATCH (n)-[:label]->(tag:DataLabel)
|
|
OPTIONAL MATCH (uses:model_use)-[:use]->(n)
|
|
OPTIONAL MATCH (uses:model_use)-[:use]->(n)
|
|
@@ -1063,17 +1063,40 @@ def data_model_edit(receiver):
|
|
category = receiver.get('category')
|
|
category = receiver.get('category')
|
|
describe = receiver.get('describe')
|
|
describe = receiver.get('describe')
|
|
tag = receiver.get('tag')
|
|
tag = receiver.get('tag')
|
|
|
|
+ frequency = receiver.get('frequency')
|
|
|
|
+ leader = receiver.get('leader')
|
|
|
|
+ organization = receiver.get('organization')
|
|
|
|
+ status = receiver.get('status')
|
|
|
|
+ meta_data = receiver.get('metaData', [])
|
|
|
|
|
|
- # 更新数据模型节点
|
|
|
|
|
|
+ # 更新数据模型节点 - 添加新的字段
|
|
query = """
|
|
query = """
|
|
MATCH (n:DataModel) WHERE id(n) = $id
|
|
MATCH (n:DataModel) WHERE id(n) = $id
|
|
- SET n.name = $name, n.en_name = $en_name, n.category = $category, n.describe = $describe
|
|
|
|
|
|
+ SET n.name = $name,
|
|
|
|
+ n.en_name = $en_name,
|
|
|
|
+ n.category = $category,
|
|
|
|
+ n.describe = $describe,
|
|
|
|
+ n.frequency = $frequency,
|
|
|
|
+ n.leader = $leader,
|
|
|
|
+ n.organization = $organization,
|
|
|
|
+ n.status = $status,
|
|
|
|
+ n.updateTime = $update_time
|
|
RETURN n
|
|
RETURN n
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
+ update_time = get_formatted_time()
|
|
with connect_graph().session() as session:
|
|
with connect_graph().session() as session:
|
|
- result = session.run(query, id=id, name=name, en_name=en_name,
|
|
|
|
- category=category, describe=describe).data()
|
|
|
|
|
|
+ result = session.run(query,
|
|
|
|
+ id=id,
|
|
|
|
+ name=name,
|
|
|
|
+ en_name=en_name,
|
|
|
|
+ category=category,
|
|
|
|
+ describe=describe,
|
|
|
|
+ frequency=frequency,
|
|
|
|
+ leader=leader,
|
|
|
|
+ organization=organization,
|
|
|
|
+ status=status,
|
|
|
|
+ update_time=update_time).data()
|
|
|
|
|
|
# 处理标签关系
|
|
# 处理标签关系
|
|
if tag:
|
|
if tag:
|
|
@@ -1114,4 +1137,48 @@ def data_model_edit(receiver):
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+ # 处理DataMeta节点关系更新
|
|
|
|
+ with connect_graph().session() as session:
|
|
|
|
+ # 先删除DataModel关联的所有DataMeta关系
|
|
|
|
+ delete_meta_query = """
|
|
|
|
+ MATCH (n:DataModel)-[r:INCLUDES]->(m:DataMeta)
|
|
|
|
+ WHERE id(n) = $id
|
|
|
|
+ DELETE r
|
|
|
|
+ """
|
|
|
|
+ session.run(delete_meta_query, id=id)
|
|
|
|
+ logger.info(f"已删除DataModel({id})的所有DataMeta关系")
|
|
|
|
+
|
|
|
|
+ # 根据上传的metaData数据是否有值来决定是否重新构建INCLUDES关系
|
|
|
|
+ if meta_data:
|
|
|
|
+ # 根据上传的metaData数据重新构建INCLUDES关系
|
|
|
|
+ for meta_item in meta_data:
|
|
|
|
+ meta_id = meta_item.get('id')
|
|
|
|
+ if meta_id:
|
|
|
|
+ try:
|
|
|
|
+ meta_id = int(meta_id)
|
|
|
|
+ # 验证DataMeta节点是否存在
|
|
|
|
+ check_meta_query = """
|
|
|
|
+ MATCH (m:DataMeta)
|
|
|
|
+ WHERE id(m) = $meta_id
|
|
|
|
+ RETURN m
|
|
|
|
+ """
|
|
|
|
+ meta_result = session.run(check_meta_query, meta_id=meta_id)
|
|
|
|
+
|
|
|
|
+ if meta_result.single():
|
|
|
|
+ # 创建INCLUDES关系
|
|
|
|
+ create_includes_query = """
|
|
|
|
+ MATCH (n:DataModel), (m:DataMeta)
|
|
|
|
+ WHERE id(n) = $model_id AND id(m) = $meta_id
|
|
|
|
+ CREATE (n)-[:INCLUDES]->(m)
|
|
|
|
+ RETURN n, m
|
|
|
|
+ """
|
|
|
|
+ session.run(create_includes_query, model_id=id, meta_id=meta_id)
|
|
|
|
+ logger.info(f"成功创建INCLUDES关系: DataModel({id}) -> DataMeta({meta_id})")
|
|
|
|
+ else:
|
|
|
|
+ logger.warning(f"DataMeta节点不存在,ID: {meta_id}")
|
|
|
|
+ except (ValueError, TypeError) as e:
|
|
|
|
+ logger.error(f"无效的meta_id: {meta_id}, 错误: {str(e)}")
|
|
|
|
+ else:
|
|
|
|
+ logger.info(f"meta_data为空,不需要重新创建INCLUDES关系,DataModel({id})将不关联任何DataMeta节点")
|
|
|
|
+
|
|
return {"message": "数据模型更新成功"}
|
|
return {"message": "数据模型更新成功"}
|