ソースを参照

交班单做完了

张洋 4 年 前
コミット
495d69a9de

+ 5 - 0
zhipuzi_pos_windows/network/CZhipuziHttpClient.cpp

@@ -73,6 +73,11 @@ void CZhipuziHttpClient::Init(std::string username, std::string password)
 	m_client.m_password = password;
 }
 
+std::string CZhipuziHttpClient::GetUsername()
+{
+	return m_client.m_username;
+}
+
 bool CZhipuziHttpClient::Login(std::string& errmsg)
 {
 	std::map<string, string> params;

+ 1 - 0
zhipuzi_pos_windows/network/CZhipuziHttpClient.h

@@ -19,6 +19,7 @@ public:
 
 public:
 	static void Init(std::string username, std::string password);
+	static std::string GetUsername();
 
 	static void UpdateProxy();
 

+ 66 - 25
zhipuzi_pos_windows/page/CJiaobanPageUI.cpp

@@ -3,6 +3,7 @@
 
 #include "../wnd/CHuiyuanChongzhiWnd.h"
 #include "../wnd/CHuiyuanAddWnd.h"
+#include "../print/CPosPrinter.h"
 
 CJiaobanPageUI::CJiaobanPageUI()
 {
@@ -33,6 +34,11 @@ void CJiaobanPageUI::InitShow()
 void CJiaobanPageUI::HandleClickMsg(TNotifyUI& msg)
 {
 	CDuiString name = msg.pSender->GetName();
+
+	if (name == L"jiaoban_page_queren_btn")
+	{
+		StartJiaoban();
+	}
 }
 
 //处理option切换事件
@@ -53,7 +59,7 @@ void CJiaobanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
 		std::wstring ws = com->GetItemAt(com->GetCurSel())->GetText();
 		m_init_time = CLewaimaiString::UnicodeToUTF8(ws);
 
-		HandleRefresh();
+		Refresh();
 	}
 }
 
@@ -209,61 +215,96 @@ void CJiaobanPageUI::HandleRefresh()
 	//获得数据成功
 	rapidjson::Value& data = document["data"];
 
-	std::string waimai_num = to_string(data["waimai_member"].GetInt());
-	std::string diannei_num = to_string(data["diannei_member"].GetInt());
-	std::string huiyuan_num = to_string(data["today_member"].GetInt());
+	m_waimai_num = to_string(data["waimai_member"].GetInt());
+	m_diannei_num = to_string(data["diannei_member"].GetInt());
+	m_huiyuan_num = to_string(data["today_member"].GetInt());
 
-	std::string waimai_value = CLewaimaiString::DoubleToString(data["waimai_money"].GetFloat(), 2);
-	std::string diannei_value = CLewaimaiString::DoubleToString(data["diannei_money"].GetFloat(), 2);
-	std::string huiyuan_value = CLewaimaiString::DoubleToString(data["today_recharge"].GetFloat(), 2);
+	m_waimai_value = CLewaimaiString::DoubleToString(data["waimai_money"].GetFloat(), 2);
+	m_diannei_value = CLewaimaiString::DoubleToString(data["diannei_money"].GetFloat(), 2);
+	m_huiyuan_value = CLewaimaiString::DoubleToString(data["today_recharge"].GetFloat(), 2);
 
-	std::string diannei_refund_member = to_string(data["diannei_refund_member"].GetInt());
-	std::string diannei_refund_money = CLewaimaiString::DoubleToString(data["diannei_refund_money"].GetFloat(), 2);
-	std::string diannei_discount_money = CLewaimaiString::DoubleToString(data["diannei_refund_money"].GetFloat(), 2);
+	m_diannei_refund_member = to_string(data["diannei_refund_member"].GetInt());
+	m_diannei_refund_money = CLewaimaiString::DoubleToString(data["diannei_refund_money"].GetFloat(), 2);
+	m_diannei_discount_money = CLewaimaiString::DoubleToString(data["diannei_refund_money"].GetFloat(), 2);
 
-	std::string diannei_xianjin_value = CLewaimaiString::DoubleToString(data["ready_money"].GetFloat(), 2);
-	std::string diannei_xianjin_tuikuan = CLewaimaiString::DoubleToString(data["ready_money_refund"].GetFloat(), 2);
-	std::string diannei_xianjin_zengzhang = CLewaimaiString::DoubleToString(data["ready_money_boost"].GetFloat(), 2);
+	m_diannei_xianjin_value = CLewaimaiString::DoubleToString(data["ready_money"].GetFloat(), 2);
+	m_diannei_xianjin_tuikuan = CLewaimaiString::DoubleToString(data["ready_money_refund"].GetFloat(), 2);
+	m_diannei_xianjin_zengzhang = CLewaimaiString::DoubleToString(data["ready_money_boost"].GetFloat(), 2);
 
 	//开始渲染数据
 	CLabelUI* waimainumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_num"));
-	waimainumLabel->SetText(CLewaimaiString::UTF8ToUnicode(waimai_num).c_str());
+	waimainumLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_waimai_num).c_str());
 
 	CLabelUI* waimaivalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_value"));
-	waimaivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(waimai_value).c_str());
+	waimaivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_waimai_value).c_str());
 
 	CLabelUI* dianneinumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_num"));
-	dianneinumLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_num).c_str());
+	dianneinumLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_num).c_str());
 
 	CLabelUI* dianneivalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_value"));
-	dianneivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_value).c_str());
+	dianneivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_value).c_str());
 
 	CLabelUI* huiyuannumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_num"));
-	huiyuannumLabel->SetText(CLewaimaiString::UTF8ToUnicode(huiyuan_num).c_str());
+	huiyuannumLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_huiyuan_num).c_str());
 
 	CLabelUI* huiyuanvalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_value"));
-	huiyuanvalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(huiyuan_value).c_str());
+	huiyuanvalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_huiyuan_value).c_str());
 
 	CLabelUI* diannei_tuikuan_numLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_tuikuan_num"));
-	diannei_tuikuan_numLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_refund_member).c_str());
+	diannei_tuikuan_numLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_refund_member).c_str());
 
 	CLabelUI* diannei_tuikuan_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_tuikuan_value"));
-	diannei_tuikuan_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_refund_money).c_str());
+	diannei_tuikuan_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_refund_money).c_str());
 
 	CLabelUI* diannei_youhui_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_youhui_value"));
-	diannei_youhui_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_discount_money).c_str());
+	diannei_youhui_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_discount_money).c_str());
 
 	CLabelUI* diannei_xianjin_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_value"));
-	diannei_xianjin_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_xianjin_value).c_str());
+	diannei_xianjin_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_value).c_str());
 
 	CLabelUI* diannei_xianjin_tuikuanLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_tuikuan"));
-	diannei_xianjin_tuikuanLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_xianjin_tuikuan).c_str());
+	diannei_xianjin_tuikuanLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_tuikuan).c_str());
 
 	CLabelUI* diannei_xianjin_zengzhangLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_zengzhang"));
-	diannei_xianjin_zengzhangLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_xianjin_zengzhang).c_str());
+	diannei_xianjin_zengzhangLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_zengzhang).c_str());
 
 	CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
 	pOrderListLayout->SetVisible(true);
 
 	this->FindSubControl(_T("loading"))->SetVisible(false);
+}
+
+void CJiaobanPageUI::StartJiaoban()
+{
+	//先进行打印
+	CJiaobaoOrder order;
+	order.m_init_time = m_init_time;
+	order.m_end_time = m_end_time;
+
+	order.m_waimai_num = m_waimai_num;
+	order.m_diannei_num = m_diannei_num;
+	order.m_huiyuan_num = m_huiyuan_num;
+
+	order.m_waimai_value = m_waimai_value;
+	order.m_diannei_value = m_diannei_value;
+	order.m_huiyuan_value = m_huiyuan_value;
+
+	order.m_diannei_refund_member = m_diannei_refund_member;
+	order.m_diannei_refund_money = m_diannei_refund_money;
+	order.m_diannei_discount_money = m_diannei_discount_money;
+
+	order.m_diannei_xianjin_value = m_diannei_xianjin_value;
+	order.m_diannei_xianjin_tuikuan = m_diannei_xianjin_tuikuan;
+	order.m_diannei_xianjin_zengzhang = m_diannei_xianjin_zengzhang;
+
+	CShopinfo shopinfo = CShopinfo::m_shopinfo;
+
+	order.shopname = shopinfo.m_shop_name;
+	order.employee_name = CZhipuziHttpClient::GetUsername();
+
+	CPosPrinter printer;
+	printer.PirntJiaobanOrder(order);
+
+	//打印完成之后,退出登陆
+	m_pMainWnd->LoginOut(1);
 }

+ 18 - 0
zhipuzi_pos_windows/page/CJiaobanPageUI.h

@@ -43,6 +43,8 @@ public:
 	void Refresh();
 	void HandleRefresh();
 
+	void StartJiaoban();
+
 private:
 
 
@@ -57,5 +59,21 @@ private:
 	std::string m_init_time;
 	std::string m_end_time;
 
+	std::string m_waimai_num;
+	std::string m_diannei_num;
+	std::string m_huiyuan_num;
+
+	std::string m_waimai_value;
+	std::string m_diannei_value;
+	std::string m_huiyuan_value;
+
+	std::string m_diannei_refund_member;
+	std::string m_diannei_refund_money;
+	std::string m_diannei_discount_money;
+
+	std::string m_diannei_xianjin_value;
+	std::string m_diannei_xianjin_tuikuan;
+	std::string m_diannei_xianjin_zengzhang;
+
 	std::vector<std::string> m_shangban_times;
 };

+ 9 - 0
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -132,6 +132,15 @@ void CPosPrinter::PrintDiandanOrder(std::string order_id)
 	PrintDiandanOrder(order);
 }
 
+void CPosPrinter::PirntJiaobanOrder(CJiaobaoOrder& order)
+{
+	CPosPrinterData printData;
+
+	std::string data = printData.PrintJiaobanOrder(order);
+
+	CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
+}
+
 //´ò¿ªÇ®Ïä
 void CPosPrinter::OpenQianxiang()
 {

+ 4 - 0
zhipuzi_pos_windows/print/CPosPrinter.h

@@ -3,6 +3,7 @@
 #include "../pch/pch.h"
 
 #include "CPosPrinterQueue.h"
+#include "../zhipuzi/CJiaobanOrder.h"
 
 class CPosPrinter
 {
@@ -22,6 +23,9 @@ public:
 	//通过订单号打印订单,后面要改成异步才行
 	void PrintDiandanOrder(std::string order_id);
 
+	//打印交班单
+	void PirntJiaobanOrder(CJiaobaoOrder& order);
+
 	//打开钱箱
 	void OpenQianxiang();
 

+ 137 - 0
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -1739,6 +1739,143 @@ std::vector<ChufangPrinterContent> CPosPrinterData::PrintDiandanOrderChufang(CDi
 	return datas;
 }
 
+std::string CPosPrinterData::PrintJiaobanOrder(CJiaobaoOrder& order)
+{
+	//读取当前收银打印机的设置
+	std::string guige = CSetting::GetParam("setting_printer_guige");
+
+	//正式开始打印
+	POS_Reset();
+
+	POS_TextOut("交班单", true, true, 1);
+
+	POS_FeedLine();
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	//打印店铺名字
+	string shop_name = "店铺名字:" + CLewaimaiString::UTF8ToANSI(order.shopname);
+	POS_TextOut(shop_name);
+	POS_FeedLine();
+
+	string jiaoban_zhanghao = "交班账号:" + CLewaimaiString::UTF8ToANSI(order.employee_name);
+	POS_TextOut(jiaoban_zhanghao);
+	POS_FeedLine();
+
+	string init_time = "上班时间:" + CLewaimaiString::UTF8ToANSI(order.m_init_time);
+	POS_TextOut(init_time);
+	POS_FeedLine();
+
+	string end_time = "下班时间:" + CLewaimaiString::UTF8ToANSI(order.m_end_time);
+	POS_TextOut(end_time);
+	POS_FeedLine();
+
+	//准备开始打印商品详情
+	string lines;
+
+	if (guige == "58")
+	{
+		lines = "--------------------------------";
+	}
+	else
+	{
+		lines = "------------------------------------------------";
+	}
+
+	POS_TextOut(lines);
+	POS_FeedLine();
+
+	string m_waimai_num = "外卖订单数量:" + CLewaimaiString::UTF8ToANSI(order.m_waimai_num);
+	POS_TextOut(m_waimai_num, false, false);
+	POS_FeedLine();
+
+	string m_diannei_num = "外卖营业额:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_num);
+	POS_TextOut(m_diannei_num, false, false);
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	string m_huiyuan_num = "店内订单数量:" + CLewaimaiString::UTF8ToANSI(order.m_huiyuan_num);
+	POS_TextOut(m_huiyuan_num, false, false);
+	POS_FeedLine();
+
+	string m_waimai_value = "店内营业额:" + CLewaimaiString::UTF8ToANSI(order.m_waimai_value);
+	POS_TextOut(m_waimai_value, false, false);
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	string m_diannei_value = "新增会员数量:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_value);
+	POS_TextOut(m_diannei_value, false, false);
+	POS_FeedLine();
+
+	string m_huiyuan_value = "会员储值金额:" + CLewaimaiString::UTF8ToANSI(order.m_huiyuan_value);
+	POS_TextOut(m_huiyuan_value, false, false);
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	string m_diannei_refund_member = "店内退款订单数:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_refund_member);
+	POS_TextOut(m_diannei_refund_member, false, false);
+	POS_FeedLine();
+
+	string m_diannei_refund_money = "店内退款订单金额:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_refund_money);
+	POS_TextOut(m_diannei_refund_money, false, false);
+	POS_FeedLine();
+
+	string m_diannei_discount_money = "店内订单优惠金额:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_discount_money);
+	POS_TextOut(m_diannei_discount_money, false, false);
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	string m_diannei_xianjin_value = "店内订单现金收入:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_xianjin_value);
+	POS_TextOut(m_diannei_xianjin_value, false, false);
+	POS_FeedLine();
+
+	string m_diannei_xianjin_tuikuan = "店内订单现金退款:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_xianjin_tuikuan);
+	POS_TextOut(m_diannei_xianjin_tuikuan, false, false);
+	POS_FeedLine();
+
+	string m_diannei_xianjin_zengzhang = "现金净增长:" + CLewaimaiString::UTF8ToANSI(order.m_diannei_xianjin_zengzhang);
+	POS_TextOut(m_diannei_xianjin_zengzhang, false, false);
+	POS_FeedLine();
+
+	//结束商品详情打印
+	POS_TextOut(lines);
+	POS_FeedLine();
+
+	//最后显示总价
+	POS_TextOut("请确认以上数据是否准确,并在下面签名", false, false, 0);
+	POS_FeedLine();
+
+	POS_FeedLine();
+	POS_FeedLine();
+
+	POS_TextOut("签名:____________________", false, false, 0);
+	POS_FeedLine();
+
+	POS_FeedLine();
+
+	POS_FeedLine();;
+	POS_FeedLine();
+
+	//走纸几行再切
+	POS_FeedLine();
+	POS_FeedLine();
+	POS_FeedLine();
+	POS_FeedLine();
+	POS_FeedLine();
+
+	POS_CutPaper();
+
+	//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+	POS_Reset();
+
+	return m_print_content;
+}
+
 std::string CPosPrinterData::GetQianxiangCommand()
 {
 	POS_QIANXIANG();

+ 3 - 0
zhipuzi_pos_windows/print/CPosPrinterData.h

@@ -3,6 +3,7 @@
 #include "../pch/pch.h"
 #include "../zhipuzi/CWaimaiOrder.h"
 #include "../zhipuzi/CDiandanOrder.h"
+#include "../zhipuzi/CJiaobanOrder.h"
 
 class ChufangPrinterContent
 {
@@ -26,6 +27,8 @@ public:
 	std::string PrintDiandanOrderBiaoqian(CDiandanOrder& order);
 	std::vector<ChufangPrinterContent> PrintDiandanOrderChufang(CDiandanOrder& order);
 
+	std::string PrintJiaobanOrder(CJiaobaoOrder& order);
+
 	std::string GetQianxiangCommand();
 
 private:

+ 0 - 12
zhipuzi_pos_windows/wnd/CMainWnd.cpp

@@ -39,12 +39,6 @@ void CMainWnd::Init()
     m_push = new CMessagePush(m_hWnd);
     m_push->Start();
 
-	//启动打印队列
-	CPosPrinterQueue::GetInstance()->StartWork();
-
-	//启动称重任务
-	CChengzhongWorker::GetInstance()->StartWork();
-
 	//启动一个线程,开始同步商品图片
 	std::thread(&CMainWnd::UpdateFoodImage, this).detach();
 }
@@ -584,12 +578,6 @@ LRESULT CMainWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHand
     //直接退出程序,或者退出登录都会执行这个
     m_push->Stop();
 
-	//停止打印任务
-	CPosPrinterQueue::GetInstance()->StopWork();
-
-	//停止称重任务
-	CChengzhongWorker::GetInstance()->StopWork();
-
     bHandled = FALSE;
     return 0;
 }

+ 29 - 0
zhipuzi_pos_windows/zhipuzi/CJiaobanOrder.h

@@ -0,0 +1,29 @@
+#pragma once
+
+#include <string>
+
+class CJiaobaoOrder
+{
+public:
+	std::string m_init_time;
+	std::string m_end_time;
+
+	std::string m_waimai_num;
+	std::string m_diannei_num;
+	std::string m_huiyuan_num;
+
+	std::string m_waimai_value;
+	std::string m_diannei_value;
+	std::string m_huiyuan_value;
+
+	std::string m_diannei_refund_member;
+	std::string m_diannei_refund_money;
+	std::string m_diannei_discount_money;
+
+	std::string m_diannei_xianjin_value;
+	std::string m_diannei_xianjin_tuikuan;
+	std::string m_diannei_xianjin_zengzhang;
+
+	std::string shopname;
+	std::string employee_name;
+};

+ 15 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.cpp

@@ -4,6 +4,9 @@
 
 #include <curl/curl.h>
 
+#include "print/CPosPrinterQueue.h"
+#include "tool/CChengzhongWorker.h"
+
 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                       _In_opt_ HINSTANCE hPrevInstance,
                       _In_ LPWSTR    lpCmdLine,
@@ -13,6 +16,12 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
     CLewaimaiLog log;
     log.Init();
 
+	//启动打印队列
+	CPosPrinterQueue::GetInstance()->StartWork();
+
+	//启动称重任务
+	CChengzhongWorker::GetInstance()->StartWork();
+
     //开始展示窗口
     CPaintManagerUI::SetInstance(hInstance);
 #ifdef NDEBUG
@@ -43,6 +52,12 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
 
     CPaintManagerUI::MessageLoop();
 
+	//停止打印任务
+	CPosPrinterQueue::GetInstance()->StopWork();
+
+	//停止称重任务
+	CChengzhongWorker::GetInstance()->StopWork();
+
     ::CoUninitialize();
 
     return 0;

+ 1 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -260,6 +260,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="wnd\CMemberLoginWnd.h" />
     <ClInclude Include="wnd\CYouhuiShowWnd.h" />
     <ClInclude Include="zhipuzi\CDiandanOrderItem.h" />
+    <ClInclude Include="zhipuzi\CJiaobanOrder.h" />
     <ClInclude Include="zhipuzi\CShopinfo.h" />
     <ClInclude Include="wnd\CMemoWnd.h" />
     <ClInclude Include="control\CDiandanNatureItemUI.h" />

+ 3 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -249,6 +249,9 @@
     <ClInclude Include="page\CJiaobanPageUI.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="zhipuzi\CJiaobanOrder.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">