Commit 6eea0025 by 李定达

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

parent fe533009
......@@ -10,6 +10,7 @@
#include <QThread>
#include <QSqlQuery>
#include <QVariantMap>
#include <QSettings>
#include "QsLog.h"
#include "base/DB/fm_database.h"
......@@ -21,6 +22,18 @@ QMap<QString, Order_Info> PosOrderPool::s_order_pool;
QMutex PosOrderPool::s_mutex;
//已有订单
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)
{
......@@ -36,7 +49,11 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
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())
{
......@@ -49,16 +66,20 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
QVariantMap map;
map.insert(EVENT_KEY_ORDERID, it.key());
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);
s_order_pool.erase(it ++);
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;
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);
s_order_pool.erase(it ++);
continue;
......@@ -103,6 +124,8 @@ void PosOrderPool::loadOrders()
info.order_print_status = query.value(4).toInt();
info.order_status = DefaultOrder;
info.order_refund = DefaultOrder;
info.order_data.status = DefaultOrder;
info.order_data.refund_status = DefaultOrder;
s_mutex.lock();
s_order_pool.insert(info.order_id, info);
s_order_list.append(info.order_id);
......@@ -139,6 +162,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
s_order_pool.insert(order.order_id,info);
UpdateOrderNum(&order);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
if(order.status == FirmOrder && order.refund_status == DefaultOrder)
......@@ -173,6 +198,8 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
{
s_order_pool.insert(order.order_id, info);
UpdateOrderNum(&info.order_data, &oldinfo.order_data);
DEFAULTPOSTEVENT(PosEvent::s_change_order, order.order_id);
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
if(!s_order_pool.contains(key))
return false;
Order_Info tmpinfo = s_order_pool[key];
Order_Info info = s_order_pool[key];
if(info.order_status != order_status || info.order_refund != refundstatus)
......@@ -224,6 +252,8 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
info.order_change_time = QDateTime::currentDateTime().toTime_t();
s_order_pool.insert(key, info);
UpdateOrderNum(&info.order_data, &tmpinfo.order_data);
DEFAULTPOSTEVENT(PosEvent::s_change_order, key);
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)
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)
{
......@@ -426,5 +465,53 @@ bool PosOrderPool::event(QEvent *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 @@
info.order_change_time = QDateTime::currentDateTime().toTime_t(); \
} 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
{
//订单原始状态(推了一个订单号时使用)
......@@ -153,9 +185,13 @@ public:
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);
private:
static void UpdateOrderNum(const OrderObject *order, const OrderObject *orderold = NULL);
static bool TryInsertOrder(OrderObject order);
static bool TryChangeOrderStatus(QString key, int order_status, int refundstatus = DefaultOrder);
......@@ -168,6 +204,8 @@ private:
static void removeOrderInfo(QString key);
static void GetOrderStatus(const OrderObject *order, int &status);
explicit PosOrderPool(QObject *parent = 0);
void loadOrders();
......@@ -176,10 +214,23 @@ private:
static QMap<QString, Order_Info> s_order_pool;
//写互斥锁
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;
//本地已有订单;
static QStringList s_order_list;
};
#endif // POSORDERPOOL_H
......@@ -62,6 +62,8 @@
#define INI_AUTOCONFIRM "info/autoconfirm"
#define INI_UIVISIBLE "Ui/visible"
#define INI_DELEORDERTIMER "all/dltordertimer"
#define INI_NEEDPTR "all/needotherprt"
#define INI_NEEDLABEL "all/needlabel"
......
......@@ -27,6 +27,7 @@ FloatForm::FloatForm(QWidget *parent) :
FMApplication::subscibeEvent(this, PosEvent::s_change_order);
FMApplication::subscibeEvent(this, PosEvent::s_show_float);
FMApplication::subscibeEvent(this, PosEvent::s_delete_order);
m_bReminding = false;
......@@ -60,6 +61,13 @@ bool FloatForm::event(QEvent *e)
int refundstatus, orderstatus;
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))
return true;
......@@ -88,6 +96,18 @@ bool FloatForm::event(QEvent *e)
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);
}
......
......@@ -64,6 +64,7 @@ void MainForm::MyShow()
{
//this->show();
this->showFullScreen();
//this->move(600, 800);
this->hide();
m_alertForm = new AlertForm(this);
......@@ -120,6 +121,7 @@ bool MainForm::event(QEvent *e)
if(e->type() == PosEvent::s_show_mainform)
{
//this->show();
//this->move(600, 800);
this->showFullScreen();
return true;
}
......@@ -486,7 +488,7 @@ bool MainForm::getOrderOptAndName(OrderObject *order, QString &optname, QString
name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE);
return true;
case InDevelopment:
optname = OPERATIONNAME_COMPLETE;
optname = OPERATION_COMPLETE;
name = QString::fromLocal8Bit(OPERATIONNAME_COMPLETE);
return true;
case ServiceOrder:
......
......@@ -60,3 +60,24 @@ void SettingForm::on_settingCbxPrinter_activated(const QString &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:
* */
void on_settingBtnSoundTest_clicked();
void on_settingCbxPrinter_activated(const QString &text);
void on_pushButton_save_clicked();
void on_pushButton_quit_clicked();
};
#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