# @description: # @author: licanglong # @date: 2025/12/22 20:16 from sqlalchemy import select from sqlalchemy.orm import Session from app.models.dto import InvoicePurchaseDetailDTO, InvoicePurchaseDetailList from app.models.entity import InvoicePurchaseDetail class InvoiceRepository: def __init__(self, session: Session): self.session = session def list_by_taxid(self, tax_id: str) -> InvoicePurchaseDetailList: stmt = select(InvoicePurchaseDetail).where(InvoicePurchaseDetail.tax_id == tax_id).limit(10) stmt_result = self.session.scalars(stmt).all() return InvoicePurchaseDetailList( invoice_purchase_details=[ InvoicePurchaseDetailDTO.model_validate(record) for record in stmt_result ] ) def list_by_params(self, tax_id: str = None, hwmc: str = None) -> InvoicePurchaseDetailList: conditions = [] if tax_id: conditions.append(InvoicePurchaseDetail.tax_id == tax_id) if hwmc: conditions.append(InvoicePurchaseDetail.hwmc.like(f"%{hwmc}%")) stmt = select(InvoicePurchaseDetail) if conditions: stmt = stmt.where(*conditions) stmt = stmt.limit(10) stmt_result = self.session.scalars(stmt).all() return InvoicePurchaseDetailList( invoice_purchase_details=[ InvoicePurchaseDetailDTO.model_validate(record) for record in stmt_result ] )