Commit 254bed60 by guanghui.cui

打印跳转

parent bce5f769
......@@ -57,6 +57,7 @@ WBillControl::WBillControl()
obj.service_fee=1000;
obj.dis_shop_fee=1300;
obj.create_time=1508640524;
obj.remark="4套餐具";
ComdObject comd1;
comd1.pid="001101";
comd1.productAmount=4;
......@@ -72,12 +73,12 @@ WBillControl::WBillControl()
comd3.productAmount=1;
comd3.price=789;
obj.proList.push_back(&comd3);
//PrintLable(&obj);
PrintLable(&obj);
//printMenu(&obj);
//printTakeout(&obj);
// printBill(&obj);
printCook(&obj,"061301",4);
//printCook(&obj,"061301",4);
}
WBillControl::~WBillControl()
......@@ -383,19 +384,27 @@ void WBillControl::PrintLable(const OrderObject *obj)
}
//厨房单打印
void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int num)
void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int num,bool bJump)
{
for(PrinterMenu menu:vecMenu){
if(menu.strMenuId==menuId){
//print
QJsonObject rObj;
//rObj.insert("device", menu.strDevice.toStdString().data());
//rObj.insert("baud", menu.iBaud);
//不是打印跳转
if(!bJump){
rObj.insert("device", menu.strDevice.toStdString().data());
rObj.insert("baud", menu.iBaud);
//rObj.insert("device", "/dev/ttyM2");
//rObj.insert("baud", 9600);
}
else{
rObj.insert("device", menu.strOrderDevice.toStdString().data());
rObj.insert("baud", menu.iOrderBaud);
//rObj.insert("device", "/dev/ttyS1");
//rObj.insert("baud", 9600);
}
rObj.insert("device", "/dev/ttyS1");
rObj.insert("baud", 9600);
QJsonArray tAry;
QJsonObject tObj;
......@@ -459,15 +468,81 @@ void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int nu
QJsonDocument doc(rObj);
QByteArray strArray = doc.toJson( QJsonDocument::Compact);
QLOG_INFO() << "------ json string:"<<strArray;
sendToPrintServer(strArray);
QString sDateTime =QDateTime::currentDateTime().toString(" 时间 :yyyy-MM-dd hh:mm:ss");
if(!sendToPrintServer(strArray)){
QLOG_INFO() << "打印失败,开始跳转打印";
if(!bJump){
QJsonObject rObjNew;
rObjNew.insert("device", menu.strOrderDevice.toStdString().data());
rObjNew.insert("baud", menu.iOrderBaud);
//rObjNew.insert("device", "/dev/ttyS1");
//rObjNew.insert("baud", 9600);
QJsonArray tAryNew;
QJsonObject tObjNew;
tObjNew.insert("text", "**************************************");
tObjNew.insert("type", 1);
tAryNew.insert(0, tObjNew);
tObjNew.insert("text", " 打印跳转");
tObjNew.insert("type", 5);
tAryNew.insert(1, tObjNew);
tObjNew.insert("text", "从");
tObjNew.insert("type", 1);
tAryNew.insert(2, tObjNew);
QString sPrinter=" 打印列 :";
sPrinter+=QTextCodec::codecForName("GBK")->toUnicode(menu.strTitle.toLatin1());
tObjNew.insert("text", sPrinter);
tObjNew.insert("type", 1);
tAryNew.insert(3, tObjNew);
tObjNew.insert("text", sDateTime);
tObjNew.insert("type", 1);
tAryNew.insert(4, tObjNew);
tObjNew.insert("text", "到");
tObjNew.insert("type", 1);
tAryNew.insert(5, tObjNew);
QString ePrinter=" 打印列 :";
ePrinter+=QTextCodec::codecForName("GBK")->toUnicode(menu.strOrderTitle.toLatin1());
tObjNew.insert("text", ePrinter);
tObjNew.insert("type", 1);
tAryNew.insert(6, tObjNew);
QString eDateTime =QDateTime::currentDateTime().toString(" 时间 :yyyy-MM-dd hh:mm:ss");
tObjNew.insert("text", eDateTime);
tObjNew.insert("type", 1);
tAryNew.insert(7, tObjNew);
tObjNew.insert("text", "**************************************");
tObjNew.insert("type", 1);
tAryNew.insert(8, tObjNew);
rObjNew.insert("print", tAryNew);
QJsonDocument docNew(rObjNew);
QByteArray strArrayNew = docNew.toJson( QJsonDocument::Compact);
QLOG_INFO() << "------jump json string:"<<strArrayNew;
if(sendToPrintServer(strArrayNew)){
printCook(obj,menuId,num,true);
}
else
{
QLOG_INFO() << "------jump print failed";
}
}
}
break;
}
}
}
void WBillControl::sendToPrintServer(QByteArray &JsonPrint)
bool WBillControl::sendToPrintServer(QByteArray &JsonPrint)
{
bool result=false;
QTcpSocket *socket = new QTcpSocket(this);
// 连接
QByteArray byteSlip=JsonPrint;
......@@ -485,10 +560,14 @@ void WBillControl::sendToPrintServer(QByteArray &JsonPrint)
{
QLOG_INFO() << "write order failed:" << recvJson["msg"].toString();
}
else{
result=true;
}
}
}
}
socket->close();
return result;
}
//外卖单打印
......@@ -589,6 +668,11 @@ void WBillControl::printTakeout(const OrderObject *obj)
std::string stdId=strId.toStdString();
print(charset_u2g(stdId).data(),3);
QString strRemark="备注:";
strRemark+=obj->remark;
std::string stdRemark=strRemark.toStdString();
print(charset_u2g(stdRemark).data(),3);
//为空时换行
print("",1);
QString end="*********";
......@@ -630,7 +714,7 @@ void WBillControl::printMenu(const OrderObject *obj)
return;
}
print(menu.strOrderTitle.toLatin1().data(),3);
print(menu.strOrderTitle.toLatin1().data(),5);
QString strDesk=" 台号:";
strDesk+=obj->channelName;
......@@ -638,21 +722,44 @@ void WBillControl::printMenu(const OrderObject *obj)
std::string stdDesk=strDesk.toStdString();
print(charset_u2g(stdDesk).data(),4);
print("",1);
QString order="单据:";
order+=obj->order_id;
std::string stdOrder=order.toStdString();
print(charset_u2g(stdOrder).data(),2);
print(charset_u2g(stdOrder).data(),1);
QString datetime =QDateTime::currentDateTime().toString("日期:yyyy-MM-dd 时间:hh:mm");
std::string stdDatetime=datetime.toStdString();
print(charset_u2g(stdDatetime).data(),2);
print(charset_u2g(stdDatetime).data(),1);
print("----------------------------------------",1);
}
QByteArray menuName=QString::number(num).toLatin1();
menuName.append(" ");
menuName.append(menu.strMenuName.toLatin1());
print(menuName.data(),3);
print(menuName.data(),5);
//如果是套餐,列出子项
QMap<QString,QVector<SetMenuItem>>::ConstIterator it;
it = mapSetMenu.find(pid);
if(it!=mapSetMenu.end()){
QLOG_INFO() << "------ 上菜单,打印套餐子项 pid:"<<pid;
QVector<SetMenuItem> vecItem = it.value();
for(SetMenuItem item:vecItem){
QLOG_INFO() << "------ child menu id:"<<item.strMenuId;
for(PrinterMenu childMenu:vecMenu){
if(childMenu.strMenuId==item.strMenuId){
QByteArray name;
name.append(" ");
name.append(QString::number(item.num).toLatin1());
name.append(" ");
name.append(childMenu.strMenuName.toLatin1());
print(name.data(),5);
}
}
}
}
break;
}
......
......@@ -101,9 +101,10 @@ private:
* 参数:[1]订单信息
* 参数:[2]菜单id
* 参数:[3]数量
* 参数:[4]打印跳转
* 返回:
* */
void printCook(const OrderObject *obj,const QString& menuId,int num);
void printCook(const OrderObject *obj,const QString& menuId,int num,bool bJump=false);
//外卖单打印
void printTakeout(const OrderObject *obj);
......@@ -115,7 +116,7 @@ private:
void printBill(const OrderObject *obj);
//厨房小票信息发送到monitor
void sendToPrintServer(QByteArray &JsonPrint);
bool sendToPrintServer(QByteArray &JsonPrint);
//上菜单打印
QString getPrintTitle(const QString& channel,int index);
......
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