Pārlūkot izejas kodu

处理windows接单软件的几个问题

张洋 5 gadi atpakaļ
vecāks
revīzija
ff439c3501

+ 1 - 1
bin/Win32/Debug/lewaimai_pos_windows/skin/main.xml

@@ -12,7 +12,7 @@
     		<Control height="1" bkcolor="#FF1B4876" />
     		<Control height="2" bkcolor="#FFD1EDFF" />
     		<HorizontalLayout height="90" bkcolor="#FF8DD3FF" bkcolor2="#FF60B1FE">
-    			<VerticalLayout width="200">
+    			<VerticalLayout width="600">
     				<Label name="main_name_version" text="乐外卖接单软件" padding="5,5,0,0"/>
     			</VerticalLayout>
     			<HorizontalLayout childpadding="20" inset="10,16,10,10" >    				

+ 1 - 0
lewaimai_pos_windows/order/CWaimaiOrder.cpp

@@ -106,6 +106,7 @@ bool CWaimaiOrder::InitData(std::string order_id, std::string order_no)
 			m_open_selftake = data["open_selftake"].GetString();
 			m_delivery_date = data["delivery_date"].GetString();
 
+			m_showordernum = data["showordernum"].GetString();
 			m_customer_order_total = data["customer_order_total"].GetString();
 
 			m_printer_tip_name = data["printer_tip_name"].GetString();

+ 1 - 0
lewaimai_pos_windows/order/CWaimaiOrder.h

@@ -95,6 +95,7 @@ public:
 	std::string m_open_selftake;
 	std::string m_delivery_date;
 
+	std::string m_showordernum;
 	std::string m_customer_order_total;
 
 	std::string m_printer_tip_name;

+ 33 - 17
lewaimai_pos_windows/tool/CPosPrinter.cpp

@@ -412,7 +412,8 @@ int CPosPrinter::GetDevicePath(LPGUID lpGuid, int usbType)
 }
 
 /*
- *返回打印机的类型, 1:普通热敏打印机 2:标签打印机
+ *返回打印机的类型, 1:普通热敏打印机 2:标签打印机 3:发票打印机
+ *这里因为不同厂家对vid pid定义不一样,有时候会出现佳博的标签打印机的vid和pid,在别的品牌上变成了热敏打印机,这里如果排除掉别的品牌的热敏打印机就无法打印了,所以这里不能轻易排除
  **/
 int CPosPrinter::GetPrinterType(wstring vid, wstring pid)
 {
@@ -421,6 +422,11 @@ int CPosPrinter::GetPrinterType(wstring vid, wstring pid)
         //佳博标签打印机
         return 2;
     }
+	else if (vid == L"XXX" && pid == L"XXX")
+	{
+		//发票打印机
+		return 3;
+	}
 
     return 1;
 }
@@ -616,6 +622,13 @@ void CPosPrinter::PrintWaimaiOrderShouyin(CWaimaiOrder& order)
         if(order.m_is_selftake != "1")
         {
             string name = "姓名:" + CLewaimaiString::UTF8ToANSI(order.m_customer_name);
+			
+			//把下单次数也一起打印
+			if (order.m_showordernum == "1")
+			{
+				name += "(第 " + CLewaimaiString::UTF8ToANSI(order.m_customer_order_total) + " 次下单)";
+			}
+
             POS_TextOut(name, false, setting_printer_name_big);
             POS_FeedLine();
         }
@@ -1075,14 +1088,14 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
 
             if(order.m_is_selftake == "1")
             {
-                POS_TextOut(order_type + "到店自取订单", false, false, 1);
+                POS_TextOut(order_type + "到店自取订单", false, true, 1);
                 POS_FeedLine();
 
                 POS_FeedLine();
             }
             else
             {
-                POS_TextOut(order_type + "外卖订单", false, false, 1);
+                POS_TextOut(order_type + "外卖订单", false, true, 1);
                 POS_FeedLine();
 
                 POS_FeedLine();
@@ -1094,7 +1107,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 for(std::vector<CWaimaiOrderField>::iterator it = order.m_order_field.begin(); it != order.m_order_field.end() - 1; it++)
                 {
                     string order_field = CLewaimaiString::UTF8ToANSI((*it).name) + ":" + CLewaimaiString::UTF8ToANSI((*it).value);
-                    POS_TextOut(order_field, false, false, 0);
+                    POS_TextOut(order_field, false, true, 0);
                     POS_FeedLine();
                 }
             }
@@ -1117,11 +1130,11 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
             //商品标题
             if(guige == "58")
             {
-                POS_TextOut("商品              单价 数量 金额");
+                POS_TextOut("商品              单价 数量 金额", false, true);
             }
             else
             {
-                POS_TextOut("商品                            单价  数量  金额");
+                POS_TextOut("商品                            单价  数量  金额", false, true);
             }
 
             POS_FeedLine();
@@ -1164,12 +1177,12 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 std::string quantityShow = HandleFoodQuantity(quantity, nGuige);
                 std::string priceTotalShow = HandleFoodTotalPrice(food_total_price, nGuige);
                 std::string firstLineShow = firstLine + priceShow + quantityShow + priceTotalShow;
-                POS_TextOut(firstLineShow, false, false, 0);
+                POS_TextOut(firstLineShow, false, true, 0);
                 POS_FeedLine();
 
                 for(std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
                 {
-                    POS_TextOut((*it), false, false, 0);
+                    POS_TextOut((*it), false, true, 0);
                     POS_FeedLine();
                 }
             }
@@ -1179,7 +1192,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
             {
                 POS_FeedLine();
                 string address = "顾客备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
-                POS_TextOut(address, false, false, 0);
+                POS_TextOut(address, false, true, 0);
                 POS_FeedLine();
             }
 
@@ -1214,14 +1227,14 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
 
                 if(order.m_is_selftake == "1")
                 {
-                    POS_TextOut(order_type + "到店自取订单", false, false, 1);
+                    POS_TextOut(order_type + "到店自取订单", false, true, 1);
                     POS_FeedLine();
 
                     POS_FeedLine();
                 }
                 else
                 {
-                    POS_TextOut(order_type + "外卖订单", false, false, 1);
+                    POS_TextOut(order_type + "外卖订单", false, true, 1);
                     POS_FeedLine();
 
                     POS_FeedLine();
@@ -1233,7 +1246,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                     for(std::vector<CWaimaiOrderField>::iterator it = order.m_order_field.begin(); it != order.m_order_field.end() - 1; it++)
                     {
                         string order_field = CLewaimaiString::UTF8ToANSI((*it).name) + ":" + CLewaimaiString::UTF8ToANSI((*it).value);
-                        POS_TextOut(order_field, false, false, 0);
+                        POS_TextOut(order_field, false, true, 0);
                         POS_FeedLine();
                     }
                 }
@@ -1256,11 +1269,11 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 //商品标题
                 if(guige == "58")
                 {
-                    POS_TextOut("商品              单价 数量 金额");
+                    POS_TextOut("商品              单价 数量 金额", false, true);
                 }
                 else
                 {
-                    POS_TextOut("商品                            单价  数量  金额");
+                    POS_TextOut("商品                            单价  数量  金额", false, true);
                 }
 
                 POS_FeedLine();
@@ -1288,12 +1301,12 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 std::string quantityShow = HandleFoodQuantity(quantity, 2);
                 std::string priceTotalShow = HandleFoodTotalPrice(food_total_price, 2);
                 std::string firstLineShow = firstLine + priceShow + quantityShow + priceTotalShow;
-                POS_TextOut(firstLineShow, false, false, 0);
+                POS_TextOut(firstLineShow, false, true, 0);
                 POS_FeedLine();
 
                 for(std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
                 {
-                    POS_TextOut((*it), false, false, 0);
+                    POS_TextOut((*it), false, true, 0);
                     POS_FeedLine();
                 }
 
@@ -1302,7 +1315,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 {
                     POS_FeedLine();
                     string address = "顾客备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
-                    POS_TextOut(address, false, false, 0);
+                    POS_TextOut(address, false, true, 0);
                     POS_FeedLine();
                 }
 
@@ -1382,6 +1395,9 @@ int CPosPrinter::WriteBuf(const unsigned char* buf, int len)
  **/
 bool CPosPrinter::PortTest(HANDLE hPort)
 {
+	//这里的话目前USB、串口、并口用的都是同步读写模式,有的打印机(比如一些发票打印机)CreateFile会成功,但是WriteFile会一直阻塞卡着,如果检测的话,
+	//在这里会一直卡住,因此这里的检测就不检测了,默认所有的都是连通的
+	//因此,对于智能识别模式,可能会出现无法打印(因为被某些usb打印设备阻塞),这种情况就只能手动选择USB模式,然后重新启动软件
 	return true;
 
     //标签打印机的查询状态指令

+ 9 - 1
lewaimai_pos_windows/wnd/CMainWnd.cpp

@@ -1376,8 +1376,16 @@ LRESULT CMainWnd::OnLoginOut(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan
 
 void CMainWnd::InitSettingStatus()
 {
+	//显示当前软件版本和登录账号信息
     CLabelUI* name_version = static_cast<CLabelUI*>(m_pm.FindControl(_T("main_name_version")));
-    name_version->SetText((L"乐外卖接单软件 " + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str());
+	std::wstring wsShowName = L"乐外卖接单软件 " + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion());
+
+	std::string last_login_username = CSetting::GetParam("last_login_username");
+	std::wstring wx_last_login_username = CLewaimaiString::UTF8ToUnicode(last_login_username);
+
+	wsShowName += L"(登录账号:" + wx_last_login_username + L")";
+
+    name_version->SetText(wsShowName.c_str());
 
     CLabelUI* version = static_cast<CLabelUI*>(m_pm.FindControl(_T("setting_version")));
     version->SetText((L"版本号:" + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str());