Files
railway_cloud/app/schemas/comprehensive_data.py
2025-10-30 11:43:32 +08:00

263 lines
8.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
# 沉降数据导入请求
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
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表示返回全部
# 沉降数据查询请求——水准线路编码
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
# 水准数据查询请求
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
# 批量导入请求 - 灵活字段版本,允许传入任意字段
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 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
# data: List[Dict[str, Any]] = []
# total: Optional[int] = None # 总数
# class Config:
# schema_extra = {
# "example": {
# "code": 0,
# "message": "查询成功",
# "total": 10,
# "data": []
# }
# }
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": [ # 示例1List[dict]格式
{"id": 1, "point_id": 100, "NYID": 50},
{"id": 2, "point_id": 200, "NYID": 60}
]
},
"another_example": {
"code": 0,
"message": "查询成功",
"total": 2,
"data": [ # 示例2List[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