Commit 22abb978 by wuyang.zou

fix bug: after try catch

       :simphony 当捕捉到异常后,发送异常请求后会把simphony 挂在 录完商品后
parent 7a67d049
...@@ -1040,13 +1040,11 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri ...@@ -1040,13 +1040,11 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
int oldOrderStatus = orderObject->orderStatus; int oldOrderStatus = orderObject->orderStatus;
orderObject->orderStatus = orderStatus; orderObject->orderStatus = orderStatus;
emit changeOrderStatus(orderObject, oldOrderStatus); emit changeOrderStatus(orderObject, oldOrderStatus);
emit doHideMainShowFloatFrom(); emit doHideMainShowFloatFrom();
//退货订单,将此订单添加到simphony 模拟点单列表中; //退货订单,将此订单添加到simphony 模拟点单列表中;
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->orderStatus:%2 --->>>>]").arg(orderObject->id).arg(orderObject->orderStatus); QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->orderStatus:%2 --->>>>]").arg(orderObject->id).arg(orderObject->orderStatus);
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->isCancle:%2 --->>>>]").arg(orderObject->id).arg(orderObject->isCancle); QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->isCancle:%2 --->>>>]").arg(orderObject->id).arg(orderObject->isCancle);
if (OrderObject::Refunded == orderObject->orderStatus) { if (OrderObject::Refunded == orderObject->orderStatus && OrderObject::SimExcept != oldOrderStatus) {
//能退单成功就肯定能断言,此订单是没有录过退货的 //能退单成功就肯定能断言,此订单是没有录过退货的
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还拟点单),则需要直接向现存在Sim有效队列中的记录移除;没有模 // 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还拟点单),则需要直接向现存在Sim有效队列中的记录移除;没有模
m_OrderEntryMutex.lock(); m_OrderEntryMutex.lock();
...@@ -1065,7 +1063,6 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri ...@@ -1065,7 +1063,6 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]"); QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]");
m_OrderEntryMutex.unlock(); m_OrderEntryMutex.unlock();
_ClickOMSAssignArea(); //必须执行,否则退货,点击取消后,就不会再提醒了; _ClickOMSAssignArea(); //必须执行,否则退货,点击取消后,就不会再提醒了;
} }
//m_OrderEntryMutex.unlock(); //必须放开锁的范围;否则会出错; //m_OrderEntryMutex.unlock(); //必须放开锁的范围;否则会出错;
} else { } else {
...@@ -1378,6 +1375,9 @@ bool FlowControl::_ResponseHttpRequest(const QJsonObject &content,QJsonObject &d ...@@ -1378,6 +1375,9 @@ bool FlowControl::_ResponseHttpRequest(const QJsonObject &content,QJsonObject &d
case 5://simphony更新订单数据到POS本地数据库以便POS打印小票及汇总单信息 回复 case 5://simphony更新订单数据到POS本地数据库以便POS打印小票及汇总单信息 回复
result=_ResponseSimphony05Request(content,data,error); result=_ResponseSimphony05Request(content,data,error);
break; break;
case 6://simphony汇报SIM录单异常 回复
result=_ResponseSimphony06Request(content,data,error);
break;
case 11://FM OMS推送订单 case 11://FM OMS推送订单
result=_ResponseOMS11Request(content,data,error); result=_ResponseOMS11Request(content,data,error);
break; break;
...@@ -1578,6 +1578,71 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb ...@@ -1578,6 +1578,71 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
} }
bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonObject &data, QString &error)
{
QLOG_INFO()<<__FUNCTION__;
bool result=true;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
QString simExceptCode=content["simExceptCode"].toString();
if(!simExceptCode.isEmpty()&&!orderId.isEmpty()) {
OrderObject* order_p = m_FmOrdersMap.value(orderId);
if (!order_p) {
QLOG_ERROR()<<QString::fromLocal8Bit("[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]").arg(orderId).arg(m_FmOrdersMap.size());
error=QString::fromLocal8Bit("%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size());
return false;
}
// 判断SIM是否存在错误码:
// 0:会在汇报完小票号发送此错误码的请求给插件以便做一些特别事件: 解锁悬浮框;
// 1:SIM录单出异常:转移订单tab至异常单、请求sim的有效订单列表、解锁悬浮框:
int retProcSimExceptCode =0;
if(simExceptCode.toInt()) { //录单异常//
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request:: OrderId:%1 录单异常--->>>>>]").arg(orderId);
if(m_simValidOrdersList.contains(orderId)) {
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderId);
m_OrderEntryMutex.unlock();
int oldStatus = order_p->orderStatus;
order_p->orderStatus = OrderObject::SimExcept;
emit changeOrderStatus(order_p,oldStatus);
error=QString::fromLocal8Bit("处理SIM录单异常成功");
retProcSimExceptCode = 1;
result=true;
}
} else { //录单正常//
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request:: OrderId:%1 录单成功--->>>>>]").arg(orderId);
error=QString::fromLocal8Bit("处理SIM录单异常成功");
retProcSimExceptCode = 1;
result=true;
}
//**************** 组装响应SIM录单异常响应********************//
QJsonObject rObj, cObj;
rObj.insert("fm_cmd", "");
rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
cObj.insert("reqResult",retProcSimExceptCode); //响应SIM汇报异常结果:[1:处理异常成功;0:处理异常失败]
cObj.insert("paid_trans_id",orderId);
rObj.insert("pay_id", cObj);
data = rObj;
//****************解锁悬浮框********************//
/*
*
*/
} else {
result=false;
error=QString::fromLocal8Bit("订单编号 和 SIM错误码不能为空");
}
} else {
result=false;
error=QString::fromLocal8Bit("请求参数错误");
}
return result;
}
bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject &data, QString &error) bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject &data, QString &error)
{ {
QLOG_INFO()<<__FUNCTION__; QLOG_INFO()<<__FUNCTION__;
...@@ -1704,10 +1769,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro ...@@ -1704,10 +1769,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
tempSbkAppPayValue = orderObject->payfmId; tempSbkAppPayValue = orderObject->payfmId;
}else if(1 == orderObject->payWay){ }else if(1 == orderObject->payWay){
tempSbkAppPayType = 78; tempSbkAppPayType = 78;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString('0'); tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("123456789");
}else if(2 == orderObject->payWay){ }else if(2 == orderObject->payWay){
tempSbkAppPayType = 77; tempSbkAppPayType = 77;
tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString('0'); tempSbkAppPayValue = (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("123456789");
}else{ }else{
tempSbkAppPayType = -1; tempSbkAppPayType = -1;
tempSbkAppPayValue = "-1"; tempSbkAppPayValue = "-1";
...@@ -1737,10 +1802,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro ...@@ -1737,10 +1802,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
cObj.insert("orderPayType", tempOrderPayType); cObj.insert("orderPayType", tempOrderPayType);
cObj.insert("sbkAppPayType", tempSbkAppPayType); cObj.insert("sbkAppPayType", tempSbkAppPayType);
cObj.insert("sbkAppPayValue", tempSbkAppPayValue); cObj.insert("sbkAppPayValue", tempSbkAppPayValue);
cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0") ); //第三方交易流水号 cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("123456789") ); //第三方交易流水号
cObj.insert("packFree", orderObject->packageFee); cObj.insert("packFree", orderObject->packageFee);
cObj.insert("deliveryFree", orderObject->deliveryPrice); cObj.insert("deliveryFree", orderObject->deliveryPrice);
cObj.insert("waybillId", (orderObject->waybillId).length()?orderObject->waybillId:QString("0") ); cObj.insert("waybillId", (orderObject->waybillId).length()?orderObject->waybillId:QString("123456") );
cObj.insert("pos_sale_id", orderObject->posCheckNo); cObj.insert("pos_sale_id", orderObject->posCheckNo);
cObj.insert("order_status",orderObject->orderStatus);//订单的状态 cObj.insert("order_status",orderObject->orderStatus);//订单的状态
cObj.insert("pay_ebcode", orderObject->channel); cObj.insert("pay_ebcode", orderObject->channel);
......
...@@ -480,6 +480,15 @@ public slots: ...@@ -480,6 +480,15 @@ public slots:
**/ **/
bool _ResponseSimphony05Request(const QJsonObject &content, QJsonObject &data,QString &error); bool _ResponseSimphony05Request(const QJsonObject &content, QJsonObject &data,QString &error);
/**
*功能:FM外卖插件为响应Simphony请求[action:06 -> simphony汇报SIM录单异常]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimphony06Request(const QJsonObject &content, QJsonObject &data,QString &error);
/** /**
*功能:FM外卖插件为响应Simphony请求[action:11 -> Sim/POS推送订单到FM插件]准备返回数据 *功能:FM外卖插件为响应Simphony请求[action:11 -> Sim/POS推送订单到FM插件]准备返回数据
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息; *参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
......
...@@ -104,6 +104,9 @@ QString GetOperNameByStatus(int status, bool bRefuse) ...@@ -104,6 +104,9 @@ QString GetOperNameByStatus(int status, bool bRefuse)
} }
return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER); return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER);
break; break;
case 50:
return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER);
break;
default: default:
return "NULL"; return "NULL";
break; break;
......
...@@ -71,7 +71,8 @@ public: ...@@ -71,7 +71,8 @@ public:
typedef enum { typedef enum {
NewOrder=2,Confirmed,Sendout,Finished,Refunded,RequestRefund NewOrder=2,Confirmed,Sendout,Finished,Refunded,RequestRefund
,Locked=-1,AgreeRefund=30,RefuseRefund=40 /*,Refunded=6 Cancled=6(订单状态是6时,是退单); 退单目前本佳那边不区分*/ ,Locked=-1,AgreeRefund=30,RefuseRefund=40 ,SimExcept=50
/*,Refunded=6 Cancled=6(订单状态是6时,是退单); 退单目前本佳那边不区分*/
}OrderStatus; }OrderStatus;
/* 功能:从Json对象初获取数据 /* 功能:从Json对象初获取数据
......
...@@ -46,6 +46,7 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -46,6 +46,7 @@ void DetailForm::InitData(OrderObject *orderObject)
//TODO //TODO
ui->detailLab4->setText(Penny2Dollar(orderObject->productPrice)); ui->detailLab4->setText(Penny2Dollar(orderObject->productPrice));
ui->detailLab6->setText(orderObject->needInvoice? orderObject->invoiceTitle : QString::fromLocal8Bit("不需要发票")); ui->detailLab6->setText(orderObject->needInvoice? orderObject->invoiceTitle : QString::fromLocal8Bit("不需要发票"));
ui->detailLab7->setText(orderObject->msr_no.length()? orderObject->msr_no : orderObject->customerId); // MSR_NO
ui->detailLab5->setText(QString("[%1]").arg(orderObject->memo)); ui->detailLab5->setText(QString("[%1]").arg(orderObject->memo));
for(int i=0; i<orderObject->proList.count(); i++) for(int i=0; i<orderObject->proList.count(); i++)
{ {
...@@ -73,7 +74,7 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -73,7 +74,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn2->setText(GetOperNameByStatus(orderObject->orderStatus, true)); ui->detailBtn2->setText(GetOperNameByStatus(orderObject->orderStatus, true));
ui->detailBtn2->setProperty("operation", GetOperByStatus(orderObject->orderStatus, true)); ui->detailBtn2->setProperty("operation", GetOperByStatus(orderObject->orderStatus, true));
ui->detailBtn2->setProperty("orderId", orderObject->id); ui->detailBtn2->setProperty("orderId", orderObject->id);
if(orderObject->orderStatus != 1 && orderObject->orderStatus != 20&& orderObject->orderStatus != 2 && orderObject->orderStatus != 3&& orderObject->orderStatus != 4) if(orderObject->orderStatus != 1 && orderObject->orderStatus != 20 && orderObject->orderStatus != 2 && orderObject->orderStatus != 3&& orderObject->orderStatus != 4 && orderObject->orderStatus != OrderObject::SimExcept)
{ {
ui->detailBtn2->hide(); ui->detailBtn2->hide();
} }
......
...@@ -725,7 +725,7 @@ ...@@ -725,7 +725,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string/> <string>MSR卡号:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
......
...@@ -474,6 +474,27 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus) ...@@ -474,6 +474,27 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
table->setCellWidget(0, 6, pWdg); // 操作按钮 table->setCellWidget(0, 6, pWdg); // 操作按钮
//connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked); //connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked);
} }
// SIM录外卖订单出现异常的订单;
if(OrderObject::SimExcept == orderObject->orderStatus)
{
qDebug()<<table->objectName()<<"------";
QWidget *pWdg = new QWidget(table);
QHBoxLayout *hLayout = new QHBoxLayout(pWdg);
QPushButton * pBtn = new QPushButton(pWdg);
pBtn->setFixedSize(90, 30);
pBtn->setFocusPolicy(Qt::NoFocus);
pBtn->setObjectName("mainProcBtn");
pBtn->setProperty("orderId", orderObject->id);
//pBtn->setProperty("operation", table->property("operation").toString());
pBtn->setText(QString::fromLocal8Bit("POS录单失败"));
pBtn->setDisabled(true);
hLayout->addWidget(pBtn);
hLayout->setMargin(0);
pWdg->setLayout(hLayout);
table->setCellWidget(0, 6, pWdg); // 操作按钮
//connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked);
}
// 已下单待支付; // 已下单待支付;
if(1==orderObject->orderStatus) if(1==orderObject->orderStatus)
{ {
......
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