Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
FmTakeaway
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
shangshang.dai
FmTakeaway
Commits
7d64e3ff
Commit
7d64e3ff
authored
Aug 31, 2016
by
ss.dai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基本完成(未加托盘 未加订单搜索)
parent
b633db9d
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
286 additions
and
61 deletions
+286
-61
fmPlugin/fmPlugin.cpp
+80
-36
fmPlugin/fmPlugin.h
+19
-6
fmTakeaway/Control/flowControl.cpp
+85
-3
fmTakeaway/Control/flowControl.h
+11
-1
fmTakeaway/DTools/configManger.cpp
+2
-2
fmTakeaway/DTools/configManger.h
+3
-3
fmTakeaway/DTools/dataManger.cpp
+19
-0
fmTakeaway/DTools/dataManger.h
+7
-0
fmTakeaway/Model/stockObject.cpp
+1
-0
fmTakeaway/Model/stockObject.h
+16
-0
fmTakeaway/Network/billSocket.cpp
+1
-0
fmTakeaway/detailForm.cpp
+12
-1
fmTakeaway/detailForm.h
+10
-0
fmTakeaway/fmTakeaway.pro
+4
-2
fmTakeaway/main.cpp
+2
-1
fmTakeaway/preDefine.h
+7
-1
run/config.ini
+5
-2
run/skin/make.bat
+2
-3
No files found.
fmPlugin/fmPlugin.cpp
View file @
7d64e3ff
...
...
@@ -44,7 +44,7 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
QSqlQuery
query
=
QSqlQuery
(
m_db
);
// 获取门店号
QString
queryStoreId
(
"select sys_var_value from sys_t_system where sys_var_id='g_branch_no'"
);
QString
queryStoreId
(
"select sys_var_value from sys_t_system where sys_var_id='g_branch_no'
;
"
);
query
.
prepare
(
queryStoreId
);
if
(
!
query
.
exec
())
{
...
...
@@ -56,7 +56,7 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
storeId
=
query
.
value
(
0
).
toString
();
m_storeId
=
storeId
;
// 获取营业日
QString
queryDateTime
(
"select sys_var_value from sys_t_system where sys_var_id='dBusiness'"
);
QString
queryDateTime
(
"select sys_var_value from sys_t_system where sys_var_id='dBusiness'
;
"
);
query
.
prepare
(
queryDateTime
);
if
(
!
query
.
exec
())
{
...
...
@@ -84,24 +84,22 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er
}
// 获取在班收银员信息
QSqlQuery
query
=
QSqlQuery
(
m_db
);
QString
queryCashiers
(
"select * from v_km_cashshift"
);
QString
queryCashiers
(
"select * from v_km_cashshift
;
"
);
query
.
prepare
(
queryCashiers
);
if
(
!
query
.
exec
())
{
error
=
query
.
lastError
().
text
();
m_db
.
close
();
return
false
;
}
else
}
while
(
query
.
next
())
{
while
(
query
.
next
())
{
CashierObject
cashierObj
;
cashierObj
.
id
=
query
.
value
(
0
).
toString
();
cashierObj
.
name
=
query
.
value
(
1
).
toString
();
cashierObj
.
shiftId
=
query
.
value
(
2
).
toString
();
cashierObj
.
shiftName
=
query
.
value
(
3
).
toString
();
cashiersList
.
append
(
cashierObj
);
}
CashierObject
cashierObj
;
cashierObj
.
id
=
query
.
value
(
0
).
toString
();
cashierObj
.
name
=
query
.
value
(
1
).
toString
();
cashierObj
.
shiftId
=
query
.
value
(
2
).
toString
();
cashierObj
.
shiftName
=
query
.
value
(
3
).
toString
();
cashiersList
.
append
(
cashierObj
);
}
error
=
QString
(
"success"
);
...
...
@@ -117,6 +115,9 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
error
=
m_db
.
lastError
().
text
();
return
false
;
}
// 先插入顾客信息不管成功与否不影响后续操作
int
custid
=
-
1
;
_InsertInto_p_t_fmwm_custinfo
(
custid
);
// 开启事务
if
(
!
m_db
.
transaction
())
{
...
...
@@ -125,51 +126,88 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
return
false
;
}
// 插入三张临时表后执行存储过程有一个失败则回滚
if
(
!
_InsertInto_d_t_food_fmbill0
(
cashierId
,
cashierName
,
shiftId
,
shiftName
))
if
(
_InsertInto_d_t_food_fmbill0
(
cashierId
,
cashierName
,
shiftId
,
shiftName
,
custid
))
{
error
=
m_db
.
lastError
().
text
();
m_db
.
rollback
();
m_db
.
close
();
return
false
;
if
(
_InsertInto_d_t_food_fmbills0
())
{
if
(
_InsertInto_d_t_bill_fmpay0
())
{
if
(
_Exec_pr_fmwm
())
{
// 都成功则提交
m_db
.
commit
();
error
=
QString
(
"success"
);
m_db
.
close
();
return
true
;
}
}
}
}
if
(
!
_InsertInto_d_t_food_fmbills0
())
// 回滚
error
=
m_lastError
;
m_db
.
rollback
();
m_db
.
close
();
return
false
;
}
bool
FmPlugin
::
GetStockInfo
(
QList
<
StockObject
>
&
stockList
,
QString
&
error
)
{
if
(
!
m_db
.
open
())
{
error
=
m_db
.
lastError
().
text
();
m_db
.
rollback
();
m_db
.
close
();
return
false
;
}
if
(
!
_InsertInto_d_t_bill_fmpay0
())
StockObject
stock
;
QSqlQuery
query
=
QSqlQuery
(
m_db
);
QString
queryStock
(
"select * from v_km_clearfood;"
);
query
.
prepare
(
queryStock
);
if
(
!
query
.
exec
())
{
error
=
m_db
.
lastError
().
text
();
m_db
.
rollback
();
error
=
query
.
lastError
().
text
();
m_db
.
close
();
return
false
;
}
if
(
!
_Exec_pr_fmwm
())
while
(
query
.
next
())
{
error
=
m_db
.
lastError
().
text
();
m_db
.
rollback
();
m_db
.
close
();
return
false
;
stock
.
id
=
query
.
value
(
0
).
toString
();
stock
.
num
=
query
.
value
(
2
).
toInt
();
stockList
.
append
(
stock
);
}
// 都成功则提交
m_db
.
commit
();
error
=
QString
(
"success"
);
m_db
.
close
();
return
true
;
}
bool
FmPlugin
::
_InsertInto_d_t_food_fmbill0
(
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
)
bool
FmPlugin
::
_InsertInto_p_t_fmwm_custinfo
(
int
&
custid
)
{
QSqlQuery
query
=
QSqlQuery
(
m_db
);
// 插入顾客信息表
QString
queryInsert
(
"insert into p_t_fmwm_custinfo(cphone, ccust_n, ssex, saddr) \
values(?,?,?,?) select @@identity;"
);
query
.
prepare
(
queryInsert
);
query
.
bindValue
(
0
,
m_orderObject
->
phone
);
query
.
bindValue
(
1
,
m_orderObject
->
customer
);
query
.
bindValue
(
2
,
""
);
query
.
bindValue
(
3
,
m_orderObject
->
address
);
if
(
!
query
.
exec
())
{
return
false
;
}
query
.
next
();
custid
=
query
.
value
(
0
).
toInt
();
return
true
;
}
bool
FmPlugin
::
_InsertInto_d_t_food_fmbill0
(
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
,
int
custid
)
{
QSqlQuery
query
=
QSqlQuery
(
m_db
);
// 查询营业日
QDateTime
dbussiness
;
QString
queryDateTime
(
"select sys_var_value from sys_t_system where sys_var_id='dBusiness'"
);
QString
queryDateTime
(
"select sys_var_value from sys_t_system where sys_var_id='dBusiness'
;
"
);
query
.
prepare
(
queryDateTime
);
if
(
!
query
.
exec
())
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
}
query
.
next
();
...
...
@@ -179,8 +217,8 @@ bool FmPlugin::_InsertInto_d_t_food_fmbill0(const QString& cashierId, const QStr
QString
queryInsert
(
"insert into d_t_food_fmbill0(cbill_c,cbranch_c,dBusiness,"
"ccashier_c, ccashier_n, cshift_c, cshift_n,"
"iguestnum,dtbilltime,dtsettletime,noughtamt,npayamt,"
"ndisamt,sbilltype,fmwmbillid,sprovider,nfreight)"
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"
);
"ndisamt,sbilltype,fmwmbillid,sprovider,nfreight
,icustid
)"
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
,?
);"
);
query
.
prepare
(
queryInsert
);
query
.
bindValue
(
0
,
m_orderObject
->
order_id
);
query
.
bindValue
(
1
,
m_storeId
);
...
...
@@ -199,8 +237,10 @@ bool FmPlugin::_InsertInto_d_t_food_fmbill0(const QString& cashierId, const QStr
query
.
bindValue
(
14
,
m_orderObject
->
order_id
);
query
.
bindValue
(
15
,
m_orderObject
->
channelName
);
query
.
bindValue
(
16
,
m_orderObject
->
pay_type
.
compare
(
"在线支付"
)
?
"0"
:
_Penny2Dollar
(
m_orderObject
->
send_fee
));
query
.
bindValue
(
17
,
custid
);
if
(
!
query
.
exec
())
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
}
return
true
;
...
...
@@ -225,6 +265,7 @@ bool FmPlugin::_InsertInto_d_t_food_fmbills0()
query
.
bindValue
(
6
,
_Penny2Dollar
(
m_orderObject
->
proList
.
at
(
i
)
->
price
*
m_orderObject
->
proList
.
at
(
i
)
->
productAmount
));
if
(
!
query
.
exec
())
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
}
}
...
...
@@ -263,6 +304,7 @@ bool FmPlugin::_InsertInto_d_t_bill_fmpay0()
query
.
bindValue
(
4
,
_Penny2Dollar
(
m_orderObject
->
shop_fee
));
if
(
!
query
.
exec
())
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
}
return
true
;
...
...
@@ -276,10 +318,12 @@ bool FmPlugin::_Exec_pr_fmwm()
query
.
bindValue
(
1
,
0
,
QSql
::
Out
);
if
(
!
query
.
exec
())
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
}
if
(
query
.
boundValue
(
1
).
toInt
()
!=
1
)
{
m_lastError
=
QString
(
"pr_fmwm result[%1]"
).
arg
(
query
.
boundValue
(
1
).
toInt
());
return
false
;
}
return
true
;
...
...
fmPlugin/fmPlugin.h
View file @
7d64e3ff
...
...
@@ -4,6 +4,7 @@
#include "fmplugin_global.h"
#include "Model/orderObject.h"
#include "Model/cashierObject.h"
#include "Model/stockObject.h"
#include <QtSql/QSqlDatabase>
#include <QDateTime>
...
...
@@ -37,31 +38,43 @@ public:
* */
bool
DoOrderEntry
(
OrderObject
const
*
orderObject
,
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
,
QString
&
error
);
/* 功能:获取库存信息
* 参数:[1]_out库存信息
* 返回:是否成功
* */
bool
GetStockInfo
(
QList
<
StockObject
>&
stockList
,
QString
&
error
);
private
:
FmPlugin
(){}
FmPlugin
(
FmPlugin
const
&
);
FmPlugin
&
operator
=
(
FmPlugin
const
&
);
// 数据库
句柄
// 数据库
对象
QSqlDatabase
m_db
;
// 门店号
QString
m_storeId
;
// 订单对象
const
OrderObject
*
m_orderObject
;
// 错误信息
QString
m_lastError
;
/* 功能:写入表d_t_food_fmbill0
* 参数:[1]收银员ID[2]收银员姓名[3]班次ID[4]班次名称
/* 功能:写入表p_t_fmwm_custinfo(顾客信息表)
* 参数:[1]_out信息ID
* 返回:true成功false失败
* */
bool
_InsertInto_p_t_fmwm_custinfo
(
int
&
custid
);
/* 功能:写入表d_t_food_fmbill0(销售主表)
* 参数:[1]收银员ID[2]收银员姓名[3]班次ID[4]班次名称[5]顾客信息ID
* 返回:true成功false失败
* */
bool
_InsertInto_d_t_food_fmbill0
(
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
);
/* 功能:写入表d_t_food_fmbills0
const
QString
&
shiftId
,
const
QString
&
shiftName
,
int
custid
);
/* 功能:写入表d_t_food_fmbills0
(销售明细表)
* 参数:NULL
* 返回:true成功false失败
* */
bool
_InsertInto_d_t_food_fmbills0
();
/* 功能:写入表d_t_food_fmpay0
/* 功能:写入表d_t_food_fmpay0
(支付表)
* 参数:NULL
* 返回:true成功false失败
* */
...
...
fmTakeaway/Control/flowControl.cpp
View file @
7d64e3ff
...
...
@@ -52,7 +52,7 @@ bool FlowControl::_Login()
QJsonObject
recvJson
;
// TODO
sendJson
=
DataManger
::
GetInstance
().
GetLoginData
(
/*m_storeId*/
"fm9999"
,
SERVER_PASSWORD
,
m_posId
,
m_cashierId
);
sendJson
=
DataManger
::
GetInstance
().
GetLoginData
(
/*m_storeId*/
/*"posoperator"*/
"fm9999"
,
SERVER_PASSWORD
,
m_posId
,
m_cashierId
);
emit
showAlert
(
AlertForm
::
LOADING
,
"正在登录......"
);
QLOG_INFO
()
<<
QString
(
"[---login---][requestData:%1]"
).
arg
(
_GetJsonStr
(
sendJson
));
...
...
@@ -76,6 +76,7 @@ bool FlowControl::_Login()
emit
setStoreInfo
(
m_storeId
);
_PullOrder
();
_SynStock
();
}
}
...
...
@@ -115,6 +116,20 @@ bool FlowControl::_PullOrder()
emit
showAlert
(
AlertForm
::
ERROR
,
QString
(
"获取订单失败![%1]"
).
arg
(
error
));
}
else
{
// 获取门店营业状态
QString
strOpeStatus
(
"正常"
);
QJsonArray
opeStatus
=
recvJson
[
JSON_SHOPSTATUS
].
toArray
();
foreach
(
QJsonValue
status
,
opeStatus
)
{
QJsonObject
jsonObject
=
status
.
toObject
();
if
(
jsonObject
[
JSON_SHOPSTATUSDESC
].
toString
().
compare
(
"营业中"
))
{
strOpeStatus
=
QString
(
"<font color='#ff0000'>异常</font>"
);
break
;
}
}
emit
setOpeStatus
(
strOpeStatus
);
// 获取订单信息
QJsonArray
orders
=
recvJson
[
JSON_ORDERS
].
toArray
();
foreach
(
QJsonValue
order
,
orders
)
{
...
...
@@ -229,8 +244,9 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
OrderObject
*
orderObject
=
m_ordersMap
.
value
(
orderId
);
emit
showAlert
(
AlertForm
::
LOADING
,
"正在写入销售单......"
);
Q
String
orderEntryError
(
"
"
);
Q
LOG_INFO
()
<<
QString
(
"[---order entry begin---]
"
);
// 写入销售单
QString
orderEntryError
(
"
\r\n
写入销售单成功"
);
if
(
!
FmPlugin
::
GetInstance
().
DoOrderEntry
(
orderObject
,
m_cashierObject
.
id
,
m_cashierObject
.
name
,
m_cashierObject
.
shiftId
,
m_cashierObject
.
shiftName
,
error
))
{
...
...
@@ -243,7 +259,11 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
file
.
open
(
QFile
::
WriteOnly
);
file
.
close
();
}
orderEntryError
=
QString
(
"
\r\n
[<font color='#ff0000'>写入销售单失败,可在订单详情页补录.</font>]"
);
orderEntryError
=
QString
(
"
\r\n
[写入销售单失败,可在订单详情页补录.]"
);
QLOG_ERROR
()
<<
QString
(
"order entry failed,[%1]"
).
arg
(
error
);
}
else
{
QLOG_INFO
()
<<
QString
(
"order entry success."
);
}
QString
remark
(
orderObject
->
remark
),
deliveryTime
;
...
...
@@ -448,6 +468,45 @@ bool FlowControl::_GetCashiers(QList<CashierObject> &cashiersList)
return
result
;
}
bool
FlowControl
::
_SynStock
()
{
QList
<
StockObject
>
stockList
;
QString
strStock
,
error
;
int
synInterval
=
VALUE_SYNSTOCKINTERVAL
;
bool
result
;
QLOG_INFO
()
<<
QString
(
"[---get stockInfo---]."
);
result
=
FmPlugin
::
GetInstance
().
GetStockInfo
(
stockList
,
error
);
foreach
(
StockObject
stock
,
stockList
)
{
strStock
.
append
(
QString
(
"|%1,%2,%3|"
).
arg
(
stock
.
id
,
stock
.
upc
).
arg
(
QString
::
number
(
stock
.
num
)));
}
QLOG_INFO
()
<<
QString
(
"get stockInfo finsh. [result:%1][msg:%2][data:%3]"
).
arg
(
result
).
arg
(
error
,
strStock
);
if
(
result
)
{
// 获取库存信息成功则推送到服务器
QJsonObject
sendJson
;
QJsonObject
recvJson
;
sendJson
=
DataManger
::
GetInstance
().
GetSynStockData
(
stockList
);
QLOG_INFO
()
<<
QString
(
"[---push stockInfo---]. [requestData:%1]"
).
arg
(
_GetJsonStr
(
sendJson
));
result
=
m_syncStockSocket
->
Request
(
sendJson
,
recvJson
,
error
);
QLOG_INFO
()
<<
QString
(
"push stockInfo finsh. [result:%1][msg:%2][recvData:%3]"
)
.
arg
(
result
).
arg
(
error
,
_GetJsonStr
(
recvJson
));
if
(
result
)
{
if
(
JSON_STATUSCODE_OK
==
recvJson
[
JSON_STATUSCODE
].
toInt
())
{
synInterval
=
recvJson
[
JSON_SYNCTIME
].
toInt
()
*
1000
;
}
}
}
QLOG_INFO
()
<<
QString
(
"%1 msec after synStock..."
).
arg
(
synInterval
);
QTimer
::
singleShot
(
synInterval
,
this
,
&
FlowControl
::
_SynStock
);
return
result
;
}
bool
FlowControl
::
_CheckCashiers
()
{
bool
result
=
false
;
...
...
@@ -484,6 +543,7 @@ void FlowControl::onFlowStart()
m_loginSocket
=
new
BillSocket
(
this
);
m_pullOrderSocket
=
new
BillSocket
(
this
);
m_procOrderSocket
=
new
BillSocket
(
this
);
m_syncStockSocket
=
new
BillSocket
(
this
);
if
(
_GetStoreInfo
())
{
...
...
@@ -553,3 +613,25 @@ void FlowControl::onGetOrderDetails(const QString &orderId)
emit
showOrderDetails
(
m_ordersMap
.
value
(
orderId
));
}
}
void
FlowControl
::
onReEntryOrder
(
const
QString
&
orderId
)
{
emit
showAlert
(
AlertForm
::
LOADING
,
"正在补录销售单......"
);
QLOG_INFO
()
<<
QString
(
"[---order reEntry begin---]"
);
// 写入销售单
OrderObject
*
orderObject
=
m_ordersMap
.
value
(
orderId
);
QString
error
;
if
(
!
FmPlugin
::
GetInstance
().
DoOrderEntry
(
orderObject
,
m_cashierObject
.
id
,
m_cashierObject
.
name
,
m_cashierObject
.
shiftId
,
m_cashierObject
.
shiftName
,
error
))
{
QLOG_ERROR
()
<<
QString
(
"order reEntry failed,[%1]"
).
arg
(
error
);
emit
showAlert
(
AlertForm
::
ERROR
,
"补录销售单失败"
);
}
else
{
QFile
file
(
QString
(
"%1/orders/%2"
).
arg
(
QApplication
::
applicationDirPath
(),
orderObject
->
order_id
));
file
.
remove
();
QLOG_INFO
()
<<
QString
(
"order reEentry success."
);
emit
showAlert
(
AlertForm
::
SUCCESS
,
"补录销售单成功"
);
}
}
fmTakeaway/Control/flowControl.h
View file @
7d64e3ff
...
...
@@ -34,6 +34,7 @@ private:
BillSocket
*
m_loginSocket
;
BillSocket
*
m_pullOrderSocket
;
BillSocket
*
m_procOrderSocket
;
BillSocket
*
m_syncStockSocket
;
// 拉取订单的时间戳
QString
m_timestamp
;
// 订单容器
...
...
@@ -144,6 +145,11 @@ private slots:
* 返回:成功true失败false
* */
bool
_GetCashiers
(
QList
<
CashierObject
>&
cashiersList
);
/* 功能:同步库存
* 参数:NULL
* 返回:成功true失败false
* */
bool
_SynStock
();
/* 功能:检测收银员合法性
* 参数:NULL
* 返回:合法true不合法false
...
...
@@ -187,7 +193,11 @@ public slots:
* 返回:NULL
* */
void
onGetOrderDetails
(
const
QString
&
orderId
);
/* 功能:重新录单
* 参数:NULL
* 返回:NULL
* */
void
onReEntryOrder
(
const
QString
&
orderId
);
};
#endif // FLOWCONTROL_H
fmTakeaway/DTools/configManger.cpp
View file @
7d64e3ff
...
...
@@ -71,9 +71,9 @@ int ConfigManger::GetSoundInterval()
return
m_userConfig
->
value
(
INI_SOUNDINTERVAL
).
toFloat
()
*
1000
;
}
bool
ConfigManger
::
GetIsExistReEntryOrder
()
int
ConfigManger
::
GetListenPort
()
{
return
m_config
->
value
(
INI_
REENTRY
,
0
).
toBool
();
return
m_config
->
value
(
INI_
LISTENPORT
,
34953
).
toInt
();
}
...
...
fmTakeaway/DTools/configManger.h
View file @
7d64e3ff
...
...
@@ -65,11 +65,11 @@ public:
* 返回:间隔时长
* */
int
GetSoundInterval
();
/* 功能:获取
是否存在[重新补单]
/* 功能:获取
退款监听端口
* 参数:NULL
* 返回:
true存在false不存在
* 返回:
监听端口
* */
bool
GetIsExistReEntryOrder
();
int
GetListenPort
();
private
:
ConfigManger
();
...
...
fmTakeaway/DTools/dataManger.cpp
View file @
7d64e3ff
...
...
@@ -127,3 +127,22 @@ QJsonObject DataManger::GetRefuseRefundData(const QString &reason, const QString
rObj
.
insert
(
JSON_POSVERSION
,
APP_VERSION
);
return
rObj
;
}
QJsonObject
DataManger
::
GetSynStockData
(
const
QList
<
StockObject
>
&
stockList
)
{
QJsonObject
rObj
;
QJsonArray
cObj
;
rObj
.
insert
(
JSON_REQTYPE
,
UPDATE_STOCK
);
for
(
int
i
=
0
;
i
<
stockList
.
count
();
i
++
)
{
QJsonObject
ccObj
;
ccObj
.
insert
(
JSON_STOCKID
,
stockList
.
at
(
i
).
id
);
ccObj
.
insert
(
JSON_STOCKUPC
,
stockList
.
at
(
i
).
upc
);
ccObj
.
insert
(
JSON_STOCK
,
stockList
.
at
(
i
).
num
);
cObj
.
insert
(
i
,
ccObj
);
}
rObj
.
insert
(
JSON_STOCKARRAY
,
cObj
);
rObj
.
insert
(
JSON_TOKEN
,
m_token
);
rObj
.
insert
(
JSON_POSVERSION
,
APP_VERSION
);
return
rObj
;
}
fmTakeaway/DTools/dataManger.h
View file @
7d64e3ff
...
...
@@ -2,6 +2,8 @@
#define DATAMANGER_H
#include <QJsonObject>
#include <QJsonArray>
#include "Model/stockObject.h"
class
DataManger
{
...
...
@@ -60,6 +62,11 @@ public:
* 返回:登录数据
* */
QJsonObject
GetRefuseRefundData
(
const
QString
&
reason
,
const
QString
&
orderId
);
/* 功能:获取同步库存数据
* 参数:[1]库存信息
* 返回:同步库存数据
* */
QJsonObject
GetSynStockData
(
const
QList
<
StockObject
>&
stockList
);
private
:
DataManger
(){}
...
...
fmTakeaway/Model/stockObject.cpp
0 → 100644
View file @
7d64e3ff
#include "stockObject.h"
fmTakeaway/Model/stockObject.h
0 → 100644
View file @
7d64e3ff
#ifndef STOCKOBJECT_H
#define STOCKOBJECT_H
#include <QString>
class
StockObject
{
public
:
StockObject
(){}
QString
id
;
// 菜品ID
QString
upc
;
// 菜品UPC
int
num
;
// 菜品数量
};
#endif // STOCKOBJECT_H
fmTakeaway/Network/billSocket.cpp
View file @
7d64e3ff
...
...
@@ -48,6 +48,7 @@ bool BillSocket::Request(const QJsonObject &requestJson, QJsonObject &recvJson,
return
false
;
}
recvJson
=
QJsonDocument
::
fromJson
(
recvArray
).
object
();
qDebug
()
<<
recvJson
;
reply
->
deleteLater
();
return
true
;
...
...
fmTakeaway/detailForm.cpp
View file @
7d64e3ff
...
...
@@ -5,6 +5,8 @@
#include "DTools/configManger.h"
#include "Control/flowControl.h"
#include "fmPrinter.h"
#include <QApplication>
#include <QFile>
DetailForm
::
DetailForm
(
QWidget
*
parent
)
:
QDialog
(
parent
),
...
...
@@ -12,6 +14,7 @@ DetailForm::DetailForm(QWidget *parent) :
{
ui
->
setupUi
(
this
);
connect
(
this
,
&
DetailForm
::
reEntryOrder
,
&
FlowControl
::
GetInstance
(),
&
FlowControl
::
onReEntryOrder
);
connect
(
this
,
&
DetailForm
::
processOrder
,
&
FlowControl
::
GetInstance
(),
&
FlowControl
::
onProcessOrder
);
_Init
();
...
...
@@ -28,6 +31,7 @@ void DetailForm::InitData(OrderObject *orderObject)
// 恢复界面
ui
->
detailTable0
->
clearContents
();
ui
->
detailTable0
->
setRowCount
(
0
);
ui
->
detailBtn0
->
show
();
ui
->
detailBtn2
->
show
();
ui
->
detailBtn3
->
show
();
...
...
@@ -66,7 +70,8 @@ void DetailForm::InitData(OrderObject *orderObject)
}
ui
->
detailLabRecord
->
setText
(
records
);
if
(
!
ConfigManger
::
GetInstance
().
GetIsExistReEntryOrder
())
QFile
orderFlag
(
QString
(
"%1/orders/%2"
).
arg
(
QApplication
::
applicationDirPath
(),
orderObject
->
order_id
));
if
(
!
orderFlag
.
exists
())
{
ui
->
detailBtn0
->
hide
();
}
...
...
@@ -108,6 +113,12 @@ void DetailForm::onOperaBtnClicked()
emit
processOrder
(
pBtn
->
property
(
"operation"
).
toString
(),
pBtn
->
property
(
"orderId"
).
toString
(),
DeliverObject
());
}
void
DetailForm
::
on_detailBtn0_clicked
()
{
hide
();
emit
reEntryOrder
(
m_orderObject
->
order_id
);
}
void
DetailForm
::
on_detailBtn1_clicked
()
{
FmPrinter
::
GetInstance
().
DoPrint
(
ConfigManger
::
GetInstance
().
GetPrinterName
(),
m_orderObject
);
...
...
fmTakeaway/detailForm.h
View file @
7d64e3ff
...
...
@@ -41,6 +41,11 @@ signals:
* 返回:NULL
* */
void
processOrder
(
const
QString
&
operation
,
const
QString
&
orderId
,
const
DeliverObject
&
deliverObj
);
/* 功能:补录订单
* 参数:[1]订单编号
* 返回:NULL
* */
void
reEntryOrder
(
const
QString
&
orderId
);
private
slots
:
/* 功能:处理订单按钮点击
...
...
@@ -48,6 +53,11 @@ private slots:
* 返回:NULL
* */
void
onOperaBtnClicked
();
/* 功能:处理重新录单按钮点击
* 参数:NULL
* 返回:NULL
* */
void
on_detailBtn0_clicked
();
/* 功能:处理重新打印按钮点击
* 参数:NULL
* 返回:NULL
...
...
fmTakeaway/fmTakeaway.pro
View file @
7d64e3ff
...
...
@@ -37,7 +37,8 @@ SOURCES += main.cpp\
settingForm
.
cpp
\
floatForm
.
cpp
\
detailForm
.
cpp
\
Control
/
refundControl
.
cpp
Control
/
refundControl
.
cpp
\
Model
/
stockObject
.
cpp
HEADERS
+=
\
mainForm
.
h
\
...
...
@@ -58,7 +59,8 @@ HEADERS += \
settingForm
.
h
\
floatForm
.
h
\
detailForm
.
h
\
Control
/
refundControl
.
h
Control
/
refundControl
.
h
\
Model
/
stockObject
.
h
FORMS
+=
mainForm
.
ui
\
alertForm
.
ui
\
...
...
fmTakeaway/main.cpp
View file @
7d64e3ff
...
...
@@ -9,6 +9,7 @@
#include "Control/flowControl.h"
#include "Control/refundControl.h"
#include "floatForm.h"
#include "DTools/configManger.h"
using
namespace
QsLogging
;
...
...
@@ -66,7 +67,7 @@ int main(int argc, char *argv[])
// 将退款控制器移到工作线程
QThread
refundThread
;
RefundControl
::
GetInstance
().
SetListenPort
(
5566
);
RefundControl
::
GetInstance
().
SetListenPort
(
ConfigManger
::
GetInstance
().
GetListenPort
()
);
RefundControl
::
GetInstance
().
moveToThread
(
&
refundThread
);
QObject
::
connect
(
&
refundThread
,
&
QThread
::
started
,
&
RefundControl
::
GetInstance
(),
&
RefundControl
::
run
);
refundThread
.
start
();
...
...
fmTakeaway/preDefine.h
View file @
7d64e3ff
...
...
@@ -24,7 +24,7 @@
#define INI_FLOATOPACITY "Float/opacity"
#define INI_BLINKINTERVAL "Float/blinkInterval"
#define INI_SOUNDINTERVAL "Float/soundInterval"
#define INI_
REENTRY "Features/reEntry
"
#define INI_
LISTENPORT "RefundListener/port
"
#define JSON_REQTYPE "reqtype"
#define JSON_CURRENTUSER "current_user"
...
...
@@ -35,6 +35,10 @@
#define JSON_STATUSCODE "statusCode"
#define JSON_STATUS "status"
#define JSON_STATUSDESC "status_desc"
#define JSON_STOCK "stock"
#define JSON_STOCKID "sku_id"
#define JSON_STOCKARRAY "skus"
#define JSON_STOCKUPC "sku_upc"
#define JSON_MESSAGE "msg"
#define JSON_TIMESTAMPS "timestamp"
#define JSON_AUTOCONFIRM "autoconfirm"
...
...
@@ -90,6 +94,8 @@
#define VALUE_NEWORDERTIME 3000 //TODO
// 需退款提示音音频时长
#define VALUE_REFUNDORDERTIME 5000 //TODO
// 同步库存默认时长
#define VALUE_SYNSTOCKINTERVAL 5*60*1000 //TODO
// 拒绝退款理由
#define VALUE_REFUSEREFUND_REASON "拒绝退款"
...
...
run/config.ini
View file @
7d64e3ff
[FmServer]
url
=
http://waimaitest.freemudorder.com/api
\ No newline at end of file
url
=
http://waimaitest.freemudorder.com/api
[RefundListener]
port
=
34953
\ No newline at end of file
run/skin/make.bat
View file @
7d64e3ff
rcc -binary deaufult.qrc -o ../../../build/takeaway-Debug/fmTakeaway/debug/skin/deaufult.rcc
pause
\ No newline at end of file
rcc -binary deaufult.qrc -o ../../../build/takeaway-Debug/fmTakeaway/debug/skin/deaufult.rcc
\ No newline at end of file
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