2026-06-01 62e6998c99a9cdf3346ead4ecb574ddcef056af1
feat(approve): 添加审批实例按当前用户过滤功能

- 在 ApprovalInstanceDto 中新增 currentUserId 字段用于存储当前用户ID
- 在 ApprovalInstanceMapper.xml 中添加SQL条件过滤当前用户相关的审批实例
- 在 ApprovalInstanceServiceImpl 中自动注入当前用户ID到查询条件
- 实现申请人和审核人的数据权限过滤功能
已修改3个文件
12 ■■■■■ 文件已修改
src/main/java/com/ruoyi/approve/bean/dto/ApprovalInstanceDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/approve/ApprovalInstanceMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/bean/dto/ApprovalInstanceDto.java
@@ -23,4 +23,7 @@
    @Schema(description = "出库批号")
    private String outboundBatches;
    @Schema(description = "当前用户ID(查询时自动注入,用于过滤申请人和审核人)")
    private Long currentUserId;
}
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -97,6 +97,8 @@
    @Override
    public R listPage(Page<ApprovalInstanceVo> page, ApprovalInstanceDto approvalInstanceDto) {
        // 注入当前用户ID,用于过滤只查看申请人和审核人是自己的数据
        approvalInstanceDto.setCurrentUserId(SecurityUtils.getUserId());
        IPage<ApprovalInstanceVo> approvalInstanceVoIPage = approvalInstanceMapper.listPage(page, approvalInstanceDto);
        List<ApprovalInstanceVo> records = approvalInstanceVoIPage.getRecords();
src/main/resources/mapper/approve/ApprovalInstanceMapper.xml
@@ -51,6 +51,13 @@
            <if test="ew.applicantName != null and ew.applicantName !=''">
                and ai.applicant_name = #{ew.applicantName}
            </if>
            <if test="ew.currentUserId != null">
                and (ai.applicant_id = #{ew.currentUserId}
                     or exists (select 1 from approval_task at2
                                where at2.instance_id = ai.id
                                  and at2.approver_id = #{ew.currentUserId}
                                  and at2.deleted = 0))
            </if>
        </where>
        order by ai.create_time desc
    </select>