from pydantic import BaseModel from typing import Any, Dict, List, Optional # 原始数据导入请求 class OriginalDataImportRequest(BaseModel): 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 # 原始数据查询请求 class OriginalDataQueryRequest(BaseModel): 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 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 # 水准数据查询请求 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): success: bool message: str total_count: int success_count: int failed_count: int failed_items: List[Dict[str, Any]] = [] # 查询响应模型 class DataResponse(BaseModel): success: bool message: str count: int data: List[Dict[str, Any]] = [] # 兼容旧接口的模型 class ComprehensiveDataImportRequest(BaseModel): data: Dict[str, Any] class ComprehensiveDataImportResponse(BaseModel): success: bool message: str