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
b3cb2ebb
Commit
b3cb2ebb
authored
Aug 01, 2018
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug : 不记得了
parent
e46a6f81
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
165 additions
and
122 deletions
+165
-122
fmTakeout/Control/flowControl.cpp
+140
-113
fmTakeout/DTools/dataManger.cpp
+1
-1
fmTakeout/DTools/simProcOrderDB.cpp
+5
-3
fmTakeout/floatForm.cpp
+4
-4
fmTakeout/mainForm.cpp
+1
-1
fmTakeout/preDefine.h
+13
-0
fmTakeout/refdishesForm.cpp
+1
-0
No files found.
fmTakeout/Control/flowControl.cpp
View file @
b3cb2ebb
...
@@ -242,7 +242,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -242,7 +242,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
SimProcOrderDB
::
getInstance
().
insertSimProcOrder
(
orderObject
->
id
,
QDate
::
currentDate
().
toString
(
"yyyy-MM-dd"
));
SimProcOrderDB
::
getInstance
().
insertSimProcOrder
(
orderObject
->
id
,
QDate
::
currentDate
().
toString
(
"yyyy-MM-dd"
));
if
((
OrderObject
::
NewOrder
==
orderObject
->
orderStatus
||
OrderObject
::
Confirmed
==
orderObject
->
orderStatus
))
if
((
OrderObject
::
NewOrder
==
orderObject
->
orderStatus
||
OrderObject
::
Confirmed
==
orderObject
->
orderStatus
))
{
{
emit
startRemind
(
0
);
emit
startRemind
(
REMIND_CONFIRMED_ORDER
);
}
}
}
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> changeOrderStatus--->>>>]"
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> changeOrderStatus--->>>>]"
);
...
@@ -253,8 +253,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -253,8 +253,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{
{
int
oldStatus
=
orderObject
->
orderStatus
;
int
oldStatus
=
orderObject
->
orderStatus
;
orderObject
->
FromJson
(
jsonObject
);
orderObject
->
FromJson
(
jsonObject
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout Valid Order Map:Update OldOrder Status[%1:%2]--->>>>].[data:%3]"
)
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout Valid Order Map:Update orderId:%1 OldStatus:%2: curStatus:%3]--->>>>]"
).
arg
(
orderObject
->
id
,
oldStatus
,
orderObject
->
orderStatus
);
.
arg
(
orderObject
->
id
,
orderObject
->
getOrderStatusDec
())
<<
jsonObject
;
if
(
oldStatus
!=
orderObject
->
orderStatus
)
if
(
oldStatus
!=
orderObject
->
orderStatus
)
{
{
emit
changeOrderStatus
(
orderObject
,
oldStatus
);
emit
changeOrderStatus
(
orderObject
,
oldStatus
);
...
@@ -264,19 +263,21 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -264,19 +263,21 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject
->
updateTime
=
QDateTime
::
currentDateTime
().
toTime_t
();
orderObject
->
updateTime
=
QDateTime
::
currentDateTime
().
toTime_t
();
if
(
OrderObject
::
RequestRefund
==
orderObject
->
orderStatus
)
if
(
OrderObject
::
RequestRefund
==
orderObject
->
orderStatus
)
{
{
emit
startRemind
(
1
);
emit
startRemind
(
REMIND_REQREFUND_ORDER
);
}
}
if
(
SimProcOrderDB
::
getInstance
().
isPushedOrder
(
orderObject
->
id
))
if
(
SimProcOrderDB
::
getInstance
().
isPushedOrder
(
orderObject
->
id
))
{
{
orderObject
->
isPush
=
true
;
orderObject
->
isPush
=
true
;
}
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->isPush--->>>>]"
)
<<
orderObject
->
isPush
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->isPush:(from SimProcOrderDB::getInstance().isPushedOrder)--->>>>]"
)
<<
orderObject
->
isPush
;
// 初始化 退单数据:防止退单标志数据被异常改动;
if
(
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
))
if
(
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
))
{
{
orderObject
->
isCancle
=
true
;
orderObject
->
isCancle
=
true
;
}
}
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->isCancle--->>>>]"
)
<<
orderObject
->
isCancle
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->isCancle
:(from SimProcOrderDB::getInstance().isRefundOrder)
--->>>>]"
)
<<
orderObject
->
isCancle
;
QString
posOrderCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderObject
->
id
);
QString
posOrderCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderObject
->
id
);
...
@@ -285,7 +286,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -285,7 +286,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
SimProcOrderDB
::
getInstance
().
getPosOrderCheckNo
(
orderObject
->
id
,
posOrderCheckNo
);
SimProcOrderDB
::
getInstance
().
getPosOrderCheckNo
(
orderObject
->
id
,
posOrderCheckNo
);
}
}
orderObject
->
posCheckNo
=
posOrderCheckNo
;
orderObject
->
posCheckNo
=
posOrderCheckNo
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->posCheckNo:--->>>>]"
)
<<
orderObject
->
posCheckNo
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->posCheckNo:
(first:praram empty then getPosOrderCheckNo from databse)
--->>>>]"
)
<<
orderObject
->
posCheckNo
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->orderStatus:--->>>>]"
)
<<
orderObject
->
orderStatus
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis-> orderObject->orderStatus:--->>>>]"
)
<<
orderObject
->
orderStatus
;
switch
(
orderObject
->
orderStatus
){
switch
(
orderObject
->
orderStatus
){
case
OrderObject
:
:
NewOrder
:
case
OrderObject
:
:
NewOrder
:
...
@@ -333,23 +334,29 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -333,23 +334,29 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
break
;
break
;
case
OrderObject
:
:
AgreeRefund
:
case
OrderObject
:
:
AgreeRefund
:
break
;
break
;
case
OrderObject
:
:
Refunded
:
/*退单目前本佳那边不区分 OrderObject::Refunded=6 && OrderObject::Cancled =6*/
case
OrderObject
:
:
Refunded
:
{
/*退单目前本佳那边不区分 OrderObject::Refunded=6 && OrderObject::Cancled =6*/
/***case:同意退单、退单、取消订单: 此退单还没push到POS[POS没有确认退单或没有返回确认退单的小票号]***/
/***case:同意退单、退单、取消订单: 此退单还没push到POS[POS没有确认退单或没有返回确认退单的小票号]***/
if
(
!
orderObject
->
isCancle
)
//m_OrderEntryMutex.lock(); // 扩大锁的范围;
//内存会出现BUG:现在改用数据库中标记来判断;
//if(!orderObject->isCancle)
bool
bIsRefundOrder
=
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Refunded orderObject->id:%1; bIsRefundOrder: --->>>>]"
).
arg
(
orderObject
->
id
)
<<
bIsRefundOrder
;
if
(
!
bIsRefundOrder
)
{
{
/***case:校验此订单是否已经push到POS:订单还没push到POS[POS没有模拟点单或没有返回小票号]***/
/***case:校验此订单是否已经push到POS:订单还没push到POS[POS没有模拟点单或没有返回小票号]***/
if
(
!
orderObject
->
isPush
)
//内存中处理存在BUG:现在改用 直接读数据库中的标志;
//if(!orderObject->isPush)
if
(
!
SimProcOrderDB
::
getInstance
().
isPushedOrder
(
orderObject
->
id
))
{
{
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
m_OrderEntryMutex
.
unlock
();
m_OrderEntryMutex
.
unlock
();
}
}
/***case:校验此订单是否已经push到POS:订单已经push到POS***/
/***case:校验此订单是否已经push到POS:订单已经push到POS***/
else
{
/***case:校验此订单push到POS后的小票号是否空:[POS已模拟点单且返回小票号]***/
else
{
/***case:校验此订单push到POS后的小票号是否空:[POS已模拟点单且返回小票号]***/
if
(
!
posOrderCheckNo
.
isEmpty
())
if
(
!
posOrderCheckNo
.
isEmpty
())
{
{
orderObject
->
pushOrderType
=
0
;
orderObject
->
isCancle
=
true
;
// 和orderObject->pushOrderType 来联合标记传出数据;
orderObject
->
pushOrderType
=
0
;
//标记准备退单动作;
orderObject
->
pushOrderTimes
=
0
;
orderObject
->
pushOrderTimes
=
0
;
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
if
(
!
m_simValidOrdersList
.
contains
(
orderObject
->
id
))
if
(
!
m_simValidOrdersList
.
contains
(
orderObject
->
id
))
...
@@ -360,13 +367,15 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -360,13 +367,15 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList.num:%1 --->>>>]"
)
<<
m_simValidOrdersList
.
count
();
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled m_simValidOrdersList:%1 --->>>>]"
)
<<
m_simValidOrdersList
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled _ClickOMSAssignArea --->>>>]"
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _OrderAnalysis:Cancled _ClickOMSAssignArea --->>>>]"
);
_ClickOMSAssignArea
();
//
_ClickOMSAssignArea();
}
}
/***case:校验此订单push到POS后的小票号是否空:[POS已模拟点单但未返回小票号]***/
/***case:校验此订单push到POS后的小票号是否空:[POS已模拟点单但未返回小票号]***/
//else{未处理}
//else{未处理}
}
}
}
}
//m_OrderEntryMutex.unlock(); //扩大解锁范围; //退单的先不处理;
break
;
break
;
}
default
:
default
:
break
;
break
;
}
}
...
@@ -434,8 +443,8 @@ bool FlowControl::_Login()
...
@@ -434,8 +443,8 @@ bool FlowControl::_Login()
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"登录失败![网络错误]"
));
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"登录失败![网络错误]"
));
}
else
}
else
{
{
//
if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt())
if
(
JSON_STATUSCODE_OK
!=
recvJson
[
JSON_STATUSCODE
].
toInt
())
if
(
JSON_STATUSCODE_OK
!=
recvJson
[
JSON_LOGINCODE
].
toInt
())
//
if(JSON_STATUSCODE_OK != recvJson[JSON_LOGINCODE].toInt())
{
{
result
=
false
;
result
=
false
;
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"登录失败![%1]"
).
arg
(
recvJson
[
JSON_MESSAGE
].
toString
()));
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"登录失败![%1]"
).
arg
(
recvJson
[
JSON_MESSAGE
].
toString
()));
...
@@ -450,9 +459,9 @@ bool FlowControl::_Login()
...
@@ -450,9 +459,9 @@ bool FlowControl::_Login()
emit
setStoreInfo
(
m_storeId
);
emit
setStoreInfo
(
m_storeId
);
emit
setCashierInfo
(
m_cashierId
);
emit
setCashierInfo
(
m_cashierId
);
m_bLoginResult
=
true
;
m_bLoginResult
=
true
;
m_clearTimer
->
start
(
1000
*
60
*
20
);
// 二十分钟执行一次清理任务
;
m_clearTimer
->
start
(
1000
*
60
*
60
*
2
);
// 5分钟执行一次清理任务:正式上线需要两小时清理一次
;
m_heartTimer
->
start
(
1000
*
60
*
5
);
m_heartTimer
->
start
(
1000
*
60
*
5
);
m_pullTimer
->
start
(
1000
*
2
);
m_pullTimer
->
start
(
1000
*
5
);
m_notifySimPullTimer
->
start
(
10
*
1000
);
m_notifySimPullTimer
->
start
(
10
*
1000
);
emit
doPullOrder
(
QString
(),
QString
());
emit
doPullOrder
(
QString
(),
QString
());
}
}
...
@@ -516,10 +525,10 @@ bool FlowControl::_PullOrderDetail(const QString& orderId)
...
@@ -516,10 +525,10 @@ bool FlowControl::_PullOrderDetail(const QString& orderId)
if
(
ConfigManger
::
GetInstance
().
GetOrderSslConfig
())
if
(
ConfigManger
::
GetInstance
().
GetOrderSslConfig
())
{
{
m_pullOrderSocket
->
SetSslConfig
();
m_pullOrderSocket
->
SetSslConfig
();
QLOG_INFO
()
<<
"FlowControl::_PullOrderDetai load ssl"
;
QLOG_INFO
()
<<
"FlowControl::_PullOrderDetai
l
load ssl"
;
}
}
else
{
else
{
QLOG_INFO
()
<<
"FlowControl::_PullOrderDetai load not ssl"
;
QLOG_INFO
()
<<
"FlowControl::_PullOrderDetai
l
load not ssl"
;
}
}
QString
url
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
QString
url
=
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_PULLORDER
);
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_PULLORDER
);
...
@@ -658,8 +667,7 @@ bool FlowControl::_SendHeart()
...
@@ -658,8 +667,7 @@ bool FlowControl::_SendHeart()
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#ff0000'>网络不稳定,正在重试</font>"
));
}
else
}
else
{
{
//QLOG_INFO() << QString("[<<<<---Send Heart Finish: code:%1--->>>>]").arg(recvJson[JSON_STATUSCODE].toInt());
/*
//if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt())
QLOG_INFO() << QString("[<<<<---Send Heart Finish: code:%1--->>>>]").arg(recvJson[JSON_LOGINCODE].toInt());
QLOG_INFO() << QString("[<<<<---Send Heart Finish: code:%1--->>>>]").arg(recvJson[JSON_LOGINCODE].toInt());
if(JSON_STATUSCODE_OK != recvJson[JSON_LOGINCODE].toInt())
if(JSON_STATUSCODE_OK != recvJson[JSON_LOGINCODE].toInt())
{
{
...
@@ -667,6 +675,8 @@ bool FlowControl::_SendHeart()
...
@@ -667,6 +675,8 @@ bool FlowControl::_SendHeart()
//emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("发送心跳失败![%1]").arg(recvJson[JSON_MESSAGE].toString()));
//emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("发送心跳失败![%1]").arg(recvJson[JSON_MESSAGE].toString()));
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
}
}
*/
emit
setNetStatus
(
QString
::
fromLocal8Bit
(
"<font color='#f5f5f5'>正常</font>"
));
}
}
return
result
;
return
result
;
}
}
...
@@ -776,7 +786,8 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
...
@@ -776,7 +786,8 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
//取消订单(星巴克只有退单)后,将此订单加入到simphony 模拟点单列表中;
//取消订单(星巴克只有退单)后,将此订单加入到simphony 模拟点单列表中;
if
(
OrderObject
::
Refunded
==
orderObject
->
orderStatus
){
if
(
OrderObject
::
Refunded
==
orderObject
->
orderStatus
){
if
(
!
orderObject
->
isCancle
)
//if(!orderObject->isCancle) //内存中数据存在BUG:需要中数据库中读取准确标识;
if
(
!
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
))
{
{
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
...
@@ -899,9 +910,9 @@ bool FlowControl::_RefuseRefund(const QString& orderId)
...
@@ -899,9 +910,9 @@ bool FlowControl::_RefuseRefund(const QString& orderId)
emit
showAlert
(
AlertForm
::
LOADING
,
QString
::
fromLocal8Bit
(
"正在通信......"
));
emit
showAlert
(
AlertForm
::
LOADING
,
QString
::
fromLocal8Bit
(
"正在通信......"
));
QLOG_INFO
()
<<
QString
(
"[<<<<---RefuseRefund Order Begin--->>>>][requestData:
%1
]"
)
<<
sendJson
;
QLOG_INFO
()
<<
QString
(
"[<<<<---RefuseRefund Order Begin--->>>>][requestData:]"
)
<<
sendJson
;
result
=
m_procOrderSocket
->
PostRequest
(
sendJson
,
recvJson
,
error
);
result
=
m_procOrderSocket
->
PostRequest
(
sendJson
,
recvJson
,
error
);
QLOG_INFO
()
<<
QString
(
"[<<<<---RefuseRefund Order Finish--->>>>][result:%1][msg:%2][recvData:
%3
]"
)
QLOG_INFO
()
<<
QString
(
"[<<<<---RefuseRefund Order Finish--->>>>][result:%1][msg:%2][recvData:]"
)
.
arg
(
result
).
arg
(
error
)
<<
recvJson
;
.
arg
(
result
).
arg
(
error
)
<<
recvJson
;
if
(
!
result
)
if
(
!
result
)
{
{
...
@@ -931,7 +942,7 @@ bool FlowControl::_RefuseRefund(const QString& orderId)
...
@@ -931,7 +942,7 @@ bool FlowControl::_RefuseRefund(const QString& orderId)
bool
FlowControl
::
_RefundOrder
(
const
QString
&
orderId
,
int
reasonCode
,
const
QString
&
reason
,
const
QString
&
dishesListString
)
bool
FlowControl
::
_RefundOrder
(
const
QString
&
orderId
,
int
reasonCode
,
const
QString
&
reason
,
const
QString
&
dishesListString
)
{
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_RefundOrder--->>>>][orderId:%1 reasonCode:%2 reason:%3 dishesListString:]"
)
<<
orderId
<<
reasonCode
<<
reason
<<
dishesListString
;
QLOG_INFO
()
<<
QString
(
"[<<<<---FlowControl::_RefundOrder--->>>>][orderId:%1 reasonCode:%2 reason:%3 dishesListString:]"
)
.
arg
(
orderId
).
arg
(
reasonCode
).
arg
(
reason
).
arg
(
dishesListString
)
;
QString
error
;
QString
error
;
bool
result
;
bool
result
;
QJsonObject
sendJson
;
QJsonObject
sendJson
;
...
@@ -947,11 +958,10 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
...
@@ -947,11 +958,10 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
QLOG_INFO
()
<<
"load not ssl"
;
QLOG_INFO
()
<<
"load not ssl"
;
}
}
// 如果退款原因:商品已售完,使用下面接口;
// 如果退款原因:商品已售完,使用下面接口;
if
(
3
==
reasonCode
){
if
(
3
==
reasonCode
)
{
m_procOrderSocket
->
SetUrl
(
QUrl
(
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
m_procOrderSocket
->
SetUrl
(
QUrl
(
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_REFUND
)));
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_REFUND
)));
}
}
// 如果退款原因:其他,使用下面接口
// 如果退款原因:其他,使用下面接口
else
{
else
{
m_procOrderSocket
->
SetUrl
(
QUrl
(
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
m_procOrderSocket
->
SetUrl
(
QUrl
(
ConfigManger
::
GetInstance
().
GetOrderServerUrl
()
+
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_CANCLE
)));
ConfigManger
::
GetInstance
().
GetInterfaceName
(
INI_INTERFACE_CANCLE
)));
...
@@ -973,15 +983,19 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
...
@@ -973,15 +983,19 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
QJsonObject
data
=
recvJson
[
JSON_DATA
].
toObject
();
QJsonObject
data
=
recvJson
[
JSON_DATA
].
toObject
();
int
status
=
data
[
JSON_RECEIVINGSTATUS
].
toInt
();
int
status
=
data
[
JSON_RECEIVINGSTATUS
].
toInt
();
if
(
1
==
status
)
{
if
(
1
==
status
)
{
emit
showAlert
(
AlertForm
::
SUCCESS
,
QString
::
fromLocal8Bit
(
"退单成功"
));
//m_OrderEntryMutex.lock(); //必须提前加锁,否则后期订单ID会变更;
int
orderStatus
=
data
[
JSON_ORDERSTATUS
].
toInt
();
int
orderStatus
=
data
[
JSON_ORDERSTATUS
].
toInt
();
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
orderId
);
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
orderId
);
int
oldOrderStatus
=
orderObject
->
orderStatus
;
int
oldOrderStatus
=
orderObject
->
orderStatus
;
orderObject
->
orderStatus
=
orderStatus
;
orderObject
->
orderStatus
=
orderStatus
;
emit
changeOrderStatus
(
orderObject
,
oldOrderStatus
);
emit
changeOrderStatus
(
orderObject
,
oldOrderStatus
);
//退货订单,将此订单添加到simphony 模拟点单列表中;
//退货订单,将此订单添加到simphony 模拟点单列表中;
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->orderStatus:%2 --->>>>]"
).
arg
(
orderObject
->
id
).
arg
(
orderObject
->
orderStatus
);
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: orderObject->id:%1 , orderObject->isCancle:%2 --->>>>]"
).
arg
(
orderObject
->
id
).
arg
(
orderObject
->
isCancle
);
if
(
OrderObject
::
Refunded
==
orderObject
->
orderStatus
){
if
(
OrderObject
::
Refunded
==
orderObject
->
orderStatus
){
if
(
!
orderObject
->
isCancle
)
/*
if( !SimProcOrderDB::getInstance().isRefundOrder(orderObject->id) ) //发现BUG:存在两种case:①订单还没有录退单到POS;就已经将内存中订单的退单标识置True了,所以必须根据数据库中的数据来判断;
{
{
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还没有模拟点单),则需要直接向现存在Sim有效队列中的记录移除;
m_OrderEntryMutex.lock();
m_OrderEntryMutex.lock();
...
@@ -1000,8 +1014,30 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
...
@@ -1000,8 +1014,30 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]");
QLOG_INFO() << QString("[<<<<---FmTakeout _RefundOrder: _ClickOMSAssignArea --->>>>]");
_ClickOMSAssignArea();
_ClickOMSAssignArea();
}*/
//能退单成功就肯定能断言,此订单是没有录过退货的
// 判断Simphony 队列中的订单是否已经存在:不存在(Simphony已经点单完成后会移除)则添加; 如果存在(说明此订单还拟点单),则需要直接向现存在Sim有效队列中的记录移除;没有模
m_OrderEntryMutex
.
lock
();
if
(
!
m_simValidOrdersList
.
contains
(
orderObject
->
id
))
//不存在队列中,则将其加入到队列中;
{
QLOG_INFO
()
<<
QString
(
"[<<<<---FmTakeout _RefundOrder: orderId:%1 ;(SimProcOrderDB::getInstance().isRefundOrder:--->>>>]"
).
arg
(
orderObject
->
id
)
<<
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
);
//m_simValidOrdersList.append(orderObject->id); //insert(0,orderObject->id) //POS容易遗漏录入退货订单
m_simValidOrdersList
.
insert
(
0
,
orderObject
->
id
);
orderObject
->
pushOrderType
=
0
;
orderObject
->
pushOrderTimes
=
0
;
}
else
{
//如果已经存在队列中,就是POS还没有录入销售订单成功;
//if(!PrintSumBillPosDB::getInstance().isOrderSumBillExist(orderObject->id)){
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
//}
}
}
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
();
//必须执行,否则退货,点击取消后,就不会再提醒了;
}
}
//m_OrderEntryMutex.unlock(); //必须放开锁的范围;否则会出错;
}
else
{
}
else
{
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"退单失败![%1]"
).
arg
(
recvJson
[
JSON_ERRMSG
].
toString
()));
emit
showAlert
(
AlertForm
::
MSGERROR
,
QString
::
fromLocal8Bit
(
"退单失败![%1]"
).
arg
(
recvJson
[
JSON_ERRMSG
].
toString
()));
return
false
;
return
false
;
...
@@ -1245,24 +1281,30 @@ void FlowControl::onDailyReport()
...
@@ -1245,24 +1281,30 @@ void FlowControl::onDailyReport()
void
FlowControl
::
_CrondClearExpireOrder
()
void
FlowControl
::
_CrondClearExpireOrder
()
{
{
QDateTime
currentDateTime
=
QDateTime
::
currentDateTime
();
//QDateTime currentDateTime= QDateTime::currentDateTime(); //--按秒数来验证ok--
// QDate currentDate = QDate::currentDate();
QDate
currentDate
=
QDate
::
currentDate
();
//QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]").arg(currentDateTime.toString("yyyy-MM-dd hh:mm:ss")); //--按秒数来验证OK--
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]"
).
arg
(
currentDate
.
toString
(
"yyyy-MM-dd"
));
OrderObject
*
order
=
NULL
;
OrderObject
*
order
=
NULL
;
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]"
).
arg
(
currentDateTime
.
toString
(
"yyyyMMdd hh:mm:ss"
));
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
foreach
(
order
,
m_FmOrdersMap
.
values
())
{
foreach
(
order
,
m_FmOrdersMap
.
values
())
{
QDateTime
createDateTime
=
QDateTime
::
fromString
(
order
->
createTime
,
"yyyyMMdd hh:mm:ss"
);
//QDateTime createDateTime = QDateTime::fromString(order->createTime,"yyyy-MM-dd hh:mm:ss"); //--按秒数来验证ok--
//QDate createDate = QDate::fromString(order->createTime,"yyyyMMdd");
QDate
createDate
=
QDate
::
fromString
(
(
order
->
createTime
).
mid
(
0
,
10
),
"yyyy-MM-dd"
);
//qint64 days=createDate.daysTo(currentDate);
//QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder-> order->createTime:%1--->>>>]").arg(order->createTime); //--按秒数来验证ok--
qint64
seconds
=
createDateTime
.
secsTo
(
currentDateTime
);
QLOG_INFO
()
<<
QString
(
"[<<<<---_CrondClearExpireOrder-> order createDate:%1--->>>>]"
).
arg
(
createDate
.
toString
(
"yyyy-MM-dd"
));
//qint64 seconds = createDateTime.secsTo(currentDateTime); //--按秒数来验证ok--
qint64
days
=
createDate
.
daysTo
(
currentDate
);
//QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: 相差多少秒:%1--->>>>]").arg(seconds); //--按秒数来验证ok--
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---_CrondClearExpireOrder: ClearExpireOrder: 相差多少天:%1--->>>>]"
).
arg
(
days
);
//创建订单时间,超过当前时间 三十分就进行清理;
//创建订单时间,超过当前时间 三十分就进行清理;
qint64
minutes
=
seconds
/
(
60
*
30
);
//if(seconds>=60*5) //--按秒数来验证ok--
if
(
minute
s
>=
1
)
if
(
day
s
>=
1
)
{
{
QLOG_INFO
()
<<
QString
(
"[<<<<---_CrondClearExpireOrder: ClearExpireOrder: orderID:%1--->>>>]"
).
arg
(
order
->
id
);
QLOG_INFO
()
<<
QString
(
"[<<<<---_CrondClearExpireOrder: ClearExpireOrder:
Emit Signal:Clear Order
orderID:%1--->>>>]"
).
arg
(
order
->
id
);
emit
clearorder
(
order
->
id
,
order
->
orderStatus
);
emit
clearorder
(
order
->
id
,
order
->
orderStatus
);
m_FmOrdersMap
.
value
(
order
->
id
)
->
deleteLater
();
m_FmOrdersMap
.
value
(
order
->
id
)
->
deleteLater
();
m_simValidOrdersList
.
removeOne
(
order
->
id
);
// 任何情况情况下都不能清理 Simphony获取的有效队列【除非已经被simphony处理过的数据】;
// m_simValidOrdersList.removeOne(order->id);
delete
m_FmOrdersMap
.
take
(
order
->
id
);
delete
m_FmOrdersMap
.
take
(
order
->
id
);
}
}
}
}
...
@@ -1276,19 +1318,15 @@ bool FlowControl::_ResponseHttpRequest(const QJsonObject &content,QJsonObject &d
...
@@ -1276,19 +1318,15 @@ bool FlowControl::_ResponseHttpRequest(const QJsonObject &content,QJsonObject &d
QLOG_INFO
()
<<
__FUNCTION__
;
QLOG_INFO
()
<<
__FUNCTION__
;
bool
result
=
true
;
bool
result
=
true
;
/****校验Http请求参数有效性: 校验参数->actionId不存在****/
/****校验Http请求参数有效性: 校验参数->actionId不存在****/
if
(
!
content
.
contains
(
"actionId"
))
if
(
!
content
.
contains
(
"actionId"
))
{
{
error
=
QString
::
fromLocal8Bit
(
"解析Http请求参数:参数中没有actionId"
);
error
=
QString
::
fromLocal8Bit
(
"解析Http请求参数:参数中没有actionId"
);
result
=
false
;
result
=
false
;
}
}
/****校验Http请求参数有效性: 校验参数->actionId存在****/
/****校验Http请求参数有效性: 校验参数->actionId存在****/
else
{
else
{
int
actionId
;
int
actionId
;
if
(
content
[
"actionId"
].
isString
())
if
(
content
[
"actionId"
].
isString
()){
{
actionId
=
content
[
"actionId"
].
toString
().
toInt
();
actionId
=
content
[
"actionId"
].
toString
().
toInt
();
}
}
else
{
else
{
actionId
=
content
[
"actionId"
].
toInt
();
actionId
=
content
[
"actionId"
].
toInt
();
}
}
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Http请求[action:%1] --->>>>]"
).
arg
(
actionId
);
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Http请求[action:%1] --->>>>]"
).
arg
(
actionId
);
...
@@ -1328,22 +1366,21 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
...
@@ -1328,22 +1366,21 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
{
{
QLOG_INFO
()
<<
__FUNCTION__
;
QLOG_INFO
()
<<
__FUNCTION__
;
bool
result
=
true
;
bool
result
=
true
;
if
(
!
m_bLoginResult
&&
content
.
contains
(
"storeId"
))
if
(
!
m_bLoginResult
&&
content
.
contains
(
"storeId"
))
{
{
result
=
_ResponseSimReqTryLogin
(
content
,
error
);
result
=
_ResponseSimReqTryLogin
(
content
,
error
);
}
}
if
(
result
/*&&content.contains("orderId")*/
){
if
(
result
/*&&content.contains("orderId")*/
){
result
=
_ResponseSimReqFristOrderData
(
data
,
error
,
content
[
"orderId"
].
toString
());
result
=
_ResponseSimReqFristOrderData
(
data
,
error
,
content
[
"orderId"
].
toString
());
}
}
else
{
else
{
result
=
false
;
result
=
false
;
if
(
error
.
isEmpty
())
if
(
error
.
isEmpty
())
{
{
error
=
QString
::
fromLocal8Bit
(
"准备响应Simphony_Script请求前登陆门店失败"
);
error
=
QString
::
fromLocal8Bit
(
"准备响应Simphony_Script请求前登陆门店失败"
);
}
}
}
}
return
result
;
return
result
;
}
}
bool
FlowControl
::
_ResponseSimphony02Request
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
bool
FlowControl
::
_ResponseSimphony02Request
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
{
{
return
true
;
return
true
;
...
@@ -1359,39 +1396,33 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
...
@@ -1359,39 +1396,33 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
if
(
m_bLoginResult
&&
content
.
contains
(
"orderId"
)){
if
(
m_bLoginResult
&&
content
.
contains
(
"orderId"
)){
QString
orderId
=
content
[
"orderId"
].
toString
();
QString
orderId
=
content
[
"orderId"
].
toString
();
QString
posCheckNo
=
content
[
"posSaleId"
].
toString
();
QString
posCheckNo
=
content
[
"posSaleId"
].
toString
();
if
(
posCheckNo
.
isEmpty
())
if
(
posCheckNo
.
isEmpty
())
{
{
posCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderId
);
posCheckNo
=
m_orderIdToPosCheckNoMap
.
value
(
orderId
);
}
}
if
(
!
posCheckNo
.
isEmpty
()
&&!
orderId
.
isEmpty
())
if
(
!
posCheckNo
.
isEmpty
()
&&!
orderId
.
isEmpty
())
{
{
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
{
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[ACTION:04:汇报小票号] 订单:%1 , 汇报小票号:%2:--->>>>]"
).
arg
(
orderId
,
posCheckNo
);
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[04:返回小票号] %1订单已经成功推送给simphony:--->>>>]"
).
arg
(
orderId
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
}
}
OrderObject
*
order_p
=
m_FmOrdersMap
.
value
(
orderId
);
OrderObject
*
order_p
=
m_FmOrdersMap
.
value
(
orderId
);
if
(
!
order_p
){
if
(
!
order_p
)
{
QLOG_ERROR
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
QLOG_ERROR
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
error
=
QString
::
fromLocal8Bit
(
"%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
error
=
QString
::
fromLocal8Bit
(
"%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2"
).
arg
(
orderId
).
arg
(
m_FmOrdersMap
.
size
());
return
false
;
return
false
;
}
}
if
(
m_simValidOrdersList
.
contains
(
orderId
))
if
(
m_simValidOrdersList
.
contains
(
orderId
))
{
{
/***** 汇报POS小票号是否成功;begin:*********/
/***** 汇报POS小票号是否成功;begin:*********/
bool
bRetReportCheckNo
=
false
;
bool
bRetReportCheckNo
=
false
;
if
(
order_p
->
pushOrderType
==
1
)
if
(
order_p
->
pushOrderType
==
1
)
{
{
order_p
->
isPush
==
true
;
SimProcOrderDB
::
getInstance
().
updatePushOrderStatus
(
orderId
,
1
);
SimProcOrderDB
::
getInstance
().
updatePushOrderStatus
(
orderId
,
1
);
}
else
{
order_p
->
isPush
==
true
;
order_p
->
isCancle
==
true
;
}
else
if
(
0
==
order_p
->
pushOrderType
)
{
SimProcOrderDB
::
getInstance
().
updateRefundOrderStatus
(
orderId
,
1
);
SimProcOrderDB
::
getInstance
().
updateRefundOrderStatus
(
orderId
,
1
);
order_p
->
isCancle
=
true
;
}
}
bRetReportCheckNo
=
SimProcOrderDB
::
getInstance
().
updatePosOrderCheckNo
(
orderId
,
posCheckNo
);
bRetReportCheckNo
=
SimProcOrderDB
::
getInstance
().
updatePosOrderCheckNo
(
orderId
,
posCheckNo
);
/***** 解析 汇报POS小票号是否成功:bRetReportCheckNo:true->成功********/
/***** 解析 汇报POS小票号是否成功:bRetReportCheckNo:true->成功********/
QJsonObject
rObj
,
cObj
;
QJsonObject
rObj
,
cObj
;
rObj
.
insert
(
"fm_cmd"
,
""
);
rObj
.
insert
(
"fm_cmd"
,
""
);
...
@@ -1399,40 +1430,28 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
...
@@ -1399,40 +1430,28 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
cObj
.
insert
(
"paid_trans_id"
,
orderId
);
cObj
.
insert
(
"paid_trans_id"
,
orderId
);
if
(
bRetReportCheckNo
){
//已经汇报完小票号,因此必须从 m_simValidOrdersList 列表中移除;
if
(
bRetReportCheckNo
){
// 已经汇报完小票号,因此必须从 m_simValidOrdersList 列表中移除;
m_OrderEntryMutex
.
lock
();
m_simValidOrdersList
.
removeOne
(
orderId
);
m_OrderEntryMutex
.
unlock
();
cObj
.
insert
(
"reqResult"
,
1
);
// 汇报POS小票号结果:[1:成功;0:失败]
cObj
.
insert
(
"reqResult"
,
1
);
// 汇报POS小票号结果:[1:成功;0:失败]
rObj
.
insert
(
"pay_id"
,
cObj
);
rObj
.
insert
(
"pay_id"
,
cObj
);
data
=
rObj
;
data
=
rObj
;
}
/***** 解析 汇报POS小票号是否成功:bRetReportCheckNo:true->成功*****/
else
{
result
=
false
;
error
=
QString
::
fromLocal8Bit
(
"汇报POS小票号结果失败"
);
// 即使汇报小票号失败,同样也必须将此订单从 m_simValidOrdersList 列表中移除;
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
m_simValidOrdersList
.
removeOne
(
orderId
);
m_simValidOrdersList
.
removeOne
(
orderId
);
m_OrderEntryMutex
.
unlock
();
m_OrderEntryMutex
.
unlock
();
}
/***** 解析 汇报POS小票号是否成功:bRetReportCheckNo:true->成功*****/
else
{
result
=
false
;
error
=
QString
::
fromLocal8Bit
(
"汇报POS小票号结果失败"
);
// 即使汇报小票号失败,同样也必须将此订单从 m_simValidOrdersList 列表中移除:【汇报小票号的前提条件就是:POS已经结单完成】;
cObj
.
insert
(
"reqResult"
,
0
);
// 汇报POS小票号结果:[1:成功;0:失败]
cObj
.
insert
(
"reqResult"
,
0
);
// 汇报POS小票号结果:[1:成功;0:失败]
rObj
.
insert
(
"pay_id"
,
cObj
);
rObj
.
insert
(
"pay_id"
,
cObj
);
data
=
rObj
;
data
=
rObj
;
m_OrderEntryMutex
.
lock
();
m_simValidOrdersList
.
removeOne
(
orderId
);
m_OrderEntryMutex
.
unlock
();
}
}
}
}
/* 汇报完小票号后,就必须将其从 m_simValidOrdersList 列表中移除;
/* 汇报完小票号后,就必须将其从 m_simValidOrdersList 列表中移除;
else {
else {
//????????????????????????????????????????
order_p->isCancle = false;
order_p->isPush = true;
order_p->pushOrderType = 0;
order_p->pushOrderTimes=0;
m_OrderEntryMutex.lock();
if(!m_simValidOrdersList.contains(orderId)) {
m_simValidOrdersList.append(orderId);
}
m_OrderEntryMutex.unlock();
} */
} */
}
else
{
}
else
{
result
=
false
;
result
=
false
;
...
@@ -1469,9 +1488,9 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
...
@@ -1469,9 +1488,9 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
//更新小票号;
//更新小票号;
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
if
(
!
m_orderIdToPosCheckNoMap
.
contains
(
orderId
))
{
{
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[
05:返回小票号,同时更新POS本地数据库打印
] %1订单已经成功推送给simphony:--->>>>]"
).
arg
(
orderId
);
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[
ACTION:05: 更新POS本地数据库打印信息
] %1订单已经成功推送给simphony:--->>>>]"
).
arg
(
orderId
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
m_orderIdToPosCheckNoMap
.
insert
(
orderId
,
posCheckNo
);
}
else
{
}
else
{
if
(
OrderObject
::
Refunded
==
order_p
->
orderStatus
){
if
(
OrderObject
::
Refunded
==
order_p
->
orderStatus
){
if
(
posCheckNo
!=
m_orderIdToPosCheckNoMap
.
value
(
order_p
->
id
)){
if
(
posCheckNo
!=
m_orderIdToPosCheckNoMap
.
value
(
order_p
->
id
)){
m_orderIdToPosCheckNoMap
.
remove
(
order_p
->
id
);
m_orderIdToPosCheckNoMap
.
remove
(
order_p
->
id
);
...
@@ -1574,8 +1593,7 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
...
@@ -1574,8 +1593,7 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
m_storeId
=
content
[
"storeId"
].
toString
();
m_storeId
=
content
[
"storeId"
].
toString
();
m_posId
=
content
[
"posId"
].
toString
();
m_posId
=
content
[
"posId"
].
toString
();
m_cashierId
=
content
[
"operatorId"
].
toString
();
m_cashierId
=
content
[
"operatorId"
].
toString
();
if
(
m_bFirstRecvInfo
)
if
(
m_bFirstRecvInfo
)
{
{
error
=
QString
::
fromLocal8Bit
(
"FMOMS正在登录"
);
error
=
QString
::
fromLocal8Bit
(
"FMOMS正在登录"
);
emit
doLogin
();
emit
doLogin
();
}
}
...
@@ -1585,36 +1603,46 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
...
@@ -1585,36 +1603,46 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
bool
FlowControl
::
_ResponseSimReqFristOrderData
(
QJsonObject
&
data
,
QString
&
error
,
const
QString
&
orderId
)
bool
FlowControl
::
_ResponseSimReqFristOrderData
(
QJsonObject
&
data
,
QString
&
error
,
const
QString
&
orderId
)
{
{
QLOG_INFO
()
<<
__FUNCTION__
<<
error
<<
orderId
;
QLOG_INFO
()
<<
__FUNCTION__
<<
error
<<
orderId
;
QLOG_INFO
()
<<
QString
::
fromLocal8Bit
(
"[<<<<---Simphony_Script请求[ACTION:01: 获取订单数据] 开始获取 OrderId:%1 给simphony:--->>>>>]"
).
arg
(
orderId
);
bool
result
=
true
;
bool
result
=
true
;
if
(
!
m_bLoginResult
)
if
(
!
m_bLoginResult
)
{
{
error
=
QString
::
fromLocal8Bit
(
"FMOMS 未登录"
);
error
=
QString
::
fromLocal8Bit
(
"FMOMS 未登录"
);
return
false
;
return
false
;
}
}
if
(
m_simValidOrdersList
.
isEmpty
())
{
if
(
m_simValidOrdersList
.
isEmpty
())
{
error
=
QString
::
fromLocal8Bit
(
"没有新订单待拉取"
);
error
=
QString
::
fromLocal8Bit
(
"没有新订单待拉取"
);
result
=
true
;
result
=
true
;
}
}
else
{
else
{
error
.
clear
();
error
.
clear
();
QString
orderId
=
m_simValidOrdersList
.
first
();
QString
orderId
=
m_simValidOrdersList
.
first
();
/*
int pullNum=MAXPUTTIMES;
int pullNum=MAXPUTTIMES;
foreach (auto value, m_simValidOrdersList) {
foreach (auto value, m_simValidOrdersList) {
int num = m_FmOrdersMap.value(value)->pushOrderTimes;
int num = m_FmOrdersMap.value(value)->pushOrderTimes;
if
(
pullNum
>
num
)
if(pullNum>num) {
{
pullNum=num;
pullNum=num;
orderId=value;
orderId=value;
}
}
}
}
*/
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
orderId
);
OrderObject
*
orderObject
=
m_FmOrdersMap
.
value
(
orderId
);
if
(
MAXPUTTIMES
==
orderObject
->
pushOrderTimes
)
if
(
MAXPUTTIMES
==
orderObject
->
pushOrderTimes
)
{
{
orderObject
->
pushOrderTimes
=
0
;
orderObject
->
pushOrderTimes
=
0
;
}
else
{
orderObject
->
pushOrderTimes
=
orderObject
->
pushOrderTimes
+
1
;
}
}
orderObject
->
pushOrderTimes
=
orderObject
->
pushOrderTimes
+
1
;
//防止POS出现多次录单:退货单(销售单应该不会);
if
(
SimProcOrderDB
::
getInstance
().
isPushedOrder
(
orderObject
->
id
)
&&
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
)){
error
=
QString
::
fromLocal8Bit
(
"该订单已经被POS系统录入完成"
);
m_OrderEntryMutex
.
lock
();
m_simValidOrdersList
.
removeOne
(
orderObject
->
id
);
m_OrderEntryMutex
.
lock
();
return
true
;
}
QJsonObject
rObj
,
cObj
;
QJsonObject
rObj
,
cObj
;
if
(
orderObject
->
pushOrderType
==
1
)
if
(
orderObject
->
pushOrderType
==
1
)
{
{
...
@@ -1666,8 +1694,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
...
@@ -1666,8 +1694,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
tempOrderPayType
=
83
;
tempOrderPayType
=
83
;
}
}
// 如果是退单,更新订单的来源类型;
// 如果是退单,更新订单的来源类型;
if
(
orderObject
->
isCancle
)
if
(
orderObject
->
pushOrderType
==
0
)
{
{
tempOrderType
=
13
;
tempOrderType
=
13
;
}
}
cObj
.
insert
(
"orderOriginType"
,
tempOrderType
);
cObj
.
insert
(
"orderOriginType"
,
tempOrderType
);
...
@@ -1704,7 +1731,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
...
@@ -1704,7 +1731,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
temp_MSR_NO
=
"-1"
;
temp_MSR_NO
=
"-1"
;
}
}
cObj
.
insert
(
"msr_card_no"
,
temp_MSR_NO
);
// MSR卡号
cObj
.
insert
(
"msr_card_no"
,
temp_MSR_NO
);
// MSR卡号
cObj
.
insert
(
"retSyncOrderPrintInfo"
,
0
);
// 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0]
//
cObj.insert("retSyncOrderPrintInfo",0); // 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0]
cObj
.
insert
(
"dis_platform_fee"
,
/*orderObject->dis_platform_fee*/
0
);
// 平台承担优惠金额
cObj
.
insert
(
"dis_platform_fee"
,
/*orderObject->dis_platform_fee*/
0
);
// 平台承担优惠金额
cObj
.
insert
(
"send_fee"
,
orderObject
->
deliveryPrice
);
// 配送费
cObj
.
insert
(
"send_fee"
,
orderObject
->
deliveryPrice
);
// 配送费
cObj
.
insert
(
"shop_fee"
,
/*orderObject->total_fee-orderObject->send_fee-orderObject->service_fee-orderObject->dis_shop_fee*/
0
);
// 商户能够拿到的钱(去除平台佣金)
cObj
.
insert
(
"shop_fee"
,
/*orderObject->total_fee-orderObject->send_fee-orderObject->service_fee-orderObject->dis_shop_fee*/
0
);
// 商户能够拿到的钱(去除平台佣金)
...
...
fmTakeout/DTools/dataManger.cpp
View file @
b3cb2ebb
...
@@ -151,7 +151,7 @@ QJsonObject DataManger::GetRefundOrderData(int reasonCode,const QString &reason,
...
@@ -151,7 +151,7 @@ QJsonObject DataManger::GetRefundOrderData(int reasonCode,const QString &reason,
}
}
rObj
.
insert
(
JSON_ORDERID
,
orderId
);
rObj
.
insert
(
JSON_ORDERID
,
orderId
);
rObj
.
insert
(
"productIds"
,
productIds
);
rObj
.
insert
(
"productIds"
,
productIds
);
rObj
.
insert
(
"canceledCause"
,
reason
);
rObj
.
insert
(
"canceledCause"
,
reason
Code
);
rObj
.
insert
(
JSON_POSIPADDRESS
,
QString
(
"http://"
)
+
m_posIpAddress
);
rObj
.
insert
(
JSON_POSIPADDRESS
,
QString
(
"http://"
)
+
m_posIpAddress
);
}
}
// 其他退单原因;
// 其他退单原因;
...
...
fmTakeout/DTools/simProcOrderDB.cpp
View file @
b3cb2ebb
...
@@ -87,7 +87,7 @@ bool SimProcOrderDB::updatePushOrderStatus(const QString &orderId, const int &pu
...
@@ -87,7 +87,7 @@ bool SimProcOrderDB::updatePushOrderStatus(const QString &orderId, const int &pu
result
=
false
;
result
=
false
;
}
}
else
{
else
{
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:Update OrderId %1 pushOrderStatus success
--->>>>]"
).
arg
(
orderId
);
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:Update OrderId %1 pushOrderStatus success
;pushOrderStatus:%2--->>>>]"
).
arg
(
orderId
).
arg
(
pushOrderStatus
);
result
=
true
;
result
=
true
;
}
}
db
.
close
();
db
.
close
();
...
@@ -114,6 +114,7 @@ bool SimProcOrderDB::isPushedOrder(const QString &orderId)
...
@@ -114,6 +114,7 @@ bool SimProcOrderDB::isPushedOrder(const QString &orderId)
while
(
query
.
next
())
while
(
query
.
next
())
{
{
result
=
query
.
value
(
0
).
toBool
();
result
=
query
.
value
(
0
).
toBool
();
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:isPushedOrder orderId:%1 isPushedOrder:%2 --->>>>]"
).
arg
(
orderId
).
arg
(
result
);
}
}
db
.
close
();
db
.
close
();
m_mutex
.
unlock
();
m_mutex
.
unlock
();
...
@@ -138,7 +139,7 @@ bool SimProcOrderDB::updateRefundOrderStatus(const QString &orderId, const int &
...
@@ -138,7 +139,7 @@ bool SimProcOrderDB::updateRefundOrderStatus(const QString &orderId, const int &
result
=
false
;
result
=
false
;
}
}
else
{
else
{
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:Update OrderId %1 refundOrderStatus Successd
--->>>>]"
).
arg
(
orderId
);
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:Update OrderId %1 refundOrderStatus Successd
; refundOrderStatus:%2 --->>>>]"
).
arg
(
orderId
).
arg
(
refundOrderStatus
);
result
=
true
;
result
=
true
;
}
}
db
.
close
();
db
.
close
();
...
@@ -165,6 +166,7 @@ bool SimProcOrderDB::isRefundOrder(const QString &orderId)
...
@@ -165,6 +166,7 @@ bool SimProcOrderDB::isRefundOrder(const QString &orderId)
while
(
query
.
next
())
while
(
query
.
next
())
{
{
result
=
query
.
value
(
0
).
toBool
();
result
=
query
.
value
(
0
).
toBool
();
QLOG_INFO
()
<<
QString
(
"[<<<<---SimProcOrderDB::isRefundOrder: orderId:%1, isRefundOrder:%2--->>>>]"
).
arg
(
orderId
).
arg
(
result
);
}
}
db
.
close
();
db
.
close
();
m_mutex
.
unlock
();
m_mutex
.
unlock
();
...
@@ -318,7 +320,7 @@ bool SimProcOrderDB::updatePosOrderCheckNo(const QString &orderId, const QString
...
@@ -318,7 +320,7 @@ bool SimProcOrderDB::updatePosOrderCheckNo(const QString &orderId, const QString
result
=
false
;
result
=
false
;
}
}
else
{
else
{
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:
Update OrderId %1 posCheckNo Success--->>>>]"
).
arg
(
orderId
);
QLOG_INFO
()
<<
QString
(
"[<<<<---Sqlite Database:
Action4: Report CheckNo : Update OrderId:%1 posCheckNo:%2 Success--->>>>]"
).
arg
(
orderId
,
posOrderCheckNo
);
result
=
true
;
result
=
true
;
}
}
db
.
close
();
db
.
close
();
...
...
fmTakeout/floatForm.cpp
View file @
b3cb2ebb
...
@@ -147,21 +147,21 @@ void FloatForm::onStartRemind(int type)
...
@@ -147,21 +147,21 @@ void FloatForm::onStartRemind(int type)
{
{
switch
(
type
)
switch
(
type
)
{
{
case
0
:
case
REMIND_CONFIRMED_ORDER
:
m_remindWav
=
QString
(
"%1/wav/msg.wav"
).
arg
(
QApplication
::
applicationDirPath
());
m_remindWav
=
QString
(
"%1/wav/msg.wav"
).
arg
(
QApplication
::
applicationDirPath
());
// 加上音频的时长
// 加上音频的时长
m_wavPlayInterval
=
ConfigManger
::
GetInstance
().
GetSoundInterval
()
+
VALUE_NEWORDERTIME
;
m_wavPlayInterval
=
ConfigManger
::
GetInstance
().
GetSoundInterval
()
+
VALUE_NEWORDERTIME
;
break
;
break
;
case
1
:
case
REMIND_REQREFUND_ORDER
:
m_remindWav
=
QString
(
"%1/wav/msg1.wav"
).
arg
(
QApplication
::
applicationDirPath
());
m_remindWav
=
QString
(
"%1/wav/msg1.wav"
).
arg
(
QApplication
::
applicationDirPath
());
m_wavPlayInterval
=
ConfigManger
::
GetInstance
().
GetSoundInterval
()
+
VALUE_REFUNDORDERTIME
;
m_wavPlayInterval
=
ConfigManger
::
GetInstance
().
GetSoundInterval
()
+
VALUE_REFUNDORDERTIME
;
break
;
break
;
}
}
if
(
m_bReminding
)
if
(
m_bReminding
)
{
{
return
;
return
;
}
else
}
else
{
{
m_bReminding
=
true
;
m_bReminding
=
true
;
}
}
m_remindTimer
.
start
(
1000
*
30
);
m_remindTimer
.
start
(
1000
*
30
);
...
...
fmTakeout/mainForm.cpp
View file @
b3cb2ebb
...
@@ -97,7 +97,7 @@ void MainForm::MyShow()
...
@@ -97,7 +97,7 @@ void MainForm::MyShow()
m_resultForm
=
new
QListWidget
(
this
);
m_resultForm
=
new
QListWidget
(
this
);
m_resultForm
->
setObjectName
(
"mainListWdg0"
);
m_resultForm
->
setObjectName
(
"mainListWdg0"
);
m_resultForm
->
setFixedSize
(
4
0
0
,
200
);
m_resultForm
->
setFixedSize
(
4
2
0
,
200
);
m_resultForm
->
move
(
70
,
ui
->
mainFrmSearch
->
pos
().
y
()
-
190
);
m_resultForm
->
move
(
70
,
ui
->
mainFrmSearch
->
pos
().
y
()
-
190
);
m_resultForm
->
hide
();
m_resultForm
->
hide
();
connect
(
m_resultForm
,
&
QListWidget
::
itemClicked
,
this
,
&
MainForm
::
onSearchResultItemClicked
);
connect
(
m_resultForm
,
&
QListWidget
::
itemClicked
,
this
,
&
MainForm
::
onSearchResultItemClicked
);
...
...
fmTakeout/preDefine.h
View file @
b3cb2ebb
...
@@ -149,6 +149,19 @@
...
@@ -149,6 +149,19 @@
#define PROPERTY_SHIFTID "shiftId" // 班次编号
#define PROPERTY_SHIFTID "shiftId" // 班次编号
#define PROPERTY_SHIFTNAME "shiftName" // 班次名称
#define PROPERTY_SHIFTNAME "shiftName" // 班次名称
// 悬浮框: 提醒订单的类型
#define REMIND_NEW_ORDER 2 // 新订单: 目前不存在case
#define REMIND_CONFIRMED_ORDER 3 // 已确认的订单(制作中): 最多的case
#define REMIND_SENDOUT_ORDER 4 // 已配送订单: 不应该提示
#define REMIND_FINISHED_ORDER 5 // 已完成订单: 不应该提示
#define REMIND_REFUNDED_ORDER 6 // 已退款订单: 最多且重要的case;
#define REMIND_REQREFUND_ORDER 7 // 请求退单的订单: 目前如果有请求退单;POS会自动发起退单请求,完成退单动作;
#define REMIND_AGRREFUND_ORDER 30
#define REMIND_COMPLAINT_ORDER 12 // 客诉单:最多且重要的case;
// 服务器返回正确值
// 服务器返回正确值
#define JSON_STATUSCODE_OK 100
#define JSON_STATUSCODE_OK 100
// 默认拉取订单的间隔时间
// 默认拉取订单的间隔时间
...
...
fmTakeout/refdishesForm.cpp
View file @
b3cb2ebb
...
@@ -98,6 +98,7 @@ void refDishesForm::_Init()
...
@@ -98,6 +98,7 @@ void refDishesForm::_Init()
ui
->
refDishesTable
->
removeRow
(
i
);
ui
->
refDishesTable
->
removeRow
(
i
);
}
}
ui
->
refDishesTable
->
clear
();
ui
->
refDishesTable
->
clear
();
ui
->
refDishesTable
->
clearContents
();
m_dishesMap
.
clear
();
m_dishesMap
.
clear
();
}
}
...
...
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