Files
shanxia2.0/backend/app/schemas/db/weighing.py
T
2026-10-02 09:28:00 +08:00

110 lines
6.1 KiB
Python

from typing import Optional
from pydantic import BaseModel, Field
class WeighingSlipBase(BaseModel):
vehicle_no: str = Field(max_length=255, alias="vehicleNo")
plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
product_id: Optional[str] = Field(default=None, alias="productId")
cargo_name: str = Field(max_length=255, alias="cargoName")
specification: Optional[str] = Field(default=None, max_length=255)
business_type: str = Field(max_length=255, alias="businessType")
batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo")
supplier: str = Field(max_length=255)
consignee: str = Field(max_length=255)
gross_weight: float = Field(alias="grossWeight")
gross_weight_time: str = Field(max_length=255, alias="grossWeightTime")
tare_weight: float = Field(alias="tareWeight")
tare_weight_time: str = Field(max_length=255, alias="tareWeightTime")
deduction: Optional[float] = Field(default=0)
net_weight: float = Field(alias="netWeight")
planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity")
executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity")
purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId")
inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId")
weighing_point: Optional[str] = Field(default="山峡地磅", max_length=255, alias="weighingPoint")
remarks: Optional[str] = Field(default=None)
current_quantity: Optional[float] = Field(default=None, alias="currentQuantity")
model_config = {"from_attributes": True, "populate_by_name": True}
class WeighingSlipCreate(BaseModel):
vehicle_no: str = Field(max_length=255, alias="vehicleNo")
plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
product_id: str = Field(alias="productId")
business_type: str = Field(max_length=255, alias="businessType")
batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo")
supplier: str = Field(max_length=255)
consignee: str = Field(max_length=255)
gross_weight: float = Field(default=0, alias="grossWeight")
gross_weight_time: str = Field(default="", max_length=255, alias="grossWeightTime")
tare_weight: float = Field(default=0, alias="tareWeight")
tare_weight_time: str = Field(default="", max_length=255, alias="tareWeightTime")
deduction: Optional[float] = Field(default=0)
net_weight: float = Field(default=0, alias="netWeight")
planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity")
executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity")
purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId")
inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId")
weighing_point: Optional[str] = Field(default="山峡地磅", max_length=255, alias="weighingPoint")
remarks: Optional[str] = Field(default=None)
current_quantity: Optional[float] = Field(default=None, alias="currentQuantity")
model_config = {"populate_by_name": True}
class WeighingSlipUpdate(BaseModel):
vehicle_no: Optional[str] = Field(default=None, max_length=255, alias="vehicleNo")
plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
product_id: Optional[str] = Field(default=None, alias="productId")
cargo_name: Optional[str] = Field(default=None, max_length=255, alias="cargoName")
specification: Optional[str] = Field(default=None, max_length=255)
business_type: Optional[str] = Field(default=None, max_length=255, alias="businessType")
batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo")
supplier: Optional[str] = Field(default=None, max_length=255)
consignee: Optional[str] = Field(default=None, max_length=255)
gross_weight: Optional[float] = Field(default=None, alias="grossWeight")
gross_weight_time: Optional[str] = Field(default=None, max_length=255, alias="grossWeightTime")
tare_weight: Optional[float] = Field(default=None, alias="tareWeight")
tare_weight_time: Optional[str] = Field(default=None, max_length=255, alias="tareWeightTime")
deduction: Optional[float] = Field(default=None)
net_weight: Optional[float] = Field(default=None, alias="netWeight")
planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity")
executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity")
purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId")
inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId")
weighing_point: Optional[str] = Field(default=None, max_length=255, alias="weighingPoint")
remarks: Optional[str] = Field(default=None)
current_quantity: Optional[float] = Field(default=None, alias="currentQuantity")
is_voided: Optional[int] = Field(default=None, alias="isVoided")
void_reason: Optional[str] = Field(default=None, alias="voidReason")
void_time: Optional[str] = Field(default=None, alias="voidTime")
void_by: Optional[str] = Field(default=None, alias="voidBy")
model_config = {"populate_by_name": True}
class WeighingSlipRead(WeighingSlipBase):
id: str
is_voided: int = Field(default=0, alias="isVoided")
void_reason: Optional[str] = Field(default=None, alias="voidReason")
void_time: Optional[str] = Field(default=None, alias="voidTime")
void_by: Optional[str] = Field(default=None, alias="voidBy")
created_at: str = Field(alias="createdAt")
create_by: Optional[str] = Field(default=None, alias="createBy")
create_by_name: Optional[str] = Field(default=None, alias="createByName")
inventory_date: Optional[str] = Field(default=None, alias="inventoryDate")
class WeighingSlipListResponse(BaseModel):
"""小程序分页列表;管理端未传 page/pageSize 时仍返回数组。"""
items: list[WeighingSlipRead]
total: int
page: int
page_size: int = Field(..., alias="pageSize")
model_config = {"populate_by_name": True}