package com.vci.client.workflow.task;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.Frame;
|
import java.awt.Toolkit;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.util.LinkedList;
|
import java.util.List;
|
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.event.TreeExpansionEvent;
|
import javax.swing.event.TreeExpansionListener;
|
import javax.swing.event.TreeSelectionEvent;
|
import javax.swing.event.TreeSelectionListener;
|
import javax.swing.tree.TreeNode;
|
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreeSelectionModel;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.TransmitTreeObject;
|
import com.vci.client.common.objects.DeptObject;
|
import com.vci.client.common.objects.RoleObject;
|
import com.vci.client.common.objects.UserObject;
|
import com.vci.client.framework.delegate.RightManagementClientDelegate;
|
import com.vci.client.framework.systemConfig.stafforgmanage.RightManagementTreeCellRenderer;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.client.ui.locale.LocaleDisplay;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.swing.VCISwingUtil;
|
import com.vci.client.ui.swing.components.VCIJButton;
|
import com.vci.client.ui.swing.components.VCIJDialog;
|
import com.vci.client.ui.tree.VCIBaseTree;
|
import com.vci.client.ui.tree.VCIBaseTreeModel;
|
import com.vci.client.ui.tree.VCIBaseTreeNode;
|
import com.vci.client.workflow.commom.ClientHelper;
|
import com.vci.client.workflow.delegate.ProcessCustomClientDelegate;
|
import com.vci.client.workflow.template.object.ProcessCategoryObject;
|
import com.vci.client.workflow.template.object.ProcessDefinitionObject;
|
import com.vci.client.workflow.template.object.RMTypeObject;
|
|
public class TaskAssignedForPlatformDialog extends VCIJDialog {
|
|
|
private static final long serialVersionUID = 4257732186259993713L;
|
|
private VCIBaseTree leftTree = null;
|
private VCIBaseTreeModel treeModel = null;
|
private VCIBaseTreeNode rootNode = null;
|
|
VCIJButton okBtn = VCISwingUtil.createVCIJButton("", "确定", "确定", "ok.gif");
|
VCIJButton cancelBtn = VCISwingUtil.createVCIJButton("", "取消", "取消", "cancel.gif");
|
// VCIJLabel lbluser = new VCIJLabel("快速查询:");
|
// VCIJTextField jtfuser = new VCIJTextField("");
|
String selectUser = "";
|
String userDept = "";
|
|
private UserObject userInfo;
|
|
private VCIBaseTreeNode selectNode;
|
private String userValue ;
|
private String roleValue ;
|
private String departmentValue ;
|
private TransmitTreeObject transmitTreeObject = new TransmitTreeObject();
|
private String type = "";
|
public String getSelectUser() {
|
return selectUser;
|
}
|
|
public void setSelectUser(String selectUser) {
|
this.selectUser = selectUser;
|
}
|
private UserObject[] userObjects;
|
private boolean isOk = false;
|
private String[] taskNames,executionIds;
|
public TaskAssignedForPlatformDialog(Frame parent,String[] taskName,String[] executionId) {
|
super(parent, true);
|
this.taskNames = taskName;
|
this.executionIds = executionId;
|
setTitle("选择代办人");
|
initUI();
|
addListener();
|
setSize(280, 320);
|
centerToScreen();
|
this.setSize(280, 350);
|
this.setVisible(true);
|
}
|
public TaskAssignedForPlatformDialog(Frame parent,String type) {
|
super(parent, true);
|
this.type = type;
|
setTitle("选择代办人");
|
initUI();
|
addListener();
|
setSize(280, 320);
|
centerToScreen();
|
this.setSize(280, 350);
|
this.setVisible(true);
|
}
|
|
private void initUI() {
|
JPanel assignPanel = new JPanel(new BorderLayout());
|
JScrollPane leftScrPane = new JScrollPane();
|
initLeftPanel(leftScrPane);
|
assignPanel.add(leftScrPane);
|
|
JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
|
btnPanel.add(okBtn);
|
btnPanel.add(cancelBtn);
|
JPanel topPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
|
// topPanel.add(lbluser);
|
// topPanel.add(jtfuser);
|
getContentPane().add(topPanel,BorderLayout.NORTH);
|
getContentPane().add(assignPanel);
|
getContentPane().add(btnPanel, BorderLayout.SOUTH);
|
}
|
|
private void initLeftPanel(JScrollPane leftJsp) {
|
String rootObj = "root";
|
UserObject user = LogonApplication.getUserObject();
|
RightManagementClientDelegate del = new RightManagementClientDelegate(LogonApplication.getUserEntityObject());
|
// try {
|
// DeptObject dept = del.fetchDeptByUserId(user.getId());
|
// if(dept != null){
|
// userDept = dept.getName();
|
// rootNode = new VCIBaseTreeNode(userDept,rootObj);
|
//
|
// }else
|
rootNode = new VCIBaseTreeNode("人员",rootObj);
|
initUserTree(rootNode, "root");
|
initRoleTree(rootNode, "root");
|
initDepartTree(rootNode, "root");
|
treeModel = new VCIBaseTreeModel(rootNode);
|
leftTree = new VCIBaseTree(treeModel, new RightManagementTreeCellRenderer());
|
leftTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
|
leftTree.addTreeSelectionListener(new TreeSelectionListener() {
|
|
public void valueChanged(TreeSelectionEvent e) {
|
TreePath treePath = e.getPath();
|
VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent();
|
transmitTreeObject.setCurrentTreeNode(selectNode);
|
}
|
});
|
leftTree.addTreeExpansionListener(new TreeExpansionListener() {
|
public void treeExpanded(TreeExpansionEvent event) {
|
// TreePath treePath = event.getPath();
|
// VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent();
|
// if(!selectNode.isExpand()){
|
// selectNode.removeAllChildren();
|
// getExpandTreeData(selectNode);
|
//
|
// }
|
|
TreePath treePath = event.getPath();
|
selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent();
|
transmitTreeObject.setCurrentTreeNode(selectNode);
|
Object object = selectNode.getObj();
|
// if (!selectNode.isExpand()) {
|
if (selectNode.getChildCount()==0) {
|
selectNode.setExpand(true);
|
transmitTreeObject.getCurrentTreeNode().removeAllChildren();
|
|
if (object instanceof UserObject) {
|
UserObject user = (UserObject) object;
|
if (user.getId().equals("root")) {
|
try {
|
UserObject[] userInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfo();
|
for (UserObject userObject : userInfos) {
|
if(userValue!=null&&!"".equals(userValue)){
|
String[] split = userValue.split(",");
|
for(String userSplit : split){
|
if(userSplit.equals(userObject.getUserName())){
|
treeModel.insertNodeInto(new VCIBaseTreeNode(userObject.toString(), userObject), selectNode, selectNode.getChildCount());
|
}
|
}
|
}else{
|
treeModel.insertNodeInto(new VCIBaseTreeNode(userObject.toString(), userObject), selectNode, selectNode.getChildCount());
|
}
|
}
|
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
}
|
}
|
if (object instanceof RoleObject) {
|
RoleObject role = (RoleObject) object;
|
if (role.getId().equals("root")) {
|
try {
|
RoleObject[] roleInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchRoleInfo();
|
|
for (RoleObject roleObject : roleInfos) {
|
if(roleValue!=null&&!"".equals(roleValue)){
|
String[] split = roleValue.split(",");
|
for(String roleSplit : split){
|
if(roleSplit.equals(roleObject.getId())){
|
treeModel.insertNodeInto(new VCIBaseTreeNode(roleObject.getName(), roleObject), selectNode, selectNode.getChildCount());
|
}
|
}
|
}else{
|
treeModel.insertNodeInto(new VCIBaseTreeNode(roleObject.getName(), roleObject), selectNode, selectNode.getChildCount());
|
}
|
}
|
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
}else{
|
try {
|
UserObject[] fetchUserInfoByRoleId = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByRoleId(role.getId(), role.getType());
|
for (UserObject userObject : fetchUserInfoByRoleId) {
|
treeModel.insertNodeInto(new VCIBaseTreeNode(userObject.toString(), userObject), selectNode, selectNode.getChildCount());
|
}
|
} catch (VCIException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
if (object instanceof DeptObject){
|
RightManagementClientDelegate del = new RightManagementClientDelegate(LogonApplication.getUserEntityObject());
|
try {
|
DeptObject[] DeptInfos = null;
|
DeptObject deptObject = (DeptObject) object;
|
if (deptObject.getId().equals("root")){
|
DeptInfos= new RightManagementClientDelegate(LogonApplication.getUserEntityObject())
|
.fetchDepartmentInfo();
|
|
}else{
|
DeptInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject())
|
.fetchDepartmentInfoByParentId(deptObject.getId());
|
}
|
if (DeptInfos == null){
|
if (!deptObject.getId().equals("root")){
|
UserObject[] objs = del.getUserByDeptId(deptObject.getId());
|
for(int i=0;i<objs.length;i++) {
|
treeModel.insertNodeInto(new VCIBaseTreeNode(objs[i].toString(), objs[i]),selectNode,selectNode.getChildCount());
|
}
|
}else{
|
return;
|
}
|
}
|
if(DeptInfos!=null){
|
int len = DeptInfos.length;
|
for (int i = 0; i < len; i++) {
|
if(departmentValue!=null&&!"".equals(departmentValue)){
|
String[] split = departmentValue.split(",");
|
for(String deptmentSplit : split){
|
if(deptmentSplit.equals(DeptInfos[i].getId())){
|
treeModel.insertNodeInto(new VCIBaseTreeNode(DeptInfos[i].getName(), DeptInfos[i]),selectNode,selectNode.getChildCount());
|
}
|
}
|
}else{
|
treeModel.insertNodeInto(new VCIBaseTreeNode(DeptInfos[i].getName(), DeptInfos[i]),selectNode,selectNode.getChildCount());
|
}
|
}
|
}
|
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
}
|
}
|
}
|
|
public void treeCollapsed(TreeExpansionEvent event) {
|
}
|
});
|
leftJsp.getViewport().add(leftTree);
|
// initLeftTree(rootNode);
|
// } catch (VCIException e) {
|
// VCIOptionPane.showMessage(this, "查询人员所属部门时出错");
|
// e.printStackTrace();
|
// }
|
}
|
private void getExpandTreeData(VCIBaseTreeNode treeNode) {
|
try{
|
String processCategoryId = "";
|
Object nodeObject = treeNode.getObj();
|
if(nodeObject instanceof ProcessDefinitionObject) {
|
treeNode.setLeaf(true);
|
return;
|
}
|
if(nodeObject instanceof String && nodeObject.toString().equals("root")){
|
// initLeftTree(rootNode);
|
}else{
|
if (nodeObject instanceof ProcessCategoryObject) {
|
processCategoryId = ((ProcessCategoryObject)nodeObject).getId();
|
} else if (nodeObject instanceof RMTypeObject) {
|
TreeNode[] treeNodes = treeNode.getPath();
|
processCategoryId = ((ProcessCategoryObject)(((VCIBaseTreeNode)treeNodes[1]).getObj())).getId();
|
}
|
//refresh tree from db
|
ProcessCategoryObject[] processCategories = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getProcessCategories(processCategoryId);
|
for (ProcessCategoryObject obj : processCategories) {
|
VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
|
treeModel.insertNodeInto(node, treeNode, treeNode.getChildCount());
|
treeNode.setExpand(true);
|
}
|
}
|
}catch(VCIException ex){
|
VCIOptionPane.showError(LogonApplication.frame, "RMIPRm", ex);
|
}
|
}
|
|
// private void initLeftTree(VCIBaseTreeNode treeNode) {
|
// try{
|
// RightManagementClientDelegate del = new RightManagementClientDelegate();
|
// UserObject[] object = del.fetchUserInfo();
|
//// if(userDept != ""){
|
// for(UserObject obj : object){
|
//// if(obj.getUserName().equals(LogonApplication.getUserObject().getUserName())){
|
//// continue;
|
//// }
|
//// DeptObject dept = del.fetchDeptByUserId(obj.getId());
|
//// if(!"".equals(this.getSelectUser())){
|
//// if(obj.toString().contains(selectUser)){
|
//// if(dept != null && dept.getName().equals(userDept)){
|
//// VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getUserName()+"("+obj.getTrueName()+")", obj);
|
//// treeNode.add(node);
|
//// }
|
//// }
|
//// }else{
|
//// if(dept != null && dept.getName().equals(userDept)){
|
// VCIBaseTreeNode node = new VCIBaseTreeNode(obj.toString(), obj);
|
// treeNode.add(node);
|
//// }
|
//// }
|
// }
|
//// }
|
// this.leftTree.setSelectionPath(new TreePath(treeNode));
|
// this.leftTree.updateUI();
|
// } catch (VCIException e) {
|
// e.printStackTrace();
|
// }
|
// }
|
|
private void initUserTree(VCIBaseTreeNode rootNode, String puid) {
|
String userName = LogonApplication.getUserEntityObject().getUserName();
|
try {
|
userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName);
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
UserObject userObject = new UserObject();
|
userObject.setId("root");
|
VCIBaseTreeNode userNode = new VCIBaseTreeNode("用户", userObject);
|
rootNode.add(userNode);
|
}
|
private void initRoleTree(VCIBaseTreeNode rootNode, String puid) {
|
String userName = LogonApplication.getUserEntityObject().getUserName();
|
try {
|
userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName);
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
RoleObject roleObject = new RoleObject();
|
roleObject.setId("root");
|
VCIBaseTreeNode roleNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.role", "RMIPFramework", getLocale()), roleObject);
|
rootNode.add(roleNode);
|
|
}
|
private void initDepartTree(VCIBaseTreeNode rootNode, String puid) {
|
String userName = LogonApplication.getUserEntityObject().getUserName();
|
try {
|
userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName);
|
} catch (VCIException e) {
|
e.printStackTrace();
|
return;
|
}
|
DeptObject rootDepartment = new DeptObject();
|
rootDepartment.setId("root");
|
VCIBaseTreeNode departmentNode = new VCIBaseTreeNode(
|
LocaleDisplay.getI18nString("rmip.stafforg.menu.department",
|
"RMIPFramework", getLocale()), rootDepartment);
|
rootNode.add(departmentNode);
|
}
|
|
private void addListener() {
|
okBtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
if("AutoSetTaskAssign".equals(type)){
|
autoSetTaskAssignOk();
|
}else{
|
ok();
|
}
|
}
|
});
|
|
cancelBtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
close();
|
}
|
});
|
// jtfuser.addKeyListener(new KeyAdapter(){
|
// public void keyReleased(KeyEvent e) {
|
// select();
|
// }
|
// });
|
}
|
/**
|
* 出差设置时调用
|
*/
|
private void autoSetTaskAssignOk() {
|
userObjects = getSelectProcessDefinition();
|
|
if(userObjects == null||userObjects.length==0){
|
JOptionPane.showMessageDialog(this, "请选择代办人");
|
return;
|
}
|
isOk = true;
|
close();
|
}
|
private UserObject[] getSelectProcessDefinition() {
|
UserObject result = null;
|
List<UserObject> list = new LinkedList<UserObject>();
|
int count = leftTree.getSelectionCount();
|
// (VCIBaset)leftTree.getSelectionPaths();
|
// Object node = leftTree.getLastSelectedPathComponent();
|
Object[] nodes = new Object[count];
|
if(count != 0 ){
|
for(int i = 0 ;i<count;i++){
|
nodes[i] = leftTree.getSelectionPaths()[i].getLastPathComponent();
|
}
|
}
|
if(nodes != null) {
|
for(int i = 0 ;i<nodes.length;i++){
|
Object obj = ((VCIBaseTreeNode)nodes[i]).getObj();
|
if(obj instanceof UserObject && !(((UserObject) obj).getUserName() == null) ){
|
// result = (UserObject) obj;
|
list.add((UserObject) obj);
|
}
|
}
|
}
|
return list.toArray(new UserObject[0]);
|
}
|
|
private void ok() {
|
userObjects = getSelectProcessDefinition();
|
|
if(userObjects == null||userObjects.length==0){
|
JOptionPane.showMessageDialog(this, "请选择代办人");
|
return;
|
}
|
|
String userName = getAssignName(userObjects);
|
System.out.println(userName);
|
try {
|
String[] taskIds = new String[executionIds.length];
|
for(int i=0;i<executionIds.length;i++){
|
String taskId = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getTaskId(taskNames[i],executionIds[i]);
|
taskIds[i] = taskId;
|
}
|
new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).transmitTaskByPlatform(taskIds, userName);
|
} catch (VCIException e) {
|
e.printStackTrace();
|
}
|
isOk = true;
|
close();
|
}
|
|
private void close() {
|
this.dispose();
|
this.setVisible(false);
|
}
|
|
public UserObject[] getProcessDefinitionObject() {
|
return userObjects;
|
}
|
|
private void centerToScreen() {
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
Dimension componentSize = getSize();
|
if (componentSize.height > screenSize.height) {
|
componentSize.height = screenSize.height;
|
}
|
|
if (componentSize.width > screenSize.width) {
|
componentSize.width = screenSize.width;
|
}
|
|
this.setLocation((screenSize.width - componentSize.width) / 2,
|
(screenSize.height - componentSize.height) / 2);
|
}
|
|
public boolean isOk() {
|
return isOk;
|
}
|
|
private String getI18nString(String code){
|
return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + code, this.getLocale());
|
}
|
private void select(){
|
// setSelectUser(jtfuser.getText());
|
rootNode.removeAllChildren();
|
// initLeftTree(rootNode);
|
}
|
|
private String getAssignName(UserObject[] object){
|
String userName = "";
|
for(int i = 0 ;i<object.length;i++){
|
userName += "user:";
|
if(i+1 == object.length){
|
userName += object[i].getUserName();
|
break;
|
}
|
userName += object[i].getUserName()+",";
|
}
|
return userName;
|
}
|
}
|