154 lines
6.4 KiB
Python
154 lines
6.4 KiB
Python
"""车辆维保 Schema"""
|
|
from datetime import date, datetime
|
|
from decimal import Decimal
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field, field_validator
|
|
|
|
|
|
class VehicleMaintenanceApplyCreate(BaseModel):
|
|
license_plate: str = Field(..., alias="licensePlate")
|
|
applicant_id: Optional[str] = Field(default=None, alias="applicantId")
|
|
apply_date: date = Field(..., alias="applyDate")
|
|
maintenance_type: str = Field(..., alias="maintenanceType")
|
|
start_date: date = Field(..., alias="startDate")
|
|
expected_pickup_date: Optional[date] = Field(default=None, alias="expectedPickupDate")
|
|
maintenance_content: Optional[str] = Field(default=None, alias="maintenanceContent")
|
|
shop_address: Optional[str] = Field(default=None, alias="shopAddress")
|
|
attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls")
|
|
remark: Optional[str] = None
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VehicleMaintenanceApplyUpdate(VehicleMaintenanceApplyCreate):
|
|
pass
|
|
|
|
|
|
class VehicleMaintenanceApplyRead(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")
|
|
maintenance_type: str = Field(..., alias="maintenanceType")
|
|
start_date: date = Field(..., alias="startDate")
|
|
expected_pickup_date: Optional[date] = Field(default=None, alias="expectedPickupDate")
|
|
maintenance_content: Optional[str] = Field(default=None, alias="maintenanceContent")
|
|
shop_address: Optional[str] = Field(default=None, alias="shopAddress")
|
|
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 VehicleMaintenanceApplyListResponse(BaseModel):
|
|
items: list[VehicleMaintenanceApplyRead]
|
|
total: int
|
|
page: int
|
|
page_size: int = Field(..., alias="pageSize")
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VehicleMaintenanceApplyReminder(BaseModel):
|
|
id: str
|
|
apply_no: str = Field(..., alias="applyNo")
|
|
license_plate: str = Field(..., alias="licensePlate")
|
|
maintenance_type: str = Field(..., alias="maintenanceType")
|
|
apply_date: date = Field(..., alias="applyDate")
|
|
start_date: date = Field(..., alias="startDate")
|
|
expected_pickup_date: Optional[date] = Field(default=None, alias="expectedPickupDate")
|
|
maintenance_content: Optional[str] = Field(default=None, alias="maintenanceContent")
|
|
shop_address: Optional[str] = Field(default=None, alias="shopAddress")
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VehicleMaintenanceProcessCreate(BaseModel):
|
|
apply_id: Optional[str] = Field(default=None, alias="applyId")
|
|
license_plate: Optional[str] = Field(default=None, alias="licensePlate")
|
|
amount: Optional[Decimal] = None
|
|
handler_id: Optional[str] = Field(default=None, alias="handlerId")
|
|
process_date: date = Field(..., alias="processDate")
|
|
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: Optional[Decimal]) -> Optional[Decimal]:
|
|
if v is not None and v <= 0:
|
|
raise ValueError("金额须大于 0")
|
|
return v
|
|
|
|
|
|
class VehicleMaintenanceProcessUpdate(VehicleMaintenanceProcessCreate):
|
|
pass
|
|
|
|
|
|
class VehicleMaintenanceProcessRead(BaseModel):
|
|
id: str
|
|
process_no: str = Field(..., alias="processNo")
|
|
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: Optional[Decimal] = None
|
|
handler_id: str = Field(..., alias="handlerId")
|
|
handler_name: Optional[str] = Field(default=None, alias="handlerName")
|
|
process_date: date = Field(..., alias="processDate")
|
|
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 VehicleMaintenanceProcessListResponse(BaseModel):
|
|
items: list[VehicleMaintenanceProcessRead]
|
|
total: int
|
|
page: int
|
|
page_size: int = Field(..., alias="pageSize")
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VehicleMaintenanceProcessBoardItem(BaseModel):
|
|
apply_id: str = Field(..., alias="applyId")
|
|
apply_no: str = Field(..., alias="applyNo")
|
|
license_plate: str = Field(..., alias="licensePlate")
|
|
maintenance_type: str = Field(..., alias="maintenanceType")
|
|
apply_date: date = Field(..., alias="applyDate")
|
|
start_date: date = Field(..., alias="startDate")
|
|
expected_pickup_date: Optional[date] = Field(default=None, alias="expectedPickupDate")
|
|
maintenance_content: Optional[str] = Field(default=None, alias="maintenanceContent")
|
|
shop_address: Optional[str] = Field(default=None, alias="shopAddress")
|
|
applicant_name: Optional[str] = Field(default=None, alias="applicantName")
|
|
apply_status: str = Field(..., alias="applyStatus")
|
|
apply_remark: Optional[str] = Field(default=None, alias="applyRemark")
|
|
process_id: Optional[str] = Field(default=None, alias="processId")
|
|
process_no: Optional[str] = Field(default=None, alias="processNo")
|
|
process_date: Optional[date] = Field(default=None, alias="processDate")
|
|
amount: Optional[Decimal] = None
|
|
handler_name: Optional[str] = Field(default=None, alias="handlerName")
|
|
process_remark: Optional[str] = Field(default=None, alias="processRemark")
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VehicleMaintenanceProcessBoardListResponse(BaseModel):
|
|
items: list[VehicleMaintenanceProcessBoardItem]
|
|
total: int
|
|
page: int
|
|
page_size: int = Field(..., alias="pageSize")
|
|
|
|
model_config = {"populate_by_name": True}
|