fix(batchUpdateDmsBaseStationProject): 优化保养项目批量更新逻辑

- 添加空列表检查,避免空指针异常
- 将批量插入改为逐条插入,解决 Oracle 933 错误
- 先清空现有关系再重建,避免历史脏数据残留
- 添加事务注解确保数据一致性
- 优化代码结构,提取单独的逐条插入方法
master
zangch@mesnac.com 2 days ago
parent d1c57e379d
commit 0a3f2010ec

@ -106,11 +106,14 @@ public class DmsBaseStationProjectServiceImpl implements IDmsBaseStationProjectS
@Override
@Transactional
public int batchUpdateDmsBaseStationProject(List<DmsBaseStationProject> dmsBaseStationProjectList){
//复选框先根据MaintStationId删除表中数据再批量添加
for( DmsBaseStationProject dmsBaseStationProject:dmsBaseStationProjectList){
if (dmsBaseStationProjectList == null || dmsBaseStationProjectList.isEmpty()) {
return 0;
}
// 这里先清空部位已有关系,再按当前勾选结果重建,避免历史脏数据或重复关系残留。
for (DmsBaseStationProject dmsBaseStationProject : dmsBaseStationProjectList) {
dmsBaseStationProjectMapper.deleteDmsBaseStationProjectByMaintStationId(dmsBaseStationProject.getMaintStationId());
}
return dmsBaseStationProjectMapper.batchInsertDmsBaseStationProject(dmsBaseStationProjectList);
return insertStationProjectsOneByOne(dmsBaseStationProjectList);
}
/**
@ -120,8 +123,26 @@ public class DmsBaseStationProjectServiceImpl implements IDmsBaseStationProjectS
* @return
*/
@Override
@Transactional
public int batchInsertDmsBaseStationProject(List<DmsBaseStationProject> dmsBaseStationProjectList){
return dmsBaseStationProjectMapper.batchInsertDmsBaseStationProject(dmsBaseStationProjectList);
return insertStationProjectsOneByOne(dmsBaseStationProjectList);
}
private int insertStationProjectsOneByOne(List<DmsBaseStationProject> dmsBaseStationProjectList)
{
if (dmsBaseStationProjectList == null || dmsBaseStationProjectList.isEmpty()) {
return 0;
}
int rows = 0;
for (DmsBaseStationProject dmsBaseStationProject : dmsBaseStationProjectList) {
if (dmsBaseStationProject == null || dmsBaseStationProject.getMaintStationId() == null
|| dmsBaseStationProject.getMaintProjectId() == null) {
continue;
}
// 这里改成事务内逐条插入,是为了规避 Oracle 11/19 在批量 SQL 解析差异下触发 ORA-00933。
rows += dmsBaseStationProjectMapper.insertDmsBaseStationProject(dmsBaseStationProject);
}
return rows;
}
/**
@ -134,3 +155,4 @@ public class DmsBaseStationProjectServiceImpl implements IDmsBaseStationProjectS
return dmsBaseStationProjectMapper.selectDmsBaseStationProjectBymaintProjectId(maintProjectId);
}
}

Loading…
Cancel
Save