功能:实现客户现场使用记录

This commit is contained in:
焦龙言
2026-07-26 21:14:01 +08:00
parent 3076194328
commit bc774c74e6
7 changed files with 1968 additions and 14 deletions
@@ -69,6 +69,15 @@ class OperationDao:
scoped_warehouse_ids = sorted(set(warehouse_ids))
return [BizFillingRecord.warehouse_id.in_(scoped_warehouse_ids) if scoped_warehouse_ids else false()]
@staticmethod
def _usage_scope_conditions(
site_ids: list[int] | None,
) -> list[ColumnElement[bool]]:
if site_ids is None:
return []
scoped_site_ids = sorted(set(site_ids))
return [BizUsageRecord.site_id.in_(scoped_site_ids) if scoped_site_ids else false()]
@staticmethod
def _shipment_scope_conditions(
warehouse_ids: list[int] | None,
@@ -363,12 +372,14 @@ class OperationDao:
cls,
db: AsyncSession,
idempotency_key: str,
site_ids: list[int] | None = None,
) -> BizUsageRecord | None:
return await cls._get_by_key(
db,
BizUsageRecord,
BizUsageRecord.idempotency_key,
idempotency_key,
*cls._usage_scope_conditions(site_ids),
)
@classmethod
@@ -651,8 +662,9 @@ class OperationDao:
db: AsyncSession,
query_object: UsagePageQueryModel,
is_page: bool = True,
site_ids: list[int] | None = None,
) -> PageModel | list[dict[str, Any]]:
conditions = []
conditions = cls._usage_scope_conditions(site_ids)
if query_object.usage_no:
conditions.append(BizUsageRecord.usage_no.like(f'%{query_object.usage_no}%'))
if query_object.site_id:
@@ -682,12 +694,14 @@ class OperationDao:
cls,
db: AsyncSession,
usage_id: int,
site_ids: list[int] | None = None,
) -> BizUsageRecord | None:
return await cls._get_by_id(
db,
BizUsageRecord,
BizUsageRecord.usage_id,
usage_id,
*cls._usage_scope_conditions(site_ids),
)
@classmethod