Commit 4b517863 by 李定达

1.model层剔除上一次订单状态退单状态;2.新旧数据库兼容;3.调整界面逻辑订单和tabel页面绑定

parent c6986cae
...@@ -44,6 +44,7 @@ QString GetOperByStatus(int status, bool bRefuse) ...@@ -44,6 +44,7 @@ QString GetOperByStatus(int status, bool bRefuse)
return "NULL"; return "NULL";
break; break;
case 20: case 20:
case 22:
if(bRefuse) if(bRefuse)
{ {
return QString::fromLocal8Bit(OPERATION_REFUSEREFUND); return QString::fromLocal8Bit(OPERATION_REFUSEREFUND);
...@@ -94,6 +95,7 @@ QString GetOperNameByStatus(int status, bool bRefuse) ...@@ -94,6 +95,7 @@ QString GetOperNameByStatus(int status, bool bRefuse)
return "NULL"; return "NULL";
break; break;
case 20: case 20:
case 22:
if(bRefuse) if(bRefuse)
{ {
return QString::fromLocal8Bit(OPERATIONNAME_REFUSEREFUND); return QString::fromLocal8Bit(OPERATIONNAME_REFUSEREFUND);
......
...@@ -125,7 +125,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString ...@@ -125,7 +125,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
QByteArray iniData = _GetPrintIni().toLocal8Bit(); QByteArray iniData = _GetPrintIni().toLocal8Bit();
char inichar[2048]={0x0}; char inichar[2048]={0x0};
strcpy(inichar,iniData.data()); strcpy(inichar,iniData.data());
QLOG_INFO() << "4444444444444444444" << m_b_load_sucfl;
if(m_b_load_sucfl) if(m_b_load_sucfl)
{ {
if(!f_LaodAddress()) if(!f_LaodAddress())
...@@ -139,7 +138,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString ...@@ -139,7 +138,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
return false; return false;
} }
_order = orderObject; _order = orderObject;
QLOG_INFO() << "55555555555555555555" << _order->delivery_time;
bool result; bool result;
PrintDocument doc = PrintDocument::ParseToDocument(content, result,error); PrintDocument doc = PrintDocument::ParseToDocument(content, result,error);
if(!result) if(!result)
......
...@@ -41,10 +41,7 @@ bool orderprintwork::event(QEvent *e) ...@@ -41,10 +41,7 @@ bool orderprintwork::event(QEvent *e)
OrderObject order; OrderObject order;
PrintLib print; PrintLib print;
int last_status; PosOrderPool::GetOrderObject(map[EVENT_KEY_ORDERID].toString(), order);
PosOrderPool::GetOrderObject(map[EVENT_KEY_ORDERID].toString(), order, last_status);
QLOG_INFO() << "begin print ..."; QLOG_INFO() << "begin print ...";
......
...@@ -14,10 +14,13 @@ ...@@ -14,10 +14,13 @@
#include "QsLog.h" #include "QsLog.h"
#include "base/DB/fm_database.h" #include "base/DB/fm_database.h"
//互斥读写 //互斥读写
QMap<QString, Order_Info> PosOrderPool::s_order_pool; QMap<QString, Order_Info> PosOrderPool::s_order_pool;
//写互斥锁 //写互斥锁
QMutex PosOrderPool::s_mutex; QMutex PosOrderPool::s_mutex;
//已有订单
QStringList PosOrderPool::s_order_list;
PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
{ {
...@@ -40,11 +43,6 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) ...@@ -40,11 +43,6 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
unsigned int nowtimer = QDateTime::currentDateTime().toTime_t(); unsigned int nowtimer = QDateTime::currentDateTime().toTime_t();
for (auto it = s_order_pool.begin(); it != s_order_pool.end(); ) for (auto it = s_order_pool.begin(); it != s_order_pool.end(); )
{ {
// QLOG_INFO() << QThread::currentThreadId() << it.key();
// Order_Info info = it.value();
// QLOG_INFO() << QThread::currentThreadId() << info.order_id << info.order_change_time
// << info.order_last_status << info.order_refund_status <<
// info.order_status << info.order_write_status;
if(it.value().order_change_time > nowtimer && (it.value().order_status == CompleteRefundOrder || it.value().order_status == CompleteOrder)) if(it.value().order_change_time > nowtimer && (it.value().order_status == CompleteRefundOrder || it.value().order_status == CompleteOrder))
{ {
...@@ -56,7 +54,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) ...@@ -56,7 +54,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
continue; continue;
} }
if(it.value().order_change_time < nowtimer && nowtimer - it.value().order_change_time > 86400) if(it.value().order_change_time < nowtimer && nowtimer - it.value().order_change_time > ORDER_SAVE_DATE)
{ {
QVariantMap map; QVariantMap map;
map.insert(EVENT_KEY_ORDERID, it.key()); map.insert(EVENT_KEY_ORDERID, it.key());
...@@ -72,7 +70,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) ...@@ -72,7 +70,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
s_mutex.unlock(); s_mutex.unlock();
} }
_timer.stop(); _timer.stop();
_timer.start(600000); _timer.start(DEFALUE_CHECK_TIME);
}); });
_timer.start(10000); _timer.start(10000);
...@@ -89,11 +87,6 @@ void PosOrderPool::loadOrders() ...@@ -89,11 +87,6 @@ void PosOrderPool::loadOrders()
list.append(DB_KEY_ORDERWRITETIMR); list.append(DB_KEY_ORDERWRITETIMR);
list.append(DB_KEY_ORDERREFUNDSATUS); list.append(DB_KEY_ORDERREFUNDSATUS);
list.append(DB_KEY_ORDERPRINTFSTATUS); list.append(DB_KEY_ORDERPRINTFSTATUS);
// list.append(DB_KEY_RESERVED1);
// list.append(DB_KEY_RESERVED2);
// list.append(DB_KEY_RESERVED3);
// list.append(DB_KEY_RESERVED4);
// list.append(DB_KEY_RESERVED5);
QSqlQuery query; QSqlQuery query;
...@@ -108,80 +101,15 @@ void PosOrderPool::loadOrders() ...@@ -108,80 +101,15 @@ void PosOrderPool::loadOrders()
info.order_write_status = query.value(2).toInt(); info.order_write_status = query.value(2).toInt();
info.order_refund_status = query.value(3).toInt(); info.order_refund_status = query.value(3).toInt();
info.order_print_status = query.value(4).toInt(); info.order_print_status = query.value(4).toInt();
info.order_last_status = DefaultOrder;
info.order_status = DefaultOrder; info.order_status = DefaultOrder;
info.order_refund = DefaultOrder; info.order_refund = DefaultOrder;
info.order_last_refund = DefaultOrder;
// info.reserved1 = query.value(5).toInt();
// info.reserved2 = query.value(6).toInt();
// info.reserved3 = query.value(7).toInt();
// info.reserved4 = query.value(8).toInt();
// info.reserved5 = query.value(9).toInt();
s_mutex.lock(); s_mutex.lock();
s_order_pool.insert(info.order_id, info); s_order_pool.insert(info.order_id, info);
s_order_list.append(info.order_id);
s_mutex.unlock(); s_mutex.unlock();
} }
} }
void PosOrderPool::GetOrderStatusAndLastStatus(Order_Info orderinfo, int &status, int &laststatus)
{
if(orderinfo.order_last_refund != orderinfo.order_refund)
{
if((orderinfo.order_status == ServiceOrder || orderinfo.order_status == CompleteOrder || orderinfo.order_status == CancelOrder) &&
orderinfo.order_last_status == DefaultOrder)
{
status = orderinfo.order_status;
laststatus = orderinfo.order_last_status;
return ;
}
if((orderinfo.order_refund == ApplicationRefundOrder || orderinfo.order_refund == ApplicationPartialRefundOrder))
{
status = orderinfo.order_refund;
laststatus = orderinfo.order_status;
return ;
}
if(orderinfo.order_last_refund == ApplicationPartialRefundOrder && orderinfo.order_refund == CompleteRefundOrder)
{
status = orderinfo.order_status;
laststatus = orderinfo.order_last_refund;
return ;
}
if(orderinfo.order_last_refund == ApplicationRefundOrder && orderinfo.order_refund == CompleteRefundOrder)
{
status = orderinfo.order_refund ;
laststatus = orderinfo.order_last_refund;
return ;
}
if(orderinfo.order_last_refund == ApplicationPartialRefundOrder && orderinfo.order_refund == RefusingRefundOrder)
{
status = orderinfo.order_status;
laststatus = orderinfo.order_last_refund;
return ;
}
if(orderinfo.order_last_refund == ApplicationRefundOrder && orderinfo.order_refund == RefusingRefundOrder)
{
status = orderinfo.order_status;
laststatus = orderinfo.order_last_refund;
return ;
}
}
status = orderinfo.order_status;
laststatus = orderinfo.order_last_status;
return ;
}
void PosOrderPool::removeOrderInfo(QString key) void PosOrderPool::removeOrderInfo(QString key)
{ {
s_order_pool.remove(key); s_order_pool.remove(key);
...@@ -207,9 +135,6 @@ bool PosOrderPool::TryInsertOrder(OrderObject order) ...@@ -207,9 +135,6 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
INITORDERINFO(order, info); INITORDERINFO(order, info);
QLOG_DEBUG() << "%%%%%%%%%%%%%%%%%%%%%%%%%%%" << info.order_id << info.order_refund << info.order_last_refund;
QLOG_DEBUG() << "%%%%%%%%%%%%%%%%%%%%%%%%%%%" << info.order_id << info.order_status << info.order_last_status;
s_order_pool.insert(order.order_id,info); s_order_pool.insert(order.order_id,info);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id); DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
...@@ -232,14 +157,14 @@ bool PosOrderPool::TryInsertOrder(OrderObject order) ...@@ -232,14 +157,14 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
Order_Info info; Order_Info info;
QLOG_DEBUG() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$" << info.order_id << info.order_refund << info.order_last_refund; QLOG_DEBUG() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$" << info.order_id << info.order_refund;
QLOG_DEBUG() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$" << info.order_id << info.order_status << info.order_last_status; QLOG_DEBUG() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$" << info.order_id << info.order_status;
UPDATEORDERINFO(oldinfo, order, info); UPDATEORDERINFO(oldinfo, order, info);
QLOG_DEBUG() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@" << info.order_id << info.order_refund << info.order_last_refund; QLOG_DEBUG() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@" << info.order_id << info.order_refund;
QLOG_DEBUG() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@" << info.order_id << info.order_status << info.order_last_status; QLOG_DEBUG() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@" << info.order_id << info.order_status;
if(oldinfo.order_status != order.status || oldinfo.order_refund != order.refund_status) if(oldinfo.order_status != order.status || oldinfo.order_refund != order.refund_status)
...@@ -275,25 +200,22 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun ...@@ -275,25 +200,22 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
if((info.order_last_status != info.order_status && info.order_status != order_status)|| if(info.order_status != order_status || info.order_refund != refundstatus)
(refundstatus != DefaultOrder && info.order_last_refund != info.order_refund && info.order_refund != refundstatus))
{ {
if(info.order_status != order_status) if(info.order_status != order_status)
{ {
info.order_last_status = info.order_status;
info.order_status = (Order_Status)order_status; info.order_status = (Order_Status)order_status;
info.order_data.status = order_status; info.order_data.status = order_status;
} }
if(info.order_refund != refundstatus) if(info.order_refund != refundstatus)
{ {
info.order_last_refund = info.order_refund;
info.order_refund = (Order_Status)refundstatus; info.order_refund = (Order_Status)refundstatus;
info.order_data.refund_status = refundstatus; info.order_data.refund_status = refundstatus;
} }
QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_refund << info.order_last_refund; QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_refund;
QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_status << info.order_last_status; QLOG_DEBUG() << "+++++++++++++++++++++++++++" << info.order_status;
QLOG_DEBUG() << "+++++++++++++++++++++++++++" << order_status << refundstatus; QLOG_DEBUG() << "+++++++++++++++++++++++++++" << order_status << refundstatus;
...@@ -360,7 +282,7 @@ bool PosOrderPool::TryChangeOrderRefundStatus(QString key, int order_refund_stat ...@@ -360,7 +282,7 @@ bool PosOrderPool::TryChangeOrderRefundStatus(QString key, int order_refund_stat
return false; return false;
} }
bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_status) bool PosOrderPool::GetOrderObject(QString key, OrderObject &order)
{ {
QMutexLocker loker(&s_mutex); QMutexLocker loker(&s_mutex);
...@@ -369,19 +291,12 @@ bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_sta ...@@ -369,19 +291,12 @@ bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_sta
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
int status = DefaultOrder;
GetOrderStatusAndLastStatus(info, status, last_status);
QLOG_DEBUG() << "####################" << info.order_id << "order status : " << status << "; last status : " << last_status;
order = info.order_data; order = info.order_data;
order.status = status;
return true; return true;
} }
bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status) bool PosOrderPool::GetOrderStatus(QString key, int &status, int &refund_status, bool &oldorder)
{ {
QMutexLocker loker(&s_mutex); QMutexLocker loker(&s_mutex);
...@@ -390,9 +305,13 @@ bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status) ...@@ -390,9 +305,13 @@ bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status)
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
GetOrderStatusAndLastStatus(info, status, last_status); status = info.order_status;
refund_status = info.order_refund_status;
QLOG_DEBUG() << "###############order status : " << status << "; last status : " << last_status; if(s_order_list.contains(info.order_id, Qt::CaseInsensitive))
oldorder = true;
else
oldorder = false;
return true; return true;
} }
......
...@@ -17,21 +17,21 @@ ...@@ -17,21 +17,21 @@
if(oldorder.order_refund != neworder.refund_status) \ if(oldorder.order_refund != neworder.refund_status) \
{ \ { \
info.order_refund = (Order_Status)neworder.refund_status; \ info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = oldorder.order_refund; \ /*info.order_last_refund = oldorder.order_refund;*/ \
} \ } \
else \ else \
{ \ { \
info.order_refund = (Order_Status)oldorder.order_refund; \ info.order_refund = (Order_Status)oldorder.order_refund; \
info.order_last_refund = oldorder.order_last_refund; \ /*info.order_last_refund = oldorder.order_last_refund;*/ \
} \ } \
if(oldorder.order_status != neworder.status) \ if(oldorder.order_status != neworder.status) \
{ \ { \
info.order_last_status = oldorder.order_status; \ /*info.order_last_status = oldorder.order_status;*/ \
info.order_status = (Order_Status)neworder.status; \ info.order_status = (Order_Status)neworder.status; \
} \ } \
else \ else \
{ \ { \
info.order_last_status = oldorder.order_last_status; \ /*info.order_last_status = oldorder.order_last_status;*/ \
info.order_status = oldorder.order_status; \ info.order_status = oldorder.order_status; \
} \ } \
info.order_write_status = oldorder.order_write_status; \ info.order_write_status = oldorder.order_write_status; \
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
info.order_id = neworder.order_id; \ info.order_id = neworder.order_id; \
info.order_data = neworder; \ info.order_data = neworder; \
info.order_refund = (Order_Status)neworder.refund_status; \ info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = DefaultOrder; \ /*info.order_last_refund = DefaultOrder;*/ \
info.order_last_status = DefaultOrder; \ /*info.order_last_status = DefaultOrder;*/ \
info.order_status = (Order_Status)neworder.status; \ info.order_status = (Order_Status)neworder.status; \
info.order_write_status = 0; \ info.order_write_status = 0; \
info.order_refund_status = 0; \ info.order_refund_status = 0; \
...@@ -95,9 +95,9 @@ typedef struct ...@@ -95,9 +95,9 @@ typedef struct
//订单状态 //订单状态
Order_Status order_status; Order_Status order_status;
//订单上一次状态 //订单上一次状态
Order_Status order_last_status; //Order_Status order_last_status;
//退单状态 //退单状态
Order_Status order_last_refund; //Order_Status order_last_refund;
//退单状态 //退单状态
Order_Status order_refund; Order_Status order_refund;
//本地写单状态 //本地写单状态
...@@ -129,9 +129,9 @@ public: ...@@ -129,9 +129,9 @@ public:
static QMap<QString, Order_Info> getS_order_pool(); static QMap<QString, Order_Info> getS_order_pool();
static bool GetOrderObject(QString key, OrderObject &order, int &last_status); static bool GetOrderObject(QString key, OrderObject &order);
static bool GetOrderStatus(QString key, int &status, int &last_status); static bool GetOrderStatus(QString key, int &status, int &refund_status, bool &oldorder);
static bool GetOrderBaseInfo(QString key, QVariantHash &hash); static bool GetOrderBaseInfo(QString key, QVariantHash &hash);
...@@ -152,8 +152,6 @@ private: ...@@ -152,8 +152,6 @@ private:
explicit PosOrderPool(QObject *parent = 0); explicit PosOrderPool(QObject *parent = 0);
static void GetOrderStatusAndLastStatus(Order_Info orderinfo, int &status, int &laststatus);
void loadOrders(); void loadOrders();
private: private:
//互斥读写 //互斥读写
...@@ -162,6 +160,8 @@ private: ...@@ -162,6 +160,8 @@ private:
static QMutex s_mutex; static QMutex s_mutex;
//定时清理订单池 //定时清理订单池
QTimer _timer; QTimer _timer;
//本地已有订单;
static QStringList s_order_list;
}; };
#endif // POSORDERPOOL_H #endif // POSORDERPOOL_H
...@@ -217,7 +217,9 @@ ...@@ -217,7 +217,9 @@
#define REFUNDREPORT 1 #define REFUNDREPORT 1
#define ENTRYREPORT 0 #define ENTRYREPORT 0
//订单保存时间
#define ORDER_SAVE_DATE (24*60*60)
#define DEFALUE_CHECK_TIME (10*60*1000)
//缺省值 //缺省值
#define DEFAULT_APP_VER "1.0" #define DEFAULT_APP_VER "1.0"
#define DEFAULT_SYSTEM_VER "1.0" #define DEFAULT_SYSTEM_VER "1.0"
......
...@@ -111,8 +111,15 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -111,8 +111,15 @@ void DetailForm::InitData(OrderObject *orderObject)
// ui->detailBtn0->hide(); // ui->detailBtn0->hide();
// } // }
ui->detailBtn2->setText(GetOperNameByStatus(orderObject->status, true)); int tmpstatus = 0;
ui->detailBtn2->setProperty("operation", GetOperByStatus(orderObject->status, true));
if(orderObject->refund_status == 20 || orderObject->refund_status == 100 || orderObject->refund_status == 22)
tmpstatus = orderObject->refund_status;
else
tmpstatus = orderObject->status;
ui->detailBtn2->setText(GetOperNameByStatus(tmpstatus, true));
ui->detailBtn2->setProperty("operation", GetOperByStatus(tmpstatus, true));
ui->detailBtn2->setProperty("orderId", orderObject->order_id); ui->detailBtn2->setProperty("orderId", orderObject->order_id);
if(ui->detailBtn2->text().compare(QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER)) == 0) if(ui->detailBtn2->text().compare(QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER)) == 0)
...@@ -137,19 +144,19 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -137,19 +144,19 @@ void DetailForm::InitData(OrderObject *orderObject)
// else // else
// ui->detailBtn3->show(); // ui->detailBtn3->show();
ui->detailBtn3->setText(GetOperNameByStatus(orderObject->status)); ui->detailBtn3->setText(GetOperNameByStatus(tmpstatus));
ui->detailBtn3->setProperty("operation", GetOperByStatus(orderObject->status)); ui->detailBtn3->setProperty("operation", GetOperByStatus(tmpstatus));
ui->detailBtn3->setProperty("orderId", orderObject->order_id); ui->detailBtn3->setProperty("orderId", orderObject->order_id);
ui->detailBtn3->setProperty("ordertype", orderObject->order_type); ui->detailBtn3->setProperty("ordertype", orderObject->order_type);
QLOG_DEBUG() << "----------------------------------------" << orderObject->order_id << ";" << orderObject->refund_status << orderObject->status; QLOG_DEBUG() << "----------------------------------------" << orderObject->order_id << ";" << orderObject->refund_status << tmpstatus;
if((orderObject->order_type == 1 || orderObject->order_type == 2) && if((orderObject->order_type == 1 || orderObject->order_type == 2) &&
ui->detailBtn3->text().compare(QString::fromLocal8Bit(OPERATIONNAME_MAKEOVER)) == 0 && ui->detailBtn3->text().compare(QString::fromLocal8Bit(OPERATIONNAME_MAKEOVER)) == 0 &&
orderObject->status == 2 && orderObject->status == 2 &&
orderObject->refund_status != 20) orderObject->refund_status != 20)
{ {
QLOG_DEBUG() << "++++++++++++++++++++++++++++++++++" << orderObject->order_id << ";" << orderObject->refund_status << orderObject->status; QLOG_DEBUG() << "++++++++++++++++++++++++++++++++++" << orderObject->order_id << ";" << orderObject->refund_status << tmpstatus;
ui->detailBtn3->setText(QString::fromLocal8Bit(OPERATIONNAME_SENDOUT)); ui->detailBtn3->setText(QString::fromLocal8Bit(OPERATIONNAME_SENDOUT));
ui->detailBtn3->setProperty("operation", OPERATION_SENDOUT); ui->detailBtn3->setProperty("operation", OPERATION_SENDOUT);
...@@ -161,7 +168,7 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -161,7 +168,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn3->setProperty("operation", OPERATION_COMPLETE); ui->detailBtn3->setProperty("operation", OPERATION_COMPLETE);
} }
if(!GetOperByStatus(orderObject->status).compare("NULL")) if(!GetOperByStatus(tmpstatus).compare("NULL"))
{ {
ui->detailBtn3->hide(); ui->detailBtn3->hide();
} }
......
...@@ -56,19 +56,20 @@ bool FloatForm::event(QEvent *e) ...@@ -56,19 +56,20 @@ bool FloatForm::event(QEvent *e)
GETEVENTINFO(orderid,e,QString); GETEVENTINFO(orderid,e,QString);
int lastorderstatus, orderstatus; int refundstatus, orderstatus;
bool neworder;
if(!PosOrderPool::GetOrderStatus(orderid, orderstatus, lastorderstatus)) if(!PosOrderPool::GetOrderStatus(orderid, orderstatus, refundstatus, neworder))
return true; return true;
if((orderstatus == NewOrder && lastorderstatus == DefaultOrder) || if(neworder && (orderstatus == NewOrder || orderstatus == FirmOrder) &&
(orderstatus == FirmOrder && lastorderstatus == DefaultOrder)) refundstatus != ApplicationRefundOrder)
{ {
onStartRemind(0); onStartRemind(0);
return true; return true;
} }
if(orderstatus == ApplicationRefundOrder || orderstatus == ApplicationPartialRefundOrder) if(neworder && (refundstatus == ApplicationRefundOrder || refundstatus == ApplicationPartialRefundOrder))
{ {
onStartRemind(1); onStartRemind(1);
return true; return true;
......
...@@ -144,12 +144,11 @@ bool MainForm::event(QEvent *e) ...@@ -144,12 +144,11 @@ bool MainForm::event(QEvent *e)
GETEVENTINFO(orderid,e,QString); GETEVENTINFO(orderid,e,QString);
OrderObject order; OrderObject order;
int lastorderstatus;
if(!PosOrderPool::GetOrderObject(orderid, order, lastorderstatus)) if(!PosOrderPool::GetOrderObject(orderid, order))
return true; return true;
onChangeOrderStatus(&order, lastorderstatus); onChangeOrderStatus(&order);
return true; return true;
} }
...@@ -172,8 +171,7 @@ bool MainForm::event(QEvent *e) ...@@ -172,8 +171,7 @@ bool MainForm::event(QEvent *e)
GETEVENTINFO(value,e,QVariantMap); GETEVENTINFO(value,e,QVariantMap);
if(value.contains(EVENT_KEY_ORDERID) && value.contains(EVENT_KEY_ORDERSTATUS)) if(value.contains(EVENT_KEY_ORDERID) && value.contains(EVENT_KEY_ORDERSTATUS))
onOrderClear(value[EVENT_KEY_ORDERID].toString(), value[EVENT_KEY_ORDERSTATUS].toInt()); deleteOrderItem(value[EVENT_KEY_ORDERID].toString());
return true; return true;
} }
...@@ -451,6 +449,7 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus) ...@@ -451,6 +449,7 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
return ui->mainBtnFinsh; return ui->mainBtnFinsh;
break; break;
case 20: case 20:
case 22:
return ui->mainBtnRefund; return ui->mainBtnRefund;
break; break;
default: default:
...@@ -459,6 +458,26 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus) ...@@ -459,6 +458,26 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
} }
} }
QPushButton *MainForm::_GetTabBtn(QTableWidget *view)
{
if(view == ui->mainTableNew)
return ui->mainBtnNew;
if(view == ui->mainTableMake)
return ui->mainBtnMake;
if(view == ui->mainTableSend)
return ui->mainBtnSend;
if(view == ui->mainTableFinsh)
return ui->mainBtnFinsh;
if(view == ui->mainTableRefund)
return ui->mainBtnRefund;
return ui->mainBtnOther;
}
void MainForm::onHideAlert() void MainForm::onHideAlert()
{ {
m_alertForm->hide(); m_alertForm->hide();
...@@ -498,32 +517,17 @@ void MainForm::onSetNetStatus(const QString &status) ...@@ -498,32 +517,17 @@ void MainForm::onSetNetStatus(const QString &status)
ui->mainLabNetStatus->setText(status); ui->mainLabNetStatus->setText(status);
} }
void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus) void MainForm::deleteOrderItem(QString orderid)
{ {
_SetTablesSortEnable(false); _SetTablesSortEnable(false);
QTableWidget *table; if(m_order_table_map.contains(orderid))
QPushButton *tabBtn;
// 非首次收到的订单需要现在原先表中删除
if(oldStatus != -100)
{
tabBtn = _GetTabBtnByOrderStatus(1);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++)
{
if(!table->item(i, 1)->text().compare(orderObject->order_id))
{ {
table->removeRow(i); QTableWidget *table = m_order_table_map[orderid];
QString btnText(tabBtn->property("name").toString()); QPushButton *tabBtn = _GetTabBtn(table);
btnText = QString("%1\n%2").arg(table->rowCount()).arg(btnText);
tabBtn->setText(btnText);
}
}
tabBtn = _GetTabBtnByOrderStatus(6);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++) for(int i=0; i<table->rowCount(); i++)
{ {
if(!table->item(i, 1)->text().compare(orderObject->order_id)) if(!table->item(i, 1)->text().compare(orderid))
{ {
table->removeRow(i); table->removeRow(i);
QString btnText(tabBtn->property("name").toString()); QString btnText(tabBtn->property("name").toString());
...@@ -531,48 +535,20 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus) ...@@ -531,48 +535,20 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
tabBtn->setText(btnText); tabBtn->setText(btnText);
} }
} }
tabBtn = _GetTabBtnByOrderStatus(2);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++)
{
if(!table->item(i, 1)->text().compare(orderObject->order_id))
{
table->removeRow(i);
QString btnText(tabBtn->property("name").toString());
btnText = QString("%1\n%2").arg(table->rowCount()).arg(btnText);
tabBtn->setText(btnText);
}
} }
_SetTablesSortEnable(true);
}
tabBtn = _GetTabBtnByOrderStatus(5); void MainForm::onChangeOrderStatus(OrderObject *orderObject)
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString()); {
for(int i=0; i<table->rowCount(); i++) _SetTablesSortEnable(false);
{ QString orderid = orderObject->order_id;
if(!table->item(i, 1)->text().compare(orderObject->order_id))
{
table->removeRow(i);
QString btnText(tabBtn->property("name").toString());
btnText = QString("%1\n%2").arg(table->rowCount()).arg(btnText);
tabBtn->setText(btnText);
}
}
tabBtn = _GetTabBtnByOrderStatus(200); if(m_order_table_map.contains(orderid))
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++)
{
if(!table->item(i, 1)->text().compare(orderObject->order_id))
{ {
table->removeRow(i); QTableWidget *table = m_order_table_map[orderid];
QString btnText(tabBtn->property("name").toString()); QPushButton *tabBtn = _GetTabBtn(table);
btnText = QString("%1\n%2").arg(table->rowCount()).arg(btnText);
tabBtn->setText(btnText);
}
}
tabBtn = _GetTabBtnByOrderStatus(20);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++) for(int i=0; i<table->rowCount(); i++)
{ {
if(!table->item(i, 1)->text().compare(orderObject->order_id)) if(!table->item(i, 1)->text().compare(orderObject->order_id))
...@@ -583,24 +559,22 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus) ...@@ -583,24 +559,22 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
tabBtn->setText(btnText); tabBtn->setText(btnText);
} }
} }
tabBtn = _GetTabBtnByOrderStatus(3);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
for(int i=0; i<table->rowCount(); i++)
{
if(!table->item(i, 1)->text().compare(orderObject->order_id))
{
table->removeRow(i);
QString btnText(tabBtn->property("name").toString());
btnText = QString("%1\n%2").arg(table->rowCount()).arg(btnText);
tabBtn->setText(btnText);
}
} }
} int tmpstatus;
if(orderObject->refund_status == 20 || orderObject->refund_status == 22 ||
orderObject->refund_status == 100)
tmpstatus = orderObject->refund_status;
else
tmpstatus = orderObject->status;
// 将数据插入到表中 // 将数据插入到表中
tabBtn = _GetTabBtnByOrderStatus(orderObject->status); QPushButton *tabBtn = _GetTabBtnByOrderStatus(tmpstatus);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString()); QTableWidget *table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
m_order_table_map.insert(orderObject->order_id, table);
table->insertRow(0); table->insertRow(0);
QTableWidgetItem *item0 = new QTableWidgetItem(QString::number(orderObject->order_index)+"#"+orderObject->channel_name); QTableWidgetItem *item0 = new QTableWidgetItem(QString::number(orderObject->order_index)+"#"+orderObject->channel_name);
item0->setTextAlignment(Qt::AlignCenter); item0->setTextAlignment(Qt::AlignCenter);
...@@ -688,9 +662,7 @@ void MainForm::onMainTableItemClicked(QTableWidgetItem *item) ...@@ -688,9 +662,7 @@ void MainForm::onMainTableItemClicked(QTableWidgetItem *item)
OrderObject order; OrderObject order;
int lastStatus; if(!PosOrderPool::GetOrderObject(orderId, order))
if(!PosOrderPool::GetOrderObject(orderId, order, lastStatus))
return ; return ;
onHideAlert(); onHideAlert();
......
...@@ -36,7 +36,6 @@ public: ...@@ -36,7 +36,6 @@ public:
virtual bool event(QEvent *e); virtual bool event(QEvent *e);
void setStoreinfo(const QVariantMap &storeinfo); void setStoreinfo(const QVariantMap &storeinfo);
private: private:
Ui::MainForm *ui; Ui::MainForm *ui;
// 时间定时器 // 时间定时器
...@@ -49,7 +48,8 @@ private: ...@@ -49,7 +48,8 @@ private:
QVariantMap m_storeinfo; QVariantMap m_storeinfo;
// 所有的表 // 所有的表
QList<QTableWidget*> m_tableList; QList<QTableWidget*> m_tableList;
// 订单对应的表
QMap<QString, QTableWidget *> m_order_table_map;
// 通知窗口 // 通知窗口
AlertForm *m_alertForm; AlertForm *m_alertForm;
// 人员选择窗口 // 人员选择窗口
...@@ -95,6 +95,13 @@ private: ...@@ -95,6 +95,13 @@ private:
* */ * */
QPushButton *_GetTabBtnByOrderStatus(int orderStatus); QPushButton *_GetTabBtnByOrderStatus(int orderStatus);
QPushButton *_GetTabBtn(QTableWidget *view);
/* 功能:删除订单数据
* 参数:[1]订单编号
* 返回:
* */
void deleteOrderItem(QString orderid);
signals: signals:
/* 功能:处理订单 /* 功能:处理订单
* 参数:[1]操作动作名[2]订单编号[3]配送员信息 * 参数:[1]操作动作名[2]订单编号[3]配送员信息
...@@ -242,7 +249,7 @@ public slots: ...@@ -242,7 +249,7 @@ public slots:
* 参数:[1]订单对象[2]旧订单的状态 * 参数:[1]订单对象[2]旧订单的状态
* 返回:NULL * 返回:NULL
* */ * */
void onChangeOrderStatus(OrderObject *orderObject, int oldStatus); void onChangeOrderStatus(OrderObject *orderObject);
/* 功能:显示配送员选择窗口 /* 功能:显示配送员选择窗口
* 参数:[1]订单编号[2]配送员信息 * 参数:[1]订单编号[2]配送员信息
* 返回:NULL * 返回:NULL
......
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