Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmtakeout
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李定达
fmtakeout
Commits
6eea0025
Commit
6eea0025
authored
Oct 29, 2018
by
李定达
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修改设置界面;2.悬浮窗获取订单数量编写完成
parent
fe533009
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
187 additions
and
2 deletions
+187
-2
takeout/model/posorderpool.cpp
+88
-1
takeout/model/posorderpool.h
+51
-0
takeout/preDefine.h
+2
-0
takeout/view/floatForm.cpp
+20
-0
takeout/view/mainForm.cpp
+3
-1
takeout/view/settingForm.cpp
+21
-0
takeout/view/settingForm.h
+2
-0
takeout/view/settingForm.ui
+0
-0
No files found.
takeout/model/posorderpool.cpp
View file @
6eea0025
...
...
@@ -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
);
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
);
}
}
}
takeout/model/posorderpool.h
View file @
6eea0025
...
...
@@ -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
takeout/preDefine.h
View file @
6eea0025
...
...
@@ -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"
...
...
takeout/view/floatForm.cpp
View file @
6eea0025
...
...
@@ -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
);
}
...
...
takeout/view/mainForm.cpp
View file @
6eea0025
...
...
@@ -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
=
OPERATION
NAME
_COMPLETE
;
optname
=
OPERATION_COMPLETE
;
name
=
QString
::
fromLocal8Bit
(
OPERATIONNAME_COMPLETE
);
return
true
;
case
ServiceOrder
:
...
...
takeout/view/settingForm.cpp
View file @
6eea0025
...
...
@@ -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
();
}
takeout/view/settingForm.h
View file @
6eea0025
...
...
@@ -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
takeout/view/settingForm.ui
View file @
6eea0025
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment