导入参数检验优化

This commit is contained in:
lhx
2025-11-16 14:27:44 +08:00
parent cef473bda7
commit 8a7b5637c1
2 changed files with 9 additions and 8 deletions

View File

@@ -168,7 +168,7 @@ class LevelDataService(BaseService[LevelData]):
try:
level_data_list = [
LevelData(
linecode=item.get('linecode'),
linecode=str(item.get('linecode')), # 统一转换为字符串
benchmarkids=item.get('benchmarkids'),
wsphigh=item.get('wsphigh'),
mtype=item.get('mtype'),

View File

@@ -373,7 +373,8 @@ class SettlementDataService(BaseService[SettlementData]):
failed_items = []
# ===== 性能优化1批量查询观测点数据IN查询 =====
point_id_list = list(set(item.get('point_id') for item in data if item.get('point_id')))
# 统一转换为字符串处理数据库point_id字段是VARCHAR类型
point_id_list = list(set(str(item.get('point_id')) for item in data if item.get('point_id')))
logger.info(f"Checking {len(point_id_list)} unique point_ids in checkpoint data")
checkpoints = db.query(Checkpoint).filter(Checkpoint.point_id.in_(point_id_list)).all()
checkpoint_map = {c.point_id: c for c in checkpoints}
@@ -381,7 +382,7 @@ class SettlementDataService(BaseService[SettlementData]):
# 记录缺失的观测点
for item_data in data:
point_id = item_data.get('point_id')
point_id = str(item_data.get('point_id')) # 统一转换为字符串
if point_id in missing_point_ids:
failed_count += 1
failed_items.append({
@@ -402,8 +403,8 @@ class SettlementDataService(BaseService[SettlementData]):
}
# ===== 性能优化2批量查询现有沉降数据IN查询 =====
# 只查询有效的观测点数据
valid_items = [item for item in data if item.get('point_id') not in missing_point_ids]
# 只查询有效的观测点数据(注意:需要转换为字符串比较)
valid_items = [item for item in data if str(item.get('point_id')) not in missing_point_ids]
if valid_items:
# 使用组合键 (point_id, NYID) 查询现有数据
existing_data = db.query(SettlementData).filter(
@@ -421,8 +422,8 @@ class SettlementDataService(BaseService[SettlementData]):
to_insert = []
for item_data in valid_items:
point_id = item_data.get('point_id')
nyid = str(item_data.get('NYID'))
point_id = str(item_data.get('point_id')) # 统一转换为字符串
nyid = str(item_data.get('NYID')) # 统一转换为字符串
# 构建组合键
key = f"{point_id}_{nyid}"
@@ -449,7 +450,7 @@ class SettlementDataService(BaseService[SettlementData]):
try:
settlement_data_list = [
SettlementData(
point_id=item.get('point_id'),
point_id=str(item.get('point_id')), # 统一转换为字符串
CVALUE=item.get('CVALUE'),
MAVALUE=item.get('MAVALUE'),
MTIME_W=item.get('MTIME_W'),