From e28a746eb7cbb23a3d7bbb78dba0ae3023e8215d Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 29 Jul 2026 18:07:17 +0800
Subject: [PATCH] feat(workorder): 添加线索事件分页列表功能并优化状态流转
---
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 96 insertions(+), 8 deletions(-)
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
index d2eb888..f5a7bfa 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -72,10 +72,86 @@
@Override
public List<GdClueEventListVO> listGdClueEventByDept(Integer onlyMine, String keyword) {
- Long deptId = Long.valueOf(AuthUtil.getDeptId());
- Long userId = AuthUtil.getUserId();
- Integer mine = onlyMine == null ? 0 : onlyMine;
- return baseMapper.selectGdClueEventSimpleList(deptId, userId, mine, keyword);
+ // 1. 获取当前用户部门ID和用户ID
+ Long deptId = null;
+ Long userId = null;
+ Integer mine = 0;
+ List<Integer> statusList;
+
+ // 2. 判断是否为管理员
+ boolean isAdmin = AuthUtil.isAdministrator() || AuthUtil.isAdmin();
+
+ if (!isAdmin) {
+ // 非管理员:获取部门ID和用户ID
+ deptId = Long.valueOf(AuthUtil.getDeptId());
+ userId = AuthUtil.getUserId();
+ mine = onlyMine == null ? 0 : onlyMine;
+ // 非管理员:排除已退回状态(状态2)
+ statusList = java.util.Arrays.asList(0, 1, 3, 4);
+ } else {
+ // 管理员:可以查询所有状态
+ statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
+ }
+
+ // 3. 查询事件列表
+ return baseMapper.selectGdClueEventSimpleList(deptId, userId, mine, keyword, statusList);
+ }
+
+ /**
+ * 列表查询(分页)
+ * <p>
+ * 步骤:
+ * 1. 获取当前用户部门ID和用户ID
+ * 2. 判断是否为管理员,设置状态列表
+ * 3. 根据事件状态参数调整状态列表
+ * 4. 查询分页数据
+ * </p>
+ *
+ * @param page 分页对象
+ * @param onlyMine 是否仅我的数据
+ * @param keyword 事件编号关键字
+ * @param eventStatus 事件状态
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @return 分页数据
+ */
+ @Override
+ public IPage<GdClueEventListVO> pageGdClueEventByDept(IPage<GdClueEventListVO> page, Integer onlyMine, String keyword,
+ Integer eventStatus, String startTime, String endTime) {
+ // 1. 获取当前用户部门ID和用户ID
+ Long deptId = null;
+ Long userId = null;
+ Integer mine = 0;
+ List<Integer> statusList;
+
+ // 2. 判断是否为管理员
+ boolean isAdmin = AuthUtil.isAdministrator() || AuthUtil.isAdmin();
+
+ if (!isAdmin) {
+ // 非管理员:获取部门ID和用户ID
+ deptId = Long.valueOf(AuthUtil.getDeptId());
+ userId = AuthUtil.getUserId();
+ mine = onlyMine == null ? 0 : onlyMine;
+ // 非管理员:排除已退回状态(状态2)
+ statusList = java.util.Arrays.asList(0, 1, 3, 4);
+ } else {
+ // 管理员:可以查询所有状态
+ statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
+ }
+
+ // 3. 如果指定了事件状态,优先使用指定的状态
+ if (eventStatus != null) {
+ // 检查指定的状态是否在允许的状态列表中
+ if (statusList.contains(eventStatus)) {
+ statusList = java.util.Arrays.asList(eventStatus);
+ } else {
+ // 如果指定的状态不在允许列表中(如非管理员查询状态2),返回空结果
+ statusList = java.util.Collections.emptyList();
+ }
+ }
+
+ // 4. 查询分页数据
+ return page.setRecords(baseMapper.selectGdClueEventSimpleList(page, deptId, userId, mine, keyword, statusList, startTime, endTime));
}
@Override
@@ -101,11 +177,23 @@
// 1. 获取当前用户部门ID和用户ID
Long deptId = Long.valueOf(AuthUtil.getDeptId());
Long userId = AuthUtil.getUserId();
+ List<Integer> statusList;
- // 2. 查询统计数据
- GdClueEventCountVO countVO = baseMapper.selectGdClueEventCount(deptId, userId, keyword);
+ // 2. 判断是否为管理员
+ boolean isAdmin = AuthUtil.isAdministrator() || AuthUtil.isAdmin();
- // 3. 处理空结果,返回默认值
+ if (isAdmin) {
+ // 管理员:可以查询所有状态
+ statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
+ } else {
+ // 非管理员:排除已退回状态(状态2)
+ statusList = java.util.Arrays.asList(0, 1, 3, 4);
+ }
+
+ // 3. 查询统计数据
+ GdClueEventCountVO countVO = baseMapper.selectGdClueEventCount(deptId, userId, keyword, statusList);
+
+ // 4. 处理空结果,返回默认值
if (countVO == null) {
GdClueEventCountVO empty = new GdClueEventCountVO();
empty.setTotalCount(0L);
@@ -116,7 +204,7 @@
return empty;
}
- // 4. 返回统计结果
+ // 5. 返回统计结果
return countVO;
}
--
Gitblit v1.9.3