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
a6e5dea9
Commit
a6e5dea9
authored
Nov 30, 2021
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、转移 Plugin 发送心跳后,立即监听心跳返回的 block 动作,防止丢消息
2、更新订单制作时间时 也更新 预约时间 Version: 4.2021.12.10
parent
941e58fa
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
47 deletions
+18
-47
fmTakeout/Control/SocketCommunicate.cpp
+13
-42
fmTakeout/DTools/pmsOrdersData.cpp
+5
-5
No files found.
fmTakeout/Control/SocketCommunicate.cpp
View file @
a6e5dea9
...
@@ -377,7 +377,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
...
@@ -377,7 +377,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
data
.
clear
();
data
.
clear
();
QJsonObject
inputJsonObj
;
QJsonObject
inputJsonObj
;
//<1.1> Case: Recv
HeartBea
t Msg;
//<1.1> Case: Recv
PosAgent Service HeartBeat Reques
t Msg;
if
(
outDataHead
.
type
==
CMD_RECV_HEARTBEAT_REQ
)
if
(
outDataHead
.
type
==
CMD_RECV_HEARTBEAT_REQ
)
{
{
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
...
@@ -411,7 +411,15 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
...
@@ -411,7 +411,15 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
<<
(
_isTimeout
?
" TimeOut"
:
" Success"
)
<<
" syncHeartBeatStamp: "
<<
_socketHeartBeatDateTime
.
toString
(
"yyyy-MM-dd hh:mm:ss"
);
<<
(
_isTimeout
?
" TimeOut"
:
" Success"
)
<<
" syncHeartBeatStamp: "
<<
_socketHeartBeatDateTime
.
toString
(
"yyyy-MM-dd hh:mm:ss"
);
continue
;
continue
;
}
}
//<1.2> Case: Recv Push OrderStatus Msg;
//<1.2> Case: Recv PosAgent Service Response Plugin'self heartbeat Msg;
else
if
(
outDataHead
.
type
==
CMD_RECV_HEARTBEAT_RESP
)
{
QByteArray
msgData
=
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
QLOG_INFO
()
<<
"acceptTcpSvrSendMsg:: Recv HeartBeat Response From PosAgnet Success, Sequence: "
<<
outDataHead
.
sequence
<<
" Msg: "
<<
msgData
.
data
();
_socketHeartBeatDateTime
=
QDateTime
::
currentDateTime
();
continue
;
}
//<1.3> Case: Recv Push OrderStatus Msg;
else
if
(
outDataHead
.
type
==
CMD_RECV_MSG_REQ
)
else
if
(
outDataHead
.
type
==
CMD_RECV_MSG_REQ
)
{
{
// Recv Server Push OrderStatus Msg;
// Recv Server Push OrderStatus Msg;
...
@@ -456,7 +464,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
...
@@ -456,7 +464,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
continue
;
continue
;
}
}
//<1.
3
> Case: Recv Auth Login Resp Msg [ impossible];
//<1.
4
> Case: Recv Auth Login Resp Msg [ impossible];
else
if
(
outDataHead
.
type
==
CMD_AUTH_LOGIN_RESP
)
else
if
(
outDataHead
.
type
==
CMD_AUTH_LOGIN_RESP
)
{
{
// Recv Server Response Msg Of Self Login Request ;
// Recv Server Response Msg Of Self Login Request ;
...
@@ -502,7 +510,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
...
@@ -502,7 +510,7 @@ void SocketCommunicate::acceptTcpSvrSendMsg()
continue
;
continue
;
}
}
//<1.
4
> Case: Recv Socket Msg Type No Process , DataHead.type Havn't Match Success [ Maybe ]; Need Response, Or POS Agent Will Still Push;
//<1.
5
> Case: Recv Socket Msg Type No Process , DataHead.type Havn't Match Success [ Maybe ]; Need Response, Or POS Agent Will Still Push;
else
{
else
{
// Recv Pos Agent Pushed Undefine Action Id Msg;
// Recv Pos Agent Pushed Undefine Action Id Msg;
QByteArray
msgData
=
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
QByteArray
msgData
=
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
...
@@ -697,46 +705,9 @@ bool SocketCommunicate::sendSocketHeart()
...
@@ -697,46 +705,9 @@ bool SocketCommunicate::sendSocketHeart()
return
false
;
return
false
;
}
else
{
}
else
{
QLOG_INFO
()
<<
"sendSocketHeart:: Send HeartBeat To PosAgnet Success , len: "
<<
len
;
QLOG_INFO
()
<<
"sendSocketHeart:: Send HeartBeat To PosAgnet Success , len: "
<<
len
;
_socketHeartBeatDateTime
=
QDateTime
::
currentDateTime
();
}
}
_isTimeout
=
true
;
{
QEventLoop
loop
;
QTimer
timer
;
connect
(
this
,
&
SocketCommunicate
::
quit
,
&
loop
,
&
QEventLoop
::
quit
);
connect
(
&
timer
,
&
QTimer
::
timeout
,
&
loop
,
&
QEventLoop
::
quit
);
connect
(
this
,
&
SocketCommunicate
::
readReady
,
&
loop
,
&
QEventLoop
::
quit
);
timer
.
start
(
30
*
1000
);
loop
.
exec
();
}
// <2.1> Read HeartBeat Response Faild;
if
(
_isTimeout
)
{
QLOG_ERROR
()
<<
"sendSocketHeart:: Receive HeartBeat Response From PosAgnet Failed, TimeOut: "
<<
(
_sslSocket
?
_sslSocket
->
errorString
()
:
" _sslSocket Is Null "
);
if
(
_sslSocket
)
_sslSocket
->
disconnectFromHost
();
_needTcpLogin
=
1
;
return
false
;
}
// <2.2> Read HeartBeat Response Success;
QByteArray
headByteData
=
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
sizeof
(
Data_Head
)
)
:
""
;
Data_Head
outDataHead
=
{
0
};
if
(
!
SocketCommuProcess
::
getHeadAllData
(
headByteData
,
outDataHead
)
)
{
QLOG_ERROR
()
<<
"sendSocketHeart:: Receive HeartBeat Head Failed / Msg Too Short Or Msg Type Not Match"
;
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
readAll
()
:
""
;
if
(
_sslSocket
)
_sslSocket
->
disconnectFromHost
();
_needTcpLogin
=
1
;
return
false
;
}
// <2.3> Compare Recv HeartBeat Response Body, Maybe Recv Other Normal Type Msg, Will Miss Msg;
QByteArray
body
=
(
_sslSocket
&&
(
QAbstractSocket
::
ConnectedState
==
_sslSocket
->
state
()
)
)
?
_sslSocket
->
read
(
outDataHead
.
length
)
:
""
;
QLOG_INFO
()
<<
"sendSocketHeart:: Receive HeartBeat Response From PosAgnet: "
<<
body
;
// <3> To be confirmed Something;
_socketHeartBeatDateTime
=
QDateTime
::
currentDateTime
();
return
true
;
return
true
;
}
}
...
...
fmTakeout/DTools/pmsOrdersData.cpp
View file @
a6e5dea9
...
@@ -750,11 +750,11 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
...
@@ -750,11 +750,11 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
int
tempOrderTypeId
=
convertPosServiceTypeId
(
orderObj
,
orderObj
->
orderStatus
);
int
tempOrderTypeId
=
convertPosServiceTypeId
(
orderObj
,
orderObj
->
orderStatus
);
// 预约时间 & 街送小票时间 & 车牌号 & 隐私号 PCS 使用不到, 故没有进行更新.
// 预约时间 & 街送小票时间 & 车牌号 & 隐私号 PCS 使用不到, 故没有进行更新.
query
.
prepare
(
QString
(
"update orders set order_status=%1,order_type_id=%2, global_service_type=%3, global_order_type=%4, make_status='%5',"
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
'"
)
" make_source='%6', make_device_id='%7', appointed_remind_template ='%8'
, appointed_time ='%9' where order_id='%10
'"
)
.
arg
(
QString
::
number
(
OrderStatus
)
,
QString
::
number
(
tempOrderTypeId
),
QString
::
number
(
orderObj
->
globalServiceType
),
.
arg
(
QString
::
number
(
OrderStatus
)
).
arg
(
QString
::
number
(
tempOrderTypeId
)
).
arg
(
QString
::
number
(
orderObj
->
globalServiceType
)
)
QString
::
number
(
orderObj
->
globalOrderType
)
,
makeStatus
,
orderObj
->
makeSource
,
orderObj
->
makeDeviceId
,
.
arg
(
QString
::
number
(
orderObj
->
globalOrderType
)
).
arg
(
makeStatus
).
arg
(
orderObj
->
makeSource
).
arg
(
orderObj
->
makeDeviceId
)
QString
::
number
(
orderObj
->
inAdvanceTakemeal
)
+
';'
+
orderObj
->
reserveMakeTime
,
orderObj
->
id
)
);
.
arg
(
QString
::
number
(
orderObj
->
inAdvanceTakemeal
)
+
';'
+
orderObj
->
reserveMakeTime
).
arg
(
orderObj
->
expectDate
).
arg
(
orderObj
->
id
)
);
if
(
!
query
.
exec
())
{
if
(
!
query
.
exec
())
{
QLOG_ERROR
()
<<
query
.
lastError
().
text
()
<<
"[<<<<---PmsOrdersData::update Order Status Failed--->>>>]"
;
QLOG_ERROR
()
<<
query
.
lastError
().
text
()
<<
"[<<<<---PmsOrdersData::update Order Status Failed--->>>>]"
;
...
...
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