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]);
|
}
|
|
}
|