Jelajahi Sumber

流程自定义查询审核人方法调整

user5 2 tahun lalu
induk
melakukan
62e313ca27

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

@@ -132,6 +132,29 @@ public class ExtUserTaskActivityBehavior extends UserTaskActivityBehavior {
                                 candidateUserIds.add(map.get ("id").toString ());
                             }
                         }
+                        //如果字符串中包含 "cwCurrentUserSql:" 则进行如下代码替换和处理
+                        if(flowAssignee.getValue ().contains("cwCurrentUserSql:")){
+                            //对应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("cwCurrentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
+                            }
+                            if(sql.contains("@currentUser.officeDTO.name")){
+                                //将标志进行去除
+                                sql = sql.replaceAll("cwCurrentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.officeDTO.name","'" + currentUserDTO.getOfficeDTO().getName() + "'");
+                            }
+                            List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
+                            for (Map<String, Object> map : maps) {
+                                candidateUserIds.add(map.get ("id").toString ());
+                            }
+                        }
 
                         break;
                 }

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

@@ -113,6 +113,29 @@ public class MutiInstanceHandler {
                                 candidateUserIds.add(map.get ("id").toString ());
                             }
                         }
+                        //如果字符串中包含 "cwCurrentUserSql:" 则进行如下代码替换和处理
+                        if(flowAssignee.getValue ().contains("cwCurrentUserSql:")){
+                            //对应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("cwCurrentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
+                            }
+                            if(sql.contains("@currentUser.officeDTO.name")){
+                                //将标志进行去除
+                                sql = sql.replaceAll("cwCurrentUserSql:","");
+                                //将判断条件进行替换
+                                sql = sql.replaceAll("@currentUser.officeDTO.name","'" + currentUserDTO.getOfficeDTO().getName() + "'");
+                            }
+                            List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
+                            for (Map<String, Object> map : maps) {
+                                candidateUserIds.add(map.get ("id").toString ());
+                            }
+                        }
                         break;
                 }
             }