293 lines
9.5 KiB
Python
293 lines
9.5 KiB
Python
from pydantic import BaseModel
|
||
from typing import Any, Dict, List, Optional, Union
|
||
|
||
# 原始数据导入请求
|
||
class OriginalDataImportRequest(BaseModel):
|
||
account_id: int # 账号ID,必填
|
||
bfpcode: Optional[str] = None
|
||
mtime: Optional[str] = None
|
||
bffb: Optional[str] = None
|
||
bfpl: Optional[str] = None
|
||
bfpvalue: Optional[str] = None
|
||
NYID: str
|
||
sort: Optional[int] = None
|
||
|
||
# 水准数据导入请求
|
||
class LevelDataImportRequest(BaseModel):
|
||
linecode: str
|
||
NYID: str
|
||
benchmarkids: Optional[str] = None
|
||
wsphigh: Optional[str] = None
|
||
mtype: Optional[str] = None
|
||
createDate: 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 NYIDRequest(BaseModel):
|
||
NYID: str
|
||
# 今日数据请求
|
||
class TodayDataRequest(BaseModel):
|
||
account_id: str
|
||
start: Optional[int] = None
|
||
end: Optional[int] = None
|
||
# 沉降数据导入请求
|
||
class SettlementDataImportRequest(BaseModel):
|
||
point_id: str
|
||
NYID: str
|
||
CVALUE: Optional[str] = None
|
||
MAVALUE: Optional[str] = None
|
||
MTIME_W: Optional[str] = None
|
||
PRELOADH: Optional[str] = None
|
||
PSTATE: Optional[str] = None
|
||
createdate: Optional[str] = None
|
||
day: Optional[str] = None
|
||
day_jg: Optional[str] = None
|
||
REMARK: Optional[str] = None
|
||
WORKINFO: Optional[str] = None
|
||
useflag: Optional[str] = None
|
||
mavalue_lj: Optional[str] = None
|
||
mavalue_bc: Optional[str] = None
|
||
sjName: Optional[str] = None
|
||
workinfoname: Optional[str] = None
|
||
isgzjdxz: Optional[str] = None
|
||
upd_remark: Optional[str] = None
|
||
|
||
# 观测点数据导入请求
|
||
class CheckpointDataImportRequest(BaseModel):
|
||
point_id: str
|
||
aname: Optional[str] = None
|
||
section_id: str
|
||
burial_date: Optional[str] = None
|
||
|
||
# 断面数据导入请求
|
||
class SectionDataImportRequest(BaseModel):
|
||
section_id: str
|
||
mileage: Optional[str] = None
|
||
work_site: Optional[str] = None
|
||
status: Optional[str] = None
|
||
number: Optional[str] = None
|
||
basic_types: Optional[str] = None
|
||
height: Optional[str] = None
|
||
transition_paragraph: Optional[str] = None
|
||
design_fill_height: Optional[str] = None
|
||
compression_layer_thickness: Optional[str] = None
|
||
treatment_depth: Optional[str] = None
|
||
foundation_treatment_method: Optional[str] = None
|
||
rock_mass_classification: Optional[str] = None
|
||
account_id: Optional[str] = None
|
||
|
||
# 原始数据查询请求
|
||
class OriginalDataQueryRequest(BaseModel):
|
||
account_id: Optional[int] = None # 账号ID,可选。不填则查询所有分表
|
||
linecode: Optional[str] = None
|
||
id: Optional[int] = None
|
||
bfpcode: Optional[str] = None
|
||
mtime: Optional[str] = None
|
||
bffb: Optional[str] = None
|
||
bfpl: Optional[str] = None
|
||
bfpvalue: Optional[str] = None
|
||
NYID: Optional[str] = None
|
||
sort: Optional[int] = None
|
||
|
||
|
||
# 沉降数据查询请求
|
||
class SettlementDataQueryRequest(BaseModel):
|
||
id: Optional[int] = None
|
||
point_id: Optional[int] = None
|
||
NYID: Optional[int] = None
|
||
account_id: Optional[str] = None # 账号ID,可选,不填则按原来逻辑查询
|
||
CVALUE: Optional[str] = None
|
||
MAVALUE: Optional[str] = None
|
||
MTIME_W: Optional[str] = None
|
||
PRELOADH: Optional[str] = None
|
||
PSTATE: Optional[str] = None
|
||
createdate: Optional[str] = None
|
||
day: Optional[str] = None
|
||
day_jg: Optional[str] = None
|
||
REMARK: Optional[str] = None
|
||
WORKINFO: Optional[str] = None
|
||
useflag: Optional[str] = None
|
||
mavalue_lj: Optional[str] = None
|
||
mavalue_bc: Optional[str] = None
|
||
sjName: Optional[str] = None
|
||
workinfoname: Optional[str] = None
|
||
isgzjdxz: Optional[str] = None
|
||
upd_remark: Optional[str] = None
|
||
limit: Optional[int] = None # 限制返回数量,None表示返回全部
|
||
skip: Optional[int] = 0 # 跳过数量,用于分页,默认0
|
||
|
||
# 沉降数据查询请求——水准线路编码
|
||
class SettlementDataCheckpointQueryRequest(BaseModel):
|
||
id: Optional[int] = None
|
||
point_id: Optional[int] = None
|
||
NYID: Optional[int] = None
|
||
CVALUE: Optional[str] = None
|
||
MAVALUE: Optional[str] = None
|
||
MTIME_W: Optional[str] = None
|
||
PRELOADH: Optional[str] = None
|
||
PSTATE: Optional[str] = None
|
||
createdate: Optional[str] = None
|
||
day: Optional[str] = None
|
||
day_jg: Optional[str] = None
|
||
REMARK: Optional[str] = None
|
||
WORKINFO: Optional[str] = None
|
||
useflag: Optional[str] = None
|
||
mavalue_lj: Optional[str] = None
|
||
mavalue_bc: Optional[str] = None
|
||
sjName: Optional[str] = None
|
||
workinfoname: Optional[str] = None
|
||
isgzjdxz: Optional[str] = None
|
||
upd_remark: Optional[str] = None
|
||
linecode: Optional[str] = None
|
||
limit: Optional[int] = None # 限制返回数量,None表示返回全部
|
||
|
||
# 断面数据导入请求
|
||
class SectionDataQueryRequest(BaseModel):
|
||
id: Optional[int] = None
|
||
section_id: Optional[int] = None
|
||
mileage: Optional[str] = None
|
||
work_site: Optional[str] = None
|
||
status: Optional[str] = None
|
||
number: Optional[str] = None
|
||
basic_types: Optional[str] = None
|
||
height: Optional[str] = None
|
||
transition_paragraph: Optional[str] = None
|
||
design_fill_height: Optional[str] = None
|
||
compression_layer_thickness: Optional[str] = None
|
||
treatment_depth: Optional[str] = None
|
||
foundation_treatment_method: Optional[str] = None
|
||
rock_mass_classification: Optional[str] = None
|
||
account_id: Optional[str] = None
|
||
limit: Optional[int] = None # 限制返回数量,None表示返回全部
|
||
skip: Optional[int] = 0 # 跳过数量,用于分页,默认0
|
||
# 断面数据导入请求
|
||
class SectionByAccountRequest(BaseModel):
|
||
account_id: Optional[str] = None
|
||
section_id: Optional[str] = None
|
||
# 测点数据
|
||
class PointByAccountRequest(BaseModel):
|
||
point_id: Optional[str] = None
|
||
# 水准数据查询请求
|
||
class LevelDataQueryRequest(BaseModel):
|
||
linecode: Optional[str] = None
|
||
NYID: Optional[str] = None
|
||
benchmarkids: Optional[str] = None
|
||
wsphigh: Optional[str] = None
|
||
mtype: Optional[str] = None
|
||
createDate: 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 BatchSectionDataImportRequest(BaseModel):
|
||
data: List[Dict[str, Any]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
class BatchCheckpointDataImportRequest(BaseModel):
|
||
data: List[Dict[str, Any]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
class BatchSettlementDataImportRequest(BaseModel):
|
||
data: List[Dict[str, Any]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
class BatchLevelDataImportRequest(BaseModel):
|
||
data: List[Dict[str, Any]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
class BatchOriginalDataImportRequest(BaseModel):
|
||
data: List[Dict[str, Any]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
class BatchOriginalDataImportRequestNew(BaseModel):
|
||
"""
|
||
新版原始数据批量导入请求模型
|
||
支持格式:data:[[{},{},{}],[{},{}]]
|
||
里层一个[{},{}]称为一组数据,数据{}内容与旧接口一致
|
||
一组数据全部记录的NYID与account_id将会一样
|
||
"""
|
||
data: List[List[Dict[str, Any]]]
|
||
|
||
class Config:
|
||
extra = "allow" # 允许额外字段
|
||
|
||
# 新增响应模型
|
||
class DataImportResponse(BaseModel):
|
||
code: int = 0 # 响应状态码,0表示成功
|
||
message: str
|
||
data: Optional[Dict[str, Any]] = None # 将详细信息放入data中
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"code": 0,
|
||
"message": "批量导入完成",
|
||
"data": {
|
||
"total_count": 100,
|
||
"success_count": 100,
|
||
"failed_count": 0,
|
||
"failed_items": []
|
||
}
|
||
}
|
||
}
|
||
|
||
# 查询响应模型
|
||
class DataResponse(BaseModel):
|
||
code: int = 0 # 响应状态码,0表示成功
|
||
message: str
|
||
# 关键:用Union允许data为两种格式(列表套字典 或 列表套列表套字典)
|
||
data: Union[List[Dict[str, Any]], List[List[Dict[str, Any]]]] = []
|
||
total: Optional[int] = None # 总数
|
||
|
||
class Config:
|
||
schema_extra = {
|
||
"example": {
|
||
"code": 0,
|
||
"message": "查询成功",
|
||
"total": 10,
|
||
"data": [ # 示例1:List[dict]格式
|
||
{"id": 1, "point_id": 100, "NYID": 50},
|
||
{"id": 2, "point_id": 200, "NYID": 60}
|
||
]
|
||
},
|
||
"another_example": {
|
||
"code": 0,
|
||
"message": "查询成功",
|
||
"total": 2,
|
||
"data": [ # 示例2:List[List[dict]]格式
|
||
[{"id": 1, "point_id": 100, "NYID": 50}],
|
||
[{"id": 2, "point_id": 200, "NYID": 60}]
|
||
]
|
||
}
|
||
}
|
||
# 兼容旧接口的模型
|
||
class ComprehensiveDataImportRequest(BaseModel):
|
||
data: Dict[str, Any]
|
||
class LinecodeRequest(BaseModel):
|
||
linecode: str
|
||
class ComprehensiveDataImportResponse(BaseModel):
|
||
success: bool
|
||
message: str
|