Files
railway_cloud/app/schemas/level_data.py

91 lines
2.7 KiB
Python

from pydantic import BaseModel, Field, ConfigDict
from typing import Optional, List, Any
from datetime import datetime
class LevelDataBase(BaseModel):
"""水准数据基础模型"""
linecode: Optional[str] = None
benchmarkids: Optional[str] = None
wsphigh: Optional[str] = None
NYID: Optional[str] = None
mtype: Optional[str] = None
wspversion: Optional[str] = None
barometric: Optional[str] = None
equipbrand: Optional[str] = None
instrumodel: Optional[str] = None
serialnum: Optional[str] = None
sjname: Optional[str] = None
temperature: Optional[str] = None
weather: Optional[str] = None
class LevelDataResponse(LevelDataBase):
"""水准数据响应模型"""
id: int
createDate: Optional[datetime] = None
model_config = ConfigDict(
from_attributes=True
)
class LevelDataRequest(BaseModel):
"""水准数据请求模型"""
project_name: str = Field(..., description="标段名称")
nyid_max: Optional[bool] = Field(False, description="是否只获取最新期数的水准数据")
class LevelDataListResponse(BaseModel):
"""水准数据列表响应格式"""
code: int = 0
message: str
total: int
data: List[LevelDataResponse] = []
class BatchDeleteByLinecodesRequest(BaseModel):
"""批量删除请求模型"""
linecodes: List[str] = Field(..., description="水准线路编码列表")
class BatchDeleteByLinecodesResponse(BaseModel):
"""批量删除响应模型"""
code: int = 0
message: str
success: bool
backup_file: Optional[str] = None
deleted_counts: Optional[dict] = None
class LinecodeRequest(BaseModel):
"""按水准线路编码查询请求"""
linecode: str = Field(..., description="水准线路编码")
class NyidListResponse(BaseModel):
"""仅返回 NYID 列表的响应"""
code: int = 0
message: str
data: List[str] = Field(default_factory=list, description="NYID 列表")
class SyncLoseDataRequest(BaseModel):
"""同步缺失数据请求:不传 linecode 表示全量同步,传则只处理该线路"""
linecode: Optional[str] = Field(None, description="水准线路编码,不传则处理全部线路")
class LoseDataItem(BaseModel):
"""lose_data 表单条记录"""
id: int
account_id: int
NYID: str
linecode: str
lose_data: int
section_id: Optional[str] = None
point_id: str = ""
model_config = ConfigDict(from_attributes=True)
class SyncLoseDataResponse(BaseModel):
"""同步缺失数据响应:全量时 data 为是否成功,单线路时 data 为该线路缺失记录列表"""
code: int = 0
message: str
data: Any = None # 全量时为 {"success": bool},单线路时为 List[LoseDataItem]