151 lines
5.5 KiB
Python
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}
|