Commit 55247d2d by wuyang.zou

fix bug:1、获取员工是否绑定钱箱,如果没有绑定提示 员工先绑定钱箱:【测试OK】

2、获取员工是否有退货授权权限

3、POS插件退货时,向服务端传 pos系统的登陆员工号;
4、捕捉pos系统的退货授权异常解析成功;
5、生产环境发布生产,会导致门店插件程序的右下脚,网络状态异常,等待生产环境发布正常后,网路状态不能还原成正常
6、插件程序进行加锁,锁住正在POS系统录单的订单,此时不接受OMS服务端推此订单的状态变化;
parent 71598178
......@@ -18,6 +18,7 @@
#include <QFile>
#include <DTools/simProcOrderDB.h>
#include <DTools/PrintSumBillPosDB.h>
#include <DTools/getCaboxAReAuth.h>
#include <QHostInfo>
......@@ -59,7 +60,12 @@ FlowControl::FlowControl()
/***打开SqlServer POS打印汇总信息本地数据库***/
PrintSumBillPosDB::getInstance();
if( !PrintSumBillPosDB::getInstance().initPrintSumBillPosDB() ){
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("尝试打开POS本地数据库失败"));
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("尝试打开POS本地数据库(PrintSumBillPosDB)失败"));
}
/***打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库***/
GetCaboxAReAuth::getInstance();
if( !GetCaboxAReAuth::getInstance().initGetAuthPosDB() ){
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("尝试打开POS本地数据库(GetCaboxAReAuth)失败"));
}
/*** 启动Http服务:用来响应Simphony_Script获取订单的请求***/
loaclHttpServer = new LoaclHttpServer();
......@@ -457,6 +463,10 @@ QString FlowControl::_GetCashierId()
return m_cashierId;
}
QString FlowControl::_GetCashierName()
{
return m_cashierName;
}
bool FlowControl::_SimValidOrdersListIsEmpty(){
return m_simValidOrdersList.empty();
......@@ -526,7 +536,8 @@ bool FlowControl::_Login()
DataManger::GetInstance().SetPartnerId(ConfigManger::GetInstance().GetPartnerId());
emit hideAlert();
emit setStoreInfo(m_storeId);
emit setCashierInfo(m_cashierId);
//emit setCashierInfo(m_cashierId);
emit setCashierInfo(m_cashierName);
m_bLoginResult= true;
m_clearTimer->start(1000*60*60*2); // 5分钟执行一次清理任务:正式上线需要两小时清理一次;
m_heartTimer->start(1000*60*5);
......@@ -751,8 +762,10 @@ bool FlowControl::_SendHeart()
result = false;
//emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("发送心跳失败![%1]").arg(recvJson[JSON_MESSAGE].toString()));
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
}else{
result = true;
emit setNetStatus(QString::fromLocal8Bit("<font color='#f5f5f5'>正常</font>"));
}
//emit setNetStatus(QString::fromLocal8Bit("<font color='#f5f5f5'>正常</font>"));
}
return result;
}
......@@ -878,7 +891,7 @@ bool FlowControl::_RefuseOrder(const QString &orderId, int refuseCode,const QStr
}
}
orderObject->isCancle=true;
orderObject->pushOrderType==0;
orderObject->pushOrderType=0;
m_OrderEntryMutex.unlock();
QLOG_INFO() << QString("[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList.num:%1 --->>>>]")<< m_simValidOrdersList.count();
QLOG_INFO() << QString("[<<<<---FmTakeout _RefuseOrder: m_simValidOrdersList:%1 --->>>>]")<< m_simValidOrdersList;
......@@ -1028,7 +1041,7 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
bool result;
QJsonObject sendJson;
QJsonObject recvJson;
sendJson = DataManger::GetInstance().GetRefundOrderData(reasonCode,reason,orderId,m_FmOrdersMap.value(orderId)->channel, dishesListString);
sendJson = DataManger::GetInstance().GetRefundOrderData(reasonCode,reason,orderId,m_FmOrdersMap.value(orderId)->channel, dishesListString, m_cashierId, m_cashierName);
emit showAlert(AlertForm::LOADING, QString::fromLocal8Bit("正在通信......"));
QLOG_INFO() << QString("[<<<<---Refund Order Begin--->>>>][requestData:%1]")<<sendJson;
// 如果退款原因:商品已售完,使用下面接口; // 如果退款原因:其他,都同意使用一个接口;
......@@ -1263,6 +1276,7 @@ void FlowControl::onUpdDishesForRef(QString channelCode, QMap<QString, int> dish
void FlowControl::onSetStoreOperatingStatus(const QString &channelCode, const QString &channelName, int business_status)
{
//TODO
Q_UNUSED(channelName);
return ;
QString error;
bool result;
......@@ -1331,6 +1345,7 @@ void FlowControl::onDailyReport()
recvJson.insert(JSON_POSNO,m_posId);
recvJson.insert(JSON_STOREID,m_storeId);
recvJson.insert(JSON_USERID,m_cashierId);
recvJson.insert(JSON_USERNAME,m_cashierName);
recvJson.insert(JSON_BUSINESSDATE,m_business);
emit hideAlert();
emit showDailyReportData(recvJson);
......@@ -1369,7 +1384,7 @@ void FlowControl::_CrondClearExpireOrder()
}
m_OrderEntryMutex.unlock();
SimProcOrderDB::getInstance().deleteOrderRecord(QDate::currentDate().addMonths(-1).toString("yyyyMMdd"));
SimProcOrderDB::getInstance().deleteOrderRecord(QDate::currentDate().addDays(-7).toString("yyyyMMdd"));
}
bool FlowControl::_ResponseHttpRequest(const QJsonObject &content,QJsonObject &data, QString& error)
......@@ -1434,11 +1449,11 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
}
if(result/*&&content.contains("orderId")*/){
result=_ResponseSimReqFristOrderData(data,error,content["orderId"].toString());
result=_ResponseSimReqFristOrderData(content, data,error,content["orderId"].toString());
} else {
result = false;
if(error.isEmpty()) {
error=QString::fromLocal8Bit("准备响应Simphony_Script请求前登陆门店失败");
error=QString::fromLocal8Bit("Response Simphony_Script Request 01: Login Store Failed");
}
}
return result;
......@@ -1446,10 +1461,16 @@ bool FlowControl::_ResponseSimphony01Request(const QJsonObject &content, QJsonOb
bool FlowControl::_ResponseSimphony02Request(const QJsonObject &content, QJsonObject &data, QString &error)
{
Q_UNUSED(content);
Q_UNUSED(data);
Q_UNUSED(error);
return true;
}
bool FlowControl::_ResponseSimphony03Request(const QJsonObject &content, QJsonObject &data, QString &error)
{
Q_UNUSED(content);
Q_UNUSED(data);
Q_UNUSED(error);
return true;
}
bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonObject &data, QString &error)
......@@ -1471,7 +1492,7 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
OrderObject* order_p = m_FmOrdersMap.value(orderId);
if (!order_p) {
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("Request Action04: %1 Delivery Order Don't Exist In m_FmOrdersMap[key-map] m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size());
return false;
}
......@@ -1480,7 +1501,7 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
bool bRetReportCheckNo = false;
if(order_p->pushOrderType==1) {
SimProcOrderDB::getInstance().updatePushOrderStatus(orderId,1);
order_p->isPush== true;
order_p->isPush= true;
} else if(0 == order_p->pushOrderType) {
SimProcOrderDB::getInstance().updateRefundOrderStatus(orderId,1);
order_p->isCancle = true;
......@@ -1503,7 +1524,7 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
} /***** 解析 汇报POS小票号是否成功:bRetReportCheckNo:true->成功*****/
else{
result=false;
error=QString::fromLocal8Bit("汇报POS小票号结果失败");
error=QString::fromLocal8Bit("Report POS Check Num Failed");
// 即使汇报小票号失败,同样也必须将此订单从 m_simValidOrdersList 列表中移除:【汇报小票号的前提条件就是:POS已经结单完成】;
cObj.insert("reqResult",0); // 汇报POS小票号结果:[1:成功;0:失败]
rObj.insert("pay_id", cObj);
......@@ -1518,11 +1539,11 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
} */
} else {
result=false;
error=QString::fromLocal8Bit("订单号或者短号不能为空");
error=QString::fromLocal8Bit("Request Action04: Delivery OrderId Or Check Num Can't Empty");
}
} else {
result=false;
error=QString::fromLocal8Bit("请求参数错误");
error=QString::fromLocal8Bit("Request Action04: Request Pragram Error");
}
//****************解锁悬浮框**************//
emit doUnLockFloatFrom();
......@@ -1540,7 +1561,7 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
QString posCheckNo=content["posSaleId"].toString();
if(posCheckNo.isEmpty())
{
error=QString::fromLocal8Bit("%1订单请求对应的小票号不能为空").arg(orderId);
error=QString::fromLocal8Bit("Request Action05: %1 Delivery Order: Check Num Can't Empty").arg(orderId);
return false;
}
if(!posCheckNo.isEmpty()&&!orderId.isEmpty())
......@@ -1548,7 +1569,7 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
OrderObject* order_p = m_FmOrdersMap.value(orderId);
if (!order_p){
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("Request Action05: %1 Delivery Order Don't Exist In m_FmOrdersMap[key-map] m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size());
return false;
}
//更新小票号;
......@@ -1586,7 +1607,7 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
rObj.insert("fm_cmd", "");
rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
cObj.insert("pay_str", QString::fromLocal8Bit("FmTakeout"));
cObj.insert("reqResult",retSyncOrderPrintInfo); //同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败]
cObj.insert("paid_trans_id",orderId);
rObj.insert("pay_id", cObj);
......@@ -1594,7 +1615,7 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
} /***** 解析 同步更新POS本地数据库是否成功:retSyncOrderPrintInfo:0->失败*****/
else{
result=false;
error=QString::fromLocal8Bit("POS本地数据库的打印信息操作失败");
error=QString::fromLocal8Bit("Request Action05:Sync POS Local DataBase-PrintInfo Failed");
}
} else {
m_OrderEntryMutex.lock();
......@@ -1603,11 +1624,11 @@ bool FlowControl::_ResponseSimphony05Request(const QJsonObject &content, QJsonOb
}
} else {
result=false;
error=QString::fromLocal8Bit("订单编号 和 POS小票号不能为空");
error=QString::fromLocal8Bit("Request Action05: Delivery OrderId And Check Num Can't Empty");
}
} else {
result=false;
error=QString::fromLocal8Bit("请求参数错误");
error=QString::fromLocal8Bit("Request Action05: Pragram Error");
}
return result;
}
......@@ -1626,7 +1647,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
OrderObject* order_p = m_FmOrdersMap.value(orderId);
if (!order_p) {
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("Request Action06: %1 Delivery Order Don't Exist In m_FmOrdersMap[key-map]; m_FmOrdersMap.size()=%2").arg(orderId).arg(m_FmOrdersMap.size());
return false;
}
// 判断SIM是否存在错误码:
......@@ -1634,7 +1655,13 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
// 1:SIM录单出异常:转移订单tab至异常单、请求sim的有效订单列表、解锁悬浮框:
int retProcSimExceptCode =0;
if(simExceptCode.toInt()) { //录单异常//
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request:: OrderId:%1 录单异常--->>>>>]").arg(orderId);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request:: OrderId:%1,simExceptCode:%2 录单异常--->>>>>]").arg(orderId).arg(simExceptCode.toInt());
if(10 == simExceptCode.toInt()){
error=QString::fromLocal8Bit("Request Action06 :simExceptCode==10: Catch Sim Refund Auth Exception And Report Success");
retProcSimExceptCode = 1;
result=true;
} // simExceptCode.toInt() != 10 [退货授权出现异常]
else {
if(m_simValidOrdersList.contains(orderId)) {
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderId);
......@@ -1642,13 +1669,14 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
int oldStatus = order_p->orderStatus;
order_p->orderStatus = OrderObject::SimExcept;
emit changeOrderStatus(order_p,oldStatus);
error=QString::fromLocal8Bit("处理SIM录单异常成功");
error=QString::fromLocal8Bit("Request Action06: Catch Sim Recorded Order Exception And Report Success");
retProcSimExceptCode = 1;
result=true;
}
}
} else { //录单正常//
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request:: OrderId:%1 录单成功--->>>>>]").arg(orderId);
error=QString::fromLocal8Bit("处理SIM录单异常成功");
error=QString::fromLocal8Bit("Request Action06: Catch Sim Recorded Order Exception And Report Success");
retProcSimExceptCode = 1;
result=true;
}
......@@ -1657,18 +1685,18 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
rObj.insert("fm_cmd", "");
rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
cObj.insert("pay_str", QString::fromLocal8Bit("FmTakeout"));
cObj.insert("reqResult",retProcSimExceptCode); //响应SIM汇报异常结果:[1:处理异常成功;0:处理异常失败]
cObj.insert("paid_trans_id",orderId);
rObj.insert("pay_id", cObj);
data = rObj;
} else {
result=false;
error=QString::fromLocal8Bit("订单编号 和 SIM错误码不能为空");
error=QString::fromLocal8Bit("Request Action06: Delivery OrderId And Sim Exception ErrorCode Can't Empty");
}
} else {
result=false;
error=QString::fromLocal8Bit("请求参数错误");
error=QString::fromLocal8Bit("Request Action06: Request Pragram Error");
}
//****************解锁悬浮框*****************//
emit doUnLockFloatFrom();
......@@ -1678,6 +1706,7 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject &data, QString &error)
{
Q_UNUSED(data);
QLOG_INFO()<<__FUNCTION__;
bool result=true;
if(!m_bLoginResult){
......@@ -1689,7 +1718,16 @@ bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject
{
error =QString::fromLocal8Bit("订单号不能为空");
return false;
} else {
if(!m_simValidOrdersList.isEmpty()){
QString simValidOrderListFirstOne = m_simValidOrdersList.first();
if(content[JSON_ORDER_ID].toString() == simValidOrderListFirstOne){
error =QString::fromLocal8Bit("当前订单正在录POS系统,请耐心等待");
return false;
}
}
}
// 接受到非码oms插过来的订单,进行向队列中进行添加;
result = _TryAddOrderPull(content[JSON_ORDER_ID].toString(),content[JSON_CHANNEL].toString());
/***组装从FM外卖service端的拉单请求参数***/
......@@ -1705,6 +1743,7 @@ bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject
}
bool FlowControl::_ResponseSimphony12Request(const QJsonObject &content, QJsonObject &data, QString &error)
{
Q_UNUSED(data);
if(!content["storeId"].toString().compare(m_storeId))
{
QJsonArray array=content["data"].toArray();
......@@ -1724,43 +1763,40 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
m_storeId=content["storeId"].toString();
m_posId=content["posId"].toString();
m_cashierId=content["operatorId"].toString();
m_cashierName=content["operatorName"].toString();
if(m_bFirstRecvInfo) {
error = QString::fromLocal8Bit("FMOMS正在登录");
error = QString::fromLocal8Bit("FMOMS Plug-in Program Try Login On");
emit doLogin();
}
return true;
}
bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &error, const QString &orderId)
bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJsonObject &data, QString &error, const QString &orderId)
{
QLOG_INFO()<<__FUNCTION__<<error<<orderId;
m_storeId=content["storeId"].toString();
m_posId=content["posId"].toString();
m_cashierId=content["operatorId"].toString();
m_cashierName=content["operatorName"].toString();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01: 获取订单数据] 开始获取 OrderId:%1 给simphony:--->>>>>]").arg(orderId);
bool result=true;
if(!m_bLoginResult) {
error = QString::fromLocal8Bit("FMOMS 未登录");
error = QString::fromLocal8Bit("FMOMS Plug-in Program Not Login On");
return false;
}
if(m_simValidOrdersList.isEmpty()) {
error = QString::fromLocal8Bit("没有新订单待拉取");
error = QString::fromLocal8Bit("No New Delivery Order Need To Pull.");
result = true;
} else {
error.clear();
QString orderId=m_simValidOrdersList.first();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:]FMOMS已登录,且有订单待拉取:orderId:%1--->>>>>]").arg(orderId);
/*
int pullNum=MAXPUTTIMES;
foreach (auto value, m_simValidOrdersList) {
int num = m_FmOrdersMap.value(value)->pushOrderTimes;
if(pullNum>num) {
pullNum=num;
orderId=value;
}
}
*/
OrderObject* orderObject = m_FmOrdersMap.value(orderId);
if(MAXPUTTIMES==orderObject->pushOrderTimes)
{
if(MAXPUTTIMES==orderObject->pushOrderTimes) {
orderObject->pushOrderTimes = 0;
} else {
orderObject->pushOrderTimes=orderObject->pushOrderTimes+1;
......@@ -1771,7 +1807,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
bool bIsRefundOrder = SimProcOrderDB::getInstance().isRefundOrder(orderObject->id);
if(bIsPushOrder && bIsRefundOrder) {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:] bIsPushOrder: ;bIsRefundOrder: ;--->>>>>]")<<bIsPushOrder<<bIsRefundOrder;
error = QString::fromLocal8Bit("该订单已经被POS系统录入完成");
//error = QString::fromLocal8Bit("该订单已经被POS系统录入完成");
error = QString::fromLocal8Bit("This Delivery Order Have Been Recorded In POS System Successfully");
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderObject->id);
m_OrderEntryMutex.unlock();
......@@ -1779,26 +1816,24 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
}
QJsonObject rObj, cObj;
if(orderObject->pushOrderType==1)
{
if(orderObject->pushOrderType==1) {
rObj.insert("fm_cmd", "put_order");
}
else{
} else {
rObj.insert("fm_cmd", "refund_order");
}
rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002");
cObj.insert("pay_str", QString::fromLocal8Bit("非码外卖"));
cObj.insert("pay_str", QString::fromLocal8Bit("FmTakeout"));
int tempOrderType,tempOrderPayType,tempSbkAppPayType=0;
QString tempSbkAppPayValue="0";
// 转换成星巴克规定的订单类型;
//星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单;
if(3 == orderObject->getOrderType()){
if(3 == orderObject->getOrderType()) {
tempOrderType = 12;
tempOrderPayType = 21;
}
// OMS提供的数据://订单渠道: 星巴克APP,百度外卖,饿了么APP,美团外卖 ;
else if("MOD" == orderObject->channel){
else if("MOD" == orderObject->channel) {
tempOrderType = 9;
tempOrderPayType = 84;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡;
......@@ -1885,6 +1920,13 @@ bool FlowControl::_ResponseSimReqFristOrderData(QJsonObject &data, QString &erro
}
cObj.insert("paid_trans_id",orderObject->id);
//cObj.insert("fm_id",orderObject->fm_id);
/************************************************************************************/
int hasCashbox = 0 ,hasRefundAuth = 0;
hasCashbox = GetCaboxAReAuth::getInstance().getUserHasCashBox(m_cashierId);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01: 获取当前用户是否绑定钱箱] hasCashbox:%1:--->>>>>]").arg(hasCashbox);
cObj.insert("hasCashbox",hasCashbox);
cObj.insert("hasRefundAuth",hasRefundAuth);
/************************************************************************************/
rObj.insert("pay_id", cObj);
QJsonArray products;
for(int i=0; i < orderObject->proList.count(); i++)
......
......@@ -32,6 +32,13 @@ public:
* */
QString _GetCashierId();
/* 功能:获取收银员Name
* 参数:NULL
* 返回:是否成功
* */
QString _GetCashierName();
/* 功能:判断SIM有效订单队列list 是否为空;
* 参数:NULL
* 返回:SIM有效订单队列是否为空;
......@@ -67,6 +74,7 @@ private:
QString m_password;
QString m_posId;
QString m_cashierId;
QString m_cashierName;
QDateTime m_bDate;
QString m_storeName;
int m_orderCount;
......@@ -516,7 +524,7 @@ public slots:
*参数:1、请求json参数;2、准备返回请求数据的Buff;3、返回错误信息;
*返回:是否准备成功;
**/
bool _ResponseSimReqFristOrderData(QJsonObject &data,QString &error, const QString &orderId);
bool _ResponseSimReqFristOrderData(const QJsonObject &content,QJsonObject &data,QString &error, const QString &orderId);
};
......
......@@ -46,7 +46,7 @@ QJsonObject DataManger::GetLoginData(const QString &partnerId, const QString &st
const QString &stationId, const QString &cashierId, const QString &ipAddress)
{
QJsonObject rObj;
Q_UNUSED(cashierId);
rObj.insert(JSON_IPADDRESS, ipAddress);
rObj.insert(JSON_PARTNERID,partnerId);
rObj.insert(JSON_ORGCODE, storeId);
......@@ -136,9 +136,11 @@ QJsonObject DataManger::GetCompleteOrderData(const QString &orderId)
return rObj;
}
QJsonObject DataManger::GetRefundOrderData(int reasonCode,const QString &reason, const QString &orderId,const QString& channel,const QString& dishesListString)
QJsonObject DataManger::GetRefundOrderData(int reasonCode,const QString &reason, const QString &orderId,const QString& channel,const QString& dishesListString, const QString& cashierId, const QString& cashierName)
{
QJsonObject rObj;
Q_UNUSED(channel);
Q_UNUSED(reason);
QJsonArray productIds;
QString str = dishesListString;
if(str.length()){
......@@ -150,8 +152,9 @@ QJsonObject DataManger::GetRefundOrderData(int reasonCode,const QString &reason,
rObj.insert(JSON_ORDERID, orderId);
rObj.insert("productIds", productIds);
rObj.insert("canceledCause", QString::number(reasonCode, 10) );
rObj.insert("cashierNumber", cashierId);
rObj.insert("cashierName", cashierName);
rObj.insert(JSON_POSIPADDRESS,QString("http://") + m_posIpAddress);
return rObj;
}
......
......@@ -78,7 +78,7 @@ public:
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject GetRefundOrderData(int reasonCode, const QString& reason, const QString& orderId, const QString &channel,const QString& dishesListString);
QJsonObject GetRefundOrderData(int reasonCode, const QString& reason, const QString& orderId, const QString &channel,const QString& dishesListString,const QString& cashierId,const QString& cashierName);
/* 功能:获取拒绝退单数据
* 参数:[1]时间戳
* 返回:登录数据
......
#include "getCaboxAReAuth.h"
#include "QsLog.h"
#include <QDateTime>
#include "Control/flowControl.h"
#include "preDefine.h"
GetCaboxAReAuth::GetCaboxAReAuth() {
QLOG_INFO()<<"[<<<<---GetCaboxAReAuth:: Structure POS Get Has Cash Box Or Refund Auth DataBase--->>>>]";
}
bool GetCaboxAReAuth::initGetAuthPosDB(){
m_sqlDb = QSqlDatabase::addDatabase("QODBC","GetCaboxAReAuth"); //数据库驱动类型为SQL Server
if(m_sqlDb.isValid()){
QLOG_INFO()<<"[<<<<---SqlServer ODBC driver is valid--->>>>]";
QString dsn="DRIVER={SQL SERVER};SERVER=127.0.0.1\\sqlexpress;DATABASE=DataStore";
m_sqlDb.setDatabaseName(dsn); //设置数据源名称
m_sqlDb.setUserName("sa"); //登录用户
m_sqlDb.setPassword("SIM29@123");
if(!m_sqlDb.open()) { //打开数据库
QLOG_ERROR()<<"[<<<<---SqlServer Open Database error:--->>>>]"<<m_sqlDb.lastError().text();
} else {
QLOG_INFO()<<"[<<<<---SqlServer Test Open database success!:--->>>>]";
m_sqlDb.close();
return true;
}
} else {
QLOG_ERROR()<<"[<<<<---SqlServer ODBC driver no valid--->>>>]";
}
return false;
}
GetCaboxAReAuth &GetCaboxAReAuth::getInstance()
{
static GetCaboxAReAuth GetCaboxAReAuth;
return GetCaboxAReAuth;
}
int GetCaboxAReAuth::getUserHasCashBox(const QString& operatorId){
QMutexLocker mutex(&m_mutex);
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return 0;
}
int result=0;
QSqlQuery query(m_sqlDb);
QLOG_INFO()<<QString("select count(*) from [DataStore].[dbo].employee as A, [DataStore].[dbo].CM_EMPLOYEE_TILL_ASSIGNMENT as B where A.EmployeeID = B.EmployeeID and ObjectNumber='%1'").arg(operatorId);
query.prepare(QString("select count(*) from [DataStore].[dbo].employee as A, [DataStore].[dbo].CM_EMPLOYEE_TILL_ASSIGNMENT as B where A.EmployeeID = B.EmployeeID and ObjectNumber='%1'").arg(operatorId));
if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:getUserHasCashBox--->>>>]"<<query.lastError().text();
result= 0;
}
if(query.first()) {
result= query.value(0).toInt()?1:0;
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,getUserHasCashBox:%2--->>>>]"<<operatorId<<result;
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(0):%2--->>>>]"<<operatorId<<query.value(0).toInt();
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(1):%2--->>>>]"<<operatorId<<query.value(1).toInt();
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(2):%2--->>>>]"<<operatorId<<query.value(2).toInt();
} else {
result = 0;
}
m_sqlDb.close();
return result;
}
int GetCaboxAReAuth::getUserRefundAuth(const QString& operatorId){
QMutexLocker mutex(&m_mutex);
Q_UNUSED(operatorId)
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return 0;
}
int result = 0;
QSqlQuery query(m_sqlDb);
//query.prepare(QString("select distinct 0 from employee ").arg(operatorId));
query.prepare(QString("select distinct 0 from employee "));
if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:getUserRefundAuth--->>>>]"<<query.lastError().text();
result= 0;
}
if(query.first()) {
result= 0; //等待后期更新;
} else {
result = 0;
}
m_sqlDb.close();
return result;
}
#ifndef GETCABOXAREAUTH_H
#define GETCABOXAREAUTH_H
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QObject>
#include <QMutex>
class GetCaboxAReAuth : public QObject
{
Q_OBJECT
public:
// explicit GetCaboxAReAuth(QObject *parent = 0);
static GetCaboxAReAuth& getInstance();
/**
*功能:初始化pos本地数据库;方便后期判断 打开pos本地数据库是否成功;
*参数:[无]
*返回:true:能够成功打开POS本地数据库,false:不能够成功打开POS本地数据库
**/
bool initGetAuthPosDB();
/**
*功能:查询本地的POS系统中当前用户是否已经绑定钱箱;
*参数:[1]当前店员 操作员ID
*返回:1:已经绑定钱箱,0:没有绑定钱箱
**/
int getUserHasCashBox(const QString& operatorId);
/**
*功能:查询本地的POS系统中当前用户是否拥有 经理 或 管理员权限;
*参数:[1]当前店员 操作员ID
*返回:1:是经理权限或是管理员,0:既没有经理权限也没有管理员权限
**/
int getUserRefundAuth(const QString& operatorId);
private:
QMutex m_mutex;
GetCaboxAReAuth();
GetCaboxAReAuth(GetCaboxAReAuth const&);
GetCaboxAReAuth& operator=(GetCaboxAReAuth const&);
QSqlDatabase m_sqlDb;
signals:
public slots:
};
#endif // GETCABOXAREAUTH_H
#include "gethascashboxandrefundauth.h"
GetHasCashboxAndRefundAuth::GetHasCashboxAndRefundAuth()
{
}
......@@ -283,7 +283,7 @@ bool SimProcOrderDB::updatePosOrderCheckNo(const QString &orderId, const QString
QLOG_ERROR()<<query.lastError().text()<<__FUNCTION__;
result= false;
} else {
QLOG_INFO()<<QString("[<<<<---SimProcOrderDB::Action4: Report CheckNo : Update OrderId:%1 posCheckNo:%2 Success--->>>>]").arg(orderId,posOrderCheckNo);
QLOG_INFO()<<QString("[<<<<---SimProcOrderDB::Action4: Report CheckNo : Update OrderId:%1 posCheckNo:%2 Success--->>>>]").arg(orderId).arg(posOrderCheckNo);
result = true;
}
m_sqlDb.close();
......@@ -320,6 +320,7 @@ bool SimProcOrderDB::deleteOrderRecord(QString creatTime)
return false;
}
bool result=true;
QLOG_INFO()<<QString("[<<<<---SimProcOrderDB::begin deleteOrderRecord creatTime:%1--->>>>]").arg(creatTime);
QSqlQuery query(m_sqlDb);
query.prepare(QString("delete from SimProcOrderTable where creatTime<'%1'").arg(creatTime));
if(!query.exec()) {
......
......@@ -5,6 +5,7 @@
BaseObject::BaseObject(const BaseObject &p, QObject *parent)
{
Q_UNUSED(parent);
const QMetaObject *m = p.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{
......
......@@ -55,7 +55,8 @@ SOURCES += main.cpp\
dailyreportForm.cpp \
Model/dailyObject.cpp \
DTools/simProcOrderDB.cpp \
DTools/printSumBillPosDB.cpp
DTools/printSumBillPosDB.cpp \
DTools/getCaboxAReAuth.cpp
HEADERS += \
mainForm.h \
......@@ -89,7 +90,8 @@ HEADERS += \
Model/dailyObject.h \
DTools/dump.h \
DTools/simProcOrderDB.h \
DTools/printSumBillPosDB.h
DTools/printSumBillPosDB.h \
DTools/getCaboxAReAuth.h
FORMS += mainForm.ui \
alertForm.ui \
......
......@@ -57,6 +57,7 @@
#define JSON_POSNO "posNo"
#define JSON_STORENAME "StoreName"
#define JSON_USERID "userId"
#define JSON_USERNAME "userName"
#define JSON_BUSINESSDATE "business_date"
#define JSON_STATUSCODE "statusCode"
#define JSON_LOGINCODE "code"
......
......@@ -25,6 +25,7 @@ void refDishesForm::InitData(OrderObject *obj)
_Init();
int i=0;
Q_UNUSED(i);
foreach (dishesObject *product, obj->proList)
{
ui->refDishesTable->setColumnWidth(0,300);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment