修复:返回使用后的余量与状态

This commit is contained in:
焦龙言
2026-07-27 06:27:29 +08:00
parent d0fa20afe8
commit e5006c6e43
4 changed files with 184 additions and 18 deletions
@@ -26,6 +26,7 @@ from module_business.entity.vo.operation_vo import (
UsageCreateModel,
UsageModel,
UsagePageQueryModel,
UsageSuccessResponseModel,
)
from module_business.service.access_service import AccessService
@@ -127,8 +128,20 @@ class UsageService:
return usage.idempotency_key == page_object.idempotency_key and usage.request_hash == request_hash
@staticmethod
def _success(usage_id: int) -> CrudResponseModel:
return CrudResponseModel(is_success=True, message='使用成功', result=usage_id)
def _success(usage: BizUsageRecord) -> CrudResponseModel:
remaining_packages = usage.remaining_packages_after
flow_state = (
PalletFlowState.AT_SITE_EMPTY if remaining_packages == 0 else PalletFlowState.AT_SITE_PARTIAL
)
return CrudResponseModel(
is_success=True,
message='使用成功',
result=UsageSuccessResponseModel(
usage_id=usage.usage_id,
remaining_packages=remaining_packages,
flow_state=flow_state,
),
)
@classmethod
async def _lock_and_reauthorize_usage_site(
@@ -181,7 +194,7 @@ class UsageService:
recovered.site_id,
current_user,
)
return cls._success(recovered.usage_id)
return cls._success(recovered)
finally:
await query_db.rollback()
@@ -355,9 +368,9 @@ class UsageService:
existing.site_id,
current_user,
)
usage_id = existing.usage_id
result = cls._success(existing)
await query_db.rollback()
return cls._success(usage_id)
return result
scanned_pallet = await InventoryDao.get_pallet_by_qr_token(
query_db,
@@ -413,9 +426,9 @@ class UsageService:
locked_existing.site_id,
current_user,
)
usage_id = locked_existing.usage_id
result = cls._success(locked_existing)
await query_db.rollback()
return cls._success(usage_id)
return result
if inventory.active_filling_id is None:
raise ServiceException(message='托盘不存在活动装填周期')
@@ -495,6 +508,7 @@ class UsageService:
)
usage = await OperationDao.add_usage_record(query_db, usage)
usage_id = usage.usage_id
result = cls._success(usage)
before_state = inventory.flow_state
before_warehouse_id = inventory.warehouse_id
@@ -535,7 +549,7 @@ class UsageService:
)
await InventoryDao.add_event(query_db, inventory, event)
await query_db.commit()
return cls._success(usage_id)
return result
except IntegrityError:
await query_db.rollback()
if expected_site_id is None: