田源
2025-01-09 8a166a60cfd1a2e593ffa103d10c0dc224fc8628
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
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;
    }
    
}