invoice_repo.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # @description:
  2. # @author: licanglong
  3. # @date: 2025/12/22 20:16
  4. from sqlalchemy import select
  5. from sqlalchemy.orm import Session
  6. from app.models.dto import InvoicePurchaseDetailDTO, InvoicePurchaseDetailList
  7. from app.models.entity import InvoicePurchaseDetail
  8. class InvoiceRepository:
  9. def __init__(self, session: Session):
  10. self.session = session
  11. def list_by_taxid(self, tax_id: str) -> InvoicePurchaseDetailList:
  12. stmt = select(InvoicePurchaseDetail).where(InvoicePurchaseDetail.tax_id == tax_id).limit(10)
  13. stmt_result = self.session.scalars(stmt).all()
  14. return InvoicePurchaseDetailList(
  15. invoice_purchase_details=[
  16. InvoicePurchaseDetailDTO.model_validate(record)
  17. for record in stmt_result
  18. ]
  19. )
  20. def list_by_params(self, tax_id: str = None, hwmc: str = None) -> InvoicePurchaseDetailList:
  21. conditions = []
  22. if tax_id:
  23. conditions.append(InvoicePurchaseDetail.tax_id == tax_id)
  24. if hwmc:
  25. conditions.append(InvoicePurchaseDetail.hwmc.like(f"%{hwmc}%"))
  26. stmt = select(InvoicePurchaseDetail)
  27. if conditions:
  28. stmt = stmt.where(*conditions)
  29. stmt = stmt.limit(10)
  30. stmt_result = self.session.scalars(stmt).all()
  31. return InvoicePurchaseDetailList(
  32. invoice_purchase_details=[
  33. InvoicePurchaseDetailDTO.model_validate(record)
  34. for record in stmt_result
  35. ]
  36. )