Commit 1f08a2725e337233d2c9719f8c04deea622a92de

Authored by jason
1 parent e01acfb1

工作流 Flowable 分配leader 审批脚本 数据权限问题

yudao-module-bpm/yudao-module-bpm-impl-flowable/pom.xml
@@ -27,6 +27,10 @@ @@ -27,6 +27,10 @@
27 <artifactId>yudao-spring-boot-starter-flowable</artifactId> 27 <artifactId>yudao-spring-boot-starter-flowable</artifactId>
28 </dependency> 28 </dependency>
29 <dependency> 29 <dependency>
  30 + <groupId>cn.iocoder.boot</groupId>
  31 + <artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
  32 + </dependency>
  33 + <dependency>
30 <groupId>org.flowable</groupId> 34 <groupId>org.flowable</groupId>
31 <artifactId>flowable-spring-boot-starter-actuator</artifactId> 35 <artifactId>flowable-spring-boot-starter-actuator</artifactId>
32 </dependency> 36 </dependency>
yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmUserTaskActivityBehavior.java
@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil; @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.RandomUtil; 4 import cn.hutool.core.util.RandomUtil;
5 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  7 +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
  8 +import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule;
7 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; 9 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO;
8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO; 10 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
9 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskAssignRuleTypeEnum; 11 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskAssignRuleTypeEnum;
@@ -183,6 +185,7 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior { @@ -183,6 +185,7 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
183 if (CollUtil.isEmpty(assigneeUserIds)) { 185 if (CollUtil.isEmpty(assigneeUserIds)) {
184 return; 186 return;
185 } 187 }
  188 + //TODO 芋艿 这里有数据权限的问题。默认会加上数据权限 dept_id IN (deptId). 导致查询不到数据
186 Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(assigneeUserIds); 189 Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(assigneeUserIds);
187 assigneeUserIds.removeIf(id -> { 190 assigneeUserIds.removeIf(id -> {
188 AdminUserRespDTO user = userMap.get(id); 191 AdminUserRespDTO user = userMap.get(id);
yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX1Script.java
1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.impl; 1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.impl;
2 2
  3 +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
  4 +import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule;
3 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum; 5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum;
4 import org.flowable.task.service.impl.persistence.entity.TaskEntity; 6 import org.flowable.task.service.impl.persistence.entity.TaskEntity;
5 import org.springframework.stereotype.Component; 7 import org.springframework.stereotype.Component;
@@ -15,6 +17,7 @@ import java.util.Set; @@ -15,6 +17,7 @@ import java.util.Set;
15 public class BpmTaskAssignLeaderX1Script extends BpmTaskAssignLeaderAbstractScript { 17 public class BpmTaskAssignLeaderX1Script extends BpmTaskAssignLeaderAbstractScript {
16 18
17 @Override 19 @Override
  20 + @DataPermission(excludeRules = DeptDataPermissionRule.class)
18 public Set<Long> calculateTaskCandidateUsers(TaskEntity task) { 21 public Set<Long> calculateTaskCandidateUsers(TaskEntity task) {
19 return calculateTaskCandidateUsers(task, 1); 22 return calculateTaskCandidateUsers(task, 1);
20 } 23 }
yudao-module-bpm/yudao-module-bpm-impl-flowable/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskAssignLeaderX2Script.java
1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.impl; 1 package cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.impl;
2 2
  3 +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
  4 +import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule;
3 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum; 5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum;
4 import org.flowable.task.service.impl.persistence.entity.TaskEntity; 6 import org.flowable.task.service.impl.persistence.entity.TaskEntity;
5 import org.springframework.stereotype.Component; 7 import org.springframework.stereotype.Component;
@@ -14,7 +16,10 @@ import java.util.Set; @@ -14,7 +16,10 @@ import java.util.Set;
14 @Component 16 @Component
15 public class BpmTaskAssignLeaderX2Script extends BpmTaskAssignLeaderAbstractScript { 17 public class BpmTaskAssignLeaderX2Script extends BpmTaskAssignLeaderAbstractScript {
16 18
  19 +
17 @Override 20 @Override
  21 + //不需要处理数据权限, 不然会有问题,查询不到数据
  22 + @DataPermission(excludeRules = DeptDataPermissionRule.class)
18 public Set<Long> calculateTaskCandidateUsers(TaskEntity task) { 23 public Set<Long> calculateTaskCandidateUsers(TaskEntity task) {
19 return calculateTaskCandidateUsers(task, 2); 24 return calculateTaskCandidateUsers(task, 2);
20 } 25 }