Commit db48d2cf by ss.dai

修复打印机不自动打印的问题

parent 0b74e00d
...@@ -13,11 +13,11 @@ FmPrinter &FmPrinter::GetInstance() ...@@ -13,11 +13,11 @@ FmPrinter &FmPrinter::GetInstance()
return fp; return fp;
} }
bool FmPrinter::DoPrint(QString printerName, OrderObject *pData) bool FmPrinter::DoPrint(QString printerName, OrderObject *pData, QString& error)
{ {
foreach(QString data, _GetPrintData(pData)) foreach(QString data, _GetPrintData(pData))
{ {
if(!_RawDataToPrinter(printerName, data)) if(!_RawDataToPrinter(printerName, data, error))
{ {
return false; return false;
} }
...@@ -28,7 +28,8 @@ bool FmPrinter::DoPrint(QString printerName, OrderObject *pData) ...@@ -28,7 +28,8 @@ bool FmPrinter::DoPrint(QString printerName, OrderObject *pData)
bool FmPrinter::TestPrint(QString printerName, QString data) bool FmPrinter::TestPrint(QString printerName, QString data)
{ {
return _RawDataToPrinter(printerName, data); QString error;
return _RawDataToPrinter(printerName, data, error);
} }
QStringList FmPrinter::_GetPrintData(OrderObject *pData) QStringList FmPrinter::_GetPrintData(OrderObject *pData)
...@@ -94,10 +95,9 @@ QStringList FmPrinter::_GetPrintData(OrderObject *pData) ...@@ -94,10 +95,9 @@ QStringList FmPrinter::_GetPrintData(OrderObject *pData)
return str_list; return str_list;
} }
bool FmPrinter::_RawDataToPrinter(QString printerName, QString data) bool FmPrinter::_RawDataToPrinter(QString printerName, QString data, QString &error)
{ {
LPTSTR szPrinterName = (LPTSTR)printerName.toStdWString().c_str(); LPTSTR szPrinterName = (LPTSTR)printerName.toStdWString().c_str();
// 在行尾加上切纸命令 // 在行尾加上切纸命令
QByteArray tmpData = data.toLocal8Bit(); QByteArray tmpData = data.toLocal8Bit();
tmpData.append(27); tmpData.append(27);
...@@ -112,22 +112,25 @@ bool FmPrinter::_RawDataToPrinter(QString printerName, QString data) ...@@ -112,22 +112,25 @@ bool FmPrinter::_RawDataToPrinter(QString printerName, QString data)
DWORD dwBytesWritten = 0L; DWORD dwBytesWritten = 0L;
// Open a handle to the printer. // Open a handle to the printer.
error += QString::fromStdWString(szPrinterName);
bStatus = OpenPrinter( szPrinterName, &hPrinter, NULL ); bStatus = OpenPrinter( szPrinterName, &hPrinter, NULL );
if (bStatus) { if (bStatus) {
// Fill in the structure with info about this "document." // Fill in the structure with info about this "document."
DocInfo.pDocName = (LPTSTR)QString("TakeawayDoc").toStdWString().c_str(); DocInfo.pDocName = (LPTSTR)L"TakeawayDoc";
DocInfo.pOutputFile = NULL; DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = (LPTSTR)QString("RAW").toStdWString().c_str(); DocInfo.pDatatype = (LPTSTR)L"RAW";
error += "11111";
// Inform the spooler the document is beginning. // Inform the spooler the document is beginning.
dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo ); dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
if (dwJob > 0) { if (dwJob > 0) {
error += "22222";
// Start a page. // Start a page.
bStatus = StartPagePrinter( hPrinter ); bStatus = StartPagePrinter( hPrinter );
if (bStatus) { if (bStatus) {
// Send the data to the printer. // Send the data to the printer.
bStatus = WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten); bStatus = WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten);
EndPagePrinter (hPrinter); EndPagePrinter (hPrinter);
error += "33333";
} }
// Inform the spooler that the document is ending. // Inform the spooler that the document is ending.
EndDocPrinter( hPrinter ); EndDocPrinter( hPrinter );
......
...@@ -14,7 +14,7 @@ public: ...@@ -14,7 +14,7 @@ public:
* 参数:[1]物理打印机名[2]订单对象 * 参数:[1]物理打印机名[2]订单对象
* 返回:true成功false失败 * 返回:true成功false失败
* */ * */
bool DoPrint(QString printerName, OrderObject *pData); bool DoPrint(QString printerName, OrderObject *pData, QString& error);
/* 功能:打印测试 /* 功能:打印测试
* 参数:[1]物理打印机名[2]信息内容 * 参数:[1]物理打印机名[2]信息内容
* 返回:true成功false失败 * 返回:true成功false失败
...@@ -35,7 +35,7 @@ private: ...@@ -35,7 +35,7 @@ private:
* 参数:[1]物理打印机名[2]信息内容 * 参数:[1]物理打印机名[2]信息内容
* 返回:打印数据 * 返回:打印数据
* */ * */
bool _RawDataToPrinter(QString printerName, QString data); bool _RawDataToPrinter(QString printerName, QString data, QString& error);
/* 功能:将【分】转化为【元】 /* 功能:将【分】转化为【元】
* 参数:[1]分 * 参数:[1]分
* 返回:元 * 返回:元
......
...@@ -152,19 +152,6 @@ bool FlowControl::_PullOrder() ...@@ -152,19 +152,6 @@ bool FlowControl::_PullOrder()
.arg(orderObject->order_id, orderObject->status_desc) .arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(jsonObject)); .arg(_GetJsonStr(jsonObject));
if(orderObject->status==2)
{
// 打印
QLOG_INFO() << QString("[---begin print---].");
if(FmPrinter::GetInstance().DoPrint(ConfigManger::GetInstance().GetPrinterName(), orderObject))
{
QLOG_INFO() << QString("print sucessful");
}else
{
QLOG_INFO() << QString("print failed");
}
}
// 订单完成状态再重新录一遍 // 订单完成状态再重新录一遍
bool bRed = false; bool bRed = false;
...@@ -194,20 +181,6 @@ bool FlowControl::_PullOrder() ...@@ -194,20 +181,6 @@ bool FlowControl::_PullOrder()
.arg(orderObject->order_id, orderObject->status_desc) .arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(jsonObject)); .arg(_GetJsonStr(jsonObject));
if(oldStatus==1 && orderObject->status==2)
{
// 打印
QLOG_INFO() << QString("[---begin print---].");
if(FmPrinter::GetInstance().DoPrint(ConfigManger::GetInstance().GetPrinterName(), orderObject))
{
QLOG_INFO() << QString("print sucessful");
}else
{
QLOG_INFO() << QString("print failed");
}
}
// 订单完成状态再重新录一遍 // 订单完成状态再重新录一遍
bool bRed = false; bool bRed = false;
if(orderObject->status==6 || orderObject->status==200) if(orderObject->status==6 || orderObject->status==200)
...@@ -245,6 +218,21 @@ bool FlowControl::_PullOrder() ...@@ -245,6 +218,21 @@ bool FlowControl::_PullOrder()
} }
} }
if(orderObject->status==2 && orderObject->courier_name.isEmpty())
{
// 打印
QString error;
QLOG_INFO() << QString("[---begin print---].");
if(FmPrinter::GetInstance().DoPrint(ConfigManger::GetInstance().GetPrinterName(), orderObject, error))
{
QLOG_INFO() << QString("print sucessful");
}else
{
QLOG_INFO() << QString("print failed, %1").arg(error);
}
}
m_timestamp = orderObject->timestamp; m_timestamp = orderObject->timestamp;
} }
syncTime = recvJson[JSON_SYNCTIME].toInt()*1000; syncTime = recvJson[JSON_SYNCTIME].toInt()*1000;
......
...@@ -138,7 +138,8 @@ void DetailForm::on_detailBtn1_clicked() ...@@ -138,7 +138,8 @@ void DetailForm::on_detailBtn1_clicked()
if(!m_orderObject->courier_name.isEmpty()) if(!m_orderObject->courier_name.isEmpty())
{ {
QLOG_INFO() << "---------------------" << m_orderObject->courier_name; QLOG_INFO() << "---------------------" << m_orderObject->courier_name;
FmPrinter::GetInstance().DoPrint(ConfigManger::GetInstance().GetPrinterName(), m_orderObject); QString error;
FmPrinter::GetInstance().DoPrint(ConfigManger::GetInstance().GetPrinterName(), m_orderObject, error);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment