#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <wobject/xdouble.hpp> 
 | 
#include <xcontrol/xlayersheet.hpp> 
 | 
  
 | 
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" 
 | 
#include "viewobject/view.base.hpp" 
 | 
  
 | 
#include "SysUser.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
class __declspec(dllexport) UserImport : public xframe 
 | 
{ 
 | 
public: 
 | 
  
 | 
  
 | 
    SysUser* lw_obj; 
 | 
    xdwgrid    dw_list; 
 | 
    xtreeview    tv_org; 
 | 
    xnode    m_agentNode;    //Agent Condition 
 | 
    xstring    m_agentCond;    //Agent Node 
 | 
    xstring    m_sTxt; 
 | 
    xstring        is_orgid; 
 | 
public: 
 | 
    UserImport(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd), lw_obj(nullptr) {} 
 | 
public: 
 | 
    static UserImport* CreateInstance(void* implPtr, void* hWnd) 
 | 
    { 
 | 
        UserImport* pWin = new UserImport(implPtr, (HWND)hWnd); 
 | 
        return pWin; 
 | 
    } 
 | 
    int SetAgent() 
 | 
    { 
 | 
        xstring xfNodeAgentArea = L"agentarea"; 
 | 
        xnode anode = GetAgentNode(xfNodeAgentArea); 
 | 
        if (m_agentNode) 
 | 
        { 
 | 
            SetAgentNode(anode, m_agentNode); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            KXMLDOMElement xframeElement = GetElement(); 
 | 
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); 
 | 
            if (agent) 
 | 
            { 
 | 
                xstring s = agent.xml(); 
 | 
                m_agentNode = SetAgentNode(anode, s); 
 | 
            } 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    //½¹µã¼¤»î´¦Àíº¯Êý 
 | 
    int OnSetFocus(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        SetAgent(); 
 | 
        //ÖØÖù¤¾ßÌõ 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int  OnRetrieve(xstring ls_orgid) 
 | 
    { 
 | 
  
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg.AddArg(L"OrgID", ls_orgid); 
 | 
        //trace(ls_orgid); 
 | 
        //if (xaserver::ExecXQuery(GetServerUrl(),L"[MSSqlHrEmployee.xq]",arg.GetString(),x) == 1) 
 | 
        if (xurl::get(L"SysUser.config/UserSelect.xq", arg.GetString(), x) == 1) 
 | 
        { 
 | 
            dw_list.Retrieve(x); 
 | 
            dw_list.Redraw(); 
 | 
        } 
 | 
        //trace(x.xml()); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnOK() 
 | 
    { 
 | 
        if (GetWinParam()) 
 | 
        { 
 | 
            lw_obj = (SysUser*)GetWinParam(); 
 | 
        } 
 | 
        else 
 | 
            return 0; 
 | 
  
 | 
        int row = dw_list.GetNextSelectRow(1); 
 | 
        //trace(row); 
 | 
        if (row < 1) 
 | 
        { 
 | 
            alert(L"ÇëÑ¡ÔñÈËÔ±!"); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        xstring sPositionID, sPositionName; 
 | 
        xstring sOrgID, sOrgName; 
 | 
        xstring sJobID, sJobName; 
 | 
        //int wid = lw_obj.tv_usergroup.GetId(); 
 | 
        HTREEITEM hitem = tv_org.GetSelectedItem(); 
 | 
        //KXMLDOMElement ele = tv_org.GetItemData(hitem); 
 | 
  
 | 
  
 | 
        while (row > 0) 
 | 
        { 
 | 
            //trace(row); 
 | 
            KXMLDOMElement e = dw_list.GetRowElement(row); 
 | 
            trace(e.xml()); 
 | 
            xstring sEmployeeNo = e.selectSingleNode(L"EmployeeNo").text() + (xstring)L""; 
 | 
            xstring sOldEmpNo = e.selectSingleNode(L"OldEmpNo").text() + (xstring)L""; 
 | 
            xstring sPersonID = e.selectSingleNode(L"PersonID").text() + (xstring)L""; 
 | 
            xstring sPersonName = e.selectSingleNode(L"Name").text() + (xstring)L""; 
 | 
            xstring sPassWord = xutil::MD5(sOldEmpNo); 
 | 
  
 | 
            /* 
 | 
            xml xx; 
 | 
            x 
 | 
            xaserverarg arg; 
 | 
            arg.setNativePointer(arg.CreateInstance()); 
 | 
            arg.AddArg(L"userno",sOldEmpNo); 
 | 
            arg.AddArg(L"password",sPassWord); 
 | 
            if(xurl::get(L"/sale/data/SysUser/GetOldPassWord",arg.GetString(),xx)==1) 
 | 
            { 
 | 
                if(xx.xml()!=L"") 
 | 
                { 
 | 
                    KXMLDOMElement ex = xx.documentElement(); 
 | 
                    sPassWord = L""+ex.text(); 
 | 
                } 
 | 
            }*/ 
 | 
  
 | 
            int nRow = lw_obj->dw_user.InsertRow(0); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"EmployeeNo", sEmployeeNo); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"UserName", sOldEmpNo); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"PassWord", sPassWord); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"PersonID", sPersonID); 
 | 
            lw_obj->dw_user.SetItemDisplayString(nRow, L"PersonID", sPersonName); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"Status", L"Y"); 
 | 
            lw_obj->dw_user.SetItemDisplayString(nRow, L"Status", L"ÓÐЧ"); 
 | 
            lw_obj->dw_user.SetItemString(nRow, L"OldEmpNo", sOldEmpNo); 
 | 
            /* 
 | 
                lw_obj.dw_user.SetItemString(nRow,L"PositionID",sPositionID); 
 | 
                lw_obj.dw_user.SetItemDisplayString(nRow,L"PositionID",sPositionName); 
 | 
                lw_obj.dw_user.SetItemString(nRow,L"OrgID",sOrgID); 
 | 
                lw_obj.dw_user.SetItemDisplayString(nRow,L"OrgID",sOrgName); 
 | 
                lw_obj.dw_user.SetItemString(nRow,L"JobID",sJobID); 
 | 
                lw_obj.dw_user.SetItemDisplayString(nRow,L"JobID",sJobName); 
 | 
  
 | 
                lw_obj.dw_user.SetItemString(nRow,L"Status",L"Y"); 
 | 
                lw_obj.dw_user.SetItemDisplayString(nRow,L"Status",L"ÓÐЧ"); 
 | 
                xstring sdate = TApp::GetCurDate()+L""; 
 | 
                lw_obj.dw_user.SetItemString(nRow,L"StartDate",sdate+L""); 
 | 
                lw_obj.dw_user.SetItemString(nRow,L"EndDate",L"2050-12-31");*/ 
 | 
  
 | 
            row = dw_list.GetNextSelectRow(row + 1); 
 | 
            //trace(row); 
 | 
        } 
 | 
        CloseWindow(); 
 | 
        return 1; 
 | 
    } 
 | 
    int OnSubTree(xstring id, HTREEITEM parentitem) 
 | 
    { 
 | 
        //int wid = tv_org.GetId(); 
 | 
        if (tv_org.GetChildItem( parentitem)) return 1; 
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg.AddArg(L"sguid", id); 
 | 
        if (xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
        //trace(x.xml()); 
 | 
        auto list = x.selectNodes(L"//item"); 
 | 
        int i = 0, s = list.length(); 
 | 
        KXMLDOMElement xitem; 
 | 
        xstring sName; 
 | 
        xstring sguid; 
 | 
        xstring stype; 
 | 
        if (s > 0) 
 | 
        { 
 | 
            for (i = 0; i < s; i++) 
 | 
            { 
 | 
                xitem = list.item(i); 
 | 
                sName = xitem.selectSingleNode(L"name").text(); 
 | 
                sguid = xitem.selectSingleNode(L"id").text(); 
 | 
                stype = xitem.selectSingleNode(L"typ").text(); 
 | 
                //int curItem = tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,15,4); 
 | 
                HTREEITEM curItem = 0; 
 | 
                if (stype == L"Org") 
 | 
                { 
 | 
                    curItem = tv_org.InsertChildItemEx( parentitem, sName, xitem, 15, 4); 
 | 
                    tv_org.SetItemChild1(curItem, 1); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    curItem = tv_org.InsertChildItemEx(parentitem, sName, xitem, 21, 21); 
 | 
                } 
 | 
                //OnSubTree(sguid,curItem); 
 | 
            } 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnCreateTree(xstring id, HTREEITEM parentitem) 
 | 
    { 
 | 
        //while (tv_1.GetRootItem()>0) 
 | 
        //    tv_1.DeleteItem(tv_1.GetRootItem());                 
 | 
        //int wid = tv_org.GetId(); 
 | 
        xml x; 
 | 
  
 | 
        x.loadXML(L"<item><id>" + id + L"</id><no/><name>×éÖ¯½á¹¹</name><typ>Org</typ></item>"); 
 | 
        //KXMLDOMDocument root = x; 
 | 
        //KXMLDOMElement RDoc = x.documentElement(); 
 | 
        //KXMLDOMElement ele = RDoc.SelectSingleNode(L"//Org"); 
 | 
        KXMLDOMElement ele = x.selectSingleNode(L"//item"); 
 | 
        HTREEITEM hItem = tv_org.InsertChildItemEx( (HTREEITEM)0, L"×éÖ¯½á¹¹", ele, 15, 4); 
 | 
        tv_org.SetItemChild1(hItem, 1); 
 | 
        return 1; 
 | 
  
 | 
        /*xaserverarg arg; 
 | 
        arg.setNativePointer(arg.CreateInstance()); 
 | 
        arg.AddArg(L"sguid",id); 
 | 
        if(xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1) 
 | 
        { 
 | 
            trace(x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
        //trace(x.xml()); 
 | 
        var list=x.selectNodes(L"//item"); 
 | 
        int i=0,s=list.length; 
 | 
        KXMLDOMElement xitem; 
 | 
        xstring sName; 
 | 
        xstring sguid; 
 | 
        if (s >0) 
 | 
        { 
 | 
            for (i=0;i<s;i++) 
 | 
            { 
 | 
                xitem= list.item(i); 
 | 
                sName = xitem.SelectSingleNode(L"@name").text(); 
 | 
                sguid = xitem.SelectSingleNode(L"@id").text(); 
 | 
                int curItem = tv_org.InsertChildItemEx(wid,hItem,sName,xitem,15,4); 
 | 
                tv_org.SetItemChild1(wid,curItem,1); 
 | 
                //OnSubTree(sguid,curItem); 
 | 
            } 
 | 
        } 
 | 
        return 1;*/ 
 | 
    } 
 | 
  
 | 
    int OnTreeExpanding(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
         
 | 
        NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; 
 | 
        HTREEITEM sitem = nmtv.itemNew.hItem; 
 | 
  
 | 
        HCURSOR hCursor = xutil::SetCursorWait(); 
 | 
        //xstring id = tv_org.GetItemData(tv_org.GetId(), sitem); 
 | 
        KXMLDOMElement ele = tv_org.GetItemData(sitem); 
 | 
        xstring id = ele.selectSingleNode(L"id").text(); 
 | 
        OnSubTree(id, sitem); 
 | 
        xutil::RestoreCursor(hCursor); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnTreeSelChanged(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        //int wid = tv_org.GetId(); 
 | 
        HTREEITEM hitem = tv_org.GetSelectedItem(); 
 | 
        KXMLDOMElement ele = tv_org.GetItemData(hitem); 
 | 
        if (ele) 
 | 
        { 
 | 
            xstring ls_orgid = ele.selectSingleNode(L"id").text(); 
 | 
            is_orgid = ls_orgid; 
 | 
            OnRetrieve(ls_orgid); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
    //ÃüÁî·¢²¼º¯Êý 
 | 
    int OnCmdDispatch(xstring comdid) 
 | 
    { 
 | 
        if (comdid == L"cb_import") 
 | 
        { 
 | 
            OnOK(); 
 | 
            return 1; 
 | 
        } 
 | 
        else if (comdid == L"cb_close") 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            return 1; 
 | 
        } 
 | 
        return 0; 
 | 
    } 
 | 
  
 | 
    //ÃüÁî´¦Àíʼþ 
 | 
    int OnXCommand(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
    } 
 | 
  
 | 
    int OnAttachEvent() 
 | 
    { 
 | 
        //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
        AttachEvent(L"WM_XCOMMAND", (FEvent)&UserImport::OnXCommand); 
 | 
        //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
        AttachEvent(L"WM_SETFOCUS", (FEvent)&UserImport::OnSetFocus); 
 | 
        //»ñµÃÊ÷µÄÑ¡Ôñʼþ 
 | 
        AttachEvent(L"tv_org", L"TVN_SELCHANGED", (FEvent)&UserImport::OnTreeSelChanged); 
 | 
        AttachEvent(L"tv_org", L"TVN_ITEMEXPANDING", (FEvent)&UserImport::OnTreeExpanding); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnInitial() 
 | 
    { 
 | 
        SetAgent(); 
 | 
        OnAttachEvent();  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int onload() 
 | 
    { 
 | 
        tv_org = GetControl(L"tv_org"); 
 | 
        dw_list = new xdwgrid; 
 | 
        dw_list.setNativePointer(GetControl(L"dw_list")); 
 | 
        dw_list.openUrl(L"ϵͳÓû§.vface/template/SysUser/EmpSelect"); 
 | 
        dw_list.SetSelectionMode(3); //3 
 | 
        dw_list.SetReadOnly(true); 
 | 
  
 | 
        OnInitial(); 
 | 
        OnCreateTree(L"00000000-0000-0000-0000-000000000000", 0); 
 | 
        //int wid = tv_org.GetId(); 
 | 
        HTREEITEM root = tv_org.GetRootItem(); 
 | 
        tv_org.ExpandItem(root); 
 | 
        OnRetrieve(L"00000000-0000-0000-0000-000000000000"); 
 | 
        return 1; 
 | 
    } 
 | 
}; 
 |