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(