Browse Source

refactor(grid): 优化表格用户数据处理逻辑

- 添加 HashSet 导入用于去重操作
- 将"整组替换"注释中的引号改为中文引号
- 实现按 columnProp 字段去重逻辑,防止历史重复数据传播
- 在去重后对数据进行排序并批量保存
master
qiankanghui 1 week ago
parent
commit
d51f04817f
  1. 15
      src/main/java/com/heai/modules/grid/service/impl/GridTableUserServiceImpl.java

15
src/main/java/com/heai/modules/grid/service/impl/GridTableUserServiceImpl.java

@ -11,6 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@ -28,15 +29,21 @@ public class GridTableUserServiceImpl extends ServiceImpl<GridTableUserDao, Grid
return;
}
GridTableUser first = gridTableUsers.get(0);
// "整组替换"代替逐行 update减少锁竞争和死锁概率
// 整组替换代替逐行 update减少锁竞争和死锁概率
lambdaUpdate()
.eq(GridTableUser::getUserId, first.getUserId())
.eq(GridTableUser::getFunctionId, first.getFunctionId())
.eq(GridTableUser::getTableId, first.getTableId())
.remove();
gridTableUsers.sort(Comparator.comparing(GridTableUser::getSortLv, Comparator.nullsLast(Integer::compareTo)));
this.saveBatch(gridTableUsers);
// columnProp 去重防止 grid_table_default 历史重复行传播到 user
Set<String> seen = new HashSet<>();
List<GridTableUser> deduped = gridTableUsers.stream()
.filter(item -> seen.add(item.getColumnProp()))
.sorted(Comparator.comparing(GridTableUser::getSortLv, Comparator.nullsLast(Integer::compareTo)))
.collect(Collectors.toList());
this.saveBatch(deduped);
}

Loading…
Cancel
Save