bus_data_query.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from typing import List, Tuple, Any, Optional, Dict
  2. from foundation.observability.logger.loggering import server_logger
  3. from foundation.utils.common import handler_err
  4. from foundation.database.base.sql.async_mysql_base_dao import AsyncBaseDAO
  5. class BasisOfPreparationDAO(AsyncBaseDAO):
  6. """异步编制依据 对象"""
  7. async def get_info_by_id(self, id: int) -> Optional[Dict]:
  8. """根据ID获取编制依据"""
  9. query = "SELECT * FROM t_basis_of_preparation WHERE id = %s"
  10. return await self.fetch_one(query, (id,))
  11. async def get_list(self) -> List[Dict]:
  12. """获取所有编制依据"""
  13. query = "SELECT * FROM t_basis_of_preparation WHERE status = 'current' ORDER BY created_at DESC"
  14. return await self.fetch_all(query)
  15. async def get_info_by_condition(self, conditions: Dict) -> List[Dict]:
  16. """根据条件查询编制依据"""
  17. if not conditions:
  18. return await self.get_list()
  19. try:
  20. where_clause = " AND ".join([f"{field} = %s" for field in conditions.keys()])
  21. where_values = list(conditions.values())
  22. query = f"SELECT * FROM t_basis_of_preparation WHERE {where_clause} AND status = 'current' ORDER BY created_at DESC"
  23. return await self.fetch_all(query, tuple(where_values))
  24. except Exception as err:
  25. handler_err(logger=server_logger, err=err, err_name="条件查询失败")
  26. raise