package com.vci.client.workflow.user; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.DocumentException; import com.vci.client.bof.ClientBusinessObject; import com.vci.client.bof.ClientBusinessObjectOperation; import com.vci.client.common.objects.UserEntityObject; import com.vci.client.common.oq.OQTool; import com.vci.client.oq.QTClient; import com.vci.client.portal.utility.TableDataUtil; import com.vci.common.qt.object.Condition; import com.vci.common.qt.object.QueryTemplate; import com.vci.corba.common.VCIError; import com.vci.corba.omd.data.BusinessObject; public class WorkflowUserUtil { VciWorkflowUserImpl workflowUserImpl = new VciWorkflowUserImpl(); private static WorkflowUserUtil instance = null; public static WorkflowUserUtil getInstance() { if(instance == null) { instance = new WorkflowUserUtil(); } return instance; } public List getUserByExp(String exp, String executionId, UserEntityObject userObj){ return workflowUserImpl.getUserByExp(exp, executionId, userObj); } public List getUsersByDeptId(String deptId) throws VCIError, DocumentException { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); List list = new ArrayList(); Map conditionMap = new HashMap(); conditionMap.put("isparttime", "0"); conditionMap.put("f_oid", deptId); // List> deptData = searchLo("deptPersonTemplate", "deptperson", conditionMap); List> deptData = searchLo("deptUserTemplate", "deptuser", conditionMap); if (deptData != null && deptData.size() > 0) { for (int j = 0 ; j < deptData.size(); j++) { Map personMap = deptData.get(j); String userId = (String) personMap.get("oid"); // ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "person"); ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "user"); String [] userStr = new String[4]; userStr[0] = "user:" + cboPerson.getId(); userStr[1] = cboPerson.getName(); list.add(userStr); } } return list; } public List getUsersByRoleId(String roleId) throws VCIError, DocumentException { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); List list = new ArrayList(); Map conditionMap = new HashMap(); conditionMap.put("f_oid", roleId); // List> deptData = searchLo("rolePersonTemplate", "roleperson", conditionMap); List> deptData = searchLo("roleUserTemplate", "roleuser", conditionMap); if (deptData != null && deptData.size() > 0) { for (int j = 0 ; j < deptData.size(); j++) { Map personMap = deptData.get(j); String userId = (String) personMap.get("oid"); // ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "person"); ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "user"); String [] userStr = new String[4]; userStr[0] = "user:" + cboPerson.getId(); userStr[1] = cboPerson.getName(); list.add(userStr); } } return list; } public List getUsersByOrgId(String orgId) throws VCIError, DocumentException { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); List list = new ArrayList(); Map conditionMap = new HashMap(); conditionMap.put("f_oid", orgId); // List> deptData = searchLo("orgpersonTemplate", "orgperson", conditionMap); List> deptData = searchLo("orgUserTemplate", "orguser", conditionMap); if (deptData != null && deptData.size() > 0) { for (int j = 0 ; j < deptData.size(); j++) { Map personMap = deptData.get(j); String userId = (String) personMap.get("oid"); // ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "person"); ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "user"); String [] userStr = new String[4]; userStr[0] = "user:" + cboPerson.getId(); userStr[1] = cboPerson.getName(); list.add(userStr); } } return list; } public List getUsersByPostId(String postId) throws VCIError, DocumentException { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); List list = new ArrayList(); Map conditionMap = new HashMap(); conditionMap.put("isparttime", "0"); conditionMap.put("refpost", postId); // List> deptData = searchLo("deptPersonTemplate", "deptperson", conditionMap); List> deptData = searchLo("deptUserTemplate", "deptuser", conditionMap); if (deptData != null && deptData.size() > 0) { for (int j = 0; j < deptData.size(); j++) { Map personMap = deptData.get(j); String userId = (String) personMap.get("oid"); // ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "person"); ClientBusinessObject cboPerson = cboo.readBusinessObjectById(userId, "user"); String [] userStr = new String[4]; userStr[0] = "user:" + cboPerson.getId(); userStr[1] = cboPerson.getName(); list.add(userStr); } } return list; } public List getSubDeptByDeptId(String deptId) throws VCIError { List list = new ArrayList(); Map map = new HashMap(); map.put("PARENTDEPT", deptId); List sublist = searchBo("department", map); for (int k = 0; k < sublist.size(); k++) { ClientBusinessObject subcbo = sublist.get(k); String [] subDeptStr = new String[4]; subDeptStr[0] = "dept:" + subcbo.getOid(); subDeptStr[1] = subcbo.getName(); list.add(subDeptStr); } return list; } public String[] getDepartmentByOid(String Oid) throws VCIError { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); ClientBusinessObject cbo = cboo.readBusinessObjectById(Oid, "department"); String [] deptStr = new String[4]; deptStr[0] = "dept:" + cbo.getOid(); deptStr[1] = cbo.getName(); return deptStr; } public String[] getRoleByOid(String Oid) throws VCIError { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); ClientBusinessObject cbo = cboo.readBusinessObjectById(Oid, "role"); String [] roleStr = new String[4]; roleStr[0] = "role:" + cbo.getOid(); roleStr[1] = cbo.getName(); return roleStr; } public String[] getOrgByOid(String Oid) throws VCIError { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); ClientBusinessObject cbo = cboo.readBusinessObjectById(Oid, "organization"); String [] orgStr = new String[4]; orgStr[0] = "org:" + cbo.getOid(); orgStr[1] = cbo.getName(); return orgStr; } public String[] getPersonByOid(String Oid) throws VCIError { ClientBusinessObjectOperation cboo = new ClientBusinessObjectOperation(); // ClientBusinessObject cbo = cboo.readBusinessObjectById(Oid, "person"); ClientBusinessObject cbo = cboo.readBusinessObjectById(Oid, "user"); String [] userStr = new String[4]; userStr[0] = "user:" + cbo.getId(); userStr[1] = cbo.getName(); return userStr; } public List searchBo(String btmName, Map queryCondition) throws VCIError{ QueryTemplate qt = new QueryTemplate(); qt.setId("queryBusinessQT"); qt.setType("btm"); qt.setBtmType(btmName); List clauseList = new ArrayList(); clauseList.add("*"); qt.setClauseList(clauseList); Condition condition = OQTool.getCondition(queryCondition); qt.setCondition(condition); BusinessObject[] bos = QTClient.getService().findBTMObjects(qt.getId(), OQTool.getQTTextByQT(qt)); List clos = new ArrayList(); if(bos != null && bos.length > 0){ for(BusinessObject bo: bos){ ClientBusinessObject cbo = new ClientBusinessObject(); cbo.setBusinessObject(bo); clos.add(cbo); } } return clos; } public List> searchLo(String qtName, String showType, Map queryCondition) throws VCIError, DocumentException{ Map queryColumnsMap = new HashMap(); queryColumnsMap.put("*", "标题"); TableDataUtil util = new TableDataUtil(); List> dataModel = util.getObjectDataList(qtName, null, queryCondition , null, null, showType, queryColumnsMap, null, null); return dataModel; } }