导入参数检验优化
This commit is contained in:
@@ -168,7 +168,7 @@ class LevelDataService(BaseService[LevelData]):
|
|||||||
try:
|
try:
|
||||||
level_data_list = [
|
level_data_list = [
|
||||||
LevelData(
|
LevelData(
|
||||||
linecode=item.get('linecode'),
|
linecode=str(item.get('linecode')), # 统一转换为字符串
|
||||||
benchmarkids=item.get('benchmarkids'),
|
benchmarkids=item.get('benchmarkids'),
|
||||||
wsphigh=item.get('wsphigh'),
|
wsphigh=item.get('wsphigh'),
|
||||||
mtype=item.get('mtype'),
|
mtype=item.get('mtype'),
|
||||||
|
|||||||
@@ -373,7 +373,8 @@ class SettlementDataService(BaseService[SettlementData]):
|
|||||||
failed_items = []
|
failed_items = []
|
||||||
|
|
||||||
# ===== 性能优化1:批量查询观测点数据(IN查询) =====
|
# ===== 性能优化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")
|
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()
|
checkpoints = db.query(Checkpoint).filter(Checkpoint.point_id.in_(point_id_list)).all()
|
||||||
checkpoint_map = {c.point_id: c for c in checkpoints}
|
checkpoint_map = {c.point_id: c for c in checkpoints}
|
||||||
@@ -381,7 +382,7 @@ class SettlementDataService(BaseService[SettlementData]):
|
|||||||
|
|
||||||
# 记录缺失的观测点
|
# 记录缺失的观测点
|
||||||
for item_data in data:
|
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:
|
if point_id in missing_point_ids:
|
||||||
failed_count += 1
|
failed_count += 1
|
||||||
failed_items.append({
|
failed_items.append({
|
||||||
@@ -402,8 +403,8 @@ class SettlementDataService(BaseService[SettlementData]):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ===== 性能优化2:批量查询现有沉降数据(IN查询) =====
|
# ===== 性能优化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:
|
if valid_items:
|
||||||
# 使用组合键 (point_id, NYID) 查询现有数据
|
# 使用组合键 (point_id, NYID) 查询现有数据
|
||||||
existing_data = db.query(SettlementData).filter(
|
existing_data = db.query(SettlementData).filter(
|
||||||
@@ -421,8 +422,8 @@ class SettlementDataService(BaseService[SettlementData]):
|
|||||||
to_insert = []
|
to_insert = []
|
||||||
|
|
||||||
for item_data in valid_items:
|
for item_data in valid_items:
|
||||||
point_id = item_data.get('point_id')
|
point_id = str(item_data.get('point_id')) # 统一转换为字符串
|
||||||
nyid = str(item_data.get('NYID'))
|
nyid = str(item_data.get('NYID')) # 统一转换为字符串
|
||||||
|
|
||||||
# 构建组合键
|
# 构建组合键
|
||||||
key = f"{point_id}_{nyid}"
|
key = f"{point_id}_{nyid}"
|
||||||
@@ -449,7 +450,7 @@ class SettlementDataService(BaseService[SettlementData]):
|
|||||||
try:
|
try:
|
||||||
settlement_data_list = [
|
settlement_data_list = [
|
||||||
SettlementData(
|
SettlementData(
|
||||||
point_id=item.get('point_id'),
|
point_id=str(item.get('point_id')), # 统一转换为字符串
|
||||||
CVALUE=item.get('CVALUE'),
|
CVALUE=item.get('CVALUE'),
|
||||||
MAVALUE=item.get('MAVALUE'),
|
MAVALUE=item.get('MAVALUE'),
|
||||||
MTIME_W=item.get('MTIME_W'),
|
MTIME_W=item.get('MTIME_W'),
|
||||||
|
|||||||
Reference in New Issue
Block a user