Просмотр исходного кода

工作流审核人筛选功能调整

user5 2 лет назад
Родитель
Сommit
a533b782f5

+ 19 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/common/handler/ExtUserTaskActivityBehavior.java

@@ -114,6 +114,25 @@ public class ExtUserTaskActivityBehavior extends UserTaskActivityBehavior {
                         break;
                     case "custom":
                         //根据你的自定义标记,请自行实现
+
+                        //如果字符串中包含 "currentUserSql:" 则进行如下代码替换和处理
+                        if(flowAssignee.getValue ().contains("currentUserSql:")){
+                            //对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
+                            //用于查询当前登录人的部门主任人员信息
+                            UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
+                            String sql = flowAssignee.getValue ();
+                            if(sql.contains("@currentUser.id")){
+                                //将标志进行去除
+                                sql = sql.replaceAll("currentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
+                            }
+                            List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
+                            for (Map<String, Object> map : maps) {
+                                candidateUserIds.add(map.get ("id").toString ());
+                            }
+                        }
+
                         break;
                 }
             }

+ 18 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/common/handler/MutiInstanceHandler.java

@@ -95,6 +95,24 @@ public class MutiInstanceHandler {
                         break;
                     case "custom":
                         //根据你的自定义标记,请自行实现
+
+                        //如果字符串中包含 "currentUserSql:" 则进行如下代码替换和处理
+                        if(flowAssignee.getValue ().contains("currentUserSql:")){
+                            //对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
+                            //用于查询当前登录人的部门主任人员信息
+                            UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
+                            String sql = flowAssignee.getValue ();
+                            if(sql.contains("@currentUser.id")){
+                                //将标志进行去除
+                                sql = sql.replaceAll("currentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
+                            }
+                            List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
+                            for (Map<String, Object> map : maps) {
+                                candidateUserIds.add(map.get ("id").toString ());
+                            }
+                        }
                         break;
                 }
             }