Files
shanxia2.0/backend/app/schemas/pl/vehicle_urea.py
T
2026-06-29 11:15:39 +08:00

151 lines
5.5 KiB
Python

"""车辆尿素 Schema"""
from datetime import date, datetime
from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, Field, field_validator
class VehicleUreaApplyCreate(BaseModel):
license_plate: str = Field(..., alias="licensePlate")
applicant_id: Optional[str] = Field(default=None, alias="applicantId")
apply_date: date = Field(..., alias="applyDate")
warehouse_in_date: date = Field(..., alias="warehouseInDate")
unit: str = Field(default="吨桶")
quantity: Decimal
apply_amount: Decimal = Field(..., alias="applyAmount")
attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls")
remark: Optional[str] = None
model_config = {"populate_by_name": True}
@field_validator("quantity")
@classmethod
def validate_quantity(cls, v: Decimal) -> Decimal:
if v is None or v <= 0:
raise ValueError("入库数须大于 0")
return v
@field_validator("apply_amount")
@classmethod
def validate_apply_amount(cls, v: Decimal) -> Decimal:
if v is None or v <= 0:
raise ValueError("申请金额须大于 0")
return v
class VehicleUreaApplyUpdate(VehicleUreaApplyCreate):
pass
class VehicleUreaApplyRead(BaseModel):
id: str
apply_no: str = Field(..., alias="applyNo")
license_plate: str = Field(..., alias="licensePlate")
applicant_id: str = Field(..., alias="applicantId")
applicant_name: Optional[str] = Field(default=None, alias="applicantName")
apply_date: date = Field(..., alias="applyDate")
warehouse_in_date: date = Field(..., alias="warehouseInDate")
unit: str
quantity: Decimal
apply_amount: Decimal = Field(..., alias="applyAmount")
attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls")
status: str
remark: Optional[str] = None
create_time: Optional[datetime] = Field(default=None, alias="createTime")
update_time: Optional[datetime] = Field(default=None, alias="updateTime")
model_config = {"populate_by_name": True}
class VehicleUreaApplyListResponse(BaseModel):
items: list[VehicleUreaApplyRead]
total: int
page: int
page_size: int = Field(..., alias="pageSize")
model_config = {"populate_by_name": True}
class VehicleUreaDisburseCreate(BaseModel):
apply_id: Optional[str] = Field(default=None, alias="applyId")
license_plate: Optional[str] = Field(default=None, alias="licensePlate")
amount: Decimal
handler_id: Optional[str] = Field(default=None, alias="handlerId")
disburse_date: date = Field(..., alias="disburseDate")
attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls")
remark: Optional[str] = None
model_config = {"populate_by_name": True}
@field_validator("amount")
@classmethod
def validate_amount(cls, v: Decimal) -> Decimal:
if v is None or v <= 0:
raise ValueError("发放金额须大于 0")
return v
class VehicleUreaDisburseUpdate(VehicleUreaDisburseCreate):
pass
class VehicleUreaDisburseRead(BaseModel):
id: str
disburse_no: str = Field(..., alias="disburseNo")
apply_id: Optional[str] = Field(default=None, alias="applyId")
apply_no: Optional[str] = Field(default=None, alias="applyNo")
license_plate: Optional[str] = Field(default=None, alias="licensePlate")
amount: Decimal
handler_id: str = Field(..., alias="handlerId")
handler_name: Optional[str] = Field(default=None, alias="handlerName")
disburse_date: date = Field(..., alias="disburseDate")
attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls")
remark: Optional[str] = None
create_by: Optional[str] = Field(default=None, alias="createBy")
create_by_name: Optional[str] = Field(default=None, alias="createByName")
create_time: Optional[datetime] = Field(default=None, alias="createTime")
update_time: Optional[datetime] = Field(default=None, alias="updateTime")
model_config = {"populate_by_name": True}
class VehicleUreaDisburseListResponse(BaseModel):
items: list[VehicleUreaDisburseRead]
total: int
page: int
page_size: int = Field(..., alias="pageSize")
model_config = {"populate_by_name": True}
class VehicleUreaDisburseBoardItem(BaseModel):
apply_id: str = Field(..., alias="applyId")
apply_no: str = Field(..., alias="applyNo")
license_plate: str = Field(..., alias="licensePlate")
apply_date: date = Field(..., alias="applyDate")
warehouse_in_date: date = Field(..., alias="warehouseInDate")
unit: str
quantity: Decimal
apply_amount: Decimal = Field(..., alias="applyAmount")
applicant_name: Optional[str] = Field(default=None, alias="applicantName")
apply_status: str = Field(..., alias="applyStatus")
apply_remark: Optional[str] = Field(default=None, alias="applyRemark")
disburse_id: Optional[str] = Field(default=None, alias="disburseId")
disburse_no: Optional[str] = Field(default=None, alias="disburseNo")
disburse_date: Optional[date] = Field(default=None, alias="disburseDate")
amount: Optional[Decimal] = None
handler_name: Optional[str] = Field(default=None, alias="handlerName")
disburse_remark: Optional[str] = Field(default=None, alias="disburseRemark")
model_config = {"populate_by_name": True}
class VehicleUreaDisburseBoardListResponse(BaseModel):
items: list[VehicleUreaDisburseBoardItem]
total: int
page: int
page_size: int = Field(..., alias="pageSize")
model_config = {"populate_by_name": True}