田源
2024-03-07 4b4083fd73dc27ece42f4835483565eef0e4f608
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.vci.server.workflow.server.interfaceImpl;
 
import java.util.ArrayList;
import java.util.List;
 
import org.apache.axis.utils.StringUtils;
 
import com.vci.common.log.ServerWithLog4j;
import com.vci.corba.framework.data.DeptInfo;
import com.vci.corba.framework.data.RoleInfo;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.framework.method.FrameworkServicePrx;
import com.vci.server.base.utility.ServerServiceProvider;
import com.vci.server.workflow.server.interfaces.IWorkflowUserService;
 
/**
 * 根据规则解析人员 规则:user:成员,role:角色,department:部门
 * 
 * @author liudi
 *
 */
public class WorkFlowUserParserImpl implements IWorkflowUserService {
 
    public String[] getAllUsers2Task(String[] paramArrayOfString, String userName) throws Exception {
        if (paramArrayOfString == null || paramArrayOfString.length == 0)
            return new String[0];
        
        FrameworkServicePrx frameService = ServerServiceProvider.getFrameService();
        
        List<String> canditates = new ArrayList<String>();
        ServerWithLog4j.logger.debug("用户解析类:WorkFlowUserParserImpl----------------------------------------");
        for (int i = 0; i < paramArrayOfString.length; i++) {
            if (StringUtils.isEmpty(paramArrayOfString[i]))
                continue;
            
            int indexOf = paramArrayOfString[i].indexOf(":");
            if (indexOf < 0) {
                canditates.add(paramArrayOfString[i]);
                continue;
            }
            String flag = paramArrayOfString[i].substring(0, indexOf).toLowerCase().trim();
            String substring = paramArrayOfString[i].substring(indexOf + 1);
            if ("user".equals(flag)) {
                ServerWithLog4j.logger.debug("user----------------------------------------");
                if (!canditates.contains(substring)) {
                    canditates.add(substring);
                    ServerWithLog4j.logger.debug("user:" + substring);
                }
            }
            if ("role".equals(flag)) {
                ServerWithLog4j.logger.debug("role----------------------------------------");
                RoleInfo role = frameService.fetchRoleByName(substring);
                UserInfo[] users = frameService.fetchUserInfoByRoleId(role.id,  (short)0);
                for (int j = 0; j < users.length; j++) {
                    if (!canditates.contains(users[j].userName)) {
                        canditates.add(users[j].userName);
                        ServerWithLog4j.logger.debug("role:" + users[j].userName);
                    }
                }
                
//                Role roleByName = new RoleService().selectRole(substring);
//                List<User> selectUserByRoleId = new UserService().selectUserByRoleId(roleByName.getId());
//                for (int j = 0; j < selectUserByRoleId.size(); j++) {
//                    if (!canditates.contains(selectUserByRoleId.get(j).getUserName())) {
//                        canditates.add(selectUserByRoleId.get(j).getUserName());
//                        ServerWithLog4j.logger.debug("role:" + selectUserByRoleId.get(j).getUserName());
//                    }
//                }
            }
            if ("dept".equals(flag)) {
                ServerWithLog4j.logger.debug("dept----------------------------------------");
                
                DeptInfo dept = frameService.fetchDeptByDeptName(substring);
                UserInfo[] users = frameService.fetchUserInfoByDeptAndRole(new String[] {dept.id}, new String[0]);
                for (int j = 0; j < users.length; j++) {
                    if (!canditates.contains(users[j].userName)) {
                        canditates.add(users[j].userName);
                        ServerWithLog4j.logger.debug("dept:" + users[j].userName);
                    }
                }
 
                
                
//                Department selectDepartmentByName = new DepartmentService().selectDepartmentById(substring);
//                List<User> userByDeptId = new UserService().getUserByDeptId(selectDepartmentByName.getId());
//                for (int j = 0; j < userByDeptId.size(); j++) {
//                    if (!canditates.contains(userByDeptId.get(j).getUserName())) {
//                        canditates.add(userByDeptId.get(j).getUserName());
//                        ServerWithLog4j.logger.debug("dept:" + userByDeptId.get(j).getUserName());
//                    }
//                }
            }
        }
        return canditates.toArray(new String[0]);
    }
 
}