导入参数检验优化
This commit is contained in:
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user