Commit 7d64e3ff by ss.dai

基本完成(未加托盘 未加订单搜索)

parent b633db9d
...@@ -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,15 +84,14 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er ...@@ -84,15 +84,14 @@ 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; CashierObject cashierObj;
...@@ -102,7 +101,6 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er ...@@ -102,7 +101,6 @@ bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &er
cashierObj.shiftName = query.value(3).toString(); cashierObj.shiftName = query.value(3).toString();
cashiersList.append(cashierObj); cashiersList.append(cashierObj);
} }
}
error = QString("success"); error = QString("success");
m_db.close(); m_db.close();
...@@ -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(); {
if(_InsertInto_d_t_bill_fmpay0())
{
if(_Exec_pr_fmwm())
{
// 都成功则提交
m_db.commit();
error = QString("success");
m_db.close(); m_db.close();
return false; return true;
} }
if(!_InsertInto_d_t_food_fmbills0()) }
{ }
error = m_db.lastError().text(); }
// 回滚
error = m_lastError;
m_db.rollback(); m_db.rollback();
m_db.close(); m_db.close();
return false; return false;
} }
if(!_InsertInto_d_t_bill_fmpay0())
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(!_Exec_pr_fmwm()) 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;
} }
// 都成功则提交 while(query.next())
m_db.commit(); {
stock.id = query.value(0).toString();
stock.num = query.value(2).toInt();
stockList.append(stock);
}
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;
......
...@@ -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失败
* */ * */
......
...@@ -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, "正在写入销售单......");
QString orderEntryError(""); QLOG_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, "补录销售单成功");
}
}
...@@ -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
...@@ -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();
} }
......
...@@ -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();
......
...@@ -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;
}
...@@ -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(){}
......
#include "stockObject.h"
#ifndef STOCKOBJECT_H
#define STOCKOBJECT_H
#include <QString>
class StockObject
{
public:
StockObject(){}
QString id; // 菜品ID
QString upc; // 菜品UPC
int num; // 菜品数量
};
#endif // STOCKOBJECT_H
...@@ -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;
......
...@@ -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);
......
...@@ -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
......
...@@ -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 \
......
...@@ -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();
......
...@@ -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 "拒绝退款"
......
[FmServer] [FmServer]
url=http://waimaitest.freemudorder.com/api url=http://waimaitest.freemudorder.com/api
[RefundListener]
port=34953
\ No newline at end of file
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
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