|
|
@ -1004,65 +1004,87 @@ class DataStdDao: |
|
|
|
# ------------------------------------------------------------数据标准(658行)------------------------------------------------------------------------------------------------- |
|
|
|
@classmethod |
|
|
|
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False): |
|
|
|
filters = [] |
|
|
|
if query_object.data_std_cn_name: |
|
|
|
filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%")) |
|
|
|
if query_object.data_std_eng_name: |
|
|
|
filters.append( |
|
|
|
or_( |
|
|
|
DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"), |
|
|
|
DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%") |
|
|
|
) |
|
|
|
) |
|
|
|
if query_object.data_std_busi_defn: |
|
|
|
filters.append(DataStdMain.data_std_busi_defn.like(f"%{query_object.data_std_busi_defn}%")) |
|
|
|
if query_object.data_std_no: |
|
|
|
filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%")) |
|
|
|
if query_object.src_sys: |
|
|
|
filters.append(DataStdMain.src_sys == query_object.src_sys) |
|
|
|
if query_object.data_std_type: |
|
|
|
filters.append(DataStdMain.data_std_type == query_object.data_std_type) |
|
|
|
if query_object.std_status: |
|
|
|
filters.append(DataStdMain.std_status == query_object.std_status) |
|
|
|
if query_object.belt_data_std_content: |
|
|
|
filters.append(DataStdMain.belt_data_std_content == query_object.belt_data_std_content) |
|
|
|
|
|
|
|
query = ( |
|
|
|
select( |
|
|
|
DataStdMain.onum, |
|
|
|
DataStdMain.create_by, |
|
|
|
DataStdMain.create_time, |
|
|
|
DataStdMain.upd_prsn, |
|
|
|
DataStdMain.upd_time, |
|
|
|
DataStdMain.data_std_no, |
|
|
|
DataStdMain.data_std_eng_name, |
|
|
|
DataStdMain.data_std_cn_name, |
|
|
|
DataStdMain.data_std_type, |
|
|
|
DataStdMain.data_sec_lvl, |
|
|
|
DataStdMain.src_sys, |
|
|
|
DataStdMain.data_std_vest, |
|
|
|
DataStdMain.data_std_busi_defn, |
|
|
|
DataStdMain.cd_id, |
|
|
|
DataStdMain.std_status, |
|
|
|
DataStdMain.data_std_busi_ownership_dept, |
|
|
|
DataStdMain.data_std_it_ownership_dept, |
|
|
|
DataStdMain.data_std_busi_ownership_prsn, |
|
|
|
DataStdMain.data_std_it_ownership_prsn, |
|
|
|
DataStdMain.belt_data_std_content, |
|
|
|
DataStdMain.data_std_src, |
|
|
|
DataStdMain.data_clas, |
|
|
|
DataStdMain.typical_fld, |
|
|
|
DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no |
|
|
|
) |
|
|
|
.outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据 |
|
|
|
DataStdCode, |
|
|
|
DataStdMain.cd_id == DataStdCode.onum |
|
|
|
) |
|
|
|
.where(*filters) |
|
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
|
) |
|
|
|
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
|
|
|
|
|
filters = [] |
|
|
|
|
|
|
|
if query_object.data_std_cn_name: |
|
|
|
filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%")) |
|
|
|
if query_object.data_std_eng_name: |
|
|
|
filters.append( |
|
|
|
or_( |
|
|
|
DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"), |
|
|
|
DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%") |
|
|
|
) |
|
|
|
) |
|
|
|
if query_object.data_std_busi_defn: |
|
|
|
filters.append(DataStdMain.data_std_busi_defn.like(f"%{query_object.data_std_busi_defn}%")) |
|
|
|
if query_object.data_std_no: |
|
|
|
filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%")) |
|
|
|
if query_object.src_sys: |
|
|
|
filters.append(DataStdMain.src_sys == query_object.src_sys) |
|
|
|
if query_object.data_std_type: |
|
|
|
filters.append(DataStdMain.data_std_type == query_object.data_std_type) |
|
|
|
if query_object.std_status: |
|
|
|
filters.append(DataStdMain.std_status == query_object.std_status) |
|
|
|
|
|
|
|
# === 新增:目录过滤 === |
|
|
|
if query_object.belt_data_std_content: |
|
|
|
# 定义递归CTE |
|
|
|
content_alias = aliased(DataAstContent) # 假设SQLAlchemy模型叫 DataStdContent |
|
|
|
cte = ( |
|
|
|
select(DataAstContent.content_onum) |
|
|
|
.where(DataAstContent.content_onum == query_object.belt_data_std_content) |
|
|
|
.cte(name="content_cte", recursive=True) |
|
|
|
) |
|
|
|
|
|
|
|
cte = cte.union_all( |
|
|
|
select(content_alias.content_onum) |
|
|
|
.where(content_alias.supr_content_onum == cte.c.content_onum) |
|
|
|
) |
|
|
|
# 只取叶子节点 |
|
|
|
filters.append( |
|
|
|
DataStdMain.belt_data_std_content.in_( |
|
|
|
select(DataAstContent.content_onum) |
|
|
|
.where(DataAstContent.content_onum == cte.c.content_onum) |
|
|
|
) |
|
|
|
) |
|
|
|
# === 查询 === |
|
|
|
query = ( |
|
|
|
select( |
|
|
|
DataStdMain.onum, |
|
|
|
DataStdMain.create_by, |
|
|
|
DataStdMain.create_time, |
|
|
|
DataStdMain.upd_prsn, |
|
|
|
DataStdMain.upd_time, |
|
|
|
DataStdMain.data_std_no, |
|
|
|
DataStdMain.data_std_eng_name, |
|
|
|
DataStdMain.data_std_cn_name, |
|
|
|
DataStdMain.data_std_type, |
|
|
|
DataStdMain.data_sec_lvl, |
|
|
|
DataStdMain.src_sys, |
|
|
|
DataStdMain.data_std_vest, |
|
|
|
DataStdMain.data_std_busi_defn, |
|
|
|
DataStdMain.cd_id, |
|
|
|
DataStdMain.std_status, |
|
|
|
DataStdMain.data_std_busi_ownership_dept, |
|
|
|
DataStdMain.data_std_it_ownership_dept, |
|
|
|
DataStdMain.data_std_busi_ownership_prsn, |
|
|
|
DataStdMain.data_std_it_ownership_prsn, |
|
|
|
DataStdMain.belt_data_std_content, |
|
|
|
DataStdMain.data_std_src, |
|
|
|
DataStdMain.data_clas, |
|
|
|
DataStdMain.typical_fld, |
|
|
|
DataStdCode.cd_no.label("cd_no") |
|
|
|
) |
|
|
|
.outerjoin( |
|
|
|
DataStdCode, |
|
|
|
DataStdMain.cd_id == DataStdCode.onum |
|
|
|
) |
|
|
|
.where(*filters) |
|
|
|
.order_by(desc(DataStdMain.create_time)) |
|
|
|
) |
|
|
|
|
|
|
|
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
|
|
|
|
|
@classmethod |
|
|
|
async def get_std_main_list_all(cls, db: AsyncSession, query_object: DataStdMainModel): |
|
|
|
filters = [] |
|
|
|