吉安感知网项目-后端
linwei
10 hours ago bdc112f517420eff3e999295f92a17fcee90c8c0
feat(workorder): 添加线索事件列表中已退回数据的显示选项

- 在 GdClueEventController 中新增 includeReturned 参数用于控制是否包含已退回数据
- 修改 pageGdClueEventByDept 方法签名以支持新的查询参数
- 实现管理员和非管理员角色对已退回状态数据的差异化处理逻辑
- 更新注释文档以反映新的参数和业务流程变化
3 files modified
48 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java 4 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java 3 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java 41 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdClueEventController.java
@@ -93,13 +93,15 @@
            @RequestParam(value = "startTime", required = false) String startTime,
            @ApiParam(value = "结束时间(创建时间)")
            @RequestParam(value = "endTime", required = false) String endTime,
            @ApiParam(value = "是否包含已退回数据,1为是,0为否")
            @RequestParam(value = "includeReturned", required = false, defaultValue = "0") Integer includeReturned,
            @ApiParam(value = "分页参数") Query query) {
        // 1. 构建分页对象
        IPage<GdClueEventListVO> pages = Condition.getPage(query);
        // 2. 查询分页数据
        IPage<GdClueEventListVO> result = gdClueEventService.pageGdClueEventByDept(
                pages, onlyMine, keyword, eventStatus, startTime, endTime);
                pages, onlyMine, keyword, eventStatus, startTime, endTime, includeReturned);
        // 3. 返回分页结果
        return R.data(result);
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdClueEventService.java
@@ -71,10 +71,11 @@
     * @param eventStatus 事件状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param includeReturned 是否包含已退回数据,1为是,0为否
     * @return 分页数据
     */
    IPage<GdClueEventListVO> pageGdClueEventByDept(IPage<GdClueEventListVO> page, Integer onlyMine, String keyword,
            Integer eventStatus, String startTime, String endTime);
            Integer eventStatus, String startTime, String endTime, Integer includeReturned);
    /**
     * 详情查询
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -105,21 +105,23 @@
     * 步骤:
     * 1. 获取当前用户部门ID和用户ID
     * 2. 判断是否为管理员,设置状态列表
     * 3. 根据事件状态参数调整状态列表
     * 4. 查询分页数据
     * 3. 根据includeReturned参数决定是否包含已退回状态
     * 4. 根据事件状态参数调整状态列表
     * 5. 查询分页数据
     * </p>
     *
     * @param page        分页对象
     * @param onlyMine    是否仅我的数据
     * @param keyword     事件编号关键字
     * @param eventStatus 事件状态
     * @param startTime   开始时间
     * @param endTime     结束时间
     * @param page            分页对象
     * @param onlyMine        是否仅我的数据
     * @param keyword         事件编号关键字
     * @param eventStatus     事件状态
     * @param startTime       开始时间
     * @param endTime         结束时间
     * @param includeReturned 是否包含已退回数据,1为是,0为否
     * @return 分页数据
     */
    @Override
    public IPage<GdClueEventListVO> pageGdClueEventByDept(IPage<GdClueEventListVO> page, Integer onlyMine, String keyword,
            Integer eventStatus, String startTime, String endTime) {
            Integer eventStatus, String startTime, String endTime, Integer includeReturned) {
        // 1. 获取当前用户部门ID和用户ID
        Long deptId = null;
        Long userId = null;
@@ -133,28 +135,35 @@
            // 管理员:仅查询当前用户数据
            userId = AuthUtil.getUserId();
        }
        // 3. 根据includeReturned参数构建状态列表
        boolean shouldIncludeReturned = includeReturned != null && includeReturned == 1;
        if (!isAdmin) {
            // 非管理员:获取部门ID和用户ID
            // 非管理员:获取部门ID
            deptId = Long.valueOf(AuthUtil.getDeptId());
            // 非管理员:排除已退回状态(状态2)
            // 非管理员:根据includeReturned参数决定是否包含已退回状态(状态2)
            statusList = java.util.Arrays.asList(0, 1, 3, 4);
        } else {
            // 管理员:可以查询所有状态
            statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
            // 管理员:根据includeReturned参数决定是否包含已退回状态
            if (shouldIncludeReturned) {
                statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
            } else {
                statusList = java.util.Arrays.asList(0, 1, 3, 4);
            }
        }
        // 3. 如果指定了事件状态,优先使用指定的状态
        // 4. 如果指定了事件状态,优先使用指定的状态
        if (eventStatus != null) {
            // 检查指定的状态是否在允许的状态列表中
            if (statusList.contains(eventStatus)) {
                statusList = java.util.Arrays.asList(eventStatus);
            } else {
                // 如果指定的状态不在允许列表中(如非管理员查询状态2),返回空结果
                // 如果指定的状态不在允许列表中,返回空结果
                statusList = java.util.Collections.emptyList();
            }
        }
        // 4. 查询分页数据
        // 5. 查询分页数据
        return page.setRecords(baseMapper.selectGdClueEventSimpleList(page, deptId, userId, mine, keyword, statusList, startTime, endTime));
    }