91 lines
2.7 KiB
Python
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] |