Commit d43d9605 by wuyang.zou

fix bug: 在获取订单列表时,oms 推送新订单到PmsPlugin时,新订单无法及时插入PMS数据库;目前将待处理订单列表,拆分成两个: 1、插件内存中不存在的新订单处理队列;

2、插件内存中已经存在的订单,且该订单出现状态需要更新状态队列
parent 07733e07
......@@ -114,6 +114,7 @@ private:
QTimer *m_loginTimer;
QTimer *m_remindCasherBlinkFloatTimer; //插件程序收到外卖订单后,需要一致提醒店员[直到此外卖订单被全部录入到POS系统]
QTimer *m_notifyPmsPullTimer;
QTimer *m_notifyPmsUpdateTimer;
//QTimer *m_cyclePullAllOrderTimer; //由于定时器是为了周期性获取全部订单; 原因: PmsPlugin set StoreServiceCenter; aviod missing Orders;
//已经通过心跳返回当天有效订单数据进行 漏单检查,故无需 周期性获取订单列表;
// 网络通信
......@@ -139,6 +140,8 @@ private:
QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap;
//等待Simphony拉取的有效订单队列list[orderId]
QStringList m_simValidOrdersList;
//等待更新PMS 订单数据的有效订单队列list[orderId]
QStringList m_waitUpdateOrderList;
//订单号与pos短号映射:[可能同时存在两种状态:1:新单记录;2:退单记录;但是小票号就存一个;]
QMap<QString,QString> m_orderIdToPosCheckNoMap;
//记录当前订单操作
......@@ -153,6 +156,9 @@ private:
//订单操作互斥信号 QSemaphore semaphore;
QMutex m_OrderEntryMutex;
// PMS 同步订单列表的操作互斥信号;
QMutex m_OrderUpdateMutex;
//新增三个bool变量用来标识 程序初始化时,两个数据库中的三张表是否能够连接正常;
bool m_initSimProcOrderDBRet;
bool m_initPrintSumBillPosDBRet;
......@@ -390,6 +396,7 @@ public slots:
void _ClickOMSAssignArea();
void _ClickToLogin();
void _NotifyPmsPullOrder();
void _NotifyPmsUpdateOrder();
void _NotifyCyclePullAllOrder();
void _RemindCasherBlinkFloatForm();
void _OrderAnalysis(const QJsonObject &jsonObject);
......
......@@ -42,19 +42,18 @@ void DataManger::SetPartnerId(const QString &partnerId)
m_partnerId=partnerId;
}
QJsonObject DataManger::GetLoginData(const QString &partnerId, const QString &storeId, const QString &password,
const QString &stationId, const QString &cashierId, const QString &ipAddress
,const QString &pmsMachineNo)
QJsonObject DataManger::GetLoginData(const QString& partnerId,const QString& storeId, const QString& password,
const QString& stationId, const QString& versionComments,const QString& ipAddress, QString& pmsMachineNo)
{
QJsonObject rObj;
Q_UNUSED(cashierId);
rObj.insert(JSON_IPADDRESS, ipAddress);
rObj.insert(JSON_PARTNERID,partnerId);
rObj.insert(JSON_ORGCODE, storeId);
rObj.insert(JSON_PASSWORD, password);
rObj.insert(JSON_MACHINECODE, stationId);
rObj.insert(JSON_PLUGINVERSION, APP_VERSION);
rObj.insert(JSON_PLUGINVERSIONCOMMENTS, versionComments);
rObj.insert(JSON_PMSMACHINENO, pmsMachineNo);
//rObj.insert(JSON_USERID, cashierId);
return rObj;
}
......
......@@ -36,9 +36,11 @@ public:
* 参数:[1]门店号[2]密码[3]收银机号[4]收银员号
* 返回:登录数据
* */
QJsonObject GetLoginData(const QString& partnerId,const QString& storeId, const QString& password,
const QString& stationId, const QString& cashierId,
const QString& ipAddress,const QString& pmsMachineNo);
const QString& stationId, const QString& versionComments,
const QString& ipAddress, QString& pmsMachineNo);
/* 功能:获取心跳数据
* 参数:[1]门店号[2]密码[3]收银机号[4]收银员号
* 返回:登录数据
......
......@@ -174,7 +174,6 @@ int PmsOrdersData::convertPosServiceTypeId( const OrderObject* orderObj, const
default: return tempOrderTypeId;
}
QLOG_INFO()<<"[<<<<---PmsOrdersData::convertPosServiceTypeId : --->>>>]" <<tempOrderTypeId;
return tempOrderTypeId;
}
......@@ -495,6 +494,7 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
bool PmsOrdersData::insertConponData(const QList<CouponsObject*> coupList, const QString& OrderId, QString& ProInIdRef) {
bool insertCoupRet = false;
bool insertCoupSubProRet = false;
Q_UNUSED(insertCoupSubProRet); // Waitting Start
int insertCoupSucNum = 0;
int availCoupNum = 0; // Skip Some Invalid Coupon Products;
......@@ -741,10 +741,10 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
// 需要对应转换并更新: order_type_id;
int tempOrderTypeId = convertPosServiceTypeId( orderObj, orderObj->orderStatus);
query.prepare(QString("update orders set order_status=%1,order_type_id=%2, make_status='%3',"
" make_source='%4', make_device_id='%5', appointed_remind_template ='%6' where order_id='%7'")
.arg(QString::number(OrderStatus),QString::number(tempOrderTypeId),makeStatus,
orderObj->makeSource, orderObj->makeDeviceId,
query.prepare(QString("update orders set order_status=%1,order_type_id=%2, global_service_type=%3, global_order_type=%4, make_status='%5',"
" make_source='%6', make_device_id='%7', appointed_remind_template ='%8' where order_id='%9'")
.arg( QString::number(OrderStatus), QString::number(tempOrderTypeId), QString::number(orderObj->globalServiceType),
QString::number(orderObj->globalOrderType) ,makeStatus, orderObj->makeSource, orderObj->makeDeviceId,
QString::number(orderObj->inAdvanceTakemeal) +';'+ orderObj->reserveMakeTime, orderObj->id));
if(!query.exec()) {
......
......@@ -129,14 +129,13 @@ void OrderObject::FetchDataFromJson(const QJsonObject &json)
QString OrderObject::getChannelName()
{
QLOG_INFO() << QString("[<<<<---OrderObject:getChannelName [%1]--->>>>]").arg(channel);
if ( "MOD" == channel ) {
if (3 == orderType ) {
return QString::fromLocal8Bit("星-客诉");
} else if ( 7 == orderType ) {
return QString::fromLocal8Bit("预-MOD");
return QString::fromLocal8Bit("预-MOD");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼-MOD");
return QString::fromLocal8Bit("拼-MOD");
} else {
if ( "4" == platformSource ) {
return QString::fromLocal8Bit("微信-MOD");
......@@ -147,23 +146,27 @@ QString OrderObject::getChannelName()
}else if("WSG-MOD" == channel ){
if (7 == orderType ) {
return QString::fromLocal8Bit("预-WSG");
return QString::fromLocal8Bit("预-WSG");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼-WSG");
return QString::fromLocal8Bit("拼-WSG");
} else {
return QString::fromLocal8Bit("微信用星说");
}
}else if("ELE" == channel){
return QString::fromLocal8Bit("饿了么");
if ( 7 == orderType ) {
return QString::fromLocal8Bit("预-饿了么");
} else {
return QString::fromLocal8Bit("饿了么");
}
}else if( "MOP" == channel ){
if (4 == orderType ) {
return QString::fromLocal8Bit("星-自测");
} else if ( 7 == orderType ) {
return QString::fromLocal8Bit("预-MOP");
return QString::fromLocal8Bit("预-MOP");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼-MOP");
return QString::fromLocal8Bit("拼-MOP");
} else {
if ( "5" == platformSource ) {
return QString::fromLocal8Bit("口碑-MOP");
......
......@@ -20,9 +20,6 @@ FloatForm::FloatForm(QWidget *parent) :
m_bReminding = false;
m_bStoreStatus = true; //程序启动后,初始化为开店状态;
/*
QPixmap imgNormal(":float_normal.png"); m_imgNormalSize = imgNormal.size();
*/
QPixmap imgStoreBusiStat(":StoreBusinessStatus.png");
m_imgStoreBusiStatSize = imgStoreBusiStat.size();
......@@ -62,14 +59,7 @@ void FloatForm::mousePressEvent(QMouseEvent *event)
m_lastMousePos = event->globalPos();
m_absMove = QPoint(0,0);
}
/*
if(event->button()==Qt::RightButton) {
sInfoThread.terminate();
workThread.terminate();
qApp->exit(-1);
QProcess::startDetached(qApp->applicationFilePath(), QStringList(qApp->applicationFilePath()));
}
*/
}
void FloatForm::mouseReleaseEvent(QMouseEvent *event)
......@@ -138,9 +128,6 @@ void FloatForm::_Blink()
m_animation.setEndValue(0);
m_animation.start();
loop.exec();
//this->setFixedSize(m_imgRemindSize);
//ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}");
m_animation.setStartValue(0);
m_animation.setEndValue(1);
m_animation.start();
......@@ -150,12 +137,6 @@ void FloatForm::_Blink()
m_animation.start();
loop.exec();
/*
if(m_bStoreStatus) {
this->setFixedSize(m_imgNormalSize);
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png);}");
}*/
m_animation.setStartValue(0);
m_animation.setEndValue(1);
m_animation.start();
......@@ -168,16 +149,13 @@ void FloatForm::_Blink()
void FloatForm::_PlayWav()
{
//QSound::play(m_remindWav);
if(m_bReminding) {
//QTimer::singleShot(m_wavPlayInterval, this, &FloatForm::_PlayWav);
QLOG_INFO()<<QString("[<<<----FloatForm::_PlayWav m_bReminding: --->>>>]")<< m_bReminding;
}
}
void FloatForm::onStartRemind(int type)
{
QLOG_INFO()<<QString("[<<<----FloatForm::onStartRemind:type:%1;m_bReminding: --->>>>]").arg(type)<< m_bReminding;
//每次播报音频,将会导致POS插件崩溃;顾在此处停止音频的播放;
switch(type) {
case REMIND_CONFIRMED_ORDER:
......@@ -216,7 +194,6 @@ void FloatForm::onShow()
void FloatForm::onLockFloatForm(){
QLOG_INFO()<<QString("[<<<----FloatForm::onLockFloatForm : Lock Float Form --->>>>]");
if( this->isEnabled() ){
this->setEnabled(false);
}
......@@ -224,7 +201,6 @@ void FloatForm::onLockFloatForm(){
void FloatForm::onUnLockFloatForm(){
QLOG_INFO()<<QString("[<<<----FloatForm::onUnLockFloatForm : unLock Float Form --->>>>]");
if( !this->isEnabled() ){
this->setEnabled(true);
}
......@@ -286,7 +262,6 @@ void FloatForm::RefreshStoreStatus(int eleStoreStatus, int modStoreStatus,int mo
}
void FloatForm::RefreshOrderManagerStatus(int existNewOrder){
QLOG_INFO()<<QString("[<<<----FloatForm::RefreshOrderManagerStatus:%1--->>>>]").arg(existNewOrder);
if(existNewOrder){ //有新订单;
this->ui->OrderManagerLable->resize(120, 36); //图片源文件大小; x缩小10像素;
this->ui->OrderManagerLable->move(2, 118); //左边距0像素;高度距离上面一个标签 高度 + 10 像素间隔;
......
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