#include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) HrPersonMaint : public xframe { public: xdwtable dw_1; xstring m_operate; xstring m_sguid; xnode m_agentNode; //Agent Condition xstring m_agentCond; //Agent Node public: HrPersonMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static HrPersonMaint* CreateInstance(void* implPtr, void* hWnd) { HrPersonMaint* pWin = new HrPersonMaint(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 OnSave() { HCURSOR hIcon = xutil::SetCursorWait(); xstring val; xml x; auto xdoc = x; dw_1.AcceptText(); dw_1.DwUpdateAllTo(xdoc); val = xdoc.xml(); //trace(val); xaserverarg args; args.setNativePointer(args.CreateInstance()); args.AddArg(L"content", val); //trace(m_EntityValueEx); //trace(val); xml x1; if (xurl::post(L"OrganizationStruct/update.HrPerson", args.GetString(), x1) != 1) { xstring error = x1.text(); trace(error); return 1; } else { trace(x1.xml()); MessageBox(GetHWND(), L"±£´æ³É¹¦£¡", L"Ìáʾ", 0); } dw_1.ResetUpdateStatus(); xutil::RestoreCursor(hIcon); return 1; } int OnAddRow() { xdwtable dw = new xdwtable; dw.setNativePointer(dw_1.GetCurTable()); xstring dw_n = dw.GetDwName(); if (dw_n == L"HrEmployee") dw.InsertRow(0); return 1; } int OnInsertRow() { xdwtable dw = new xdwtable; dw.setNativePointer(dw_1.GetCurTable()); xstring dw_n = dw.GetDwName(); if (dw_n == L"HrEmployee") { int row = dw.GetRow(); dw.InsertRow(row); } return 1; } int OnDeleteRow() { xdwtable dw = new xdwtable; dw.setNativePointer(dw_1.GetCurTable()); xstring dw_n = dw.GetDwName(); if (dw_n == L"HrEmployee") { int row = dw.GetRow(); dw.DeleteRow(row); } return 1; } int OnUpdateAssignmentView() { xml x1; if (xurl::post(L"OrganizationStruct/update.Assignmentview", L"", x1) != 1) { xstring error = x1.text(); trace(error); return 1; } else { trace(x1.xml()); MessageBox(GetHWND(), L"¸üгɹ¦£¡", L"Ìáʾ", 0); } return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { if (comdid == L"Save") OnSave(); else if (comdid == L"AddRow") OnAddRow(); else if (comdid == L"InsertRow") OnInsertRow(); else if (comdid == L"DeleteRow") OnDeleteRow(); else if (comdid == L"Close") CloseWindow(); else if (comdid == L"UpdateAssignmentView") OnUpdateAssignmentView(); return 0; } int OnChildContent(TEvent* evt, int p) { DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh; xstring col = dwhdr.colname; if (col != L"") { xml x; xaserverarg arg; xstring query; query = L"[IResourceMSSql.xq]"; if (col == L"PositionID") { arg.AddArg(L"ResourceType", L"HrPosition"); } if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) == 1) dwhdr.data = x.xml(); //trace(x.GetXml()); } return 1; } int OnItemChanged(TEvent* evt, int p) { DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh; HCURSOR HCursor = xutil::SetCursorWait(); int row = dwhdr.row; xstring col = dwhdr.colname; xstring data = dwhdr.data; trace(xstring(row)); if (col == L"Name") { xstring Name = dw_1.GetItemString(1, L"Name"); xml xs; xaserverarg args; args.setNativePointer(args.CreateInstance()); args.AddArg(L"Name", Name); if (xurl::get(L"/sale/data/ManpowerFile/GetUserName", args.GetString(), xs) != 1) { trace(xs.text()); return -1; } else { KXMLDOMNodeList items = xs.selectNodes(L"data/Item"); int len = items.length(); if (len != 0) { KXMLDOMNode t = items.item(0); xstring english_name = L""; xstring sex = L""; xstring sexex = L""; xstring birth_date = L""; xstring contact = L""; xstring induction_time = L""; xstring household_register = L""; xstring EmailAddress = L""; if (t.selectSingleNode(L"english_name")) english_name = t.selectSingleNode(L"english_name").text(); if (t.selectSingleNode(L"sex")) sex = t.selectSingleNode(L"sexex").text(); if (t.selectSingleNode(L"sexex")) sexex = t.selectSingleNode(L"sexex").text(); if (t.selectSingleNode(L"birth_date")) birth_date = t.selectSingleNode(L"birth_date").text(); if (t.selectSingleNode(L"contact")) contact = t.selectSingleNode(L"contact").text(); if (t.selectSingleNode(L"induction_time")) induction_time = t.selectSingleNode(L"induction_time").text(); if (t.selectSingleNode(L"household_register")) household_register = t.selectSingleNode(L"household_register").text(); if (t.selectSingleNode(L"EmailAddress")) EmailAddress = t.selectSingleNode(L"EmailAddress").text(); dw_1.SetItemString(1, L"NickName", english_name); dw_1.SetItemDisplayString(1, L"Gender", sexex); dw_1.SetItemString(1, L"Gender", sex); dw_1.SetItemString(1, L"Birthday", birth_date); dw_1.SetItemString(1, L"Mobile", contact); dw_1.SetItemString(1, L"HireDate", induction_time); dw_1.SetItemString(1, L"BirthPlace", household_register); dw_1.SetItemString(1, L"Email", EmailAddress); } } } if (col == L"PositionID") { xdwtable dw_HrEmployee = new xdwtable; dw_HrEmployee.setNativePointer(dw_1.FindDwTable(L"HrEmployee")); xstring sPositionID = dw_HrEmployee.GetItemString(row, L"PositionID"); if (sPositionID == L"") return 1; xml x; xaserverarg arg; arg.AddArg(L"guid", sPositionID); arg.AddArg(L"type", L"GetOrgIDJobID"); //trace(arg.GetString()); if (xurl::get(L"OrganizationStruct/GetOrgIDJobID", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { KXMLDOMDocument xdoc = x; //IXMLDOMNodeList nlist = xdoc.getElementsByTagName(L"OrgID"); KXMLDOMElement e = xdoc.documentElement(); xstring sOrgID = e.selectSingleNode(L"@OrgID").text(); xstring sJobID = e.selectSingleNode(L"@JobID").text(); dw_HrEmployee.SetItemString(row, L"OrgID", sOrgID); dw_HrEmployee.SetItemString(row, L"JobID", sJobID); xstring sdate = publiccode::GetCurrentDate() + (xstring)L""; dw_HrEmployee.SetItemString(row, L"StartDate", sdate + L""); dw_HrEmployee.SetItemString(row, L"EndDate", L"2050-12-31"); } } xutil::RestoreCursor(HCursor); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&HrPersonMaint::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&HrPersonMaint::OnSetFocus); //ÏÂÀ­¿ò ÌṩÄÚÈÝ AttachEvent(L"dw_detail", L"DWV_CHILDCONTENT", (FEvent)&HrPersonMaint::OnChildContent); //ÄÚÈݸıä AttachEvent(L"dw_detail", L"DWV_ITEMCHANGED", (FEvent)&HrPersonMaint::OnItemChanged); // //AttachEvent(L"dw_detail",L"DWV_ITEMFOCUSCHANGED",OnItemFocusChanged); return 1; } int OnRetrieve() { xml x; xaserverarg arg; arg.AddArg(L"guid", m_sguid); if (xurl::get(L"OrganizationStruct/detail.HrPerson", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { dw_1.Retrieve(x); dw_1.Redraw(); //trace(x.GetXml()); } return 1; } int OnInitial() { SetAgent(); OnAttachEvent(); return 1; } int onload() { SetArg(); dw_1 = new xdwtable; dw_1.setNativePointer(GetControl(L"dw_detail")); dw_1.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrPerson/maint"); OnInitial(); xaserverarg arg; arg = GetArg(); if (arg) { m_operate = arg.GetArgString(L"operate"); m_sguid = arg.GetArgString(L"guid"); } /*if ( m_sguid == L"" || m_sguid == nil) { xstring val; xml x ; var xdoc = x; dw_1.DwUpdateTo(xdoc); val = xdoc.xml ; xml xx ; xx.setNativePointer(xx.CreateInstance()); xx.loadXML(val); KXMLDOMElement e; e = xx.selectSingleNode(L"HrPerson"); if (e) { xstring sguid = e.getAttribute(L"guid"); m_sguid = sguid; } //trace(m_sguid); }*/ if (m_sguid != L"") OnRetrieve(); return 1; } };