|
|
@ -1,12 +1,14 @@ |
|
|
from sqlalchemy import delete, select, update, desc,or_,not_ |
|
|
from sqlalchemy import delete, select, update, desc, or_, not_, and_ |
|
|
from sqlalchemy.ext.asyncio import AsyncSession |
|
|
from sqlalchemy.ext.asyncio import AsyncSession |
|
|
from module_admin.entity.do.datastd_do import DataStdCode,DataStdDict,DataAstContent,DataAstContentRela,DataStdMain,DataStdMainAppr,DataStdDictAppr,DataStdCodeAppr |
|
|
from module_admin.entity.do.datastd_do import DataStdCode, DataStdDict, DataAstContent, DataAstContentRela, DataStdMain, \ |
|
|
|
|
|
DataStdMainAppr, DataStdDictAppr, DataStdCodeAppr |
|
|
from module_admin.entity.vo.datastd_vo import DataStdCodeModel, DataStdDictModel, DataStdMainModel, \ |
|
|
from module_admin.entity.vo.datastd_vo import DataStdCodeModel, DataStdDictModel, DataStdMainModel, \ |
|
|
DataStdMainApprModel, DataStdDictApprModel, DataStdCodeApprModel, StdDictNoPageParam |
|
|
DataStdMainApprModel, DataStdDictApprModel, DataStdCodeApprModel, StdDictNoPageParam |
|
|
from module_admin.entity.do.dept_do import SysDept |
|
|
from module_admin.entity.do.dept_do import SysDept |
|
|
from utils.page_util import PageUtil |
|
|
from utils.page_util import PageUtil |
|
|
from sqlalchemy.orm import aliased |
|
|
from sqlalchemy.orm import aliased |
|
|
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogChild |
|
|
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel, \ |
|
|
|
|
|
DataCatalogChild |
|
|
from datetime import datetime |
|
|
from datetime import datetime |
|
|
from module_admin.entity.do.approval_do import FlowApproval, FlowConfig |
|
|
from module_admin.entity.do.approval_do import FlowApproval, FlowConfig |
|
|
|
|
|
|
|
|
@ -15,14 +17,15 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
# ----------------------------------------------------------------数据标准模块---------------------------------------------------------------------------------------------------- |
|
|
# ----------------------------------------------------------------数据标准模块---------------------------------------------------------------------------------------------------- |
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_appr_list(cls, flowId:str,db: AsyncSession): |
|
|
async def get_std_code_appr_list(cls, flowId: str, db: AsyncSession): |
|
|
filters = [] |
|
|
filters = [] |
|
|
filters.append(DataStdCodeAppr.flowId == flowId) |
|
|
filters.append(DataStdCodeAppr.flowId == flowId) |
|
|
filters.append(DataStdCodeAppr.class_id == "code") |
|
|
filters.append(DataStdCodeAppr.class_id == "code") |
|
|
query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time)) |
|
|
query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time)) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_appr_list_Flow(cls, flowId:str,db: AsyncSession): |
|
|
async def get_std_code_appr_list_Flow(cls, flowId: str, db: AsyncSession): |
|
|
filters = [] |
|
|
filters = [] |
|
|
filters.append(DataStdCodeAppr.flowId == flowId) |
|
|
filters.append(DataStdCodeAppr.flowId == flowId) |
|
|
query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time)) |
|
|
query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time)) |
|
|
@ -103,23 +106,23 @@ class DataStdDao: |
|
|
if query_object.cd_val_cn_mean: |
|
|
if query_object.cd_val_cn_mean: |
|
|
filters.append(DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%")) |
|
|
filters.append(DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%")) |
|
|
if query_object.cd_no: |
|
|
if query_object.cd_no: |
|
|
filters.append( or_( |
|
|
filters.append(or_( |
|
|
DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_no}%"), |
|
|
DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_no}%"), |
|
|
DataStdCodeAppr.cd_no.like(f"%{query_object.cd_no}%") |
|
|
DataStdCodeAppr.cd_no.like(f"%{query_object.cd_no}%") |
|
|
)) |
|
|
)) |
|
|
if query_object.cd_val_stat: |
|
|
if query_object.cd_val_stat: |
|
|
filters.append(DataStdCodeAppr.cd_val_stat==query_object.cd_val_stat) |
|
|
filters.append(DataStdCodeAppr.cd_val_stat == query_object.cd_val_stat) |
|
|
if query_object.src_sys: |
|
|
if query_object.src_sys: |
|
|
filters.append(DataStdCodeAppr.src_sys==query_object.src_sys) |
|
|
filters.append(DataStdCodeAppr.src_sys == query_object.src_sys) |
|
|
if query_object.cd_type: |
|
|
if query_object.cd_type: |
|
|
filters.append(DataStdCodeAppr.cd_type==query_object.cd_type) |
|
|
filters.append(DataStdCodeAppr.cd_type == query_object.cd_type) |
|
|
|
|
|
|
|
|
if query_object.class_id: |
|
|
if query_object.class_id: |
|
|
filters.append(DataStdCodeAppr.class_id==query_object.class_id) |
|
|
filters.append(DataStdCodeAppr.class_id == query_object.class_id) |
|
|
if query_object.class_id=='codeItem' and not query_object.parent_id: |
|
|
if query_object.class_id == 'codeItem' and not query_object.parent_id: |
|
|
filters.append(1==2) |
|
|
filters.append(1 == 2) |
|
|
if query_object.parent_id: |
|
|
if query_object.parent_id: |
|
|
filters.append(DataStdCodeAppr.parent_id==query_object.parent_id) |
|
|
filters.append(DataStdCodeAppr.parent_id == query_object.parent_id) |
|
|
# 构建查询语句 |
|
|
# 构建查询语句 |
|
|
query = ( |
|
|
query = ( |
|
|
select(DataStdCodeAppr) |
|
|
select(DataStdCodeAppr) |
|
|
@ -132,8 +135,9 @@ class DataStdDao: |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
) |
|
|
) |
|
|
return col_list |
|
|
return col_list |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_last_std_code_appr_by_id(cls,db: AsyncSession, Id: str ): |
|
|
async def get_last_std_code_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
result = await db.execute( |
|
|
result = await db.execute( |
|
|
select(DataStdCodeAppr) |
|
|
select(DataStdCodeAppr) |
|
|
.where( |
|
|
.where( |
|
|
@ -144,6 +148,7 @@ class DataStdDao: |
|
|
.limit(1) |
|
|
.limit(1) |
|
|
) |
|
|
) |
|
|
return result.scalar_one_or_none() |
|
|
return result.scalar_one_or_none() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_list_all(cls, query_db: AsyncSession): |
|
|
async def get_std_code_list_all(cls, query_db: AsyncSession): |
|
|
""" |
|
|
""" |
|
|
@ -154,6 +159,7 @@ class DataStdDao: |
|
|
stmt = select(DataStdCode).where(DataStdCode.class_id == 'code') # 只查有效的 |
|
|
stmt = select(DataStdCode).where(DataStdCode.class_id == 'code') # 只查有效的 |
|
|
result = await query_db.execute(stmt) |
|
|
result = await query_db.execute(stmt) |
|
|
return result.scalars().all() |
|
|
return result.scalars().all() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_list_import(cls, query_db: AsyncSession): |
|
|
async def get_std_main_list_import(cls, query_db: AsyncSession): |
|
|
""" |
|
|
""" |
|
|
@ -161,9 +167,10 @@ class DataStdDao: |
|
|
:param session: 异步数据库会话 |
|
|
:param session: 异步数据库会话 |
|
|
:return: List[DataStdCode] |
|
|
:return: List[DataStdCode] |
|
|
""" |
|
|
""" |
|
|
stmt = select(DataStdMain).where(1== 1) # 只查有效的 |
|
|
stmt = select(DataStdMain).where(1 == 1) # 只查有效的 |
|
|
result = await query_db.execute(stmt) |
|
|
result = await query_db.execute(stmt) |
|
|
return result.scalars().all() |
|
|
return result.scalars().all() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_map_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False): |
|
|
async def get_std_code_map_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False): |
|
|
# 构建查询条件 |
|
|
# 构建查询条件 |
|
|
@ -174,7 +181,7 @@ class DataStdDao: |
|
|
c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码 |
|
|
c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码 |
|
|
c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码 |
|
|
c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码 |
|
|
if query_object.parent_id: |
|
|
if query_object.parent_id: |
|
|
if query_object.cd_type =='sys': |
|
|
if query_object.cd_type == 'sys': |
|
|
filters.append(c1.parent_id == query_object.parent_id) |
|
|
filters.append(c1.parent_id == query_object.parent_id) |
|
|
else: |
|
|
else: |
|
|
filters.append(c3.parent_id == query_object.parent_id) |
|
|
filters.append(c3.parent_id == query_object.parent_id) |
|
|
@ -207,6 +214,7 @@ class DataStdDao: |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
) |
|
|
) |
|
|
return col_list |
|
|
return col_list |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_map_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False): |
|
|
async def get_std_main_map_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False): |
|
|
# 构建查询条件 |
|
|
# 构建查询条件 |
|
|
@ -238,6 +246,7 @@ class DataStdDao: |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
db, query, query_object.page_num, query_object.page_size, is_page |
|
|
) |
|
|
) |
|
|
return col_list |
|
|
return col_list |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_data_code_list_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel): |
|
|
async def get_data_code_list_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel): |
|
|
List = ( |
|
|
List = ( |
|
|
@ -256,6 +265,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().all() |
|
|
).scalars().all() |
|
|
return List |
|
|
return List |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_data_code_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel): |
|
|
async def get_data_code_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel): |
|
|
List = ( |
|
|
List = ( |
|
|
@ -273,6 +283,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().first() |
|
|
).scalars().first() |
|
|
return List |
|
|
return List |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_by_id(cls, db: AsyncSession, Id: str): |
|
|
async def get_std_code_by_id(cls, db: AsyncSession, Id: str): |
|
|
col = ( |
|
|
col = ( |
|
|
@ -282,6 +293,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().first() |
|
|
).scalars().first() |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_code_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
async def get_std_code_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
col = ( |
|
|
col = ( |
|
|
@ -293,7 +305,7 @@ class DataStdDao: |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_code(cls, db: AsyncSession,model:DataStdCodeModel): |
|
|
async def add_std_code(cls, db: AsyncSession, model: DataStdCodeModel): |
|
|
col = DataStdCode( |
|
|
col = DataStdCode( |
|
|
**model.model_dump() |
|
|
**model.model_dump() |
|
|
) |
|
|
) |
|
|
@ -302,7 +314,7 @@ class DataStdDao: |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_code_appr(cls, db: AsyncSession,model:DataStdCodeApprModel): |
|
|
async def add_std_code_appr(cls, db: AsyncSession, model: DataStdCodeApprModel): |
|
|
col = DataStdCodeAppr( |
|
|
col = DataStdCodeAppr( |
|
|
**model.model_dump() |
|
|
**model.model_dump() |
|
|
) |
|
|
) |
|
|
@ -313,6 +325,7 @@ class DataStdDao: |
|
|
@classmethod |
|
|
@classmethod |
|
|
async def delete_std_code(cls, db: AsyncSession, Id: str): |
|
|
async def delete_std_code(cls, db: AsyncSession, Id: str): |
|
|
await db.execute(delete(DataStdCode).where(DataStdCode.onum == Id)) |
|
|
await db.execute(delete(DataStdCode).where(DataStdCode.onum == Id)) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def update_std_code_appr(cls, db: AsyncSession, update_data: DataStdCodeApprModel): |
|
|
async def update_std_code_appr(cls, db: AsyncSession, update_data: DataStdCodeApprModel): |
|
|
|
|
|
|
|
|
@ -341,6 +354,7 @@ class DataStdDao: |
|
|
return existing_code_item is not None |
|
|
return existing_code_item is not None |
|
|
|
|
|
|
|
|
return True |
|
|
return True |
|
|
|
|
|
|
|
|
# ----------------------------------------------------------------数据字典---------------------------------------------------------------------------------------------------- |
|
|
# ----------------------------------------------------------------数据字典---------------------------------------------------------------------------------------------------- |
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_dict_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False): |
|
|
async def get_std_dict_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False): |
|
|
@ -390,10 +404,10 @@ class DataStdDao: |
|
|
DataStdDict.data_dict_data_type, |
|
|
DataStdDict.data_dict_data_type, |
|
|
DataStdDict.data_std_no, |
|
|
DataStdDict.data_std_no, |
|
|
DataStdDict.data_dict_stat, |
|
|
DataStdDict.data_dict_stat, |
|
|
DataStdMain.data_std_cn_name.label("data_std_cn_name") , |
|
|
DataStdMain.data_std_cn_name.label("data_std_cn_name"), |
|
|
DataStdMain.data_std_it_ownership_dept.label("data_std_it_ownership_dept") , |
|
|
DataStdMain.data_std_it_ownership_dept.label("data_std_it_ownership_dept"), |
|
|
DataStdMain.data_std_busi_ownership_dept.label("data_std_busi_ownership_dept") , |
|
|
DataStdMain.data_std_busi_ownership_dept.label("data_std_busi_ownership_dept"), |
|
|
DataStdMain.data_std_it_ownership_prsn.label("data_std_it_ownership_prsn") , |
|
|
DataStdMain.data_std_it_ownership_prsn.label("data_std_it_ownership_prsn"), |
|
|
DataStdMain.data_std_busi_ownership_prsn.label("data_std_busi_ownership_prsn") |
|
|
DataStdMain.data_std_busi_ownership_prsn.label("data_std_busi_ownership_prsn") |
|
|
|
|
|
|
|
|
) |
|
|
) |
|
|
@ -438,9 +452,8 @@ class DataStdDao: |
|
|
list = (await db.execute(query)).fetchall() |
|
|
list = (await db.execute(query)).fetchall() |
|
|
return list |
|
|
return list |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_dict(cls, db: AsyncSession,model:DataStdDictModel): |
|
|
async def add_std_dict(cls, db: AsyncSession, model: DataStdDictModel): |
|
|
col = DataStdDict( |
|
|
col = DataStdDict( |
|
|
**model.model_dump() |
|
|
**model.model_dump() |
|
|
) |
|
|
) |
|
|
@ -451,6 +464,7 @@ class DataStdDao: |
|
|
@classmethod |
|
|
@classmethod |
|
|
async def delete_std_dict(cls, db: AsyncSession, Id: str): |
|
|
async def delete_std_dict(cls, db: AsyncSession, Id: str): |
|
|
await db.execute(delete(DataStdDict).where(DataStdDict.onum == Id)) |
|
|
await db.execute(delete(DataStdDict).where(DataStdDict.onum == Id)) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_dict_list_all(cls, db: AsyncSession, query_object: DataStdDict): |
|
|
async def get_std_dict_list_all(cls, db: AsyncSession, query_object: DataStdDict): |
|
|
filters = [] |
|
|
filters = [] |
|
|
@ -458,6 +472,7 @@ class DataStdDao: |
|
|
filters.append(DataStdDict.data_std_no.like(f"%{query_object.data_std_no}%")) |
|
|
filters.append(DataStdDict.data_std_no.like(f"%{query_object.data_std_no}%")) |
|
|
query = select(DataStdDict).where(*filters).order_by(desc(DataStdDict.create_time)) |
|
|
query = select(DataStdDict).where(*filters).order_by(desc(DataStdDict.create_time)) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_data_dict_list_by_info(cls, db: AsyncSession, query_object: DataStdDictModel): |
|
|
async def get_data_dict_list_by_info(cls, db: AsyncSession, query_object: DataStdDictModel): |
|
|
List = ( |
|
|
List = ( |
|
|
@ -469,6 +484,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().all() |
|
|
).scalars().all() |
|
|
return List |
|
|
return List |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def update_std_dict(cls, db: AsyncSession, update_data: DataStdDictModel): |
|
|
async def update_std_dict(cls, db: AsyncSession, update_data: DataStdDictModel): |
|
|
|
|
|
|
|
|
@ -484,6 +500,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().first() |
|
|
).scalars().first() |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_data_dict_by_info(cls, db: AsyncSession, query_object: DataStdDictModel): |
|
|
async def get_data_dict_by_info(cls, db: AsyncSession, query_object: DataStdDictModel): |
|
|
List = ( |
|
|
List = ( |
|
|
@ -500,8 +517,27 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().first() |
|
|
).scalars().first() |
|
|
return List |
|
|
return List |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_data_dict_by_id(cls, db: AsyncSession, id: str): |
|
|
async def get_data_dict_by_id(cls, db: AsyncSession, id: str): |
|
|
|
|
|
List = ( |
|
|
|
|
|
await db.execute( |
|
|
|
|
|
select(DataStdMain.data_sec_lvl).select_from(DataStdMain) |
|
|
|
|
|
.join( |
|
|
|
|
|
DataStdDict, |
|
|
|
|
|
and_( |
|
|
|
|
|
DataStdDict.data_std_no == DataStdMain.data_std_no, |
|
|
|
|
|
), isouter=True |
|
|
|
|
|
) |
|
|
|
|
|
.where( |
|
|
|
|
|
DataStdDict.onum == id |
|
|
|
|
|
) |
|
|
|
|
|
) |
|
|
|
|
|
).scalars().first() |
|
|
|
|
|
return List |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
|
async def get_data_sec_lvl_by_dict_id(cls, db: AsyncSession, id: str): |
|
|
List = ( |
|
|
List = ( |
|
|
await db.execute( |
|
|
await db.execute( |
|
|
select(DataStdDict) |
|
|
select(DataStdDict) |
|
|
@ -511,6 +547,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
).scalars().first() |
|
|
).scalars().first() |
|
|
return List |
|
|
return List |
|
|
|
|
|
|
|
|
# 数据标准目录 |
|
|
# 数据标准目录 |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
@ -523,7 +560,8 @@ class DataStdDao: |
|
|
:return: 目录信息对象 |
|
|
:return: 目录信息对象 |
|
|
""" |
|
|
""" |
|
|
catalog_info = ( |
|
|
catalog_info = ( |
|
|
(await db.execute(select(DataAstContent).where(DataAstContent.content_onum == content_onum , DataAstContent.content_stat == 1))) |
|
|
(await db.execute(select(DataAstContent).where(DataAstContent.content_onum == content_onum, |
|
|
|
|
|
DataAstContent.content_stat == 1))) |
|
|
.scalars() |
|
|
.scalars() |
|
|
.first() |
|
|
.first() |
|
|
) |
|
|
) |
|
|
@ -600,7 +638,6 @@ class DataStdDao: |
|
|
db.add(db_catalog) |
|
|
db.add(db_catalog) |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 处理子关系(统一转换为 ORM 模型) |
|
|
# 处理子关系(统一转换为 ORM 模型) |
|
|
for child in catalog2.get('children', []): |
|
|
for child in catalog2.get('children', []): |
|
|
# 如果是 Pydantic 模型实例,先转换为字典 |
|
|
# 如果是 Pydantic 模型实例,先转换为字典 |
|
|
@ -620,6 +657,7 @@ class DataStdDao: |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
|
|
|
|
|
|
return db_catalog |
|
|
return db_catalog |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def edit_catalog_leaf_dao(cls, db: AsyncSession, catalog: dict): |
|
|
async def edit_catalog_leaf_dao(cls, db: AsyncSession, catalog: dict): |
|
|
""" |
|
|
""" |
|
|
@ -639,6 +677,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
await db.execute(stmt) |
|
|
await db.execute(stmt) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def edit_catalog_child_dao(cls, db: AsyncSession, catalog: dict): |
|
|
async def edit_catalog_child_dao(cls, db: AsyncSession, catalog: dict): |
|
|
""" |
|
|
""" |
|
|
@ -662,7 +701,7 @@ class DataStdDao: |
|
|
leaf_node_flag=catalog['leaf_node_flag'], |
|
|
leaf_node_flag=catalog['leaf_node_flag'], |
|
|
upd_prsn=catalog['upd_prsn'], |
|
|
upd_prsn=catalog['upd_prsn'], |
|
|
upd_time=datetime.now() |
|
|
upd_time=datetime.now() |
|
|
) ) |
|
|
)) |
|
|
|
|
|
|
|
|
await db.execute(stmt) |
|
|
await db.execute(stmt) |
|
|
|
|
|
|
|
|
@ -719,7 +758,6 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await cls.update_leaf_node_flag(db) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
@ -735,11 +773,12 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
stmt = ( |
|
|
stmt = ( |
|
|
update(DataAstContent) |
|
|
update(DataAstContent) |
|
|
.where(DataAstContent.content_onum == moved_catalog_data['content_onum'] , DataAstContent.supr_content_onum == moved_catalog_data['supr_content_onum']) |
|
|
.where(DataAstContent.content_onum == moved_catalog_data['content_onum'], |
|
|
|
|
|
DataAstContent.supr_content_onum == moved_catalog_data['supr_content_onum']) |
|
|
.values( |
|
|
.values( |
|
|
supr_content_onum=moved_catalog_data['supr_content_onum_after'], |
|
|
supr_content_onum=moved_catalog_data['supr_content_onum_after'], |
|
|
upd_time=datetime.now() |
|
|
upd_time=datetime.now() |
|
|
) ) |
|
|
)) |
|
|
|
|
|
|
|
|
await db.execute(stmt) |
|
|
await db.execute(stmt) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
@ -766,7 +805,8 @@ class DataStdDao: |
|
|
# await db.execute(stmt) |
|
|
# await db.execute(stmt) |
|
|
stmt1 = ( |
|
|
stmt1 = ( |
|
|
update(DataAstContentRela) |
|
|
update(DataAstContentRela) |
|
|
.where( DataAstContentRela.content_onum == merge_catalog_data['content_onum'] and DataAstContentRela.rela_status == 1 ) |
|
|
.where(DataAstContentRela.content_onum == merge_catalog_data[ |
|
|
|
|
|
'content_onum'] and DataAstContentRela.rela_status == 1) |
|
|
.values( |
|
|
.values( |
|
|
content_onum=merge_catalog_data['content_onum_after'], |
|
|
content_onum=merge_catalog_data['content_onum_after'], |
|
|
rela_eff_begn_date=datetime.now() |
|
|
rela_eff_begn_date=datetime.now() |
|
|
@ -776,12 +816,14 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
stmt2 = ( |
|
|
stmt2 = ( |
|
|
update(DataAstContent) |
|
|
update(DataAstContent) |
|
|
.where(DataAstContent.content_onum == merge_catalog_data['content_onum'] , DataAstContent.supr_content_onum == merge_catalog_data['supr_content_onum']) |
|
|
.where(DataAstContent.content_onum == merge_catalog_data['content_onum'], |
|
|
.values( content_stat = '0' ) |
|
|
DataAstContent.supr_content_onum == merge_catalog_data['supr_content_onum']) |
|
|
|
|
|
.values(content_stat='0') |
|
|
) |
|
|
) |
|
|
await db.execute(stmt2) |
|
|
await db.execute(stmt2) |
|
|
|
|
|
|
|
|
await cls.update_leaf_node_flag(db) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def removerel_data_ast_catalog_dao(cls, db: AsyncSession, removerel_catalog_data: dict): |
|
|
async def removerel_data_ast_catalog_dao(cls, db: AsyncSession, removerel_catalog_data: dict): |
|
|
""" |
|
|
""" |
|
|
@ -794,15 +836,15 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
stmt = ( |
|
|
stmt = ( |
|
|
update(DataAstContentRela) |
|
|
update(DataAstContentRela) |
|
|
.where(DataAstContentRela.rela_onum == removerel_catalog_data['rela_onum'] , DataAstContentRela.content_onum == removerel_catalog_data['content_onum']) |
|
|
.where(DataAstContentRela.rela_onum == removerel_catalog_data['rela_onum'], |
|
|
|
|
|
DataAstContentRela.content_onum == removerel_catalog_data['content_onum']) |
|
|
.values( |
|
|
.values( |
|
|
rela_status=removerel_catalog_data['rela_status'] |
|
|
rela_status=removerel_catalog_data['rela_status'] |
|
|
) ) |
|
|
)) |
|
|
|
|
|
|
|
|
await db.execute(stmt) |
|
|
await db.execute(stmt) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def moverel_data_ast_catalog_dao(cls, db: AsyncSession, moverel_catalog_data: dict): |
|
|
async def moverel_data_ast_catalog_dao(cls, db: AsyncSession, moverel_catalog_data: dict): |
|
|
""" |
|
|
""" |
|
|
@ -815,16 +857,19 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
stmt = ( |
|
|
stmt = ( |
|
|
update(DataAstContentRela) |
|
|
update(DataAstContentRela) |
|
|
.where(DataAstContentRela.rela_onum == moverel_catalog_data['rela_onum'] , DataAstContentRela.content_onum == moverel_catalog_data['content_onum']) |
|
|
.where(DataAstContentRela.rela_onum == moverel_catalog_data['rela_onum'], |
|
|
|
|
|
DataAstContentRela.content_onum == moverel_catalog_data['content_onum']) |
|
|
.values( |
|
|
.values( |
|
|
content_onum=moverel_catalog_data['content_onum_after'], |
|
|
content_onum=moverel_catalog_data['content_onum_after'], |
|
|
rela_eff_end_date=datetime.now() |
|
|
rela_eff_end_date=datetime.now() |
|
|
) ) |
|
|
)) |
|
|
|
|
|
|
|
|
await db.execute(stmt) |
|
|
await db.execute(stmt) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
await cls.update_leaf_node_flag(db) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_catalog_list(cls, db: AsyncSession, query_object: DataCatalogPageQueryModel, user_id: int, is_page: bool = False): |
|
|
async def get_catalog_list(cls, db: AsyncSession, query_object: DataCatalogPageQueryModel, user_id: int, |
|
|
|
|
|
is_page: bool = False): |
|
|
""" |
|
|
""" |
|
|
根据查询参数获取数据资产目录列表 |
|
|
根据查询参数获取数据资产目录列表 |
|
|
|
|
|
|
|
|
@ -834,11 +879,11 @@ class DataStdDao: |
|
|
:return: 数据资产目录分页列表 |
|
|
:return: 数据资产目录分页列表 |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 修改子查询部分 |
|
|
# 修改子查询部分 |
|
|
subquery_t1 = ( |
|
|
subquery_t1 = ( |
|
|
select(DataAstContentRela) |
|
|
select(DataAstContentRela) |
|
|
.where(DataAstContentRela.upd_prsn == query_object.upd_prsn, DataAstContentRela.content_onum == '2' and DataAstContentRela.rela_status == '1') |
|
|
.where(DataAstContentRela.upd_prsn == query_object.upd_prsn, |
|
|
|
|
|
DataAstContentRela.content_onum == '2' and DataAstContentRela.rela_status == '1') |
|
|
.union_all( |
|
|
.union_all( |
|
|
select(DataAstContentRela) |
|
|
select(DataAstContentRela) |
|
|
.where(DataAstContentRela.content_onum != '2' and DataAstContentRela.rela_status == '1') |
|
|
.where(DataAstContentRela.content_onum != '2' and DataAstContentRela.rela_status == '1') |
|
|
@ -881,7 +926,8 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
return data_ast_list |
|
|
return data_ast_list |
|
|
#------------------------------------------------------------数据标准(658行)------------------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
# ------------------------------------------------------------数据标准(658行)------------------------------------------------------------------------------------------------- |
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False): |
|
|
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False): |
|
|
filters = [] |
|
|
filters = [] |
|
|
@ -942,6 +988,7 @@ class DataStdDao: |
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
) |
|
|
) |
|
|
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_list_all(cls, db: AsyncSession, query_object: DataStdMainModel): |
|
|
async def get_std_main_list_all(cls, db: AsyncSession, query_object: DataStdMainModel): |
|
|
filters = [] |
|
|
filters = [] |
|
|
@ -993,27 +1040,32 @@ class DataStdDao: |
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
) |
|
|
) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel): |
|
|
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel): |
|
|
col = DataStdMain(**model.model_dump()) |
|
|
col = DataStdMain(**model.model_dump()) |
|
|
db.add(col) |
|
|
db.add(col) |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_main_appr(cls, db: AsyncSession, model: DataStdMainApprModel): |
|
|
async def add_std_main_appr(cls, db: AsyncSession, model: DataStdMainApprModel): |
|
|
col = DataStdMainAppr(**model.model_dump()) |
|
|
col = DataStdMainAppr(**model.model_dump()) |
|
|
db.add(col) |
|
|
db.add(col) |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def add_std_dict_appr(cls, db: AsyncSession, model: DataStdDictApprModel): |
|
|
async def add_std_dict_appr(cls, db: AsyncSession, model: DataStdDictApprModel): |
|
|
col = DataStdDictAppr(**model.model_dump()) |
|
|
col = DataStdDictAppr(**model.model_dump()) |
|
|
db.add(col) |
|
|
db.add(col) |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
return col |
|
|
return col |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def delete_std_main(cls, db: AsyncSession, Id: str): |
|
|
async def delete_std_main(cls, db: AsyncSession, Id: str): |
|
|
await db.execute(delete(DataStdMain).where(DataStdMain.onum == Id)) |
|
|
await db.execute(delete(DataStdMain).where(DataStdMain.onum == Id)) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def delete_std_dict_appr(cls, db: AsyncSession, Id: str): |
|
|
async def delete_std_dict_appr(cls, db: AsyncSession, Id: str): |
|
|
await db.execute(delete(DataStdDictAppr).where(DataStdDictAppr.onum == Id)) |
|
|
await db.execute(delete(DataStdDictAppr).where(DataStdDictAppr.onum == Id)) |
|
|
@ -1023,6 +1075,7 @@ class DataStdDao: |
|
|
update_dict = update_data.model_dump(exclude_unset=True) |
|
|
update_dict = update_data.model_dump(exclude_unset=True) |
|
|
await db.execute(update(DataStdMain), [update_dict]) |
|
|
await db.execute(update(DataStdMain), [update_dict]) |
|
|
await db.flush() |
|
|
await db.flush() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def update_std_dict_appr(cls, db: AsyncSession, update_data: DataStdDictApprModel): |
|
|
async def update_std_dict_appr(cls, db: AsyncSession, update_data: DataStdDictApprModel): |
|
|
update_dict = update_data.model_dump(exclude_unset=True) |
|
|
update_dict = update_data.model_dump(exclude_unset=True) |
|
|
@ -1048,6 +1101,7 @@ class DataStdDao: |
|
|
) |
|
|
) |
|
|
) |
|
|
) |
|
|
return col.scalars().first() |
|
|
return col.scalars().first() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_appr_list_all(cls, db: AsyncSession, query_object: DataStdMainApprModel): |
|
|
async def get_std_main_appr_list_all(cls, db: AsyncSession, query_object: DataStdMainApprModel): |
|
|
filters = [] |
|
|
filters = [] |
|
|
@ -1070,13 +1124,14 @@ class DataStdDao: |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_main_appr_list(cls, flowId:str,db: AsyncSession): |
|
|
async def get_std_main_appr_list(cls, flowId: str, db: AsyncSession): |
|
|
filters = [] |
|
|
filters = [] |
|
|
filters.append(DataStdMainAppr.flowId == flowId) |
|
|
filters.append(DataStdMainAppr.flowId == flowId) |
|
|
query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time)) |
|
|
query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time)) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_dict_appr_list(cls, flowId:str,db: AsyncSession): |
|
|
async def get_std_dict_appr_list(cls, flowId: str, db: AsyncSession): |
|
|
filters = [] |
|
|
filters = [] |
|
|
filters.append(DataStdDictAppr.flowId == flowId) |
|
|
filters.append(DataStdDictAppr.flowId == flowId) |
|
|
query = select(DataStdDictAppr).where(*filters).order_by(desc(DataStdDictAppr.create_time)) |
|
|
query = select(DataStdDictAppr).where(*filters).order_by(desc(DataStdDictAppr.create_time)) |
|
|
@ -1086,12 +1141,14 @@ class DataStdDao: |
|
|
async def get_std_main_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
async def get_std_main_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
col = await db.execute(select(DataStdMainAppr).where(DataStdMainAppr.onum == Id)) |
|
|
col = await db.execute(select(DataStdMainAppr).where(DataStdMainAppr.onum == Id)) |
|
|
return col.scalars().first() |
|
|
return col.scalars().first() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_std_dict_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
async def get_std_dict_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
col = await db.execute(select(DataStdDictAppr).where(DataStdDictAppr.onum == Id)) |
|
|
col = await db.execute(select(DataStdDictAppr).where(DataStdDictAppr.onum == Id)) |
|
|
return col.scalars().first() |
|
|
return col.scalars().first() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_last_std_main_appr_by_id(cls,db: AsyncSession, Id: str ): |
|
|
async def get_last_std_main_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
result = await db.execute( |
|
|
result = await db.execute( |
|
|
select(DataStdMainAppr) |
|
|
select(DataStdMainAppr) |
|
|
.where( |
|
|
.where( |
|
|
@ -1102,8 +1159,9 @@ class DataStdDao: |
|
|
.limit(1) |
|
|
.limit(1) |
|
|
) |
|
|
) |
|
|
return result.scalar_one_or_none() |
|
|
return result.scalar_one_or_none() |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def get_last_std_dict_appr_by_id(cls,db: AsyncSession, Id: str ): |
|
|
async def get_last_std_dict_appr_by_id(cls, db: AsyncSession, Id: str): |
|
|
result = await db.execute( |
|
|
result = await db.execute( |
|
|
select(DataStdDictAppr) |
|
|
select(DataStdDictAppr) |
|
|
.where( |
|
|
.where( |
|
|
@ -1153,6 +1211,7 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
return approval # 或 return approval is not None |
|
|
return approval # 或 return approval is not None |
|
|
|
|
|
|
|
|
@classmethod |
|
|
@classmethod |
|
|
async def check_std_dict_waiting(cls, oldInstId: str, db: AsyncSession): |
|
|
async def check_std_dict_waiting(cls, oldInstId: str, db: AsyncSession): |
|
|
""" |
|
|
""" |
|
|
@ -1185,5 +1244,3 @@ class DataStdDao: |
|
|
|
|
|
|
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
return approval # 或 return approval is not None |
|
|
return approval # 或 return approval is not None |
|
|
|
|
|
|
|
|
|
|
|
|