Commit db48d2cf by ss.dai

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

parent 0b74e00d
......@@ -13,11 +13,11 @@ FmPrinter &FmPrinter::GetInstance()
return fp;
}
bool FmPrinter::DoPrint(QString printerName, OrderObject *pData)
bool FmPrinter::DoPrint(QString printerName, OrderObject *pData, QString& error)
{
foreach(QString data, _GetPrintData(pData))
{
if(!_RawDataToPrinter(printerName, data))
if(!_RawDataToPrinter(printerName, data, error))
{
return false;
}
......@@ -28,7 +28,8 @@ bool FmPrinter::DoPrint(QString printerName, OrderObject *pData)
bool FmPrinter::TestPrint(QString printerName, QString data)
{
return _RawDataToPrinter(printerName, data);
QString error;
return _RawDataToPrinter(printerName, data, error);
}
QStringList FmPrinter::_GetPrintData(OrderObject *pData)
......@@ -94,10 +95,9 @@ QStringList FmPrinter::_GetPrintData(OrderObject *pData)
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();
// 在行尾加上切纸命令
QByteArray tmpData = data.toLocal8Bit();
tmpData.append(27);
......@@ -112,22 +112,25 @@ bool FmPrinter::_RawDataToPrinter(QString printerName, QString data)
DWORD dwBytesWritten = 0L;
// Open a handle to the printer.
error += QString::fromStdWString(szPrinterName);
bStatus = OpenPrinter( szPrinterName, &hPrinter, NULL );
if (bStatus) {
// 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.pDatatype = (LPTSTR)QString("RAW").toStdWString().c_str();
DocInfo.pDatatype = (LPTSTR)L"RAW";
error += "11111";
// Inform the spooler the document is beginning.
dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
if (dwJob > 0) {
error += "22222";
// Start a page.
bStatus = StartPagePrinter( hPrinter );
if (bStatus) {
// Send the data to the printer.
bStatus = WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten);
EndPagePrinter (hPrinter);
error += "33333";
}
// Inform the spooler that the document is ending.
EndDocPrinter( hPrinter );
......
......@@ -14,7 +14,7 @@ public:
* 参数:[1]物理打印机名[2]订单对象
* 返回:true成功false失败
* */
bool DoPrint(QString printerName, OrderObject *pData);
bool DoPrint(QString printerName, OrderObject *pData, QString& error);
/* 功能:打印测试
* 参数:[1]物理打印机名[2]信息内容
* 返回:true成功false失败
......@@ -35,7 +35,7 @@ private:
* 参数:[1]物理打印机名[2]信息内容
* 返回:打印数据
* */
bool _RawDataToPrinter(QString printerName, QString data);
bool _RawDataToPrinter(QString printerName, QString data, QString& error);
/* 功能:将【分】转化为【元】
* 参数:[1]分
* 返回:元
......
......@@ -152,19 +152,6 @@ bool FlowControl::_PullOrder()
.arg(orderObject->order_id, orderObject->status_desc)
.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;
......@@ -194,20 +181,6 @@ bool FlowControl::_PullOrder()
.arg(orderObject->order_id, orderObject->status_desc)
.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;
if(orderObject->status==6 || orderObject->status==200)
......@@ -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;
}
syncTime = recvJson[JSON_SYNCTIME].toInt()*1000;
......
......@@ -138,7 +138,8 @@ void DetailForm::on_detailBtn1_clicked()
if(!m_orderObject->courier_name.isEmpty())
{
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