Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
takeout_sbk
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
yunpeng.song
takeout_sbk
Commits
d43d9605
Commit
d43d9605
authored
Jul 21, 2020
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug: 在获取订单列表时,oms 推送新订单到PmsPlugin时,新订单无法及时插入PMS数据库;目前将待处理订单列表,拆分成两个: 1、插件内存中不存在的新订单处理队列;
2、插件内存中已经存在的订单,且该订单出现状态需要更新状态队列
parent
07733e07
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
129 additions
and
84 deletions
+129
-84
fmTakeout/Control/flowControl.cpp
+97
-38
fmTakeout/Control/flowControl.h
+7
-0
fmTakeout/DTools/dataManger.cpp
+4
-5
fmTakeout/DTools/dataManger.h
+4
-2
fmTakeout/DTools/pmsOrdersData.cpp
+5
-5
fmTakeout/Model/orderObject.cpp
+11
-8
fmTakeout/floatForm.cpp
+1
-26
No files found.
fmTakeout/Control/flowControl.cpp
View file @
d43d9605
...
...
@@ -62,11 +62,13 @@ FlowControl::FlowControl()
m_reportOMSReocrdOrderTimer
=
new
QTimer
(
this
);
m_loginTimer
=
new
QTimer
(
this
);
m_notifyPmsPullTimer
=
new
QTimer
(
this
);
m_notifyPmsUpdateTimer
=
new
QTimer
(
this
);
//m_cyclePullAllOrderTimer = new QTimer(this);
m_remindCasherBlinkFloatTimer
=
new
QTimer
(
this
);
connect
(
m_loginTimer
,
&
QTimer
::
timeout
,
this
,
&
FlowControl
::
_ClickToLogin
);
connect
(
m_notifyPmsPullTimer
,
&
QTimer
::
timeout
,
this
,
&
FlowControl
::
_NotifyPmsPullOrder
);
connect
(
m_notifyPmsUpdateTimer
,
&
QTimer
::
timeout
,
this
,
&
FlowControl
::
_NotifyPmsUpdateOrder
);
//connect(m_cyclePullAllOrderTimer,&QTimer::timeout,this,&FlowControl::_NotifyCyclePullAllOrder);
connect
(
m_remindCasherBlinkFloatTimer
,
&
QTimer
::
timeout
,
this
,
&
FlowControl
::
_RemindCasherBlinkFloatForm
);
connect
(
m_pullTimer
,
&
QTimer
::
timeout
,
this
,
&
FlowControl
::
_PullOrderData
);
...
...
@@ -105,6 +107,7 @@ FlowControl::FlowControl()
m_loginTimer
->
start
(
6
*
1000
);
m_notifyPmsPullTimer
->
start
(
1000
*
2
);
m_notifyPmsUpdateTimer
->
start
(
1000
*
2
);
//_TestRedis();
//_TestInsertOrderData();
...
...
@@ -169,7 +172,6 @@ void FlowControl::_TestInsertOrderData(){
bool
FlowControl
::
_AppendOrderInfo2Redis
(
const
OrderObject
*
orderObject
)
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---FlowControl::_AppendOrderInfo2Redis: OrderId:%1--->>>>]"
).
arg
(
orderObject
->
id
);
return
QtRedisClient
::
getInstance
().
pushOrder2Redis
(
orderObject
);
}
...
...
@@ -309,7 +311,8 @@ void FlowControl::_SmartTriggerClickPosBtn(const bool bTimerTrigger)
void
FlowControl
::
_NotifyPmsPullOrder
()
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---:_NotifyPmsPullOrder: m_simValidOrdersList.isEmpty()==%1--->>>>>]"
).
arg
(
m_simValidOrdersList
.
isEmpty
());
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---:_NotifyPmsPullOrder: m_simValidOrdersList.isEmpty()=%1, m_simValidOrdersList.count()=%2--->>>>>]"
)
.
arg
(
m_simValidOrdersList
.
isEmpty
()
?
1
:
0
).
arg
(
m_simValidOrdersList
.
count
()
);
if
(
!
m_simValidOrdersList
.
isEmpty
())
{
m_notifyPmsPullTimer
->
start
(
1000
*
2
);
...
...
@@ -338,8 +341,10 @@ void FlowControl::_NotifyPmsPullOrder()
if
(
insertRet
||
updateRet
)
{
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
if
(
_AppendOrderInfo2Redis
(
orderObject
)
)
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsPullOrder _AppendOrderInfo2Redis Success Try times:%1--->>>>]"
).
arg
(
i
);
if
(
i
)
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsPullOrder _AppendOrderInfo2Redis Success Try times:%1--->>>>]"
).
arg
(
i
);
}
//只有第一次插入DB成功,才会想OMS汇报入机情况;
// 将此订单添加汇报队列中; 参数2: "1":代表成功; "2":代表失败; 参数3:入机备注;
if
(
insertRet
)
{
...
...
@@ -373,6 +378,82 @@ void FlowControl::_NotifyPmsPullOrder()
}
}
void
FlowControl
::
_NotifyPmsUpdateOrder
()
{
if
(
!
m_simValidOrdersList
.
isEmpty
()
)
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_NotifyPmsUpdateOrder: m_simValidOrdersList.count()=%1, m_waitUpdateOrderList.count()=%2, Priority Process Insert List--->>>>>]"
)
.
arg
(
m_simValidOrdersList
.
count
()
).
arg
(
m_waitUpdateOrderList
.
count
()
);
m_notifyPmsUpdateTimer
->
start
(
1000
*
3
);
return
;
}
if
(
!
m_waitUpdateOrderList
.
isEmpty
())
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_NotifyPmsUpdateOrder: m_waitUpdateOrderList.isEmpty()=%1, m_waitUpdateOrderList.count()=%2--->>>>>]"
)
.
arg
(
m_waitUpdateOrderList
.
isEmpty
()
?
1
:
0
).
arg
(
m_waitUpdateOrderList
.
count
()
);
m_notifyPmsUpdateTimer
->
start
(
1000
*
1
);
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---FM插件 向PMS数据库插入数据; 并添加 Redis --->>>>]"
);
QString
listFirstOrderId
=
m_waitUpdateOrderList
.
takeFirst
();
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
listFirstOrderId
);
// 更新/ 插入结果;
bool
updateRet
=
false
;
bool
insertRet
=
false
;
bool
bExistOrder
=
false
;
if
(
orderObject
)
{
//如果订单存在库中则更新订单状态;
bExistOrder
=
PmsOrdersData
::
getInstance
().
isOrderExist
(
orderObject
->
id
);
if
(
bExistOrder
){
updateRet
=
PmsOrdersData
::
getInstance
().
updateOrderStatus
(
orderObject
,
orderObject
->
orderStatus
,
orderObject
->
makeStatus
);
//不存在则插入;
}
else
{
QString
pmsOrderRef
;
insertRet
=
PmsOrdersData
::
getInstance
().
insertOrderData
(
orderObject
,
pmsOrderRef
);
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsUpdateOrder Insert Mysql DB Order:%1 bExistOrder:%2 insertRet:%3 updateRet:%4--->>>>]"
)
.
arg
(
orderObject
->
id
).
arg
(
bExistOrder
?
1
:
0
).
arg
(
insertRet
?
1
:
0
).
arg
(
updateRet
?
1
:
0
);
//如果订单 插入/更新 数据库成功后,向Redis中添加此订单信息;
if
(
insertRet
||
updateRet
)
{
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
if
(
_AppendOrderInfo2Redis
(
orderObject
)
)
{
if
(
i
)
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsUpdateOrder _AppendOrderInfo2Redis Success Try times:%1--->>>>]"
).
arg
(
i
);
}
//只有第一次插入DB成功,才会想OMS汇报入机情况;
// 将此订单添加汇报队列中; 参数2: "1":代表成功; "2":代表失败; 参数3:入机备注;
if
(
insertRet
)
{
_AddOrderInfo2ReportList
(
orderObject
,
QString
(
"1"
),
QString
::
fromLocal8Bit
(
"订单入PMS库成功并通知Redis成功"
));
}
break
;
}
else
{
QLOG_ERROR
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsUpdateOrder _AppendOrderInfo2Redis Failed, Try Again--->>>>]"
);
continue
;
}
}
//如果订单插入/更新 数据库失败后;向服务端汇报订单落库情况;
}
else
{
QLOG_ERROR
()
<<
QString
(
"[<<<<---FlowControl::_NotifyPmsUpdateOrder Insert Mysql DB Order:%1 Insert/Update Failed--->>>>]"
)
.
arg
(
orderObject
->
id
);
//只有插入失败才 进行数据清理;防止与重新入机的订单数据出现重复; 删除 orders/order_item/order_item_condiments
if
(
!
bExistOrder
&&
!
insertRet
)
{
PmsOrdersData
::
getInstance
().
deleteOrderData
(
orderObject
);
}
//将此订单添加汇报队列中; 参数2: "1":代表成功; "2":代表失败; 参数3:入机备注;
_AddOrderInfo2ReportList
(
orderObject
,
QString
(
"2"
),
QString
::
fromLocal8Bit
(
"订单 插入/更新 PMS库数据失败"
));
}
}
else
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---FlowControl::_NotifyPmsUpdateOrder Insert Mysql DB orderObject Is Null:--->>>>]"
);
}
}
else
{
m_notifyPmsUpdateTimer
->
start
(
1000
*
5
);
}
}
void
FlowControl
::
_NotifyCyclePullAllOrder
()
{
...
...
@@ -392,7 +473,8 @@ void FlowControl::_NotifyCyclePullAllOrder()
void
FlowControl
::
_RemindCasherBlinkFloatForm
()
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_RemindCasherBlinkFloatForm: m_simValidOrdersList.isEmpty()==%1--->>>>>]"
).
arg
(
m_simValidOrdersList
.
isEmpty
());
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_RemindCasherBlinkFloatForm: m_simValidOrdersList.isEmpty()=%1, m_simValidOrdersList.count()=%2--->>>>>]"
)
.
arg
(
m_simValidOrdersList
.
isEmpty
()
).
arg
(
m_simValidOrdersList
.
count
()
);
if
(
!
m_simValidOrdersList
.
isEmpty
())
{
m_remindCasherBlinkFloatTimer
->
start
(
1000
*
8
);
...
...
@@ -407,7 +489,7 @@ void FlowControl::_RemindCasherBlinkFloatForm()
void
FlowControl
::
_OrderAnalysis
(
const
QJsonObject
&
jsonObject
)
{
OrderObject
*
orderObject
=
nullptr
;
bool
bRetOrder
Entry
Mutex
=
false
;
bool
bRetOrder
Update
Mutex
=
false
;
orderObject
=
m_FmOrdersMap
.
value
(
jsonObject
[
JSON_ID
].
toString
());
/***<1>:FM插件维护的有效订单容器中不存在此订单:整合数据并插入到此订单容器中 ***/
if
(
orderObject
==
nullptr
)
...
...
@@ -461,7 +543,6 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
m_simValidOrdersList
.
append
(
orderObject
->
id
);
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> changeOrderStatus--->>>>]"
);
emit
changeOrderStatus
(
orderObject
);
}
/***<2>:FM插件维护的有效订单容器中存在此订单:更新订单容器中此订单的订单状态***/
...
...
@@ -477,13 +558,13 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
.
arg
(
oldMakeStatus
).
arg
(
orderObject
->
makeStatus
).
arg
(
oldArriverAhead
).
arg
(
orderObject
->
inAdvanceTakemeal
);
// 如果订单状态 或 制作状态 或 预约单提前到店 出现变化都需添加到队列;
if
(
oldStatus
!=
orderObject
->
orderStatus
||
oldMakeStatus
!=
orderObject
->
makeStatus
||
oldArriverAhead
!=
orderObject
->
inAdvanceTakemeal
)
{
bRetOrder
EntryMutex
=
m_OrderEntry
Mutex
.
tryLock
(
VALUE_TRYLOCKMEMTIMEOUT
);
if
(
!
bRetOrder
Entry
Mutex
)
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 MakeStatus:%3 ArriverAhead:%4 Change m_Order
Entry
Mutex.tryLock Failed --->>>>]"
)
bRetOrder
UpdateMutex
=
m_OrderUpdate
Mutex
.
tryLock
(
VALUE_TRYLOCKMEMTIMEOUT
);
if
(
!
bRetOrder
Update
Mutex
)
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 MakeStatus:%3 ArriverAhead:%4 Change m_Order
Update
Mutex.tryLock Failed --->>>>]"
)
.
arg
(
orderObject
->
id
).
arg
(
orderObject
->
orderStatus
).
arg
(
orderObject
->
makeStatus
).
arg
(
orderObject
->
inAdvanceTakemeal
);
}
else
{
m_
simValidOrders
List
.
append
(
orderObject
->
id
);
m_Order
Entry
Mutex
.
unlock
();
m_
waitUpdateOrder
List
.
append
(
orderObject
->
id
);
m_Order
Update
Mutex
.
unlock
();
}
emit
changeOrderStatus
(
orderObject
,
oldStatus
);
}
...
...
@@ -495,7 +576,6 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
emit
startRemind
(
REMIND_REQREFUND_ORDER
);
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->orderStatus:--->>>>]"
)
<<
orderObject
->
orderStatus
;
switch
(
orderObject
->
orderStatus
){
case
OrderObject
:
:
NewOrder
:
break
;
...
...
@@ -580,9 +660,10 @@ bool FlowControl::_Login()
bool
result
;
QJsonObject
sendJson
;
QJsonObject
recvJson
;
m_puginVersionComments
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
();
sendJson
=
DataManger
::
GetInstance
().
GetLoginData
(
ConfigManger
::
GetInstance
().
GetPartnerId
(),
m_storeId
,
m_password
,
m_posId
,
m_
cashierId
,
m_ipPortAddress
,
m_pmsMachineNo
);
m_password
,
m_posId
,
m_
puginVersionComments
,
m_ipPortAddress
,
m_pmsMachineNo
);
emit
showAlert
(
AlertForm
::
LOADING
,
QString
::
fromLocal8Bit
(
"正在登录......"
));
...
...
@@ -633,6 +714,7 @@ bool FlowControl::_Login()
m_pullTimer
->
start
(
1000
*
5
);
m_reportOMSReocrdOrderTimer
->
start
(
1000
*
5
);
m_notifyPmsPullTimer
->
start
(
3
*
1000
);
m_notifyPmsUpdateTimer
->
start
(
3
*
1000
);
m_remindCasherBlinkFloatTimer
->
start
(
5
*
1000
);
//m_cyclePullAllOrderTimer->start(1000*60*10);
...
...
@@ -755,7 +837,6 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
}
else
{
m_pullTimer
->
start
(
1000
*
2
);
}
qDebug
()
<<
"[<<<<---Pull Order Detail Result--->>>>]"
<<
result
;
return
result
;
}
...
...
@@ -773,11 +854,7 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_PullOrderList: Pull Order List--->>>>][requestData:]"
)
<<
sendJson
;
if
(
ConfigManger
::
GetInstance
().
GetOrderSslConfig
())
{
// m_pullOrderSocket->SetSslConfig();
m_pullOrderListSocket
->
SetSslConfig
();
QLOG_INFO
()
<<
"FlowControl::_PullOrderList load ssl"
;
}
else
{
QLOG_INFO
()
<<
"FlowControl::_PullOrderList load not ssl"
;
}
QUrl
TempQUrl
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_PULLORDERLIST
);
...
...
@@ -832,7 +909,6 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
m_pullTimer
->
start
(
1000
*
10
);
// 如果某次拉订单列表出现失败;此函数的外层函数 _PullOrderData: 还会将本次拉单列表存起来等待下次拉取;
}
QLOG_INFO
()
<<
"[<<<<---Pull Order List Result--->>>>]"
<<
result
;
return
result
;
}
...
...
@@ -866,7 +942,6 @@ bool FlowControl::_SendHeart()
result
=
false
;
m_bLastHeartIsError
=
true
;
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
// refresh gui defaultStoreStatus;
emit
doUpdateStoreStatus
(
0
,
0
,
0
);
}
else
{
result
=
true
;
...
...
@@ -910,9 +985,6 @@ bool FlowControl::_ConfirmOrder(const QString &orderId)
if
(
ConfigManger
::
GetInstance
().
GetOrderSslConfig
())
{
m_procOrderSocket
->
SetSslConfig
();
QLOG_INFO
()
<<
"load ssl"
;
}
else
{
QLOG_INFO
()
<<
"load not ssl"
;
}
QString
url
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_CONFIRM
);
...
...
@@ -965,7 +1037,6 @@ bool FlowControl::_ConfirmOrder(const QString &orderId)
m_OrderEntryMutex
.
unlock
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _ConfirmOrder: m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _ConfirmOrder: m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _ConfirmOrder: _ClickOMSAssignArea --->>>>]"
);
}
}
}
else
{
...
...
@@ -1034,7 +1105,6 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
m_OrderEntryMutex
.
unlock
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefuseOrder: _ClickOMSAssignArea --->>>>]"
);
}
}
...
...
@@ -1238,7 +1308,6 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]"
);
m_OrderEntryMutex
.
unlock
();
_ClickOMSAssignArea
();
//必须执行,否则退货,点击取消后,就不会再提醒了;
//录正向销售单报错的处理机制;
...
...
@@ -1261,7 +1330,6 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder:SimExceptRefund : m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder:SimExceptRefund : m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder:SimExceptRefund : _ClickOMSAssignArea --->>>>]"
);
m_OrderEntryMutex
.
unlock
();
_ClickOMSAssignArea
();
//必须执行,否则退货,点击取消后,就不会再提醒了;
}
...
...
@@ -1321,7 +1389,6 @@ void FlowControl::_AddOrderInfo2ReportList(const OrderObject* orderObject,const
void
FlowControl
::
_ReportOMSRecordOrderInfo
()
{
QLOG_INFO
()
<<
"[<<<<----FlowControl::_ReportOMSRecordOrderInfo ---->>>>>]"
;
if
(
m_orderRecordRepOMSList
.
isEmpty
())
return
;
...
...
@@ -1356,7 +1423,6 @@ void FlowControl::_ReportOMSRecordOrderInfo()
QJsonObject
sendJson
;
QJsonObject
recvJson
;
m_reportOMSRecordOrderSocket
->
SetSslConfig
();
QLOG_INFO
()
<<
"FlowControl::_ReportOMSRecordOrderInfo load ssl"
;
//组装POST请求数据;
sendJson
.
insert
(
"orderNo"
,
RepOMSRecOrderIn
->
orderNo
);
sendJson
.
insert
(
"channel"
,
RepOMSRecOrderIn
->
channel
);
...
...
@@ -1495,9 +1561,6 @@ void FlowControl::onPullDishes()
{
if
(
JSON_STATUSCODE_OK
!=
recvJson
[
JSON_STATUSCODE
].
toInt
())
{
//result = false;
//emit showAlert(AlertForm::ERROR, QString("获取[%1]产品信息失败![%2]").arg(channelName, recvJson[JSON_MESSAGE].toString()));
//break;
}
else
{
QMultiMap
<
QString
,
dishesObject
>
tmpMap
;
...
...
@@ -2005,7 +2068,8 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
bool
FlowControl
::
_ResponseSimReqFristOrderData
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
,
const
QString
&
orderId
)
{
QLOG_INFO
()
<<
__FUNCTION__
<<
error
<<
orderId
;
Q_UNUSED
(
content
);
Q_UNUSED
(
data
);
return
false
;
}
...
...
@@ -2134,11 +2198,6 @@ void FlowControl::onSerachOrder(const QString &text)
orderMap
.
insert
(
QString
::
fromLocal8Bit
(
"订单号:"
)
+
orderId
,
QString
::
fromLocal8Bit
(
"三方订单号:"
)
+
thirdPartyOrderId
);
}
//移除手机号检索
/*
if(phoneId.startsWith(text)) {
orderMap.insert(QString::fromLocal8Bit("订单号:")+orderId,QString::fromLocal8Bit("手机号:")+phoneId);
}
*/
//新增第三方订单号检索;
if
(
thirdPartyOrderId
.
startsWith
(
text
))
{
orderMap
.
insert
(
QString
::
fromLocal8Bit
(
"订单号:"
)
+
orderId
,
QString
::
fromLocal8Bit
(
"三方订单号:"
)
+
thirdPartyOrderId
);
...
...
fmTakeout/Control/flowControl.h
View file @
d43d9605
...
...
@@ -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
);
...
...
fmTakeout/DTools/dataManger.cpp
View file @
d43d9605
...
...
@@ -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
;
}
...
...
fmTakeout/DTools/dataManger.h
View file @
d43d9605
...
...
@@ -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]收银员号
* 返回:登录数据
...
...
fmTakeout/DTools/pmsOrdersData.cpp
View file @
d43d9605
...
...
@@ -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
())
{
...
...
fmTakeout/Model/orderObject.cpp
View file @
d43d9605
...
...
@@ -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"
);
...
...
fmTakeout/floatForm.cpp
View file @
d43d9605
...
...
@@ -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 像素间隔;
...
...
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