Commit 442146c7 by wuyang.zou

fix Bug: 1、先存储本地DB数据库后,向OMS汇报成功后,OMS 会更新插件信赖的 放重复入机标志,在订单入机队列出现大量积压时,

         此时订单状态出现变更,或插件主动刷新订单的详情数据,将会把待入机队列中的 订单移除 待入机队列。
         本次和OMS配合升级, 新增汇报订单状态的新枚举值: 3: 存储DB成功; 4: 存储DB失败;
Version: 2.2021.5.17
parent d5180297
Pipeline #33017 failed with stage
in 0 seconds
...@@ -427,9 +427,13 @@ void FlowControl::_StoragePosOrderData() { ...@@ -427,9 +427,13 @@ void FlowControl::_StoragePosOrderData() {
} else { } else {
errorStorageOrderMsg = QString("Decouple Pos: OrderId: %1 Storage Pos Local DB Success").arg(orderId); errorStorageOrderMsg = QString("Decouple Pos: OrderId: %1 Storage Pos Local DB Success").arg(orderId);
} }
// 解耦POS标识作为最后标识尺度; 避免后期 解耦和 先打印后存储模式的 同时存在;
if ( order_p->decouplePosVersion >= 20 ) {
errorStorageOrderMsg = QString("Decouple Pos: OrderId: %1 Storage Pos Local DB Success").arg(orderId);
}
// 落库成功, 准备将订单数据落库成功的报文消息汇报给 OMS: // 落库成功, 准备将订单数据落库成功的报文消息汇报给 OMS:
// 销售单/退货单: 会根据订单状态 是否 = 6 进行转换后进行汇报; 进入此队列 m_storagePosOrdersList 的次数决定汇报的次数; // 销售单/退货单: 会根据订单状态 是否 = 6 进行转换后进行汇报; 进入此队列 m_storagePosOrdersList 的次数决定汇报的次数;
_AddItemToReportOmsList(order_p, 1, 1, posCheckNo, errorStorageOrderMsg); _AddItemToReportOmsList(order_p, 1, 3, posCheckNo, errorStorageOrderMsg);
// 订单:销售+退货 数据存储成功后,需要更新 订单表 销售 退货的成功标识, 减少添加到 存储队列中的频次; // 订单:销售+退货 数据存储成功后,需要更新 订单表 销售 退货的成功标识, 减少添加到 存储队列中的频次;
if ( order_p->decouplePosVersion >= 20 ) { if ( order_p->decouplePosVersion >= 20 ) {
if ( OrderObject::Refunded == order_p->orderStatus ) { if ( OrderObject::Refunded == order_p->orderStatus ) {
...@@ -455,8 +459,16 @@ void FlowControl::_StoragePosOrderData() { ...@@ -455,8 +459,16 @@ void FlowControl::_StoragePosOrderData() {
.arg( syncOrderProductTbRet?"":"OrderProductTb ").arg( syncOrderPromotionTbRet?"":"OrderPromotionTb ") .arg( syncOrderProductTbRet?"":"OrderProductTb ").arg( syncOrderPromotionTbRet?"":"OrderPromotionTb ")
.arg( syncOrderSumBillTbRet?"":"OrderSumBillTb ").arg( syncOrderPrtMsgTbRet?"":"OrderPrtMsgTb "); .arg( syncOrderSumBillTbRet?"":"OrderSumBillTb ").arg( syncOrderPrtMsgTbRet?"":"OrderPrtMsgTb ");
} }
// 解耦POS标识作为最后标识尺度; 避免后期 解耦和 先打印后存储模式的 同时存在;
if ( order_p->decouplePosVersion >= 20 ) {
errorStorageOrderMsg = QString("Decouple Pos: OrderId: %1 Storage Pos Local DB Error : %2 %3 %4 %5 ").arg(orderId)
.arg( syncOrderProductTbRet?"":"OrderProductTb ").arg( syncOrderPromotionTbRet?"":"OrderPromotionTb ")
.arg( syncOrderSumBillTbRet?"":"OrderSumBillTb ").arg( syncOrderPrtMsgTbRet?"":"OrderPrtMsgTb ");
}
// 落库失败:准备将订单数据落库失败的报文消息汇报给 OMS; // 落库失败:准备将订单数据落库失败的报文消息汇报给 OMS;
_AddItemToReportOmsList(order_p, 1, 2, posCheckNo, errorStorageOrderMsg); _AddItemToReportOmsList(order_p, 1, 4, posCheckNo, errorStorageOrderMsg);
} }
// 针对上方 着急打印汇总单 但 还需要入机的门店,需要将订单添加到待入机队列中,等待排队入机; // 针对上方 着急打印汇总单 但 还需要入机的门店,需要将订单添加到待入机队列中,等待排队入机;
...@@ -696,8 +708,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -696,8 +708,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
repOMSRecordOrder->storeId = m_storeId.isEmpty()?QString::fromLocal8Bit("未知门店"):m_storeId; repOMSRecordOrder->storeId = m_storeId.isEmpty()?QString::fromLocal8Bit("未知门店"):m_storeId;
repOMSRecordOrder->remark = QString("POS Local DataBase Connect Error Or Table No Exist Error,Please Check DataBase Setting In Time"); repOMSRecordOrder->remark = QString("POS Local DataBase Connect Error Or Table No Exist Error,Please Check DataBase Setting In Time");
repOMSRecordOrder->reqResult = 0; repOMSRecordOrder->reqResult = 0;
//repOMSRecordOrder->checkNo = QString::fromLocal8Bit("0"); repOMSRecordOrder->posPluginVersion = APP_VERSION;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_OrderAnalysis():m_orderRecordRepOMSList.append()--->>>>]");
m_orderRecordRepOMSList.append(repOMSRecordOrder); m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock(); m_RepOMSRecordOrderMutex.unlock();
//修改订单状态,避免后面对数据库出现不稳定的POS机仍然进行录单操作; //修改订单状态,避免后面对数据库出现不稳定的POS机仍然进行录单操作;
...@@ -1458,7 +1469,7 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri ...@@ -1458,7 +1469,7 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
void FlowControl::_ReportOMSRecordOrderInfo() void FlowControl::_ReportOMSRecordOrderInfo()
{ {
QLOG_INFO()<<"[<<<<----FlowControl::_ReportOMSRecordOrderInfo ---->>>>>]"; QLOG_INFO()<<"[<<<<----FlowControl::_ReportOMSRecordOrderInfo ---->>>>>]";
if(m_orderRecordRepOMSList.isEmpty()) if ( m_orderRecordRepOMSList.isEmpty() )
return ; return ;
bool btryLock = m_RepOMSRecordOrderMutex.tryLock(VALUE_TRYLOCKNETTIMEOUT); bool btryLock = m_RepOMSRecordOrderMutex.tryLock(VALUE_TRYLOCKNETTIMEOUT);
...@@ -1474,16 +1485,15 @@ void FlowControl::_ReportOMSRecordOrderInfo() ...@@ -1474,16 +1485,15 @@ void FlowControl::_ReportOMSRecordOrderInfo()
for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) { for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) {
if (*i) { if (*i) {
RepOMSRecOrderIn = (*i); //*i 使用*运算符获取遍历容器中所指的元素; RepOMSRecOrderIn = (*i); //*i 使用*运算符获取遍历容器中所指的元素;
if (1== RepOMSRecOrderIn->status.toInt() || if ( 1== RepOMSRecOrderIn->status.toInt() || ( 2 == RepOMSRecOrderIn->status.toInt() && 0 == RepOMSRecOrderIn->reqResult)
( 2 == RepOMSRecOrderIn->status.toInt() && 0 == RepOMSRecOrderIn->reqResult) ) { || 3 == RepOMSRecOrderIn->status.toInt() || ( 4 == RepOMSRecOrderIn->status.toInt() && 0 == RepOMSRecOrderIn->reqResult) ) {
findFlag = true; findFlag = true;
break; break;
} else { } else {
findFlag = false; findFlag = false;
} }
} else { } else {
QLOG_INFO()<<QString("[<<<<----FlowControl::_ReportOMSRecordOrderInfo *i Is Null, ListCount:%1 ---->>>>>]") QLOG_INFO()<<QString("[<<<<----FlowControl::_ReportOMSRecordOrderInfo *i Is Null, ListCount:%1 ---->>>>>]").arg( m_orderRecordRepOMSList.count() );
.arg( m_orderRecordRepOMSList.count() );
} }
} }
...@@ -1504,7 +1514,6 @@ void FlowControl::_ReportOMSRecordOrderInfo() ...@@ -1504,7 +1514,6 @@ void FlowControl::_ReportOMSRecordOrderInfo()
QJsonObject sendJson; QJsonObject sendJson;
QJsonObject recvJson; QJsonObject recvJson;
m_reportOMSRecordOrderSocket->SetSslConfig(); m_reportOMSRecordOrderSocket->SetSslConfig();
QLOG_INFO()<<"FlowControl::_ReportOMSRecordOrderInfo load ssl";
//组装POST请求数据; //组装POST请求数据;
sendJson.insert("orderNo", RepOMSRecOrderIn->orderNo); sendJson.insert("orderNo", RepOMSRecOrderIn->orderNo);
sendJson.insert("channel", RepOMSRecOrderIn->channel); sendJson.insert("channel", RepOMSRecOrderIn->channel);
...@@ -1516,6 +1525,7 @@ void FlowControl::_ReportOMSRecordOrderInfo() ...@@ -1516,6 +1525,7 @@ void FlowControl::_ReportOMSRecordOrderInfo()
sendJson.insert("remark", RepOMSRecOrderIn->remark); sendJson.insert("remark", RepOMSRecOrderIn->remark);
sendJson.insert("checkNo", RepOMSRecOrderIn->checkNo); sendJson.insert("checkNo", RepOMSRecOrderIn->checkNo);
sendJson.insert("ipAddress",m_ipAddress); sendJson.insert("ipAddress",m_ipAddress);
sendJson.insert(JSON_POS_PLUGIN_VERSION, RepOMSRecOrderIn->posPluginVersion);
QLOG_INFO() << QString("[<<<<---_ReportOMSRecordOrderInfo:Begin--->>>>][requestData:%1]")<<sendJson; QLOG_INFO() << QString("[<<<<---_ReportOMSRecordOrderInfo:Begin--->>>>][requestData:%1]")<<sendJson;
m_reportOMSRecordOrderSocket->SetUrl(QUrl(ConfigManger::GetInstance().GetLoginServerUrl()+ m_reportOMSRecordOrderSocket->SetUrl(QUrl(ConfigManger::GetInstance().GetLoginServerUrl()+
...@@ -1536,11 +1546,11 @@ void FlowControl::_ReportOMSRecordOrderInfo() ...@@ -1536,11 +1546,11 @@ void FlowControl::_ReportOMSRecordOrderInfo()
m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn ); m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn );
m_orderRecordRepOMSList.append( RepOMSRecOrderIn ); m_orderRecordRepOMSList.append( RepOMSRecOrderIn );
} else { } else {
//解析汇报订单入机POS状态成功; //解析 汇报订单入机POS状态成功 || 汇报存储POS数据库状态成功;
result=true; result=true;
if ( 1 == RepOMSRecOrderIn->status.toInt() ) { if ( 1 == RepOMSRecOrderIn->status.toInt() || 3 == RepOMSRecOrderIn->status.toInt() ) {
//只有订单成功入机的订单,才能将此订单从 List容器中移除;否则必须保留在此容器中 避免重复多次向OMS汇报; //只有订单成功入机的订单,才能将此订单从 List容器中移除;否则必须保留在此容器中 避免重复多次向OMS汇报;
QLOG_INFO()<< QString("[<<<<---Report OMS Record Order Entry POS Info successful,Remove orderId:%1--->>>>][msg->%2]") QLOG_INFO()<< QString("[<<<<---Report OMS Record Order Entry POS / Storage Pos DB successful, Remove orderId:%1--->>>>][msg->%2]")
.arg( RepOMSRecOrderIn->orderNo ).arg( RepOMSRecOrderIn->remark ); .arg( RepOMSRecOrderIn->orderNo ).arg( RepOMSRecOrderIn->remark );
m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn ); m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn );
delete RepOMSRecOrderIn; delete RepOMSRecOrderIn;
...@@ -1559,7 +1569,8 @@ void FlowControl::_ReportOMSRecordOrderInfo() ...@@ -1559,7 +1569,8 @@ void FlowControl::_ReportOMSRecordOrderInfo()
void FlowControl::_AddItemToReportOmsList(const OrderObject* orderPoint, const int& msgType, const int& msgRet, const QString& chkNum, const QString& msgDesc){ void FlowControl::_AddItemToReportOmsList(const OrderObject* orderPoint, const int& msgType, const int& msgRet, const QString& chkNum, const QString& msgDesc){
if ( orderPoint ) { if ( orderPoint ) {
if ( 1 == msgType ) { if ( 1 == msgType ) {
if ( 1 == msgRet ) { // msgRet: 3 -> 标识存储DB成功; 4 -> 标识存储DB失败;
if ( 3 == msgRet ) {
QLOG_INFO()<< QString("[<<<<---_AddItemToReportOmsList:: Storage Pos Local DB Success, Add Report List, OrderId:%1--->>>>]").arg(orderPoint->id); QLOG_INFO()<< QString("[<<<<---_AddItemToReportOmsList:: Storage Pos Local DB Success, Add Report List, OrderId:%1--->>>>]").arg(orderPoint->id);
} else { } else {
QLOG_INFO()<< QString("[<<<<---_AddItemToReportOmsList:: Storage Pos Local DB Failed, Add Report List, OrderId:%1--->>>>]").arg(orderPoint->id); QLOG_INFO()<< QString("[<<<<---_AddItemToReportOmsList:: Storage Pos Local DB Failed, Add Report List, OrderId:%1--->>>>]").arg(orderPoint->id);
...@@ -1624,8 +1635,8 @@ void FlowControl::_AddOrUpdateReportOmsList(const QString &orderId, const QStri ...@@ -1624,8 +1635,8 @@ void FlowControl::_AddOrUpdateReportOmsList(const QString &orderId, const QStri
repOMSRecordOrder->storeId = m_storeId; repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = error; repOMSRecordOrder->remark = error;
repOMSRecordOrder->checkNo = chkNum; repOMSRecordOrder->checkNo = chkNum;
repOMSRecordOrder->posPluginVersion = APP_VERSION;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_AddOrUpdateReportOmsList:m_orderRecordRepOMSList.append() orderId:%1 error:%2--->>>>]").arg(orderId).arg(error); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_AddOrUpdateReportOmsList:m_orderRecordRepOMSList.append() orderId:%1 error:%2--->>>>]").arg(orderId).arg(error);
m_orderRecordRepOMSList.append(repOMSRecordOrder); m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock(); m_RepOMSRecordOrderMutex.unlock();
} else { } else {
...@@ -2109,6 +2120,7 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb ...@@ -2109,6 +2120,7 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
repOMSRecordOrder->storeId = m_storeId; repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = QString::fromLocal8Bit("入机成功"); repOMSRecordOrder->remark = QString::fromLocal8Bit("入机成功");
repOMSRecordOrder->checkNo = posCheckNo; repOMSRecordOrder->checkNo = posCheckNo;
repOMSRecordOrder->posPluginVersion = APP_VERSION;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony04Request:m_orderRecordRepOMSList.append() orderId:%1 orderStatus:%2 checkNo:%3--->>>>]").arg(orderId).arg(repOMSRecordOrder->type).arg(posCheckNo); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony04Request:m_orderRecordRepOMSList.append() orderId:%1 orderStatus:%2 checkNo:%3--->>>>]").arg(orderId).arg(repOMSRecordOrder->type).arg(posCheckNo);
m_orderRecordRepOMSList.append(repOMSRecordOrder); m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock(); m_RepOMSRecordOrderMutex.unlock();
...@@ -2305,6 +2317,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -2305,6 +2317,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");; repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId; repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = simExceptMsg; repOMSRecordOrder->remark = simExceptMsg;
repOMSRecordOrder->posPluginVersion = APP_VERSION;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg);
m_orderRecordRepOMSList.append(repOMSRecordOrder); m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock(); m_RepOMSRecordOrderMutex.unlock();
...@@ -2407,6 +2420,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -2407,6 +2420,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");; repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId; repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = simExceptMsg; repOMSRecordOrder->remark = simExceptMsg;
repOMSRecordOrder->posPluginVersion = APP_VERSION;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg);
m_orderRecordRepOMSList.append(repOMSRecordOrder); m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock(); m_RepOMSRecordOrderMutex.unlock();
......
...@@ -86,6 +86,7 @@ private: ...@@ -86,6 +86,7 @@ private:
QString storeId; //门店编号 QString storeId; //门店编号
QString remark; //备注:入机出错信息 QString remark; //备注:入机出错信息
QString checkNo; //小票号:入机成功时的小票号; QString checkNo; //小票号:入机成功时的小票号;
QString posPluginVersion; //该订单入机后, 汇报给OMS对应程序的版本号;
int reqResult; //向OMS请求汇报结果; int reqResult; //向OMS请求汇报结果;
}RepOMSRecordOrderInfo; }RepOMSRecordOrderInfo;
......
...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico" ...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif #endif
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2021,5,11 FILEVERSION 2,2021,5,17
PRODUCTVERSION 2,2021,5,11 PRODUCTVERSION 2,2021,5,17
//*************************************************************************// //*************************************************************************//
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
...@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO ...@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "fmTakeout.exe" VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin" VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2021.5.11" VALUE "ProductVersion", "2.2021.5.17"
VALUE "FileVersion", "2.2021.5.11" VALUE "FileVersion", "2.2021.5.17"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -36,7 +36,8 @@ ...@@ -36,7 +36,8 @@
//#define APP_VERSION "2.2021.2.22" //#define APP_VERSION "2.2021.2.22"
//#define APP_VERSION "2.2021.2.26" //#define APP_VERSION "2.2021.2.26"
//#define APP_VERSION "2.2021.4.19" //#define APP_VERSION "2.2021.4.19"
#define APP_VERSION "2.2021.5.11" //#define APP_VERSION "2.2021.5.11"
#define APP_VERSION "2.2021.5.17"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
...@@ -120,6 +121,7 @@ ...@@ -120,6 +121,7 @@
#define JSON_DATA "data" #define JSON_DATA "data"
#define JSON_POSVERSION "pos_version" #define JSON_POSVERSION "pos_version"
#define JSON_PLUGINVERSION "version" #define JSON_PLUGINVERSION "version"
#define JSON_POS_PLUGIN_VERSION "posVersion"
#define JSON_PLUGINVERSIONCOMMENTS "versionComments" #define JSON_PLUGINVERSIONCOMMENTS "versionComments"
#define JSON_SYNCSTORESTATUS "syncStoreStatus" #define JSON_SYNCSTORESTATUS "syncStoreStatus"
#define JSON_ORDERS "orders" #define JSON_ORDERS "orders"
......
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