时间格式,获取沉降数据接口limit

This commit is contained in:
lhx
2025-10-14 09:14:59 +08:00
parent 667b793aa1
commit ef0d92f86f
6 changed files with 38 additions and 26 deletions

View File

@@ -176,7 +176,7 @@ def get_section(request: SectionDataQueryRequest, db: Session = Depends(get_db))
# 根据观测点id查询沉降数据
@router.post("/get_settlement", response_model=DataResponse)
def get_settlement(request: SettlementDataQueryRequest, db: Session = Depends(get_db)):
"""获取沉降数据"""
"""获取沉降数据按上传时间倒序排序支持limit参数限制返回数量"""
try:
logger.info(f"Querying settlement data with params: {request.dict()}")
@@ -187,7 +187,8 @@ def get_settlement(request: SettlementDataQueryRequest, db: Session = Depends(ge
point_id=request.point_id,
nyid=request.NYID,
sjName=request.sjName,
workinfoname=request.workinfoname
workinfoname=request.workinfoname,
limit=request.limit
)
logger.info(f"Found {len(result_data)} settlement records")

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy import Column, Integer, String, DateTime
from ..core.database import Base
class LevelData(Base):
@@ -9,4 +9,5 @@ class LevelData(Base):
benchmarkids = Column(String(100), comment="工作基点名称序列")
wsphigh = Column(String(100), comment="工作基点高程序列(m)")
NYID = Column(String(100), nullable=False, comment="期数id", index=True)
createDate = Column(String(100), comment="上传时间")
createDate = Column(DateTime, comment="上传时间")
mtype = Column(String(100), comment="水准观测类型")

View File

@@ -6,10 +6,9 @@ class OriginalData(Base):
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
bfpcode = Column(String(1000), nullable=False, comment="前(后)视点名称")
mtime = Column(String(1000), nullable=False, comment="测点观测时间")
mtime = Column(DateTime, nullable=False, comment="测点观测时间")
bffb = Column(String(1000), nullable=False, comment="前(后)视标记符")
bfpl = Column(String(1000), nullable=False, comment="前(后)视距离(m)")
bfpvalue = Column(String(1000), nullable=False, comment="前(后)视尺读数(m)")
times = Column(String(1000), nullable=False, comment="上传时间")
NYID = Column(String(100), nullable=False, comment="期数id", index=True)
sort = Column(Integer, comment="序号")

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy import Column, Integer, String, DateTime
from ..core.database import Base
class SettlementData(Base):
@@ -8,13 +8,13 @@ class SettlementData(Base):
point_id = Column(String(100), nullable=False, comment="观测点id", index=True)
CVALUE = Column(String(100), nullable=False, comment="修正量(m)")
MAVALUE = Column(String(100), nullable=False, comment="成果值(m)")
MTIME_W = Column(String(100), nullable=False, comment="观测时间")
MTIME_W = Column(DateTime, nullable=False, comment="观测时间")
NYID = Column(String(100), nullable=False, comment="期数id", index=True)
PRELOADH = Column(String(100), nullable=False)
PSTATE = Column(String(100), nullable=False)
REMARK = Column(String(100), comment="备注")
WORKINFO = Column(String(100))
createdate = Column(String(100), nullable=False, comment="上传时间")
createdate = Column(DateTime, nullable=False, comment="上传时间", index=True)
day = Column(String(100), nullable=False, comment="累计天数")
day_jg = Column(String(100), nullable=False, comment="两次观测时")
isgzjdxz = Column(String(100))

View File

@@ -97,6 +97,7 @@ class SettlementDataQueryRequest(BaseModel):
workinfoname: Optional[str] = None
isgzjdxz: Optional[str] = None
upd_remark: Optional[str] = None
limit: Optional[int] = None # 限制返回数量None表示返回全部
# 断面数据导入请求
class SectionDataQueryRequest(BaseModel):

View File

@@ -28,30 +28,40 @@ class SettlementDataService(BaseService[SettlementData]):
point_id: Optional[str] = None,
nyid: Optional[str] = None,
sjName: Optional[str] = None,
workinfoname: Optional[str] = None) -> List[SettlementData]:
"""根据多个条件搜索沉降数据"""
conditions = {}
if id is not None:
conditions["id"] = id
if point_id is not None:
conditions["point_id"] = point_id
if nyid is not None:
conditions["NYID"] = nyid
if sjName is not None:
conditions["sjName"] = sjName
if workinfoname is not None:
conditions["workinfoname"] = workinfoname
workinfoname: Optional[str] = None,
limit: Optional[int] = None) -> List[SettlementData]:
"""根据多个条件搜索沉降数据,按上传时间倒序排序"""
query = db.query(SettlementData)
return self.search_by_conditions(db, conditions)
if id is not None:
query = query.filter(SettlementData.id == id)
if point_id is not None:
query = query.filter(SettlementData.point_id == point_id)
if nyid is not None:
query = query.filter(SettlementData.NYID == nyid)
if sjName is not None:
query = query.filter(SettlementData.sjName == sjName)
if workinfoname is not None:
query = query.filter(SettlementData.workinfoname == workinfoname)
# 按上传时间倒序排序
query = query.order_by(SettlementData.createdate.desc())
# 如果指定了limit则限制返回数量
if limit is not None and limit > 0:
query = query.limit(limit)
return query.all()
def search_settlement_data_formatted(self, db: Session,
id: Optional[int] = None,
point_id: Optional[str] = None,
nyid: Optional[str] = None,
sjName: Optional[str] = None,
workinfoname: Optional[str] = None) -> List[Dict[str, Any]]:
"""查询沉降数据并返回格式化结果"""
settlement_data = self.search_settlement_data(db, id, point_id, nyid, sjName, workinfoname)
workinfoname: Optional[str] = None,
limit: Optional[int] = None) -> List[Dict[str, Any]]:
"""查询沉降数据并返回格式化结果,按上传时间倒序排序"""
settlement_data = self.search_settlement_data(db, id, point_id, nyid, sjName, workinfoname, limit)
result = []
for settlement in settlement_data: