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
...
@@ -44,7 +44,7 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
QSqlQuery
query
=
QSqlQuery
(
m_db
);
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
);
query
.
prepare
(
queryStoreId
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
...
@@ -56,7 +56,7 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
...
@@ -56,7 +56,7 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
storeId
=
query
.
value
(
0
).
toString
();
storeId
=
query
.
value
(
0
).
toString
();
m_storeId
=
storeId
;
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
);
query
.
prepare
(
queryDateTime
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
...
@@ -84,24 +84,22 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er
...
@@ -84,24 +84,22 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er
}
}
// 获取在班收银员信息
// 获取在班收银员信息
QSqlQuery
query
=
QSqlQuery
(
m_db
);
QSqlQuery
query
=
QSqlQuery
(
m_db
);
QString
queryCashiers
(
"select * from v_km_cashshift"
);
QString
queryCashiers
(
"select * from v_km_cashshift
;
"
);
query
.
prepare
(
queryCashiers
);
query
.
prepare
(
queryCashiers
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
error
=
query
.
lastError
().
text
();
error
=
query
.
lastError
().
text
();
m_db
.
close
();
m_db
.
close
();
return
false
;
return
false
;
}
else
}
while
(
query
.
next
())
{
{
while
(
query
.
next
())
CashierObject
cashierObj
;
{
cashierObj
.
id
=
query
.
value
(
0
).
toString
();
CashierObject
cashierObj
;
cashierObj
.
name
=
query
.
value
(
1
).
toString
();
cashierObj
.
id
=
query
.
value
(
0
).
toString
();
cashierObj
.
shiftId
=
query
.
value
(
2
).
toString
();
cashierObj
.
name
=
query
.
value
(
1
).
toString
();
cashierObj
.
shiftName
=
query
.
value
(
3
).
toString
();
cashierObj
.
shiftId
=
query
.
value
(
2
).
toString
();
cashiersList
.
append
(
cashierObj
);
cashierObj
.
shiftName
=
query
.
value
(
3
).
toString
();
cashiersList
.
append
(
cashierObj
);
}
}
}
error
=
QString
(
"success"
);
error
=
QString
(
"success"
);
...
@@ -117,6 +115,9 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
...
@@ -117,6 +115,9 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
error
=
m_db
.
lastError
().
text
();
error
=
m_db
.
lastError
().
text
();
return
false
;
return
false
;
}
}
// 先插入顾客信息不管成功与否不影响后续操作
int
custid
=
-
1
;
_InsertInto_p_t_fmwm_custinfo
(
custid
);
// 开启事务
// 开启事务
if
(
!
m_db
.
transaction
())
if
(
!
m_db
.
transaction
())
{
{
...
@@ -125,51 +126,88 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
...
@@ -125,51 +126,88 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
return
false
;
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
();
if
(
_InsertInto_d_t_food_fmbills0
())
m_db
.
rollback
();
{
m_db
.
close
();
if
(
_InsertInto_d_t_bill_fmpay0
())
return
false
;
{
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
();
error
=
m_db
.
lastError
().
text
();
m_db
.
rollback
();
m_db
.
close
();
return
false
;
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
();
error
=
query
.
lastError
().
text
();
m_db
.
rollback
();
m_db
.
close
();
m_db
.
close
();
return
false
;
return
false
;
}
}
if
(
!
_Exec_pr_fmwm
())
while
(
query
.
next
())
{
{
error
=
m_db
.
lastError
().
text
();
stock
.
id
=
query
.
value
(
0
).
toString
();
m_db
.
rollback
();
stock
.
num
=
query
.
value
(
2
).
toInt
();
m_db
.
close
();
stockList
.
append
(
stock
);
return
false
;
}
}
// 都成功则提交
m_db
.
commit
();
error
=
QString
(
"success"
);
error
=
QString
(
"success"
);
m_db
.
close
();
m_db
.
close
();
return
true
;
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
);
QSqlQuery
query
=
QSqlQuery
(
m_db
);
// 查询营业日
// 查询营业日
QDateTime
dbussiness
;
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
);
query
.
prepare
(
queryDateTime
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
return
false
;
}
}
query
.
next
();
query
.
next
();
...
@@ -179,8 +217,8 @@ bool FmPlugin::_InsertInto_d_t_food_fmbill0(const QString& cashierId, const QStr
...
@@ -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,"
QString
queryInsert
(
"insert into d_t_food_fmbill0(cbill_c,cbranch_c,dBusiness,"
"ccashier_c, ccashier_n, cshift_c, cshift_n,"
"ccashier_c, ccashier_n, cshift_c, cshift_n,"
"iguestnum,dtbilltime,dtsettletime,noughtamt,npayamt,"
"iguestnum,dtbilltime,dtsettletime,noughtamt,npayamt,"
"ndisamt,sbilltype,fmwmbillid,sprovider,nfreight)"
"ndisamt,sbilltype,fmwmbillid,sprovider,nfreight
,icustid
)"
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);"
);
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
,?
);"
);
query
.
prepare
(
queryInsert
);
query
.
prepare
(
queryInsert
);
query
.
bindValue
(
0
,
m_orderObject
->
order_id
);
query
.
bindValue
(
0
,
m_orderObject
->
order_id
);
query
.
bindValue
(
1
,
m_storeId
);
query
.
bindValue
(
1
,
m_storeId
);
...
@@ -199,8 +237,10 @@ bool FmPlugin::_InsertInto_d_t_food_fmbill0(const QString& cashierId, const QStr
...
@@ -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
(
14
,
m_orderObject
->
order_id
);
query
.
bindValue
(
15
,
m_orderObject
->
channelName
);
query
.
bindValue
(
15
,
m_orderObject
->
channelName
);
query
.
bindValue
(
16
,
m_orderObject
->
pay_type
.
compare
(
"在线支付"
)
?
"0"
:
_Penny2Dollar
(
m_orderObject
->
send_fee
));
query
.
bindValue
(
16
,
m_orderObject
->
pay_type
.
compare
(
"在线支付"
)
?
"0"
:
_Penny2Dollar
(
m_orderObject
->
send_fee
));
query
.
bindValue
(
17
,
custid
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
return
false
;
}
}
return
true
;
return
true
;
...
@@ -225,6 +265,7 @@ bool FmPlugin::_InsertInto_d_t_food_fmbills0()
...
@@ -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
));
query
.
bindValue
(
6
,
_Penny2Dollar
(
m_orderObject
->
proList
.
at
(
i
)
->
price
*
m_orderObject
->
proList
.
at
(
i
)
->
productAmount
));
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
return
false
;
}
}
}
}
...
@@ -263,6 +304,7 @@ bool FmPlugin::_InsertInto_d_t_bill_fmpay0()
...
@@ -263,6 +304,7 @@ bool FmPlugin::_InsertInto_d_t_bill_fmpay0()
query
.
bindValue
(
4
,
_Penny2Dollar
(
m_orderObject
->
shop_fee
));
query
.
bindValue
(
4
,
_Penny2Dollar
(
m_orderObject
->
shop_fee
));
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
return
false
;
}
}
return
true
;
return
true
;
...
@@ -276,10 +318,12 @@ bool FmPlugin::_Exec_pr_fmwm()
...
@@ -276,10 +318,12 @@ bool FmPlugin::_Exec_pr_fmwm()
query
.
bindValue
(
1
,
0
,
QSql
::
Out
);
query
.
bindValue
(
1
,
0
,
QSql
::
Out
);
if
(
!
query
.
exec
())
if
(
!
query
.
exec
())
{
{
m_lastError
=
query
.
lastError
().
text
();
return
false
;
return
false
;
}
}
if
(
query
.
boundValue
(
1
).
toInt
()
!=
1
)
if
(
query
.
boundValue
(
1
).
toInt
()
!=
1
)
{
{
m_lastError
=
QString
(
"pr_fmwm result[%1]"
).
arg
(
query
.
boundValue
(
1
).
toInt
());
return
false
;
return
false
;
}
}
return
true
;
return
true
;
...
...
fmPlugin/fmPlugin.h
View file @
7d64e3ff
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include "fmplugin_global.h"
#include "fmplugin_global.h"
#include "Model/orderObject.h"
#include "Model/orderObject.h"
#include "Model/cashierObject.h"
#include "Model/cashierObject.h"
#include "Model/stockObject.h"
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDatabase>
#include <QDateTime>
#include <QDateTime>
...
@@ -37,31 +38,43 @@ public:
...
@@ -37,31 +38,43 @@ public:
* */
* */
bool
DoOrderEntry
(
OrderObject
const
*
orderObject
,
const
QString
&
cashierId
,
const
QString
&
cashierName
,
bool
DoOrderEntry
(
OrderObject
const
*
orderObject
,
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
,
QString
&
error
);
const
QString
&
shiftId
,
const
QString
&
shiftName
,
QString
&
error
);
/* 功能:获取库存信息
* 参数:[1]_out库存信息
* 返回:是否成功
* */
bool
GetStockInfo
(
QList
<
StockObject
>&
stockList
,
QString
&
error
);
private
:
private
:
FmPlugin
(){}
FmPlugin
(){}
FmPlugin
(
FmPlugin
const
&
);
FmPlugin
(
FmPlugin
const
&
);
FmPlugin
&
operator
=
(
FmPlugin
const
&
);
FmPlugin
&
operator
=
(
FmPlugin
const
&
);
// 数据库
句柄
// 数据库
对象
QSqlDatabase
m_db
;
QSqlDatabase
m_db
;
// 门店号
// 门店号
QString
m_storeId
;
QString
m_storeId
;
// 订单对象
// 订单对象
const
OrderObject
*
m_orderObject
;
const
OrderObject
*
m_orderObject
;
// 错误信息
QString
m_lastError
;
/* 功能:写入表d_t_food_fmbill0
/* 功能:写入表p_t_fmwm_custinfo(顾客信息表)
* 参数:[1]收银员ID[2]收银员姓名[3]班次ID[4]班次名称
* 参数:[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失败
* 返回:true成功false失败
* */
* */
bool
_InsertInto_d_t_food_fmbill0
(
const
QString
&
cashierId
,
const
QString
&
cashierName
,
bool
_InsertInto_d_t_food_fmbill0
(
const
QString
&
cashierId
,
const
QString
&
cashierName
,
const
QString
&
shiftId
,
const
QString
&
shiftName
);
const
QString
&
shiftId
,
const
QString
&
shiftName
,
int
custid
);
/* 功能:写入表d_t_food_fmbills0
/* 功能:写入表d_t_food_fmbills0
(销售明细表)
* 参数:NULL
* 参数:NULL
* 返回:true成功false失败
* 返回:true成功false失败
* */
* */
bool
_InsertInto_d_t_food_fmbills0
();
bool
_InsertInto_d_t_food_fmbills0
();
/* 功能:写入表d_t_food_fmpay0
/* 功能:写入表d_t_food_fmpay0
(支付表)
* 参数:NULL
* 参数:NULL
* 返回:true成功false失败
* 返回:true成功false失败
* */
* */
...
...
fmTakeaway/Control/flowControl.cpp
View file @
7d64e3ff
...
@@ -52,7 +52,7 @@ bool FlowControl::_Login()
...
@@ -52,7 +52,7 @@ bool FlowControl::_Login()
QJsonObject
recvJson
;
QJsonObject
recvJson
;
// TODO
// 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
,
"正在登录......"
);
emit
showAlert
(
AlertForm
::
LOADING
,
"正在登录......"
);
QLOG_INFO
()
<<
QString
(
"[---login---][requestData:%1]"
).
arg
(
_GetJsonStr
(
sendJson
));
QLOG_INFO
()
<<
QString
(
"[---login---][requestData:%1]"
).
arg
(
_GetJsonStr
(
sendJson
));
...
@@ -76,6 +76,7 @@ bool FlowControl::_Login()
...
@@ -76,6 +76,7 @@ bool FlowControl::_Login()
emit
setStoreInfo
(
m_storeId
);
emit
setStoreInfo
(
m_storeId
);
_PullOrder
();
_PullOrder
();
_SynStock
();
}
}
}
}
...
@@ -115,6 +116,20 @@ bool FlowControl::_PullOrder()
...
@@ -115,6 +116,20 @@ bool FlowControl::_PullOrder()
emit
showAlert
(
AlertForm
::
ERROR
,
QString
(
"获取订单失败![%1]"
).
arg
(
error
));
emit
showAlert
(
AlertForm
::
ERROR
,
QString
(
"获取订单失败![%1]"
).
arg
(
error
));
}
else
}
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
();
QJsonArray
orders
=
recvJson
[
JSON_ORDERS
].
toArray
();
foreach
(
QJsonValue
order
,
orders
)
foreach
(
QJsonValue
order
,
orders
)
{
{
...
@@ -229,8 +244,9 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
...
@@ -229,8 +244,9 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
OrderObject
*
orderObject
=
m_ordersMap
.
value
(
orderId
);
OrderObject
*
orderObject
=
m_ordersMap
.
value
(
orderId
);
emit
showAlert
(
AlertForm
::
LOADING
,
"正在写入销售单......"
);
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
,
if
(
!
FmPlugin
::
GetInstance
().
DoOrderEntry
(
orderObject
,
m_cashierObject
.
id
,
m_cashierObject
.
name
,
m_cashierObject
.
shiftId
,
m_cashierObject
.
shiftName
,
error
))
m_cashierObject
.
shiftId
,
m_cashierObject
.
shiftName
,
error
))
{
{
...
@@ -243,7 +259,11 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
...
@@ -243,7 +259,11 @@ bool FlowControl::_ConfirmOrder(const QString &orderId, const DeliverObject &del
file
.
open
(
QFile
::
WriteOnly
);
file
.
open
(
QFile
::
WriteOnly
);
file
.
close
();
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
;
QString
remark
(
orderObject
->
remark
),
deliveryTime
;
...
@@ -448,6 +468,45 @@ bool FlowControl::_GetCashiers(QList<CashierObject> &cashiersList)
...
@@ -448,6 +468,45 @@ bool FlowControl::_GetCashiers(QList<CashierObject> &cashiersList)
return
result
;
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
FlowControl
::
_CheckCashiers
()
{
{
bool
result
=
false
;
bool
result
=
false
;
...
@@ -484,6 +543,7 @@ void FlowControl::onFlowStart()
...
@@ -484,6 +543,7 @@ void FlowControl::onFlowStart()
m_loginSocket
=
new
BillSocket
(
this
);
m_loginSocket
=
new
BillSocket
(
this
);
m_pullOrderSocket
=
new
BillSocket
(
this
);
m_pullOrderSocket
=
new
BillSocket
(
this
);
m_procOrderSocket
=
new
BillSocket
(
this
);
m_procOrderSocket
=
new
BillSocket
(
this
);
m_syncStockSocket
=
new
BillSocket
(
this
);
if
(
_GetStoreInfo
())
if
(
_GetStoreInfo
())
{
{
...
@@ -553,3 +613,25 @@ void FlowControl::onGetOrderDetails(const QString &orderId)
...
@@ -553,3 +613,25 @@ void FlowControl::onGetOrderDetails(const QString &orderId)
emit
showOrderDetails
(
m_ordersMap
.
value
(
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:
...
@@ -34,6 +34,7 @@ private:
BillSocket
*
m_loginSocket
;
BillSocket
*
m_loginSocket
;
BillSocket
*
m_pullOrderSocket
;
BillSocket
*
m_pullOrderSocket
;
BillSocket
*
m_procOrderSocket
;
BillSocket
*
m_procOrderSocket
;
BillSocket
*
m_syncStockSocket
;
// 拉取订单的时间戳
// 拉取订单的时间戳
QString
m_timestamp
;
QString
m_timestamp
;
// 订单容器
// 订单容器
...
@@ -144,6 +145,11 @@ private slots:
...
@@ -144,6 +145,11 @@ private slots:
* 返回:成功true失败false
* 返回:成功true失败false
* */
* */
bool
_GetCashiers
(
QList
<
CashierObject
>&
cashiersList
);
bool
_GetCashiers
(
QList
<
CashierObject
>&
cashiersList
);
/* 功能:同步库存
* 参数:NULL
* 返回:成功true失败false
* */
bool
_SynStock
();
/* 功能:检测收银员合法性
/* 功能:检测收银员合法性
* 参数:NULL
* 参数:NULL
* 返回:合法true不合法false
* 返回:合法true不合法false
...
@@ -187,7 +193,11 @@ public slots:
...
@@ -187,7 +193,11 @@ public slots:
* 返回:NULL
* 返回:NULL
* */
* */
void
onGetOrderDetails
(
const
QString
&
orderId
);
void
onGetOrderDetails
(
const
QString
&
orderId
);
/* 功能:重新录单
* 参数:NULL
* 返回:NULL
* */
void
onReEntryOrder
(
const
QString
&
orderId
);
};
};
#endif // FLOWCONTROL_H
#endif // FLOWCONTROL_H
fmTakeaway/DTools/configManger.cpp
View file @
7d64e3ff
...
@@ -71,9 +71,9 @@ int ConfigManger::GetSoundInterval()
...
@@ -71,9 +71,9 @@ int ConfigManger::GetSoundInterval()
return
m_userConfig
->
value
(
INI_SOUNDINTERVAL
).
toFloat
()
*
1000
;
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:
...
@@ -65,11 +65,11 @@ public:
* 返回:间隔时长
* 返回:间隔时长
* */
* */
int
GetSoundInterval
();
int
GetSoundInterval
();
/* 功能:获取
是否存在[重新补单]
/* 功能:获取
退款监听端口
* 参数:NULL
* 参数:NULL
* 返回:
true存在false不存在
* 返回:
监听端口
* */
* */
bool
GetIsExistReEntryOrder
();
int
GetListenPort
();
private
:
private
:
ConfigManger
();
ConfigManger
();
...
...
fmTakeaway/DTools/dataManger.cpp
View file @
7d64e3ff
...
@@ -127,3 +127,22 @@ QJsonObject DataManger::GetRefuseRefundData(const QString &reason, const QString
...
@@ -127,3 +127,22 @@ QJsonObject DataManger::GetRefuseRefundData(const QString &reason, const QString
rObj
.
insert
(
JSON_POSVERSION
,
APP_VERSION
);
rObj
.
insert
(
JSON_POSVERSION
,
APP_VERSION
);
return
rObj
;
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 @@
...
@@ -2,6 +2,8 @@
#define DATAMANGER_H
#define DATAMANGER_H
#include <QJsonObject>
#include <QJsonObject>
#include <QJsonArray>
#include "Model/stockObject.h"
class
DataManger
class
DataManger
{
{
...
@@ -60,6 +62,11 @@ public:
...
@@ -60,6 +62,11 @@ public:
* 返回:登录数据
* 返回:登录数据
* */
* */
QJsonObject
GetRefuseRefundData
(
const
QString
&
reason
,
const
QString
&
orderId
);
QJsonObject
GetRefuseRefundData
(
const
QString
&
reason
,
const
QString
&
orderId
);
/* 功能:获取同步库存数据
* 参数:[1]库存信息
* 返回:同步库存数据
* */
QJsonObject
GetSynStockData
(
const
QList
<
StockObject
>&
stockList
);
private
:
private
:
DataManger
(){}
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,
...
@@ -48,6 +48,7 @@ bool BillSocket::Request(const QJsonObject &requestJson, QJsonObject &recvJson,
return
false
;
return
false
;
}
}
recvJson
=
QJsonDocument
::
fromJson
(
recvArray
).
object
();
recvJson
=
QJsonDocument
::
fromJson
(
recvArray
).
object
();
qDebug
()
<<
recvJson
;
reply
->
deleteLater
();
reply
->
deleteLater
();
return
true
;
return
true
;
...
...
fmTakeaway/detailForm.cpp
View file @
7d64e3ff
...
@@ -5,6 +5,8 @@
...
@@ -5,6 +5,8 @@
#include "DTools/configManger.h"
#include "DTools/configManger.h"
#include "Control/flowControl.h"
#include "Control/flowControl.h"
#include "fmPrinter.h"
#include "fmPrinter.h"
#include <QApplication>
#include <QFile>
DetailForm
::
DetailForm
(
QWidget
*
parent
)
:
DetailForm
::
DetailForm
(
QWidget
*
parent
)
:
QDialog
(
parent
),
QDialog
(
parent
),
...
@@ -12,6 +14,7 @@ DetailForm::DetailForm(QWidget *parent) :
...
@@ -12,6 +14,7 @@ DetailForm::DetailForm(QWidget *parent) :
{
{
ui
->
setupUi
(
this
);
ui
->
setupUi
(
this
);
connect
(
this
,
&
DetailForm
::
reEntryOrder
,
&
FlowControl
::
GetInstance
(),
&
FlowControl
::
onReEntryOrder
);
connect
(
this
,
&
DetailForm
::
processOrder
,
&
FlowControl
::
GetInstance
(),
&
FlowControl
::
onProcessOrder
);
connect
(
this
,
&
DetailForm
::
processOrder
,
&
FlowControl
::
GetInstance
(),
&
FlowControl
::
onProcessOrder
);
_Init
();
_Init
();
...
@@ -28,6 +31,7 @@ void DetailForm::InitData(OrderObject *orderObject)
...
@@ -28,6 +31,7 @@ void DetailForm::InitData(OrderObject *orderObject)
// 恢复界面
// 恢复界面
ui
->
detailTable0
->
clearContents
();
ui
->
detailTable0
->
clearContents
();
ui
->
detailTable0
->
setRowCount
(
0
);
ui
->
detailTable0
->
setRowCount
(
0
);
ui
->
detailBtn0
->
show
();
ui
->
detailBtn2
->
show
();
ui
->
detailBtn2
->
show
();
ui
->
detailBtn3
->
show
();
ui
->
detailBtn3
->
show
();
...
@@ -66,7 +70,8 @@ void DetailForm::InitData(OrderObject *orderObject)
...
@@ -66,7 +70,8 @@ void DetailForm::InitData(OrderObject *orderObject)
}
}
ui
->
detailLabRecord
->
setText
(
records
);
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
();
ui
->
detailBtn0
->
hide
();
}
}
...
@@ -108,6 +113,12 @@ void DetailForm::onOperaBtnClicked()
...
@@ -108,6 +113,12 @@ void DetailForm::onOperaBtnClicked()
emit
processOrder
(
pBtn
->
property
(
"operation"
).
toString
(),
pBtn
->
property
(
"orderId"
).
toString
(),
DeliverObject
());
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
()
void
DetailForm
::
on_detailBtn1_clicked
()
{
{
FmPrinter
::
GetInstance
().
DoPrint
(
ConfigManger
::
GetInstance
().
GetPrinterName
(),
m_orderObject
);
FmPrinter
::
GetInstance
().
DoPrint
(
ConfigManger
::
GetInstance
().
GetPrinterName
(),
m_orderObject
);
...
...
fmTakeaway/detailForm.h
View file @
7d64e3ff
...
@@ -41,6 +41,11 @@ signals:
...
@@ -41,6 +41,11 @@ signals:
* 返回:NULL
* 返回:NULL
* */
* */
void
processOrder
(
const
QString
&
operation
,
const
QString
&
orderId
,
const
DeliverObject
&
deliverObj
);
void
processOrder
(
const
QString
&
operation
,
const
QString
&
orderId
,
const
DeliverObject
&
deliverObj
);
/* 功能:补录订单
* 参数:[1]订单编号
* 返回:NULL
* */
void
reEntryOrder
(
const
QString
&
orderId
);
private
slots
:
private
slots
:
/* 功能:处理订单按钮点击
/* 功能:处理订单按钮点击
...
@@ -48,6 +53,11 @@ private slots:
...
@@ -48,6 +53,11 @@ private slots:
* 返回:NULL
* 返回:NULL
* */
* */
void
onOperaBtnClicked
();
void
onOperaBtnClicked
();
/* 功能:处理重新录单按钮点击
* 参数:NULL
* 返回:NULL
* */
void
on_detailBtn0_clicked
();
/* 功能:处理重新打印按钮点击
/* 功能:处理重新打印按钮点击
* 参数:NULL
* 参数:NULL
* 返回:NULL
* 返回:NULL
...
...
fmTakeaway/fmTakeaway.pro
View file @
7d64e3ff
...
@@ -37,7 +37,8 @@ SOURCES += main.cpp\
...
@@ -37,7 +37,8 @@ SOURCES += main.cpp\
settingForm
.
cpp
\
settingForm
.
cpp
\
floatForm
.
cpp
\
floatForm
.
cpp
\
detailForm
.
cpp
\
detailForm
.
cpp
\
Control
/
refundControl
.
cpp
Control
/
refundControl
.
cpp
\
Model
/
stockObject
.
cpp
HEADERS
+=
\
HEADERS
+=
\
mainForm
.
h
\
mainForm
.
h
\
...
@@ -58,7 +59,8 @@ HEADERS += \
...
@@ -58,7 +59,8 @@ HEADERS += \
settingForm
.
h
\
settingForm
.
h
\
floatForm
.
h
\
floatForm
.
h
\
detailForm
.
h
\
detailForm
.
h
\
Control
/
refundControl
.
h
Control
/
refundControl
.
h
\
Model
/
stockObject
.
h
FORMS
+=
mainForm
.
ui
\
FORMS
+=
mainForm
.
ui
\
alertForm
.
ui
\
alertForm
.
ui
\
...
...
fmTakeaway/main.cpp
View file @
7d64e3ff
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
#include "Control/flowControl.h"
#include "Control/flowControl.h"
#include "Control/refundControl.h"
#include "Control/refundControl.h"
#include "floatForm.h"
#include "floatForm.h"
#include "DTools/configManger.h"
using
namespace
QsLogging
;
using
namespace
QsLogging
;
...
@@ -66,7 +67,7 @@ int main(int argc, char *argv[])
...
@@ -66,7 +67,7 @@ int main(int argc, char *argv[])
// 将退款控制器移到工作线程
// 将退款控制器移到工作线程
QThread
refundThread
;
QThread
refundThread
;
RefundControl
::
GetInstance
().
SetListenPort
(
5566
);
RefundControl
::
GetInstance
().
SetListenPort
(
ConfigManger
::
GetInstance
().
GetListenPort
()
);
RefundControl
::
GetInstance
().
moveToThread
(
&
refundThread
);
RefundControl
::
GetInstance
().
moveToThread
(
&
refundThread
);
QObject
::
connect
(
&
refundThread
,
&
QThread
::
started
,
&
RefundControl
::
GetInstance
(),
&
RefundControl
::
run
);
QObject
::
connect
(
&
refundThread
,
&
QThread
::
started
,
&
RefundControl
::
GetInstance
(),
&
RefundControl
::
run
);
refundThread
.
start
();
refundThread
.
start
();
...
...
fmTakeaway/preDefine.h
View file @
7d64e3ff
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#define INI_FLOATOPACITY "Float/opacity"
#define INI_FLOATOPACITY "Float/opacity"
#define INI_BLINKINTERVAL "Float/blinkInterval"
#define INI_BLINKINTERVAL "Float/blinkInterval"
#define INI_SOUNDINTERVAL "Float/soundInterval"
#define INI_SOUNDINTERVAL "Float/soundInterval"
#define INI_
REENTRY "Features/reEntry
"
#define INI_
LISTENPORT "RefundListener/port
"
#define JSON_REQTYPE "reqtype"
#define JSON_REQTYPE "reqtype"
#define JSON_CURRENTUSER "current_user"
#define JSON_CURRENTUSER "current_user"
...
@@ -35,6 +35,10 @@
...
@@ -35,6 +35,10 @@
#define JSON_STATUSCODE "statusCode"
#define JSON_STATUSCODE "statusCode"
#define JSON_STATUS "status"
#define JSON_STATUS "status"
#define JSON_STATUSDESC "status_desc"
#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_MESSAGE "msg"
#define JSON_TIMESTAMPS "timestamp"
#define JSON_TIMESTAMPS "timestamp"
#define JSON_AUTOCONFIRM "autoconfirm"
#define JSON_AUTOCONFIRM "autoconfirm"
...
@@ -90,6 +94,8 @@
...
@@ -90,6 +94,8 @@
#define VALUE_NEWORDERTIME 3000 //TODO
#define VALUE_NEWORDERTIME 3000 //TODO
// 需退款提示音音频时长
// 需退款提示音音频时长
#define VALUE_REFUNDORDERTIME 5000 //TODO
#define VALUE_REFUNDORDERTIME 5000 //TODO
// 同步库存默认时长
#define VALUE_SYNSTOCKINTERVAL 5*60*1000 //TODO
// 拒绝退款理由
// 拒绝退款理由
#define VALUE_REFUSEREFUND_REASON "拒绝退款"
#define VALUE_REFUSEREFUND_REASON "拒绝退款"
...
...
run/config.ini
View file @
7d64e3ff
[FmServer]
[FmServer]
url
=
http://waimaitest.freemudorder.com/api
url
=
http://waimaitest.freemudorder.com/api
\ No newline at end of file
[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
rcc -binary deaufult.qrc -o ../../../build/takeaway-Debug/fmTakeaway/debug/skin/deaufult.rcc
pause
\ No newline at end of file
\ 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