From 0ff15a25ac57a8e64d59206e1277371e34f65f81 Mon Sep 17 00:00:00 2001 From: lhx Date: Fri, 24 Oct 2025 15:31:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=B2=89=E9=99=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/settlement_data.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/services/settlement_data.py b/app/services/settlement_data.py index 8094350..ddaef46 100644 --- a/app/services/settlement_data.py +++ b/app/services/settlement_data.py @@ -209,8 +209,9 @@ class SettlementDataService(BaseService[SettlementData]): def batch_import_settlement_data(self, db: Session, data: List) -> Dict[str, Any]: """ - 批量导入沉降数据,根据观测点ID和期数ID判断是否重复,重复数据改为更新操作 - 判断观测点数据是否存在,不存在则全部不导入 + 批量导入沉降数据, + 1.根据观测点ID和期数ID判断是否重复,修复记录,跳过插入操作 + 2.判断观测点数据是否存在,不存在则记录,跳过插入操作 支持事务回滚,失败时重试一次 """ import logging @@ -236,7 +237,13 @@ class SettlementDataService(BaseService[SettlementData]): logger.info(f"Checkpoint {item_data.get('point_id')}: {checkpoint}") if not checkpoint: logger.error(f"Checkpoint {item_data.get('point_id')} not found") - raise Exception(f"Checkpoint {item_data.get('point_id')} not found") + logger.error(f"Checkpoint {item_data} not found") + failed_count += 1 + failed_items.append({ + 'data': item_data, + 'error': '测点id不存在,跳过插入操作' + }) + continue settlement = self.get_by_point_and_nyid( db, @@ -271,7 +278,7 @@ class SettlementDataService(BaseService[SettlementData]): # settlement.useflag = item_data.get('useflag') # settlement.workinfoname = item_data.get('workinfoname') # settlement.upd_remark = item_data.get('upd_remark') - + else: # 新增操作 settlement = SettlementData(