diff --git a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py index 10eaf5a..6e0c821 100644 --- a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py +++ b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py @@ -49,6 +49,7 @@ class DataStdCodeAppr(Base): changeType = Column(String(10), default=None, comment='变更类型') flowId = Column(String(50), default=None, comment='审批Id') oldInstId = Column(String(50), default=None, comment='原始正式id') + oldParentId = Column(String(50), default=None, comment='原始正式id') compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)') approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)') diff --git a/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py b/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py index 7198cd0..672f3a2 100644 --- a/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py +++ b/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py @@ -37,6 +37,7 @@ class DataStdCodeApprModel(DataStdCodeModel): changeType: Optional[str] = Field(default=None, description='变更类型') flowId: Optional[str] = Field(default=None, description='审批Id') oldInstId: Optional[str] = Field(default=None, description='原始正式id') + oldParentId: Optional[str] = Field(default=None, description='正式父id') compareId: Optional[str] = Field(default=None, description='原始数据id(用于对比差异)') approStatus: Optional[str] = Field(default=None, description='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)') diff --git a/vue-fastapi-backend/module_admin/service/approval_service.py b/vue-fastapi-backend/module_admin/service/approval_service.py index e19fc82..afd91b8 100644 --- a/vue-fastapi-backend/module_admin/service/approval_service.py +++ b/vue-fastapi-backend/module_admin/service/approval_service.py @@ -215,16 +215,18 @@ class ApprovalService: change_type = appr_model.changeType if operateType == 'succeed': + if change_type == "add": main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True)) - + main_model.parent_id = appr_model.oldParentId await DataStdDao.add_std_code(result_db, main_model) elif change_type == "update": # 使用 oldInstId 作为主键 main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True)) - + main_model.parent_id = appr_model.oldParentId main_model.onum = appr_model.oldInstId + await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True)) elif change_type == "delete": diff --git a/vue-fastapi-backend/module_admin/service/data_asset_service.py b/vue-fastapi-backend/module_admin/service/data_asset_service.py index 8372b68..f59e3ae 100644 --- a/vue-fastapi-backend/module_admin/service/data_asset_service.py +++ b/vue-fastapi-backend/module_admin/service/data_asset_service.py @@ -5,6 +5,7 @@ from exceptions.exception import ServiceException from typing import Dict, Any, List from utils.common_util import export_list2excel +import json class DataAssetService: """ @@ -183,7 +184,9 @@ class DataAssetService: # 处理状态字段 cleaned_item["dataAstStat"] = "有效" if cleaned_item.get("dataAstStat") == "有效" else "废弃" - + cleaned_item["dataAstClas"] = format_asset_tags( + cleaned_item.get("dataAstClas") + ) # 按mapping_dict的键顺序构建数据 mapped_item = { mapping_dict[key]: cleaned_item.get(key, "") @@ -192,4 +195,34 @@ class DataAssetService: new_data.append(mapped_item) # 直接调用export_list2excel,只传入数据参数 - return export_list2excel(new_data) \ No newline at end of file + return export_list2excel(new_data) + import json + +def format_asset_tags(value): + """ + 将资产标签转为:clasName:clasValue,clasName:clasValue + """ + if not value: + return "" + + # 如果是字符串,尝试反序列化 + if isinstance(value, str): + try: + value = json.loads(value) + except Exception: + return value # 非 JSON,直接原样返回 + + # 如果不是 list,直接返回字符串 + if not isinstance(value, list): + return str(value) + + result = [] + for item in value: + if not isinstance(item, dict): + continue + name = item.get("clasName", "") + val = item.get("clasValue", "") + if name or val: + result.append(f"{name}:{val}") + + return ",".join(result) diff --git a/vue-fastapi-backend/module_admin/service/datastd_service.py b/vue-fastapi-backend/module_admin/service/datastd_service.py index 0bea0fd..f4a6def 100644 --- a/vue-fastapi-backend/module_admin/service/datastd_service.py +++ b/vue-fastapi-backend/module_admin/service/datastd_service.py @@ -427,7 +427,7 @@ class DataStdService: item.upd_time = datetime.now() item.src_sys = '公司级' if 'company' == item.cd_type else item.src_sys item.parent_id = appr_model.onum # 设置父级 ID - + # 校验代码项是否已存在于正式表中 if not await cls.check_code_unique_services(query_db, item): raise ServiceException(message=f'代码项{item.cd_no}已经存在于正式表中,无法新增') @@ -439,7 +439,8 @@ class DataStdService: item_appr_model.oldInstId = item.onum item_appr_model.approStatus = "waiting" item_appr_model.flowId = appr_model.flowId # 使用相同的 Flow ID - + item_appr_model.oldParentId = item.parent_id + await DataStdDao.add_std_code_appr(query_db, item_appr_model) # 创建审批申请 @@ -562,6 +563,7 @@ class DataStdService: item_appr_model.changeType = "update" item_appr_model.compareId = last_item_appr.onum item_appr_model.parent_id = appr_model.onum + item_appr_model.oldParentId = item.parent_id item_appr_model.oldInstId = item.onum item_appr_model.approStatus = "waiting" item_appr_model.flowId = appr_model.flowId @@ -584,6 +586,7 @@ class DataStdService: item_appr_model.approStatus = "waiting" item_appr_model.flowId = appr_model.flowId item_appr_model.parent_id = appr_model.onum + item_appr_model.oldParentId = item.parent_id await DataStdDao.add_std_code_appr(query_db, item_appr_model) for old_item in code_item_list_old: @@ -598,7 +601,7 @@ class DataStdService: delete_appr_model.flowId = appr_model.flowId delete_appr_model.onum = str(uuid.uuid4()) delete_appr_model.parent_id = appr_model.onum - + delete_appr_model.oldParentId = item.onum delete_appr_model.create_by = current_user.user.user_name delete_appr_model.create_time = datetime.now() @@ -2288,6 +2291,7 @@ class DataStdService: parent_appr.flowId = batch_flow_id await DataStdDao.add_std_code_appr(query_db, parent_appr) parent_appr_onum = parent_appr.onum + Old_parent_appr_onum = exist_parent.onum else: # 父级新增审批 parent_model.onum = str(uuid.uuid4()) @@ -2302,7 +2306,7 @@ class DataStdService: parent_appr.flowId = batch_flow_id await DataStdDao.add_std_code_appr(query_db, parent_appr) parent_appr_onum = parent_appr.onum - + Old_parent_appr_onum = parent_appr.onum # 处理代码项(组内每行) for row_idx, row in group.iterrows(): row_display = int(row_idx) + 2 @@ -2343,6 +2347,7 @@ class DataStdService: item_appr.compareId = last_item_appr.onum if last_item_appr else item_model.onum item_appr.oldInstId = item_model.onum item_appr.parent_id = parent_appr_onum + item_appr.oldParentId = Old_parent_appr_onum item_appr.approStatus = "waiting" item_appr.flowId = batch_flow_id await DataStdDao.add_std_code_appr(query_db, item_appr) @@ -2357,6 +2362,7 @@ class DataStdService: item_appr.compareId = item_model.onum item_appr.oldInstId = item_model.onum item_appr.parent_id = parent_appr_onum + item_appr.oldParentId = Old_parent_appr_onum item_appr.approStatus = "waiting" item_appr.flowId = batch_flow_id await DataStdDao.add_std_code_appr(query_db, item_appr) diff --git a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue index 85f2bb1..9dceb68 100644 --- a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue +++ b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue @@ -33,10 +33,14 @@ - + + + - + + + - + - +