|
|
@ -7,6 +7,7 @@ from utils.page_util import PageUtil |
|
|
|
from sqlalchemy.orm import aliased |
|
|
|
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogChild |
|
|
|
from datetime import datetime |
|
|
|
from module_admin.entity.do.approval_do import FlowApproval, FlowConfig |
|
|
|
|
|
|
|
|
|
|
|
class DataStdDao: |
|
|
@ -1010,36 +1011,67 @@ class DataStdDao: |
|
|
|
|
|
|
|
@classmethod |
|
|
|
async def check_std_main_waiting(cls, oldInstId: str, db: AsyncSession): |
|
|
|
filters = [ |
|
|
|
DataStdMainAppr.oldInstId == oldInstId, |
|
|
|
or_( |
|
|
|
DataStdMainAppr.approStatus == "waiting", |
|
|
|
DataStdMainAppr.approStatus == "pending" |
|
|
|
) |
|
|
|
] |
|
|
|
|
|
|
|
""" |
|
|
|
检查 std_main_appr 的第一条记录是否存在待审批状态(pending 或 waiting) |
|
|
|
""" |
|
|
|
# 1. 查询 DataStdMainAppr 中的所有记录(按时间倒序) |
|
|
|
query = ( |
|
|
|
select(DataStdMainAppr) |
|
|
|
.where(*filters) |
|
|
|
.where(DataStdMainAppr.oldInstId == oldInstId) |
|
|
|
.order_by(desc(DataStdMainAppr.create_time)) |
|
|
|
) |
|
|
|
|
|
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
@classmethod |
|
|
|
async def check_std_dict_waiting(cls, oldInstId: str, db: AsyncSession): |
|
|
|
filters = [ |
|
|
|
DataStdDictAppr.oldInstId == oldInstId, |
|
|
|
or_( |
|
|
|
DataStdDictAppr.approStatus == "waiting", |
|
|
|
DataStdDictAppr.approStatus == "pending" |
|
|
|
result = await db.execute(query) |
|
|
|
first_record = result.scalars().first() |
|
|
|
|
|
|
|
if not first_record: |
|
|
|
return None # 或 raise 自定义异常,例如“未找到审批记录” |
|
|
|
|
|
|
|
# 2. 获取 instid,去 FlowApproval 中查询是否存在 pending 或 waiting 状态 |
|
|
|
instid = first_record.flowId |
|
|
|
|
|
|
|
approval_query = ( |
|
|
|
select(FlowApproval) |
|
|
|
.where( |
|
|
|
FlowApproval.businessId == instid, |
|
|
|
FlowApproval.status.in_(["pending", "waiting"]) |
|
|
|
) |
|
|
|
] |
|
|
|
) |
|
|
|
approval_result = await db.execute(approval_query) |
|
|
|
approval = approval_result.scalars().first() |
|
|
|
|
|
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
|
return approval # 或 return approval is not None |
|
|
|
@classmethod |
|
|
|
async def check_std_dict_waiting(cls, oldInstId: str, db: AsyncSession): |
|
|
|
""" |
|
|
|
检查 std_main_appr 的第一条记录是否存在待审批状态(pending 或 waiting) |
|
|
|
""" |
|
|
|
# 1. 查询 DataStdDictAppr 中的所有记录(按时间倒序) |
|
|
|
query = ( |
|
|
|
select(DataStdDictAppr) |
|
|
|
.where(*filters) |
|
|
|
.where(DataStdDictAppr.oldInstId == oldInstId) |
|
|
|
.order_by(desc(DataStdDictAppr.create_time)) |
|
|
|
) |
|
|
|
result = await db.execute(query) |
|
|
|
first_record = result.scalars().first() |
|
|
|
|
|
|
|
if not first_record: |
|
|
|
return None # 或 raise 自定义异常,例如“未找到审批记录” |
|
|
|
|
|
|
|
# 2. 获取 instid,去 FlowApproval 中查询是否存在 pending 或 waiting 状态 |
|
|
|
instid = first_record.flowId |
|
|
|
|
|
|
|
approval_query = ( |
|
|
|
select(FlowApproval) |
|
|
|
.where( |
|
|
|
FlowApproval.businessId == instid, |
|
|
|
FlowApproval.status.in_(["pending", "waiting"]) |
|
|
|
) |
|
|
|
) |
|
|
|
approval_result = await db.execute(approval_query) |
|
|
|
approval = approval_result.scalars().first() |
|
|
|
|
|
|
|
# 返回 FlowApproval 对象或布尔值 |
|
|
|
return approval # 或 return approval is not None |
|
|
|
|
|
|
|
return await PageUtil.paginate(db, query, 0, 0, False) |
|
|
|
|