Commit 6eea0025 by 李定达

1.修改设置界面;2.悬浮窗获取订单数量编写完成

parent fe533009
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <QThread> #include <QThread>
#include <QSqlQuery> #include <QSqlQuery>
#include <QVariantMap> #include <QVariantMap>
#include <QSettings>
#include "QsLog.h" #include "QsLog.h"
#include "base/DB/fm_database.h" #include "base/DB/fm_database.h"
...@@ -21,6 +22,18 @@ QMap<QString, Order_Info> PosOrderPool::s_order_pool; ...@@ -21,6 +22,18 @@ QMap<QString, Order_Info> PosOrderPool::s_order_pool;
QMutex PosOrderPool::s_mutex; QMutex PosOrderPool::s_mutex;
//已有订单 //已有订单
QStringList PosOrderPool::s_order_list; QStringList PosOrderPool::s_order_list;
//外卖新单
int PosOrderPool::s_takeout_new = 0;
//外卖制作单
int PosOrderPool::s_takeout_make = 0;
//外卖票配送单
int PosOrderPool::s_takeout_send = 0;
//自提新订单
int PosOrderPool::s_self_new = 0;
//自提制作单
int PosOrderPool::s_self_make = 0;
//维护以上订单数量的锁
QMutex PosOrderPool::s_order_num_mutex;
PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
{ {
...@@ -36,7 +49,11 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) ...@@ -36,7 +49,11 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
if(PosOrderPool::s_mutex.tryLock()) if(PosOrderPool::s_mutex.tryLock())
{ {
QString confilename = qApp->applicationDirPath() + "/" + CONFIG_NAME;
int tmptimeout = QSettings(confilename, QSettings::IniFormat).value(INI_DELEORDERTIMER, 12).toInt();
if(tmptimeout <= 12)
tmptimeout = 12;
if(!s_order_pool.empty()) if(!s_order_pool.empty())
{ {
...@@ -49,16 +66,20 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent) ...@@ -49,16 +66,20 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
QVariantMap map; QVariantMap map;
map.insert(EVENT_KEY_ORDERID, it.key()); map.insert(EVENT_KEY_ORDERID, it.key());
map.insert(EVENT_KEY_ORDERSTATUS, (int)(it.value().order_status)); map.insert(EVENT_KEY_ORDERSTATUS, (int)(it.value().order_status));
OrderObject tmporder = it.value().order_data;
UpdateOrderNum(NULL, &tmporder);
POSTEVENTTYPE(PosEvent::s_delete_order, map, QVariantMap); POSTEVENTTYPE(PosEvent::s_delete_order, map, QVariantMap);
s_order_pool.erase(it ++); s_order_pool.erase(it ++);
continue; continue;
} }
if(it.value().order_change_time < nowtimer && nowtimer - it.value().order_change_time > ORDER_SAVE_DATE) if(it.value().order_change_time < nowtimer && nowtimer - it.value().order_change_time > (tmptimeout*60*60))
{ {
QVariantMap map; QVariantMap map;
map.insert(EVENT_KEY_ORDERID, it.key()); map.insert(EVENT_KEY_ORDERID, it.key());
map.insert(EVENT_KEY_ORDERSTATUS, it.value().order_status); map.insert(EVENT_KEY_ORDERSTATUS, it.value().order_status);
OrderObject tmporder = it.value().order_data;
UpdateOrderNum(NULL, &tmporder);
POSTEVENTTYPE(PosEvent::s_delete_order, map, QVariantMap); POSTEVENTTYPE(PosEvent::s_delete_order, map, QVariantMap);
s_order_pool.erase(it ++); s_order_pool.erase(it ++);
continue; continue;
...@@ -103,6 +124,8 @@ void PosOrderPool::loadOrders() ...@@ -103,6 +124,8 @@ void PosOrderPool::loadOrders()
info.order_print_status = query.value(4).toInt(); info.order_print_status = query.value(4).toInt();
info.order_status = DefaultOrder; info.order_status = DefaultOrder;
info.order_refund = DefaultOrder; info.order_refund = DefaultOrder;
info.order_data.status = DefaultOrder;
info.order_data.refund_status = DefaultOrder;
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_order_list.append(info.order_id);
...@@ -139,6 +162,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order) ...@@ -139,6 +162,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
s_order_pool.insert(order.order_id,info); s_order_pool.insert(order.order_id,info);
UpdateOrderNum(&order);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id); DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
if(order.status == FirmOrder && order.refund_status == DefaultOrder) if(order.status == FirmOrder && order.refund_status == DefaultOrder)
...@@ -173,6 +198,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order) ...@@ -173,6 +198,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
{ {
s_order_pool.insert(order.order_id, info); s_order_pool.insert(order.order_id, info);
UpdateOrderNum(&info.order_data, &oldinfo.order_data);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id); DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
if(order.status == FirmOrder && order.refund_status == DefaultOrder && info.order_print_status == 0) if(order.status == FirmOrder && order.refund_status == DefaultOrder && info.order_print_status == 0)
...@@ -200,6 +227,7 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun ...@@ -200,6 +227,7 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
if(!s_order_pool.contains(key)) if(!s_order_pool.contains(key))
return false; return false;
Order_Info tmpinfo = s_order_pool[key];
Order_Info info = s_order_pool[key]; Order_Info info = s_order_pool[key];
if(info.order_status != order_status || info.order_refund != refundstatus) if(info.order_status != order_status || info.order_refund != refundstatus)
...@@ -224,6 +252,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun ...@@ -224,6 +252,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
info.order_change_time = QDateTime::currentDateTime().toTime_t(); info.order_change_time = QDateTime::currentDateTime().toTime_t();
s_order_pool.insert(key, info); s_order_pool.insert(key, info);
UpdateOrderNum(&info.order_data, &tmpinfo.order_data);
DEFAULTPOSTEVENT(PosEvent::s_change_order, key); DEFAULTPOSTEVENT(PosEvent::s_change_order, key);
if(info.order_status == FirmOrder && info.order_refund == DefaultOrder && info.order_print_status == 0) if(info.order_status == FirmOrder && info.order_refund == DefaultOrder && info.order_print_status == 0)
...@@ -360,6 +390,15 @@ bool PosOrderPool::GetOrderBaseInfo(QString key, QVariantHash &hash) ...@@ -360,6 +390,15 @@ bool PosOrderPool::GetOrderBaseInfo(QString key, QVariantHash &hash)
return true; return true;
} }
void PosOrderPool::GetOrderNum(int &tk_new, int &tk_make, int &tk_send, int &self_new, int &self_make)
{
tk_new = s_takeout_new;
tk_make = s_takeout_make;
tk_send = s_takeout_send;
self_new = s_self_new;
self_make = s_self_make;
}
bool PosOrderPool::event(QEvent *e) bool PosOrderPool::event(QEvent *e)
{ {
...@@ -426,5 +465,53 @@ bool PosOrderPool::event(QEvent *e) ...@@ -426,5 +465,53 @@ bool PosOrderPool::event(QEvent *e)
return QObject::event(e); return QObject::event(e);
} }
void PosOrderPool::GetOrderStatus(const OrderObject *order, int &status)
{
if(order->refund_status == ApplicationRefundOrder ||
order->refund_status == ApplicationPartialRefundOrder ||
order->refund_status == CompleteRefundOrder)
status = order->refund_status;
else
status = order->status;
}
void PosOrderPool::UpdateOrderNum(const OrderObject *order, const OrderObject *orderold)
{
QMutexLocker loker(&s_order_num_mutex);
if(orderold != NULL)
{
int status = DefaultOrder;
GetOrderStatus(orderold, status);
if(orderold->order_type == TimelyTakeout || orderold->order_type == AppointmentTakeout)
{
DECTAKEOUT(status, s_takeout_new, s_takeout_make, s_takeout_send);
}
else if(orderold->order_type == TimelyInvite || orderold->order_type == AppointmentInvite)
{
DECSELF(status, s_self_new, s_self_make);
}
}
if(order != NULL)
{
int status = DefaultOrder;
GetOrderStatus(order, status);
if(order->order_type == TimelyTakeout || order->order_type == AppointmentTakeout)
{
INCTAKEOUT(status, s_takeout_new, s_takeout_make, s_takeout_send);
}
else if(order->order_type == TimelyInvite || order->order_type == AppointmentInvite)
{
INCSELF(status, s_self_new, s_self_make);
}
}
}
...@@ -53,6 +53,38 @@ ...@@ -53,6 +53,38 @@
info.order_change_time = QDateTime::currentDateTime().toTime_t(); \ info.order_change_time = QDateTime::currentDateTime().toTime_t(); \
} while (0) } while (0)
#define INCTAKEOUT(tmpstatus, tk_new, tk_make, tk_send) do { \
if(tmpstatus == NewOrder) \
++ tk_new; \
else if(tmpstatus == FirmOrder) \
++ tk_make; \
else if(tmpstatus == DispatchingOrder) \
++ tk_send; \
} while (0)
#define INCSELF(tmpstatus, self_new, self_make) do { \
if(tmpstatus == NewOrder) \
++ self_new; \
else if(tmpstatus == FirmOrder) \
++ self_make; \
} while (0)
#define DECTAKEOUT(tmpstatus, tk_new, tk_make, tk_send) do { \
if(tmpstatus == NewOrder) \
-- tk_new; \
else if(tmpstatus == FirmOrder) \
-- tk_make; \
else if(tmpstatus == DispatchingOrder) \
-- tk_send; \
} while (0)
#define DECSELF(tmpstatus, self_new, self_make) do { \
if(tmpstatus == NewOrder) \
-- self_new; \
else if(tmpstatus == FirmOrder) \
-- self_make; \
} while (0)
typedef enum typedef enum
{ {
//订单原始状态(推了一个订单号时使用) //订单原始状态(推了一个订单号时使用)
...@@ -153,9 +185,13 @@ public: ...@@ -153,9 +185,13 @@ public:
static bool GetOrderBaseInfo(QString key, QVariantHash &hash); static bool GetOrderBaseInfo(QString key, QVariantHash &hash);
static void GetOrderNum(int &tk_new, int &tk_make, int &tk_send, int &self_new, int &self_make);
virtual bool event(QEvent *e); virtual bool event(QEvent *e);
private: private:
static void UpdateOrderNum(const OrderObject *order, const OrderObject *orderold = NULL);
static bool TryInsertOrder(OrderObject order); static bool TryInsertOrder(OrderObject order);
static bool TryChangeOrderStatus(QString key, int order_status, int refundstatus = DefaultOrder); static bool TryChangeOrderStatus(QString key, int order_status, int refundstatus = DefaultOrder);
...@@ -168,6 +204,8 @@ private: ...@@ -168,6 +204,8 @@ private:
static void removeOrderInfo(QString key); static void removeOrderInfo(QString key);
static void GetOrderStatus(const OrderObject *order, int &status);
explicit PosOrderPool(QObject *parent = 0); explicit PosOrderPool(QObject *parent = 0);
void loadOrders(); void loadOrders();
...@@ -176,10 +214,23 @@ private: ...@@ -176,10 +214,23 @@ private:
static QMap<QString, Order_Info> s_order_pool; static QMap<QString, Order_Info> s_order_pool;
//写互斥锁 //写互斥锁
static QMutex s_mutex; static QMutex s_mutex;
//外卖新单
static int s_takeout_new;
//外卖制作单
static int s_takeout_make;
//外卖票配送单
static int s_takeout_send;
//自提新订单
static int s_self_new;
//自提制作单
static int s_self_make;
//维护以上订单数量的锁
static QMutex s_order_num_mutex;
//定时清理订单池 //定时清理订单池
QTimer _timer; QTimer _timer;
//本地已有订单; //本地已有订单;
static QStringList s_order_list; static QStringList s_order_list;
}; };
#endif // POSORDERPOOL_H #endif // POSORDERPOOL_H
...@@ -62,6 +62,8 @@ ...@@ -62,6 +62,8 @@
#define INI_AUTOCONFIRM "info/autoconfirm" #define INI_AUTOCONFIRM "info/autoconfirm"
#define INI_UIVISIBLE "Ui/visible" #define INI_UIVISIBLE "Ui/visible"
#define INI_DELEORDERTIMER "all/dltordertimer"
#define INI_NEEDPTR "all/needotherprt" #define INI_NEEDPTR "all/needotherprt"
#define INI_NEEDLABEL "all/needlabel" #define INI_NEEDLABEL "all/needlabel"
......
...@@ -27,6 +27,7 @@ FloatForm::FloatForm(QWidget *parent) : ...@@ -27,6 +27,7 @@ FloatForm::FloatForm(QWidget *parent) :
FMApplication::subscibeEvent(this, PosEvent::s_change_order); FMApplication::subscibeEvent(this, PosEvent::s_change_order);
FMApplication::subscibeEvent(this, PosEvent::s_show_float); FMApplication::subscibeEvent(this, PosEvent::s_show_float);
FMApplication::subscibeEvent(this, PosEvent::s_delete_order);
m_bReminding = false; m_bReminding = false;
...@@ -60,6 +61,13 @@ bool FloatForm::event(QEvent *e) ...@@ -60,6 +61,13 @@ bool FloatForm::event(QEvent *e)
int refundstatus, orderstatus; int refundstatus, orderstatus;
bool oldorder; bool oldorder;
int tk_new = 0, tk_make = 0, tk_send = 0;
int self_new = 0, self_make = 0;
PosOrderPool::GetOrderNum(tk_new, tk_make, tk_send, self_new, self_make);
QLOG_DEBUG() << "tk_new" << tk_new << "tk_make" << tk_make << "tk_send" << tk_send << "self_new" << self_new << "self_make" << self_make;
if(!PosOrderPool::GetOrderStatus(orderid, orderstatus, refundstatus, oldorder)) if(!PosOrderPool::GetOrderStatus(orderid, orderstatus, refundstatus, oldorder))
return true; return true;
...@@ -88,6 +96,18 @@ bool FloatForm::event(QEvent *e) ...@@ -88,6 +96,18 @@ bool FloatForm::event(QEvent *e)
return true; return true;
} }
if(e->type() == PosEvent::s_delete_order)
{
int tk_new = 0, tk_make = 0, tk_send = 0;
int self_new = 0, self_make = 0;
PosOrderPool::GetOrderNum(tk_new, tk_make, tk_send, self_new, self_make);
QLOG_DEBUG() << "tk_new" << tk_new << "tk_make" << tk_make << "tk_send" << tk_send << "self_new" << self_new << "self_make" << self_make;
return true;
}
return QWidget::event(e); return QWidget::event(e);
} }
......
...@@ -64,6 +64,7 @@ void MainForm::MyShow() ...@@ -64,6 +64,7 @@ void MainForm::MyShow()
{ {
//this->show(); //this->show();
this->showFullScreen(); this->showFullScreen();
//this->move(600, 800);
this->hide(); this->hide();
m_alertForm = new AlertForm(this); m_alertForm = new AlertForm(this);
...@@ -120,6 +121,7 @@ bool MainForm::event(QEvent *e) ...@@ -120,6 +121,7 @@ bool MainForm::event(QEvent *e)
if(e->type() == PosEvent::s_show_mainform) if(e->type() == PosEvent::s_show_mainform)
{ {
//this->show(); //this->show();
//this->move(600, 800);
this->showFullScreen(); this->showFullScreen();
return true; return true;
} }
...@@ -486,7 +488,7 @@ bool MainForm::getOrderOptAndName(OrderObject *order, QString &optname, QString ...@@ -486,7 +488,7 @@ bool MainForm::getOrderOptAndName(OrderObject *order, QString &optname, QString
name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE); name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE);
return true; return true;
case InDevelopment: case InDevelopment:
optname = OPERATIONNAME_COMPLETE; optname = OPERATION_COMPLETE;
name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE); name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE);
return true; return true;
case ServiceOrder: case ServiceOrder:
......
...@@ -60,3 +60,24 @@ void SettingForm::on_settingCbxPrinter_activated(const QString &text) ...@@ -60,3 +60,24 @@ void SettingForm::on_settingCbxPrinter_activated(const QString &text)
{ {
ConfigManger::GetInstance().SetPrinterName(text); ConfigManger::GetInstance().SetPrinterName(text);
} }
void SettingForm::on_pushButton_save_clicked()
{
QString confilename = qApp->applicationDirPath() + "/" + CONFIG_NAME;
if(ui->radioButton_auto->isChecked())
QSettings(confilename, QSettings::IniFormat).setValue(INI_AUTOCONFIRM, 1);
else
QSettings(confilename, QSettings::IniFormat).setValue(INI_AUTOCONFIRM, 0);
qDebug() << "input : " << (ui->comboBox_time->currentIndex() + 1) * 12;
QSettings(confilename, QSettings::IniFormat).setValue(INI_DELEORDERTIMER, (ui->comboBox_time->currentIndex() + 1) * 12);
this->hide();
}
void SettingForm::on_pushButton_quit_clicked()
{
this->hide();
}
...@@ -41,6 +41,8 @@ private slots: ...@@ -41,6 +41,8 @@ private slots:
* */ * */
void on_settingBtnSoundTest_clicked(); void on_settingBtnSoundTest_clicked();
void on_settingCbxPrinter_activated(const QString &text); void on_settingCbxPrinter_activated(const QString &text);
void on_pushButton_save_clicked();
void on_pushButton_quit_clicked();
}; };
#endif // SETTINGFORM_H #endif // SETTINGFORM_H
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