LiFan
2024-07-17 f7c01240b27f0ad97feb9115b238d7a44b4b56b2
jrj/project/business/SystemSettings/UserImport.cpp
@@ -1,78 +1,85 @@
use "win.vl"
use "treeview.vm"
use "dev:vm[xdwgrid.vm]"
use "dev:vm[xdwtable.vm]"
use "pref.vl"
use "dev:vm[xml.vm]"
use "dev:vm[xaserverarg.vm]"
use "dev:vm[xaserver.vm]"
use "dev:vm[xutil.vm]"
use "dev:code[SysUser.vx]"
use "frame.vl"
use "file.vl"
unit vbusiness.xpage
[
   UserImport is extend frame;
   about UserImport
   [
      field:
      [
         SysUser lw_obj;
         xdwgrid__   dw_list;
         treeview__      tv_org;
         xnode__   m_agentNode;   //Agent Condition
         string   m_agentCond;   //Agent Node
         string   m_sTxt;
         string      is_orgid;
      ]
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
      
      method:
      [
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
//use "dev:code[SysUser.vx]"
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) {}
public:
   static UserImport* CreateInstance(void* implPtr, void* hWnd)
   {
      UserImport* pWin = new UserImport(implPtr, (HWND)hWnd);
      return pWin;
   }
         int SetAgent()
         {
            string xfNodeAgentArea  = "agentarea";
            xnode__ anode = new xnode__;
            anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
            var xframeElement =  GetElement();
            var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
      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)
            {
               string s = agent.xml;
               SetAgentNodeContent (anode,s);
            xstring s = agent.xml();
            m_agentNode = SetAgentNode(anode, s);
         }
            }
            return 1;
         }
         //焦点激活处理函数
         int OnSetFocus(ref TEvent evt,int param)
   int OnSetFocus(TEvent* evt, LPARAM param)
         {
            SetAgent();
            //重置工具条
            return 1;
         }
         int  OnRetrieve(string ls_orgid)
   int  OnRetrieve(xstring ls_orgid)
         {
            xml__ x=new xml__;
            x.setNativePointer(x.CreateInstance());
            xaserverarg__ arg = new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("OrgID",ls_orgid);
      xml x;
      xaserverarg arg;
      arg.AddArg(L"OrgID", ls_orgid);
            //trace(ls_orgid);
            //if (xaserver__::ExecXQuery(GetServerUrl(),"[MSSqlHrEmployee.xq]",arg.GetString(),x) == 1)
            if (url::get("SysUser.config/UserSelect.xq",arg.GetString(),x) == 1)
      //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.GetXml());
      //trace(x.xml());
            return 1;
         }
         
         int OnOK()
         {
            if (GetParam())
      if (GetWinParam())
            {
               lw_obj = new SysUser;
               lw_obj.setNativePointer(GetParam());
@@ -82,109 +89,109 @@
               return 0;
            int row = dw_list.GetNextSelectRow(1);
            trace(row);
      //trace(row);
            if (row<1)
            {
               alert("请选择人员!");
         alert(L"请选择人员!");
               return 1;
            }   
            
            string sPositionID,sPositionName;
            string sOrgID,sOrgName;
            string sJobID,sJobName;
      xstring sPositionID, sPositionName;
      xstring sOrgID, sOrgName;
      xstring sJobID, sJobName;
            int wid = lw_obj.tv_usergroup.GetId();
            int hitem=treeview__::GetSelectedItem(wid);
            msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem);
      int hitem = tv_org.GetSelectedItem(wid);
      KXMLDOMElement ele = tv_org.GetItemData(wid, hitem);
            
            while (row>0)
            {   
               trace(row);
               msxml::IXMLDOMElement e = dw_list.GetRowElement(row);
               trace(e.xml);
               string sEmployeeNo = e.selectSingleNode("EmployeeNo").text+"";
               string sOldEmpNo = e.selectSingleNode("OldEmpNo").text+"";
               string sPersonID = e.selectSingleNode("PersonID").text+"";
               string sPersonName = e.selectSingleNode("Name").text+"";
               string sPassWord = xutil__::MD5(sOldEmpNo);
         //trace(row);
         KXMLDOMElement e = dw_list.GetRowElement(row);
         trace(e.xml());
         xstring sEmployeeNo = e.selectSingleNode(L"EmployeeNo").text() + L"";
         xstring sOldEmpNo = e.selectSingleNode(L"OldEmpNo").text() + L"";
         xstring sPersonID = e.selectSingleNode(L"PersonID").text() + L"";
         xstring sPersonName = e.selectSingleNode(L"Name").text() + L"";
         xstring sPassWord = xutil::MD5(sOldEmpNo);
            
               /*
               xml__ xx = new xml__;
               xx.setNativePointer(xml__ ::CreateInstance());
               xaserverarg__ arg=new xaserverarg__;
         xml xx;
         x
         xaserverarg arg;
               arg.setNativePointer(arg.CreateInstance());   
               arg.AddArg("userno",sOldEmpNo);
               arg.AddArg("password",sPassWord);
               if(url::get("/sale/data/SysUser/GetOldPassWord",arg.GetString(),xx)==1)
         arg.AddArg(L"userno",sOldEmpNo);
         arg.AddArg(L"password",sPassWord);
         if(xurl::get(L"/sale/data/SysUser/GetOldPassWord",arg.GetString(),xx)==1)
               {
                  if(xx.GetXml()!="")
            if(xx.xml()!=L"")
                  {
                     msxml::IXMLDOMElement ex = xx.GetXmlDoc().documentElement;
                     sPassWord = ""+ex.text;
               KXMLDOMElement ex = xx.documentElement();
               sPassWord = L""+ex.text();
                  }
               }*/
               int nRow = lw_obj.dw_user.InsertRow(0);
               lw_obj.dw_user.SetItemString(nRow,"EmployeeNo",sEmployeeNo);
               lw_obj.dw_user.SetItemString(nRow,"UserName",sOldEmpNo);
               lw_obj.dw_user.SetItemString(nRow,"PassWord",sPassWord);
               lw_obj.dw_user.SetItemString(nRow,"PersonID",sPersonID);
               lw_obj.dw_user.SetItemDisplayString(nRow,"PersonID",sPersonName);
               lw_obj.dw_user.SetItemString(nRow,"Status","Y");
               lw_obj.dw_user.SetItemDisplayString(nRow,"Status","有效");
               lw_obj.dw_user.SetItemString(nRow,"OldEmpNo",sOldEmpNo);
         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,"PositionID",sPositionID);
               lw_obj.dw_user.SetItemDisplayString(nRow,"PositionID",sPositionName);
               lw_obj.dw_user.SetItemString(nRow,"OrgID",sOrgID);
               lw_obj.dw_user.SetItemDisplayString(nRow,"OrgID",sOrgName);
               lw_obj.dw_user.SetItemString(nRow,"JobID",sJobID);
               lw_obj.dw_user.SetItemDisplayString(nRow,"JobID",sJobName);
            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,"Status","Y");
               lw_obj.dw_user.SetItemDisplayString(nRow,"Status","有效");
               string sdate = TApp::GetCurDate()+"";
               lw_obj.dw_user.SetItemString(nRow,"StartDate",sdate+"");
               lw_obj.dw_user.SetItemString(nRow,"EndDate","2050-12-31");*/
            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);
         //trace(row);
            }
            CloseWindow();
            return 1;
         }
         int OnSubTree(string id,int parentitem)
   int OnSubTree(xstring id, HTREEITEM parentitem)
         {
            int wid = tv_org.GetId();
            if (treeview__::GetChildItem(wid,parentitem) >0) return 1;
            xml__ x = new xml__;
            x.setNativePointer(xml__ ::CreateInstance());
            xaserverarg__ arg=new xaserverarg__;
      if (tv_org.GetChildItem(wid, parentitem) > 0) return 1;
      xml x;
      xaserverarg arg;
            arg.setNativePointer(arg.CreateInstance());   
            arg.AddArg("sguid",id);
            if(url::post("/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1)
      arg.AddArg(L"sguid", id);
      if (xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart", arg.GetString(), x) != 1)
            {
               trace(x.GetXml());
         trace(x.xml());
               return -1;   
            }
            //trace(x.GetXml());
            var list=x.GetXmlDoc().selectNodes("//item");
      //trace(x.xml());
      var list = x.selectNodes(L"//item");
            int i=0,s=list.length;
            msxml::IXMLDOMElement xitem;
            string sName;
            string sguid;
            string stype;
      KXMLDOMElement xitem;
      xstring sName;
      xstring sguid;
      xstring stype;
            if (s >0)
            {
               for (i=0;i<s;i++)
               {
                  xitem= list.item(i);
                  sName = xitem.SelectSingleNode("name").text;
                  sguid = xitem.SelectSingleNode("id").text;
                  stype = xitem.SelectSingleNode("typ").text;
            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);
                  int curItem=0;
                  if (stype =="Org")
            if (stype == L"Org")
                  {
                     curItem=tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,15,4);
                     tv_org.SetItemChild1(wid,curItem,1);
@@ -199,43 +206,43 @@
            return 1;
         }
            
         int OnCreateTree(string id,int parentitem)
   int OnCreateTree(xstring id, int parentitem)
         {
            //while (tv_1.GetRootItem()>0)
            //   tv_1.DeleteItem(tv_1.GetRootItem());            
            int wid = tv_org.GetId();
            xml__ x = new xml__;
            x.setNativePointer(xml__ ::CreateInstance());
            x.LoadXml("<item><id>"+id+"</id><no/><name>凤凰集团</name><typ>Org</typ></item>");
            //msxml::IXMLDOMDocument root = x.GetXmlDoc();
            //msxml::IXMLDOMElement RDoc = x.GetXmlDoc().documentElement;
            //msxml::IXMLDOMElement ele = RDoc.SelectSingleNode("//Org");
            msxml::IXMLDOMElement ele = x.GetXmlDoc().SelectSingleNode("//item");
            int hItem = treeview__::InsertChildItemEx(wid,0,"凤凰集团",ele,15,4);
            treeview__::SetItemChild1(wid,hItem,1);
      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");
      int hItem = tv_org.InsertChildItemEx(wid, 0, L"凤凰集团", ele, 15, 4);
      tv_org.SetItemChild1(wid, hItem, 1);
            return 1;
            
            /*xaserverarg__ arg=new xaserverarg__;
      /*xaserverarg arg;
            arg.setNativePointer(arg.CreateInstance());   
            arg.AddArg("sguid",id);
            if(url::post("/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1)
      arg.AddArg(L"sguid",id);
      if(xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1)
            {
               trace(x.GetXml());
         trace(x.xml());
               return -1;   
            }
            //trace(x.GetXml());
            var list=x.GetXmlDoc().selectNodes("//item");
      //trace(x.xml());
      var list=x.selectNodes(L"//item");
            int i=0,s=list.length;
            msxml::IXMLDOMElement xitem;
            string sName;
            string sguid;
      KXMLDOMElement xitem;
      xstring sName;
      xstring sguid;
            if (s >0)
            {
               for (i=0;i<s;i++)
               {
                  xitem= list.item(i);
                  sName = xitem.SelectSingleNode("@name").text;
                  sguid = xitem.SelectSingleNode("@id").text;
            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);
@@ -244,58 +251,60 @@
            return 1;*/
         }
            
         int OnTreeExpanding(ref TNotifyEvent evt,int p)
   int OnTreeExpanding(TEvent* evt, LPARAM p)
         {
            ref NMTREEVIEW nmtv = evt.pnmh;
            int sitem = nmtv.itemNew.hItem;
               
            int hCursor = xutil__::SetCursorWait();
            //string id = treeview__::GetItemData(tv_org.GetId(), sitem);
            msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(),sitem);
            string id = ele.SelectSingleNode("id").text;
      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(tv_org.GetId(), sitem);
      xstring id = ele.selectSingleNode(L"id").text();
            OnSubTree(id, sitem);
            xutil__::RestoreCursor(hCursor);
      xutil::RestoreCursor(hCursor);
            return 1;
         }
         
         int OnTreeSelChanged(ref TXCommandEvent evt,int p)
   int OnTreeSelChanged(TEvent* evt, LPARAM p)
         {
            int wid = tv_org.GetId();
            int hitem=treeview__::GetSelectedItem(wid);
            msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem);
      //int wid = tv_org.GetId();
      int hitem = tv_org.GetSelectedItem();
      KXMLDOMElement ele = tv_org.GetItemData(hitem);
            if (ele)
            {
               string ls_orgid = ele.SelectSingleNode("id").text;
         xstring ls_orgid = ele.selectSingleNode(L"id").text();
               is_orgid = ls_orgid;
               OnRetrieve(ls_orgid);
            }
            return 1;
         }         
         //命令发布函数
         int OnCmdDispatch(string comdid)
   int OnCmdDispatch(xstring comdid)
         {
            if (comdid=="cb_import")
      if (comdid == L"cb_import")
               OnOK();
            else if (comdid=="cb_close")
      else if (comdid == L"cb_close")
               CloseWindow();
            return 0;
         }
         
         //命令处理事件
         int OnXCommand(ref TXCommandEvent evt,int p)
   int OnXCommand(TEvent* evt, LPARAM param)
         {
            return OnCmdDispatch(evt.pStrID);
      return OnCmdDispatch(evt->xcommand.pStrID);
         }
         
         int OnAttachEvent()
         {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
      AttachEvent(L"WM_XCOMMAND", (FEvent)&UserImport::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
      AttachEvent(L"WM_SETFOCUS", (FEvent)&UserImport::OnSetFocus);
            //获得树的选择事件
            AttachEvent("tv_org", "TVN_SELCHANGED",OnTreeSelChanged);
            AttachEvent("tv_org", "TVN_ITEMEXPANDING",OnTreeExpanding);
      AttachEvent(L"tv_org", L"TVN_SELCHANGED", (FEvent)&UserImport::OnTreeSelChanged);
      AttachEvent(L"tv_org", L"TVN_ITEMEXPANDING", (FEvent)&UserImport::OnTreeExpanding);
      return 1;
         }
         
         int OnInitial()
@@ -307,23 +316,20 @@
         
         int onload()
         {         
            tv_org = new treeview__ ;
            tv_org.setNativePointer(this.GetControl("tv_org"));
            dw_list =  new xdwgrid__;
            dw_list.setNativePointer(this.GetControl("dw_list"));
            dw_list.openUrl("系统用户.vface/template/SysUser/EmpSelect");
      tv_org = new treeview;
      tv_org.setNativePointer(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("00000000-0000-0000-0000-000000000000", 0);
            int wid = tv_org.GetId();
            int root = treeview__::GetRootItem(wid);
            treeview__::ExpandItem(wid,root);
            OnRetrieve("00000000-0000-0000-0000-000000000000");
      OnCreateTree(L"00000000-0000-0000-0000-000000000000", 0);
      //int wid = tv_org.GetId();
      int root = tv_org.GetRootItem();
      tv_org.ExpandItem(root);
      OnRetrieve(L"00000000-0000-0000-0000-000000000000");
            return 1;
         }
      ]
   ]
]
};