40 lines
2.1 KiB
Markdown
40 lines
2.1 KiB
Markdown
# 员工信息维护分页重复修复实施记录
|
|
|
|
## 问题
|
|
|
|
- 页面:`http://localhost:1025/maintain/baseStaff`
|
|
- 接口:`GET /ccdi/baseStaff/list`
|
|
- 现象:第一页和第二页存在相同员工。
|
|
- 复现结果:接口第一页和第二页出现 `9020004`、`9020005`、`9020009`、`9020003`、`9020008` 等重复员工。
|
|
|
|
## 原因
|
|
|
|
员工列表 SQL 仅按 `create_time DESC` 排序。批量导入的员工会在同一批次写入相同 `create_time`,数据库在相同排序值之间没有稳定顺序,分页时可能导致同一员工跨页重复出现。
|
|
|
|
## 修改内容
|
|
|
|
- `ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiBaseStaffMapper.xml`
|
|
- 将员工分页列表排序从 `ORDER BY e.create_time DESC` 调整为 `ORDER BY e.create_time DESC, e.staff_id DESC`。
|
|
- 使用唯一的 `staff_id` 作为二级排序字段,保证同一创建时间内分页顺序稳定。
|
|
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/mapper/CcdiBaseStaffMapperTest.java`
|
|
- 增加 Mapper XML 断言,防止后续误删稳定分页排序。
|
|
|
|
## 影响范围
|
|
|
|
- 仅影响员工信息维护列表分页顺序。
|
|
- 不改变筛选条件、列表字段、总数统计、导入、新增、编辑、删除逻辑。
|
|
|
|
## 验证
|
|
|
|
- 修改前已通过后端接口复现第一页和第二页员工重复。
|
|
- `node -e` 轻量 XML 断言通过,确认 Mapper 中包含 `ORDER BY e.create_time DESC, e.staff_id DESC`。
|
|
- `mvn -pl ruoyi-admin -am clean package -DskipTests` 构建通过。
|
|
- `mvn -pl ccdi-info-collection -am -Dtest=CcdiBaseStaffMapperTest -Dsurefire.failIfNoSpecifiedTests=false test` 通过,`CcdiBaseStaffMapperTest` 共 2 个用例全部通过。
|
|
- 后端接口复验:
|
|
- 第 1 页:`9020018` 至 `9020009`。
|
|
- 第 2 页:`9020008` 至 `9020001`,并继续显示后续员工。
|
|
- 第 1 页与第 2 页 `staffId` 交集为 `none`。
|
|
- browser-use 打开真实页面 `http://localhost:1025/maintain/baseStaff` 验证:
|
|
- 第 1 页首行显示 `许平 / 9020018`。
|
|
- 点击分页第 2 页后,页面首行显示 `郑丽 / 9020008`,未再显示第一页首行员工。
|