From 7a91c3a1ed37b0332d4ff0ebeae60bd6da3665c0 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期二, 16 七月 2024 18:28:58 +0800
Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj
---
jrj/project/business/BasicCode/FCL.cpp | 354 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 354 insertions(+), 0 deletions(-)
diff --git a/jrj/project/business/BasicCode/FCL.cpp b/jrj/project/business/BasicCode/FCL.cpp
new file mode 100644
index 0000000..c612560
--- /dev/null
+++ b/jrj/project/business/BasicCode/FCL.cpp
@@ -0,0 +1,354 @@
+#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"
+
+using xml = KXMLDOMDocument;
+class __declspec(dllexport) FCL : public xframe
+{
+public:
+ xcombobox ddlb_1;
+ int changeddlb;
+ xdwgrid dw_list;
+ int m_PageSize; //每页显示数量
+ int m_PageIndex; //第几页
+ xstring m_QueryTxt; //查询条件
+ xdwtable dw_base;
+ xnode m_agentNode; //Agent Condition
+ xstring m_agentCond; //Agent Node
+ xstring m_config;
+ xstring m_spec;
+public:
+ FCL(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+public:
+ static FCL* CreateInstance(void* implPtr, void* hWnd)
+ {
+ FCL* pWin = new FCL(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 OnRetrieve()
+ {
+ xaserverarg arg;
+
+ xdwpages zz = new xdwpages;
+ zz.setNativePointer(GetControl(L"pages"));
+ xml x;
+
+ getUrl(L"/sale/data/FCL/entity/list", arg.GetString(), x);
+ KXMLDOMElement e = x.documentElement();
+ if (e.selectSingleNode(L"@TotalPage"))
+ {
+ xstring s = e.selectSingleNode(L"@TotalPage").text(); //总数量
+ zz.SetMaxPage(s.toInt());
+ }
+ dw_list.Retrieve(x);
+ dw_list.Redraw();
+ return 1;
+ }
+ int SetPriceBaseEmpty()
+ {
+ int rows = dw_base.GetColumnCount();
+ int i;
+ for (i = 1; i <= rows; i++)
+ {
+ dw_base.SetItemString(1, i, L"");
+ //dw_base.SetItemDisplayString(1,i,L"");
+ }
+ dw_base.ResetUpdateStatus();
+ dw_base.Redraw();
+ return 1;
+ }
+ int SetCellEdit(int row, xstring name, xstring value, xstring display)
+ {
+ dw_base.SetItemString(row, name, value);
+ dw_base.Redraw();
+ if (display != L"")
+ {
+ dw_base.SetItemDisplayString(row, name, display);
+ }
+ dw_base.AcceptText();
+ dw_base.ResetUpdateStatus();
+ dw_base.Redraw();
+ return 1;
+ }
+ int OnSetCTGValue(int row)
+ {
+ dw_base.AcceptText();
+ SetPriceBaseEmpty();
+ KXMLDOMElement e = dw_list.GetRowElement(row);
+ var list = e.selectNodes(L"*");
+ if (list)
+ {
+ int s = list.length;
+ int i;
+ for (i = 0; i < s; i++)
+ {
+ xml x;
+ ;
+ KXMLDOMElement xitem = list.item(i);
+ x.loadXML(xitem.xml());
+ //trace(xitem.xml);
+ KXMLDOMElement e1 = x.documentElement();
+ xstring name = e1.tagName();
+ trace(name);
+ trace(e1.text());
+ xstring display;
+ if (e1.selectSingleNode(L"@_displaystring"))
+ {
+ display = e1.selectSingleNode(L"@_displaystring").text();
+ SetCellEdit(1, name, e1.text(), L"" + display);
+ }
+ else
+ SetCellEdit(1, name, e1.text(), L"");
+
+ }
+ }
+ return 1;
+ }
+ int OnRowClicked(TEvent* evt, LPARAM p)
+ {
+ DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+ int row = hdr.row;
+ OnSetCTGValue(row);
+ return 1;
+ }
+ int setMaint()
+ {
+ xml x;
+
+ dw_base.DwUpdateAllTo(x);
+ int row = dw_list.GetRow();
+ dw_list.SetItemString(row, L"PriceInfo", x.xml());
+ return 1;
+ }
+ int SetTotalAmount(int row, xstring name)
+ {
+ if (name == L"price20base" || name == L"price20BAF" || name == L"price20CAF" || name == L"price20add" || name == L"price20comm" || name == L"price20other")
+ {
+ double price20base = dw_base.GetItemString(row, L"price20base").toDouble();
+ double price20BAF = dw_base.GetItemString(row, L"price20BAF").toDouble();
+ double price20CAF = dw_base.GetItemString(row, L"price20CAF").toDouble();
+ double price20add = dw_base.GetItemString(row, L"price20add").toDouble();
+ double price20comm = dw_base.GetItemString(row, L"price20comm").toDouble();
+ double price20other = dw_base.GetItemString(row, L"price20other").toDouble();
+ double price20 = price20base + price20BAF + (price20CAF / 100) * price20base + price20add - (price20comm / 100) * price20base + price20other;
+ dw_base.SetItemString(1, L"price20", xstring(price20));
+ }
+
+ if (name == L"price40base" || name == L"price40BAF" || name == L"price40CAF" || name == L"price40add" || name == L"price40comm" || name == L"price40other")
+ {
+ double price40base = dw_base.GetItemString(row, L"price40base").toDouble();
+ double price40BAF = dw_base.GetItemString(row, L"price40BAF").toDouble();
+ double price40CAF = dw_base.GetItemString(row, L"price40CAF").toDouble();
+ double price40add = dw_base.GetItemString(row, L"price40add").toDouble();
+ double price40comm = dw_base.GetItemString(row, L"price40comm").toDouble();
+ double price40other = dw_base.GetItemString(row, L"price40other").toDouble();
+ double price40 = price40base + price40BAF + (price40CAF / 100) * price40base + price40add - (price40comm / 100) * price40base + price40other;
+ dw_base.SetItemString(1, L"price40", xstring(price40));
+ }
+
+ if (name == L"price40Hbase" || name == L"price40HBAF" || name == L"price40HCAF" || name == L"price40Hadd" || name == L"price40Hcomm" || name == L"price40Hother")
+ {
+ double price40Hbase = dw_base.GetItemString(row, L"price40Hbase").toDouble();
+ double price40HBAF = dw_base.GetItemString(row, L"price40HBAF").toDouble();
+ double price40HCAF = dw_base.GetItemString(row, L"price40HCAF").toDouble();
+ double price40Hadd = dw_base.GetItemString(row, L"price40Hadd").toDouble();
+ double price40Hcomm = dw_base.GetItemString(row, L"price40Hcomm").toDouble();
+ double price40Hother = dw_base.GetItemString(row, L"price40Hother").toDouble();
+ double price40H = price40Hbase + price40HBAF + (price40HCAF / 100) * price40Hbase + price40Hadd - (price40Hcomm / 100) * price40Hbase + price40Hother;
+ dw_base.SetItemString(1, L"price40h", xstring(price40H));
+ }
+ return 1;
+ }
+ int OnPriceBaseChanged(TEvent* evt, LPARAM p)
+ {
+ trace(L"123");
+ DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+ xstring name = hdr.colname;
+ xstring value = hdr.data;
+ SetTotalAmount(1, name);
+ xstring price20 = dw_base.GetItemString(1, L"price20");
+ xstring price40 = dw_base.GetItemString(1, L"price40");
+ xstring price40h = dw_base.GetItemString(1, L"price40h");
+ dw_list.SetItemString(dw_list.GetRow(), L"price20", price20);
+ dw_list.SetItemString(dw_list.GetRow(), L"price40", price40);
+ dw_list.SetItemString(dw_list.GetRow(), L"price40h", price40h);
+ dw_list.Redraw();
+ setMaint();
+ return 1;
+ }
+ int OnListChanged(TEvent* evt, LPARAM p)
+ {
+ DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+ int row = hdr.row;
+ xstring colname = hdr.colname;
+ xstring value = hdr.data;
+ if (colname == L"port")
+ {
+ xml x;
+
+ xaserverarg arg;
+
+ arg.AddArg(L"code", value);
+ if (getUrl(L"/sale/data/FCL/pref/shipthread", arg.GetString(), x) != 1)
+ {
+ trace(x.xml());
+ }
+ KXMLDOMElement e = x.documentElement();
+ dw_list.SetItemString(row, L"shipthread", e.text());
+ dw_list.Redraw();
+ }
+
+
+ return 1;
+ }
+ int OnChangePages(TEvent* evt, LPARAM p)
+ {
+ PAGENMHDR& h = *(PAGENMHDR*)evt->notify.pnmh;
+ int c = h.cur;
+ HCURSOR hCursor = xutil::SetCursorWait();
+ m_pageIndex = c;
+ OnRetrieve();
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+ int onSave()
+ {
+ xml x;
+
+ dw_list.DwUpdateAllToEx(x);
+ trace(x.xml());
+ }
+ int OnDeleteRow()
+ {
+ int row = dw_list.GetRow();
+ if (row<1 || row>dw_list.GetRowCount())
+ {
+ return -1;
+ }
+ dw_list.DeleteRow(row);
+
+ }
+ int OnAddrow()
+ {
+ int row = dw_list.InsertRow(0);
+ dw_list.SetItemString(row, L"modifieddate", publiccode::GetCurrentDate());
+ SetPriceBaseEmpty();
+ return 1;
+ }
+ int OnInsertRow()
+ {
+ int row = dw_list.GetRow();
+ if (row < 1) return 0;
+ int newrow = dw_list.InsertRow(row);
+ dw_list.SetItemString(newrow, L"modifieddate", publiccode::GetCurrentDate());
+ SetPriceBaseEmpty();
+ return 1;
+ }
+ int OnDeleteRow()
+ {
+ int row = dw_list.GetRow();
+ if (row > 0 && row <= dw_list.GetRowCount())
+ {
+ dw_list.DeleteRow(row);
+ //OnSetCTGValue(row);
+ }
+ return 1;
+ }
+ int OnCmdDispatch(xstring comdid)
+ {
+ if (comdid.find(L"add", 0) >= 0)
+ OnAddrow();
+ else if (comdid.find(L"insert", 0) >= 0)
+ OnInsertRow();
+ else if (comdid.find(L"del", 0) >= 0)
+ OnDeleteRow();
+ else if (comdid.find(L"save", 0) >= 0)
+ onSave();
+ return 1;
+ }
+ int OnSetFocus(TEvent* evt, LPARAM p) {
+ SetAgent();
+ return 1;
+ }
+ int OnXCommand(TEvent* evt, LPARAM param)
+ {
+ return OnCmdDispatch(evt->xcommand.pStrID);
+ }
+ int OnItemError(TEvent* evt, LPARAM p)
+ {
+ DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+ xstring value = hdr.data;
+ int e = hdr.idFrom;
+ if (e == -1000)
+ alert(L"【" + value + L"】不是有效的数字!");
+ if (e == -1001)
+ alert(L"【" + value + L"】不是有效的数字!");
+ if (e == -1002)
+ alert(L"【" + value + L"】不是有效的日期!");
+ return 1;
+ }
+ int OnAttachEvent()
+ {
+ AttachEvent(L"WM_XCOMMAND", (FEvent)&FCL::OnXCommand);
+ AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&FCL::OnRowClicked);
+ AttachEvent(L"WM_SETFOCUS", (FEvent)&FCL::OnSetFocus);
+ AttachEvent(L"pages", L"PAGE_CLICK", (FEvent)&FCL::OnChangePages);
+ AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&FCL::OnPriceBaseChanged);
+ AttachEvent(L"dw_base", L"DWV_ITEMERROR", (FEvent)&FCL::OnItemError);
+ AttachEvent(L"dw_list", L"DWV_ITEMCHANGED", (FEvent)&FCL::OnListChanged);
+ return 1;
+
+ }
+ int OnInit()
+ {
+ dw_list = new xdwgrid;
+ dw_list.setNativePointer(GetControl(L"dw_list"));
+ dw_list.openUrl(L"/sale/view/FCL/template/FCL/List");
+ dw_base = new xdwtable;
+ dw_base.setNativePointer(GetControl(L"dw_base"));
+ dw_base.openUrl(L"/sale/view/FCL/template/FCL/pricebase");
+ dw_list.SetReadOnlyColumn(L"shipthread", true);
+ dw_list.SetReadOnlyColumn(L"price20", true);
+ dw_list.SetReadOnlyColumn(L"price40", true);
+ dw_list.SetReadOnlyColumn(L"price40h", true);
+ return 1;
+ }
+
+ int onload()
+ {
+ m_PageSize = 30; //每页显示数量
+ m_PageIndex = 1; //第几页
+ m_QueryTxt = L""; //查询条件
+ OnInit();
+ OnAttachEvent();
+ OnRetrieve();
+ SetAgent();
+ return 1;
+ }
+};
\ No newline at end of file
--
Gitblit v1.9.3