package com.vci.client.uif.actions.client; import java.awt.Component; import com.vci.client.common.objects.UserObject; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.portal.utility.PRMItem; import com.vci.client.ui.exception.VCIException; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.client.ui.swing.components.VCIJDialog.DialogResult; import com.vci.client.uif.engine.client.SelectorUserDialog; import com.vci.client.uif.engine.client.controls.BaseCustomControl; import com.vci.client.uif.engine.client.custom.AbstractCustomAttributeInteceptor; import com.vci.client.uif.engine.client.objopt.ObjectAddEditPanel; import com.vci.corba.common.VCIError; import com.vci.mw.ClientContextVariable; /** * 7.1 Selectoruse 选择负责人 按钮 * 按钮配置在系统通用弹出对话框中,按钮任务执行成功后刷新对话框FORM中相应的字段。 * 如果选择对话框是按人员选择,则querycondition过滤条件不起作用,如果是角色或部门过滤条件, * 则使用querycondition作为顶级查询其下的所有相关人员。 * querycondition支出动态过滤条件,使用${dept} * 7.1.1 实现类 * plm617.action.SelectorUserAction * 7.1.2 按钮参数 * querytype:选择对话框类型:0显示完整选择框 1按人员选择 2按角色选择 3按部门选择 * querycondition:不同选择条件下的相应过滤条件 (CURRENTUSER.GROUPNUM:当前用户所属部门); * target:FORM中的目标属性名 */ public class SelectorUserAction extends AbstractCustomAttributeInteceptor{ /** * */ private static final long serialVersionUID = 1001463110330445893L; public SelectorUserAction(){ super(); } public SelectorUserAction(PRMItem item) { super(item); } @Override public String getCustomAttributeSaveValue(PRMItem prm, Component parentComponent) throws VCIError { //获取登录用户所在的部门编号 String oldValue = ""; if(parentComponent instanceof ObjectAddEditPanel){ ObjectAddEditPanel oaep = (ObjectAddEditPanel)parentComponent; Object ctrl = oaep.getCtrlComptMap().get(prm.getItemField()); if(ctrl != null && ctrl instanceof BaseCustomControl){ BaseCustomControl bcc = (BaseCustomControl)ctrl; oldValue = bcc.getValue(); } } String groupID = ""; String[] groupIds = ClientContextVariable.getInvocationInfo().groupIDs; if(groupIds != null && groupIds.length > 0){ groupID = groupIds[0]; } SelectorUserDialog eid = new SelectorUserDialog(parentComponent,groupID); UserObject serObject = eid.getUserObject(); if(eid.getDialogResult() == DialogResult.CANCEL && !oldValue.equals("")){ serObject = getUserObjectByName(oldValue); } //用户账号##VCI##用户姓名 存储值##VCI##显示值 String value = serObject.getUserName()+SPLIT_CHAR+serObject.getTrueName()+"("+serObject.getUserName()+")"; return value; } @Override public String getCustomAttributeDisplayValue(String attrVal, PRMItem prm) throws VCIError { UserObject userObj = getUserObjectByName(attrVal); if(userObj == null) return ""; return userObj.getTrueName(); } private UserObject getUserObjectByName(String userName){ //根据存储的值,通过查询,得到显示的值 UserObject userObj = null; try { userObj = new RightManagementClientDelegate().getUserObjectByUserName(userName); } catch (VCIException e) { // TODO Auto-generated catch block e.printStackTrace(); VCIJOptionPane.showError(ClientContextVariable.getFrame(), "查询责任人显示值发生错误" + e.toString()); } return userObj; } }