Procházet zdrojové kódy

fix(expense): 修复 detailinfo_query_service 中 Python 变量作用域导致的 UnboundLocalError

- InstitutionCRUD 和 select 的条件导入改为独立别名避免作用域混淆
- 确保所有局部导入在各自使用的作用域内定义
alphah před 2 týdny
rodič
revize
bcc55ea4bc

+ 10 - 8
backend/app/plugin/module_payment/expense/institution/service.py

@@ -544,11 +544,11 @@ class InstitutionService:
         """
         result_dict = None
         if not enterprise_id:
-            from .crud import InstitutionCRUD
-            inst_crud = InstitutionCRUD(auth)
-            local_inst = await inst_crud.get(institution_id=institution_id)
-            if local_inst and local_inst.enterprise_id:
-                enterprise_id = local_inst.enterprise_id
+            from .crud import InstitutionCRUD as _InstitutionCRUD
+            _inst_crud = _InstitutionCRUD(auth)
+            _local_inst = await _inst_crud.get(institution_id=institution_id)
+            if _local_inst and _local_inst.enterprise_id:
+                enterprise_id = _local_inst.enterprise_id
         try:
             model = AlipayEbppInvoiceInstitutionDetailinfoQueryModel()
             model.institution_id = institution_id
@@ -592,8 +592,9 @@ class InstitutionService:
         # 合并本地DB的自定义字段(支付宝不包含的字段)
         # 无条件覆盖,保证前端有数据
         try:
-            crud = InstitutionCRUD(auth)
-            local_obj = await crud.get(institution_id=institution_id, enterprise_id=enterprise_id)
+            from .crud import InstitutionCRUD as _crud_cls
+            _crud = _crud_cls(auth)
+            local_obj = await _crud.get(institution_id=institution_id, enterprise_id=enterprise_id)
             if local_obj:
                 local_dict = InstitutionListOutSchema.model_validate(local_obj).model_dump()
                 for field in ("applicable_scope", "grant_mode", "period_type", "amount",
@@ -609,8 +610,9 @@ class InstitutionService:
 
         # 从收入额度记录(quota records)获取员工ID列表
         if not result_dict.get("employee_ids"):
+            from sqlalchemy import select as _select
             from app.plugin.module_payment.expense.quota.model import QuotaModel
-            quota_stmt = select(QuotaModel).where(
+            quota_stmt = _select(QuotaModel).where(
                 QuotaModel.institution_id == institution_id,
                 QuotaModel.employee_id.isnot(None),
                 QuotaModel.employee_id != "",