Commit 59a0e60e by yunpeng.song

增加销售单线程

parent ac842cff
#include "entryControl.h"
#include "QsLog.h"
#include "DTools/orderstatus.h"
#include "DTools/fmPlugin.h"
#include <QJsonDocument>
#include <QTimer>
EntryControl &EntryControl::GetInstance()
{
static EntryControl pc;
return pc;
}
void EntryControl::start()
{
timer=new QTimer();
timer->start(10000);
connect(timer,&QTimer::timeout,this,&EntryControl::EntryOrder);
}
void EntryControl::stop()
{
qDebug()<<"entrythread stop";
if(timer->isActive())
{
timer->stop();
delete timer;
timer=0;
}
orderList.clear();
}
void EntryControl::EntryOrder()
{
while(!orderList.isEmpty())
{
OrderObject* orderObject=orderList.takeFirst();
QString error;
if(orderObject->status!=3&&orderObject->status!=100)
{
if(isPosRecv(orderObject->records))
{
if(!Orderstatus::getInstance().isentry(orderObject->order_id))
{
QLOG_INFO() << QString("[---begin entry order [%1]---].").arg(_GetJsonStr(FmPlugin::GetInstance()._GetOrderEntryData(orderObject)));
if(!FmPlugin::GetInstance().DoOrderEntry(orderObject, error))
{
QLOG_ERROR() << QString("entry order %1 failed[%2]").arg(orderObject->order_id).arg(error);
emit showEntryResult(orderObject,0);
emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("%1写单失败").
arg(QString(orderObject->channelName+QString::number(orderObject->order_index)+QString::fromLocal8Bit("号单"))));
}
else
{
Orderstatus::getInstance().entryupdate(orderObject->order_id,1);
QLOG_INFO() << QString("[entry order %1 success].").arg(orderObject->order_id);
emit showEntryResult(orderObject,1);
}
}
else{
QLOG_INFO() << QString("[order is already entry].");
}
}
else
{
QLOG_INFO() << QString::fromLocal8Bit("非POS接单");
}
}
else
{
if(!Orderstatus::getInstance().isrefund(orderObject->order_id))
{
QString tmpstr="";
QLOG_INFO() << QString("[---begin refund order[%1]---].").arg(_GetJsonStr(FmPlugin::GetInstance()._GetRefundOrderData(orderObject->order_id)));
if(!FmPlugin::GetInstance().RefundOrder(orderObject->fm_id,error))
{
tmpstr = QString::fromLocal8Bit("\r\n[撤回销售单失败]");
emit showEntryResult(orderObject,0);
emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("%1撤销单失败").arg(QString(orderObject->channelName+QString::number(orderObject->order_index)+QString::fromLocal8Bit("号单"))));
QLOG_INFO() << QString::fromLocal8Bit("refund order %1 failed[%2]").arg(orderObject->fm_id).arg(error);
}else
{
tmpstr = QString::fromLocal8Bit("\r\n[撤回销售单成功]");
QLOG_INFO() << QString::fromLocal8Bit("refund order %1 seccess").arg(orderObject->order_id);
Orderstatus::getInstance().refundupdate(orderObject->order_id,1);
emit showEntryResult(orderObject,1);
}
}
else{
QLOG_INFO() << QString("order is already refund");
}
}
}
}
void EntryControl::onAddOrder(OrderObject *order)
{
orderList.append(order);
}
bool EntryControl::isPosRecv(QStringList records)
{
QString record;
foreach (QString str, records) {
record.append(str);
}
QLOG_INFO()<<record;
return record.contains(QString::fromLocal8Bit("[SYS]自动接单"),Qt::CaseInsensitive)||record.contains(QString::fromLocal8Bit("[POS]确认接单"),Qt::CaseInsensitive);
}
QString EntryControl::_GetJsonStr(const QByteArray &json)
{
return QString(json).replace("\"","");
}
#ifndef PLUGINCONTROL_H
#define PLUGINCONTROL_H
#include <QObject>
#include "Model/orderObject.h"
#include <QStringList>
#include "alertForm.h"
#include <QTimer>
class EntryControl : public QObject
{
Q_OBJECT
public:
static EntryControl& GetInstance();
QList<OrderObject*> orderList;
QTimer *timer;
void start();
void stop();
private:
EntryControl(){}
EntryControl(EntryControl const&);
EntryControl& operator =(EntryControl const&);
bool isPosRecv(QStringList records);
QString _GetJsonStr(const QByteArray &json);
void EntryOrder();
signals:
void showAlert(AlertForm::Type type, const QString& msg);
void showEntryResult(OrderObject*,int);
public slots:
void onAddOrder(OrderObject* order);
};
#endif // PLUGINCONTROL_H
...@@ -21,6 +21,7 @@ FlowControl &FlowControl::GetInstance() ...@@ -21,6 +21,7 @@ FlowControl &FlowControl::GetInstance()
FlowControl::FlowControl() FlowControl::FlowControl()
{ {
m_available=true;
m_bFirstRecvInfo = true; m_bFirstRecvInfo = true;
m_timestamp = "0"; m_timestamp = "0";
m_loginSocket = NULL; m_loginSocket = NULL;
...@@ -75,20 +76,20 @@ bool FlowControl::_Login() ...@@ -75,20 +76,20 @@ bool FlowControl::_Login()
QJsonObject recvJson; QJsonObject recvJson;
sendJson = DataManger::GetInstance().GetLoginData(m_storeId, SERVER_PASSWORD, m_posId, m_cashierId); sendJson = DataManger::GetInstance().GetLoginData(m_storeId, SERVER_PASSWORD, m_posId, m_cashierId);
emit showAlert(AlertForm::LOADING, "正在登录......"); emit showAlert(AlertForm::LOADING, QString::fromLocal8Bit("正在登录......"));
QLOG_INFO() << QString("[---login---][requestData:%1]").arg(_GetJsonStr(sendJson)); QLOG_INFO() << QString("[---login---][requestData:%1]").arg(_GetJsonStr(sendJson));
result = m_loginSocket->Request(sendJson, recvJson, error); result = m_loginSocket->Request(sendJson, recvJson, error);
QLOG_INFO() << QString("login finsh. [result:%1][msg:%2][recvData:%3]") QLOG_INFO() << QString("login finsh. [result:%1][msg:%2][recvData:%3]")
.arg(result).arg(error, _GetJsonStr(recvJson)); .arg(result).arg(error, _GetJsonStr(recvJson));
if(!result) if(!result)
{ {
emit showAlert(AlertForm::ERROR, "登录失败![网络错误]"); emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("登录失败![网络错误]"));
}else }else
{ {
if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt()) if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt())
{ {
result = false; result = false;
emit showAlert(AlertForm::ERROR, QString("登录失败![%1]").arg(recvJson[JSON_MESSAGE].toString())); emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("登录失败![%1]").arg(recvJson[JSON_MESSAGE].toString()));
}else }else
{ {
m_timestamp = recvJson[JSON_TIMESTAMPS].toString(); m_timestamp = recvJson[JSON_TIMESTAMPS].toString();
...@@ -99,9 +100,10 @@ bool FlowControl::_Login() ...@@ -99,9 +100,10 @@ bool FlowControl::_Login()
_PullOrder(); _PullOrder();
} }
} }
if(!result) if(!result&&m_available)
{ {
QLOG_INFO() << QString("%1 msec after login...").arg(VALUE_RELOGINTIME); QLOG_INFO() << QString("%1 msec after login...").arg(VALUE_RELOGINTIME);
QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login); QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login);
} }
...@@ -110,12 +112,13 @@ bool FlowControl::_Login() ...@@ -110,12 +112,13 @@ bool FlowControl::_Login()
bool FlowControl::_PullOrder() bool FlowControl::_PullOrder()
{ {
if(!m_available)
return false;
QString error; QString error;
bool result; bool result;
QJsonObject sendJson; QJsonObject sendJson;
QJsonObject recvJson; QJsonObject recvJson;
int syncTime = VALUE_PULLSYNCTIME; int syncTime = VALUE_PULLSYNCTIME;
sendJson = DataManger::GetInstance().GetPullOrderData(m_timestamp,autoconfirm); sendJson = DataManger::GetInstance().GetPullOrderData(m_timestamp,autoconfirm);
QLOG_INFO() << QString("[---pull order---][requestData:%1]").arg(_GetJsonStr(sendJson)); QLOG_INFO() << QString("[---pull order---][requestData:%1]").arg(_GetJsonStr(sendJson));
result = m_pullOrderSocket->Request(sendJson, recvJson, error); result = m_pullOrderSocket->Request(sendJson, recvJson, error);
...@@ -123,26 +126,26 @@ bool FlowControl::_PullOrder() ...@@ -123,26 +126,26 @@ bool FlowControl::_PullOrder()
.arg(result).arg(error); .arg(result).arg(error);
if(!result) if(!result)
{ {
emit setNetStatus("<font color='#ff0000'>异常</font>"); emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>异常</font>"));
}else }else
{ {
emit setNetStatus("正常"); emit setNetStatus(QString::fromLocal8Bit("正常"));
if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt()) if(JSON_STATUSCODE_OK != recvJson[JSON_STATUSCODE].toInt())
{ {
QString error = recvJson[JSON_MESSAGE].toString(); QString error = recvJson[JSON_MESSAGE].toString();
QLOG_ERROR() << QString("pull orders error.[msg->%1]").arg(error); QLOG_ERROR() << QString("pull orders error.[msg->%1]").arg(error);
emit showAlert(AlertForm::ERROR, QString("获取订单失败![%1]").arg(error)); emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("获取订单失败![%1]").arg(error));
}else }else
{ {
// 获取门店营业状态 // 获取门店营业状态
QString strOpeStatus("正常"); QString strOpeStatus(QString::fromLocal8Bit("正常"));
QJsonArray opeStatus = recvJson[JSON_SHOPSTATUS].toArray(); QJsonArray opeStatus = recvJson[JSON_SHOPSTATUS].toArray();
foreach(QJsonValue status, opeStatus) foreach(QJsonValue status, opeStatus)
{ {
QJsonObject jsonObject = status.toObject(); QJsonObject jsonObject = status.toObject();
if(jsonObject[JSON_SHOPSTATUSDESC].toString().compare("营业中")) if(jsonObject[JSON_SHOPSTATUSDESC].toString().compare("营业中"))
{ {
strOpeStatus = QString("<font color='#ff0000'>异常</font>"); strOpeStatus = QString::fromLocal8Bit("<font color='#ff0000'>异常</font>");
break; break;
} }
} }
...@@ -196,68 +199,15 @@ bool FlowControl::_PullOrder() ...@@ -196,68 +199,15 @@ bool FlowControl::_PullOrder()
emit changeOrderStatus(orderObject, oldStatus); emit changeOrderStatus(orderObject, oldStatus);
} }
} }
if(orderObject->status!=3&&orderObject->status!=100) emit addEntryOrder(orderObject);
{
if(isPosRecv(orderObject->records))
{
if(!Orderstatus::getInstance().isentry(orderObject->order_id))
{
QLOG_INFO() << QString("[---begin entry order [%1]---].").arg(_GetJsonStr(FmPlugin::GetInstance()._GetOrderEntryData(orderObject)));
if(!FmPlugin::GetInstance().DoOrderEntry(orderObject, error))
{
QLOG_ERROR() << QString("entry order failed[%1]").arg(error);
emit showEntryResult(orderObject,0);
emit showAlert(AlertForm::ERROR, QString("%1写单失败").
arg(QString(orderObject->channelName+QString::number(orderObject->order_index)+"号单")));
}
else
{
Orderstatus::getInstance().entryupdate(orderObject->order_id,1);
QLOG_INFO() << QString("[entry order success].");
emit showEntryResult(orderObject,1);
}
}
else{
QLOG_INFO() << QString("[order is already entry].");
}
}
else
{
QLOG_ERROR() << QString("非POS接单");
}
}
else
{
if(!Orderstatus::getInstance().isrefund(orderObject->order_id))
{
QString tmpstr="";
QLOG_INFO() << QString("[---begin refund order[%1]---].").arg(_GetJsonStr(FmPlugin::GetInstance()._GetRefundOrderData(orderObject->order_id)));
if(!FmPlugin::GetInstance().RefundOrder(orderObject->order_id,error))
{
tmpstr = QString("\r\n[撤回销售单失败]");
emit showEntryResult(orderObject,0);
emit showAlert(AlertForm::ERROR, QString("%1撤销单失败").
arg(QString(orderObject->channelName+QString::number(orderObject->order_index)+"号单")));
QLOG_INFO() << QString("refund order failed[%1]").arg(error);
}else
{
tmpstr = QString("\r\n[撤回销售单成功]");
QLOG_INFO() << QString("refund order seccess");
Orderstatus::getInstance().refundupdate(orderObject->order_id,1);
emit showEntryResult(orderObject,1);
}
}
else{
QLOG_INFO() << QString("order is already refund");
}
}
m_timestamp = orderObject->timestamp; m_timestamp = orderObject->timestamp;
} }
syncTime = recvJson[JSON_SYNCTIME].toInt()*1000; syncTime = recvJson[JSON_SYNCTIME].toInt()*1000;
} }
} }
QLOG_INFO() << QString("%1 msec after pull order...").arg(syncTime); QLOG_INFO() << QString("%1 msec after pull order...").arg(syncTime);
QTimer::singleShot(syncTime, this, &FlowControl::_PullOrder); QTimer::singleShot(syncTime, this, &FlowControl::_PullOrder);
return result; return result;
} }
...@@ -545,21 +495,21 @@ bool FlowControl::_RefundOrder(const QString &orderId,QString reason) ...@@ -545,21 +495,21 @@ bool FlowControl::_RefundOrder(const QString &orderId,QString reason)
QString tmpstr=""; QString tmpstr="";
// 撤回销售单 // 撤回销售单
QLOG_INFO() << QString("[---begin refund order---]."); // QLOG_INFO() << QString("[---begin refund order---].");
if(Orderstatus::getInstance().isentry(orderObject->order_id)) // if(Orderstatus::getInstance().isentry(orderObject->order_id))
{ // {
if(!FmPlugin::GetInstance().RefundOrder(orderId,error)) // if(!FmPlugin::GetInstance().RefundOrder(orderObject->fm_id,error))
{ // {
tmpstr = QString("\r\n[撤回销售单失败]"); // tmpstr = QString("\r\n[撤回销售单失败]");
QLOG_INFO() << QString("entry order failed[%1]").arg(error); // QLOG_INFO() << QString("entry order failed[%1]").arg(error);
emit showEntryResult(orderObject,0); // emit showEntryResult(orderObject,0);
}else // }else
{ // {
tmpstr = QString("\r\n[撤回销售单成功]"); // tmpstr = QString("\r\n[撤回销售单成功]");
Orderstatus::getInstance().refundupdate(orderObject->order_id,1); // Orderstatus::getInstance().refundupdate(orderObject->order_id,1);
emit showEntryResult(orderObject,1); // emit showEntryResult(orderObject,1);
} // }
} // }
emit showAlert(AlertForm::SUCCESS, QString("退单成功!%1").arg(tmpstr)); emit showAlert(AlertForm::SUCCESS, QString("退单成功!%1").arg(tmpstr));
} }
...@@ -674,4 +624,26 @@ void FlowControl::onProcessRejectOrder(const QString &orderId, const int &reason ...@@ -674,4 +624,26 @@ void FlowControl::onProcessRejectOrder(const QString &orderId, const int &reason
} }
void FlowControl::stopFlow()
{
qDebug()<<"flowthread stop";
m_available=false;
if(m_loginSocket)
{
m_loginSocket->deleteLater();
m_loginSocket=NULL;
}
if(m_pullOrderSocket)
{
m_pullOrderSocket->deleteLater();
m_pullOrderSocket=NULL;
}
if(m_procOrderSocket)
{
m_procOrderSocket->deleteLater();
m_procOrderSocket=NULL;
}
}
...@@ -44,7 +44,7 @@ private: ...@@ -44,7 +44,7 @@ private:
// 是否第一次获取到门店信息 // 是否第一次获取到门店信息
bool m_bFirstRecvInfo; bool m_bFirstRecvInfo;
bool isPosRecv(QStringList records); bool isPosRecv(QStringList records);
bool m_available;
signals: signals:
/* 功能:隐藏通知窗口 /* 功能:隐藏通知窗口
* 参数:NULL * 参数:NULL
...@@ -97,7 +97,7 @@ signals: ...@@ -97,7 +97,7 @@ signals:
* */ * */
void showSearchOrderResult(const QMap<QString,QString>& orderMap); void showSearchOrderResult(const QMap<QString,QString>& orderMap);
void startRemind(int); void startRemind(int);
void showEntryResult(OrderObject*,int); void addEntryOrder(OrderObject *orderObject);
private slots: private slots:
/* 功能:登录 /* 功能:登录
...@@ -176,6 +176,7 @@ public slots: ...@@ -176,6 +176,7 @@ public slots:
* */ * */
void onSerachOrder(const QString& text); void onSerachOrder(const QString& text);
void onProcessRejectOrder(const QString& orderId, const int& reason, const int &reasontype); void onProcessRejectOrder(const QString& orderId, const int& reason, const int &reasontype);
void stopFlow();
}; };
#endif // FLOWCONTROL_H #endif // FLOWCONTROL_H
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <QJsonObject> #include <QJsonObject>
#include <QJsonDocument> #include <QJsonDocument>
#include <QDebug> #include <QDebug>
#include <DTools/configManger.h>
SInfoControl &SInfoControl::GetInstance() SInfoControl &SInfoControl::GetInstance()
{ {
...@@ -15,20 +16,37 @@ void SInfoControl::SetListenPort(int port) ...@@ -15,20 +16,37 @@ void SInfoControl::SetListenPort(int port)
m_port = port; m_port = port;
} }
SInfoControl::~SInfoControl() SInfoControl::SInfoControl()
{
m_port=ConfigManger::GetInstance().GetTcpServerPort();
}
void SInfoControl::stopSinfo()
{ {
qDebug()<<"sinfothread stop";
m_bContinue = false; m_bContinue = false;
m_mutex.unlock(); if(m_tcpSocket==NULL)
{
m_tcpSocket->deleteLater();
m_tcpSocket=NULL;
}
if(m_tcpServer==NULL)
{
m_tcpServer->deleteLater();
m_tcpServer=NULL;
}
}
SInfoControl::~SInfoControl()
{
} }
void SInfoControl::run() void SInfoControl::run()
{ {
m_mutex.lock();
m_tcpServer = new QTcpServer(this); m_tcpServer = new QTcpServer(this);
if(!m_tcpServer->listen(QHostAddress::LocalHost, m_port)) if(!m_tcpServer->listen(QHostAddress::LocalHost, m_port))
{ {
emit listenFailed(QString("绑定端口[%1]失败!").arg(m_port)); emit listenFailed(QString::fromLocal8Bit("绑定端口[%1]失败!").arg(m_port));
QLOG_ERROR() << QString("SInfoControl listen failed on port[%1]").arg(m_port); QLOG_ERROR() << QString("SInfoControl listen failed on port[%1]").arg(m_port);
return; return;
} }
...@@ -106,7 +124,5 @@ void SInfoControl::run() ...@@ -106,7 +124,5 @@ void SInfoControl::run()
continue; continue;
} }
m_tcpServer->close(); m_tcpServer->close();
m_tcpServer->deleteLater();
QLOG_INFO() << "refundControl exit."; QLOG_INFO() << "refundControl exit.";
m_mutex.unlock();
} }
...@@ -15,7 +15,7 @@ public: ...@@ -15,7 +15,7 @@ public:
void SetListenPort(int port); void SetListenPort(int port);
private: private:
SInfoControl(){} SInfoControl();
~SInfoControl(); ~SInfoControl();
SInfoControl(SInfoControl const&); SInfoControl(SInfoControl const&);
SInfoControl& operator=(SInfoControl const&); SInfoControl& operator=(SInfoControl const&);
...@@ -23,9 +23,9 @@ private: ...@@ -23,9 +23,9 @@ private:
QTcpServer *m_tcpServer; QTcpServer *m_tcpServer;
QTcpSocket *m_tcpSocket; QTcpSocket *m_tcpSocket;
int m_port; int m_port;
QMutex m_mutex;
bool m_bContinue; bool m_bContinue;
QMutex m_mutex;
public slots: public slots:
/* 功能:开启控制器 /* 功能:开启控制器
...@@ -33,6 +33,7 @@ public slots: ...@@ -33,6 +33,7 @@ public slots:
* 返回:NULL * 返回:NULL
* */ * */
void run(); void run();
void stopSinfo();
signals: signals:
/* 功能:通知主界面监听失败 /* 功能:通知主界面监听失败
......
...@@ -12,9 +12,11 @@ ...@@ -12,9 +12,11 @@
#include <QTimer> #include <QTimer>
#include <QJsonArray> #include <QJsonArray>
#include <QDataStream> #include <QDataStream>
#include <QThread>
FmPlugin &FmPlugin::GetInstance() FmPlugin &FmPlugin::GetInstance()
{ {
static FmPlugin fmPlugin; static FmPlugin fmPlugin;
return fmPlugin; return fmPlugin;
} }
...@@ -30,7 +32,7 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, QString &error, bool ...@@ -30,7 +32,7 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, QString &error, bool
QTcpSocket socket; QTcpSocket socket;
// 连接 // 连接
socket.connectToHost(m_host, m_port); socket.connectToHost(m_host, m_port);
if (socket.waitForConnected(10000)) if (socket.waitForConnected(5000))
{ {
// 初始化请求数据 // 初始化请求数据
// 发送 // 发送
...@@ -47,7 +49,7 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, QString &error, bool ...@@ -47,7 +49,7 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, QString &error, bool
return true; return true;
}else }else
{ {
error = QString("富比达").append(recvJson["msg"].toString()); error = QString::fromLocal8Bit("富比达").append(recvJson["msg"].toString());
socket.close(); socket.close();
return false; return false;
} }
...@@ -64,7 +66,7 @@ bool FmPlugin::RefundOrder(const QString &orderId, QString &error) ...@@ -64,7 +66,7 @@ bool FmPlugin::RefundOrder(const QString &orderId, QString &error)
QTcpSocket socket; QTcpSocket socket;
// 连接 // 连接
socket.connectToHost(m_host, m_port); socket.connectToHost(m_host, m_port);
if (socket.waitForConnected(10000)) if (socket.waitForConnected(5000))
{ {
// 初始化请求数据 // 初始化请求数据
// 发送 // 发送
...@@ -81,7 +83,7 @@ bool FmPlugin::RefundOrder(const QString &orderId, QString &error) ...@@ -81,7 +83,7 @@ bool FmPlugin::RefundOrder(const QString &orderId, QString &error)
return true; return true;
}else }else
{ {
error = QString("富比达").append(recvJson["msg"].toString()); error = QString::fromLocal8Bit("富比达").append(recvJson["msg"].toString());
socket.close(); socket.close();
return false; return false;
} }
......
...@@ -82,6 +82,7 @@ bool Orderstatus::isentry(const QString &orderId) ...@@ -82,6 +82,7 @@ bool Orderstatus::isentry(const QString &orderId)
{ {
return query.value(0).toBool(); return query.value(0).toBool();
} }
return false;
} }
bool Orderstatus::refundupdate(const QString &orderId, const int &refundstatus) bool Orderstatus::refundupdate(const QString &orderId, const int &refundstatus)
...@@ -112,6 +113,7 @@ bool Orderstatus::isrefund(const QString &orderId) ...@@ -112,6 +113,7 @@ bool Orderstatus::isrefund(const QString &orderId)
{ {
return query.value(0).toBool(); return query.value(0).toBool();
} }
return false;
} }
bool Orderstatus::isorderexit(const QString &orderId) bool Orderstatus::isorderexit(const QString &orderId)
{ {
......
...@@ -57,24 +57,24 @@ QString GetOperNameByStatus(int status, bool bRefuse) ...@@ -57,24 +57,24 @@ QString GetOperNameByStatus(int status, bool bRefuse)
case 1: case 1:
if(bRefuse) if(bRefuse)
{ {
return OPERATIONNAME_REFUSE; return QString::fromLocal8Bit(OPERATIONNAME_REFUSE);
} }
return OPERATIONNAME_GETDELIVERS; return QString::fromLocal8Bit(OPERATIONNAME_GETDELIVERS);
break; break;
case 2: case 2:
if(bRefuse) if(bRefuse)
{ {
return OPERATIONNAME_REFUNDORDER; return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER);
} }
return OPERATIONNAME_SENDOUT; return QString::fromLocal8Bit(OPERATIONNAME_SENDOUT);
break; break;
case 5: case 5:
case 4: case 4:
if(bRefuse) if(bRefuse)
{ {
return OPERATIONNAME_REFUNDORDER;; return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER);
} }
return OPERATIONNAME_COMPLETE; return QString::fromLocal8Bit(OPERATIONNAME_COMPLETE);
break; break;
case 6: case 6:
case 200: case 200:
...@@ -83,9 +83,9 @@ QString GetOperNameByStatus(int status, bool bRefuse) ...@@ -83,9 +83,9 @@ QString GetOperNameByStatus(int status, bool bRefuse)
case 20: case 20:
if(bRefuse) if(bRefuse)
{ {
return OPERATIONNAME_REFUSEREFUND; return QString::fromLocal8Bit(OPERATIONNAME_REFUSEREFUND);
} }
return OPERATIONNAME_REFUNDORDER; return QString::fromLocal8Bit(OPERATIONNAME_REFUNDORDER);
break; break;
default: default:
return "NULL"; return "NULL";
......
...@@ -36,21 +36,21 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -36,21 +36,21 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn1->hide(); ui->detailBtn1->hide();
// 初始化界面 // 初始化界面
ui->detailLab0->setText(QString("[%1][%2][%3]").arg(orderObject->channelName, ui->detailLab0->setText(QString::fromLocal8Bit("[%1][%2][%3]").arg(orderObject->channelName,
orderObject->status_desc, orderObject->status_desc,
orderObject->order_id)); orderObject->order_id));
ui->detailLab1->setText(QString("[%1]%2").arg(orderObject->pay_type, ui->detailLab1->setText(QString::fromLocal8Bit("[%1]%2").arg(orderObject->pay_type,
orderObject->remark)); orderObject->remark));
ui->detailLab2->setText(QString("[姓名]%1 [电话]%2").arg(orderObject->customer, ui->detailLab2->setText(QString::fromLocal8Bit("[姓名]%1 [电话]%2").arg(orderObject->customer,
orderObject->phone)); orderObject->phone));
ui->detailLab3->setText(orderObject->address); ui->detailLab3->setText(orderObject->address);
ui->detailLab4->setText(QString("[配送方式]%1 [配送费]%2").arg(orderObject->delivery_party, ui->detailLab4->setText(QString::fromLocal8Bit("[配送方式]%1 [配送费]%2").arg(orderObject->delivery_party,
Penny2Dollar(orderObject->send_fee))); Penny2Dollar(orderObject->send_fee)));
ui->detailLab5->setText(orderObject->delivery_time==0? "立即送出" : QDateTime::fromTime_t(orderObject->delivery_time).toString("MM/dd hh:mm")); ui->detailLab5->setText(orderObject->delivery_time==0? QString::fromLocal8Bit("立即送出") : QDateTime::fromTime_t(orderObject->delivery_time).toString("MM/dd hh:mm"));
ui->detailLab6->setText(orderObject->courier_name.isEmpty() ? "暂未指定" : QString("[姓名]%1 [电话]%2") ui->detailLab6->setText(orderObject->courier_name.isEmpty() ? QString::fromLocal8Bit("暂未指定") : QString::fromLocal8Bit("[姓名]%1 [电话]%2")
.arg(orderObject->courier_name, orderObject->courier_phone)); .arg(orderObject->courier_name, orderObject->courier_phone));
ui->detailLab7->setText(!orderObject->pay_type.compare("在线支付") ? "0" : Penny2Dollar(orderObject->shop_fee)); ui->detailLab7->setText(!orderObject->pay_type.compare("在线支付") ? "0" : Penny2Dollar(orderObject->shop_fee));
ui->detailLab8->setText(orderObject->has_invoiced? QString("发票抬头:%1").arg(orderObject->invoice_title) : "不需要发票"); ui->detailLab8->setText(orderObject->has_invoiced? QString::fromLocal8Bit("发票抬头:%1").arg(orderObject->invoice_title) : QString::fromLocal8Bit("不需要发票"));
for(int i=0; i<orderObject->proList.count(); i++) for(int i=0; i<orderObject->proList.count(); i++)
{ {
...@@ -104,7 +104,10 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -104,7 +104,10 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn0->hide(); ui->detailBtn0->hide();
} }
} }
m_rejectForm = new RejectForm(this); if(m_rejectForm==NULL)
{
m_rejectForm = new RejectForm(this);
}
} }
void DetailForm::_Init() void DetailForm::_Init()
...@@ -154,14 +157,14 @@ void DetailForm::on_detailBtn1_clicked() ...@@ -154,14 +157,14 @@ void DetailForm::on_detailBtn1_clicked()
{ {
QLOG_INFO() << QString("reRefund order failed[%1]").arg(error); QLOG_INFO() << QString("reRefund order failed[%1]").arg(error);
emit showEntryResult(m_orderObject,0); emit showEntryResult(m_orderObject,0);
emit showAlert(AlertForm::ERROR, QString("重新撤销销售单失败[%1]").arg(error)); emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("重新撤销销售单失败[%1]").arg(error));
} }
else else
{ {
Orderstatus::getInstance().refundupdate(m_orderObject->order_id,1); Orderstatus::getInstance().refundupdate(m_orderObject->order_id,1);
QLOG_INFO() << QString("[reRefund order success]."); QLOG_INFO() << QString("[reRefund order success].");
emit showEntryResult(m_orderObject,1); emit showEntryResult(m_orderObject,1);
emit showAlert(AlertForm::SUCCESS, QString("[重新撤销销售单成功].")); emit showAlert(AlertForm::SUCCESS, QString::fromLocal8Bit("[重新撤销销售单成功]."));
} }
} }
...@@ -172,13 +175,13 @@ void DetailForm::on_detailBtn0_clicked() ...@@ -172,13 +175,13 @@ void DetailForm::on_detailBtn0_clicked()
{ {
QLOG_INFO() << QString("reEntry order failed[%1]").arg(error); QLOG_INFO() << QString("reEntry order failed[%1]").arg(error);
emit showEntryResult(m_orderObject,0); emit showEntryResult(m_orderObject,0);
emit showAlert(AlertForm::ERROR, QString("重新补录销售单失败[%1]").arg(error)); emit showAlert(AlertForm::ERROR, QString::fromLocal8Bit("重新补录销售单失败[%1]").arg(error));
} }
else else
{ {
Orderstatus::getInstance().entryupdate(m_orderObject->order_id,1); Orderstatus::getInstance().entryupdate(m_orderObject->order_id,1);
QLOG_INFO() << QString("[reEntry order success]."); QLOG_INFO() << QString("[reEntry order success].");
emit showEntryResult(m_orderObject,1); emit showEntryResult(m_orderObject,1);
emit showAlert(AlertForm::SUCCESS, QString("[重新补录销售单成功].")); emit showAlert(AlertForm::SUCCESS, QString::fromLocal8Bit("[重新补录销售单成功]."));
} }
} }
...@@ -14,9 +14,7 @@ FloatForm::FloatForm(QWidget *parent) : ...@@ -14,9 +14,7 @@ FloatForm::FloatForm(QWidget *parent) :
ui(new Ui::FloatForm) ui(new Ui::FloatForm)
{ {
ui->setupUi(this); ui->setupUi(this);
m_bReminding = false; m_bReminding = false;
QPixmap imgNormal(":image/float_normal.png"); QPixmap imgNormal(":image/float_normal.png");
m_imgNormalSize = imgNormal.size(); m_imgNormalSize = imgNormal.size();
QPixmap imgRemind(":image/float_remind.png"); QPixmap imgRemind(":image/float_remind.png");
......
...@@ -39,7 +39,8 @@ SOURCES +=fmp_takeout.cpp \ ...@@ -39,7 +39,8 @@ SOURCES +=fmp_takeout.cpp \
Model/orderObject.cpp \ Model/orderObject.cpp \
Model/productObject.cpp \ Model/productObject.cpp \
Network/billSocket.cpp \ Network/billSocket.cpp \
DTools/fmPlugin.cpp DTools/fmPlugin.cpp \
Control/entryControl.cpp
HEADERS +=fmp_takeout_i.h \ HEADERS +=fmp_takeout_i.h \
...@@ -80,7 +81,8 @@ HEADERS +=fmp_takeout_i.h \ ...@@ -80,7 +81,8 @@ HEADERS +=fmp_takeout_i.h \
QsLog/QsLogDestFunctor.h \ QsLog/QsLogDestFunctor.h \
QsLog/QsLogDisableForThisFile.h \ QsLog/QsLogDisableForThisFile.h \
QsLog/QsLogLevel.h \ QsLog/QsLogLevel.h \
DTools/fmPlugin.h DTools/fmPlugin.h \
Control/entryControl.h
......
...@@ -57,8 +57,12 @@ int FMPTakeoutPrivate::Uninit() ...@@ -57,8 +57,12 @@ int FMPTakeoutPrivate::Uninit()
{ {
_settings = 0; _settings = 0;
} }
delete inittask; if(inittask)
inittask=0; {
inittask->terminateThread();
inittask->deleteLater();
inittask=NULL;
}
q->_inited = false; q->_inited = false;
return FMP_SUCCESS; return FMP_SUCCESS;
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <Control/flowControl.h> #include <Control/flowControl.h>
#include <Control/sinfoControl.h> #include <Control/sinfoControl.h>
#include <DTools/configManger.h> #include <DTools/configManger.h>
#include "Control/entryControl.h"
using namespace QsLogging; using namespace QsLogging;
FMPInitTask::FMPInitTask(QObject *parent) : QObject(parent) FMPInitTask::FMPInitTask(QObject *parent) : QObject(parent)
...@@ -49,7 +50,6 @@ void FMPInitTask::LoadTheme(const QString &theme) ...@@ -49,7 +50,6 @@ void FMPInitTask::LoadTheme(const QString &theme)
return; return;
} }
mainForm->setStyleSheet(qssFile.readAll()); mainForm->setStyleSheet(qssFile.readAll());
//floatForm->setStyleSheet(qssFile.readAll());
qssFile.close(); qssFile.close();
} }
...@@ -61,29 +61,48 @@ void FMPInitTask::Init() ...@@ -61,29 +61,48 @@ void FMPInitTask::Init()
QLOG_INFO() << QString("-------- fmTakeaway[%1] Start --------").arg(APP_VERSION); QLOG_INFO() << QString("-------- fmTakeaway[%1] Start --------").arg(APP_VERSION);
// 将控制器移到工作线程 // 将控制器移到工作线程
FlowControl::GetInstance().moveToThread(&workThread);
//workThread.start();
QObject::connect(mainForm, &MainForm::showFloatForm, floatForm, &FloatForm::onShow);
QObject::connect(mainForm, &MainForm::startRemind, floatForm, &FloatForm::onStartRemind);
QObject::connect(&FlowControl::GetInstance(), &FlowControl::startRemind, floatForm, &FloatForm::onStartRemind);
QObject::connect(mainForm, &MainForm::stopRemind, floatForm, &FloatForm::onStopRemind);
QObject::connect(floatForm, &FloatForm::showMainForm, mainForm, &MainForm::show);
mainForm->MyShow();
// 将门店信息获取控制器移到工作线程 // 将门店信息获取控制器移到工作线程
SInfoControl::GetInstance().SetListenPort(ConfigManger::GetInstance().GetTcpServerPort()); //SInfoControl::GetInstance().SetListenPort(ConfigManger::GetInstance().GetTcpServerPort());
SInfoControl::GetInstance().moveToThread(&sInfoThread);
QObject::connect(&sInfoThread, &QThread::started, &SInfoControl::GetInstance(), &SInfoControl::run);
QObject::connect(&SInfoControl::GetInstance(), &SInfoControl::getNewStoreInfo, &FlowControl::GetInstance(), &FlowControl::onGetNewStoreInfo);
sInfoThread.start(); sInfoThread.start();
SInfoControl::GetInstance().moveToThread(&sInfoThread);
connect(&sInfoThread, &QThread::started, &SInfoControl::GetInstance(), &SInfoControl::run,Qt::QueuedConnection);
connect(this, &FMPInitTask::stopThread, &SInfoControl::GetInstance(), &SInfoControl::stopSinfo,Qt::DirectConnection);
connect(&SInfoControl::GetInstance(), &SInfoControl::getNewStoreInfo,
&FlowControl::GetInstance(), &FlowControl::onGetNewStoreInfo,Qt::QueuedConnection);
FlowControl::GetInstance().moveToThread(&workThread);
EntryControl::GetInstance().moveToThread(&entryThread);
workThread.start();
entryThread.start();
connect(&entryThread, &QThread::started, &EntryControl::GetInstance(), &EntryControl::start);
connect(mainForm, &MainForm::showFloatForm, floatForm, &FloatForm::onShow);
connect(mainForm, &MainForm::startRemind, floatForm, &FloatForm::onStartRemind);
connect(&FlowControl::GetInstance(), &FlowControl::startRemind, floatForm, &FloatForm::onStartRemind);
connect(this, &FMPInitTask::stopThread, &FlowControl::GetInstance(), &FlowControl::stopFlow);
connect(&FlowControl::GetInstance(), &FlowControl::addEntryOrder, &EntryControl::GetInstance(), &EntryControl::onAddOrder);
connect(this, &FMPInitTask::stopThread, &EntryControl::GetInstance(), &EntryControl::stop);
connect(mainForm, &MainForm::stopRemind, floatForm, &FloatForm::onStopRemind);
connect(floatForm, &FloatForm::showMainForm, mainForm, &MainForm::show);
mainForm->MyShow();
} }
FMPInitTask::~FMPInitTask() FMPInitTask::~FMPInitTask()
{ {
workThread.quit();
sInfoThread.quit();
delete mainForm; delete mainForm;
mainForm=0; mainForm=0;
delete floatForm; delete floatForm;
floatForm=0; floatForm=0;
} }
void FMPInitTask::terminateThread()
{
emit stopThread();
sInfoThread.wait(10000);
sInfoThread.quit();
//workThread.wait(10000);
workThread.quit();
entryThread.quit();
}
...@@ -14,12 +14,13 @@ public: ...@@ -14,12 +14,13 @@ public:
void Init(); void Init();
~FMPInitTask(); ~FMPInitTask();
void terminateThread();
private: private:
QString g_appDir; QString g_appDir;
MainForm *mainForm; MainForm *mainForm;
FloatForm *floatForm; FloatForm *floatForm;
QThread workThread,sInfoThread; QThread workThread,sInfoThread,entryThread;
void LoadLogger(); void LoadLogger();
...@@ -27,7 +28,7 @@ private: ...@@ -27,7 +28,7 @@ private:
signals: signals:
void stopThread();
public slots: public slots:
}; };
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <QThread> #include <QThread>
#include "DTools/configManger.h" #include "DTools/configManger.h"
#include <DTools/orderstatus.h> #include <DTools/orderstatus.h>
#include <Control/entryControl.h>
extern QThread workThread; extern QThread workThread;
...@@ -50,7 +51,9 @@ MainForm::MainForm(QWidget *parent) : ...@@ -50,7 +51,9 @@ MainForm::MainForm(QWidget *parent) :
connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus); connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus);
connect(&FlowControl::GetInstance(), &FlowControl::showDeliverPickForm, this, &MainForm::onShowDeliverPickForm); connect(&FlowControl::GetInstance(), &FlowControl::showDeliverPickForm, this, &MainForm::onShowDeliverPickForm);
connect(&FlowControl::GetInstance(), &FlowControl::showOrderDetails, this, &MainForm::onShowOrderDetails); connect(&FlowControl::GetInstance(), &FlowControl::showOrderDetails, this, &MainForm::onShowOrderDetails);
connect(&FlowControl::GetInstance(), &FlowControl::showEntryResult, this, &MainForm::onEntryResult); connect(&EntryControl::GetInstance(), &EntryControl::showEntryResult, this, &MainForm::onEntryResult);
connect(&EntryControl::GetInstance(), &EntryControl::showAlert, this, &MainForm::onShowAlert);
// 搜索订单的信号槽 // 搜索订单的信号槽
connect(ui->mainEdtSearch, &ClickedLineEdit::textChanged, &FlowControl::GetInstance(), &FlowControl::onSerachOrder); connect(ui->mainEdtSearch, &ClickedLineEdit::textChanged, &FlowControl::GetInstance(), &FlowControl::onSerachOrder);
...@@ -103,7 +106,7 @@ void MainForm::_Init() ...@@ -103,7 +106,7 @@ void MainForm::_Init()
this->showFullScreen(); this->showFullScreen();
// 初始化文字 // 初始化文字
ui->mainLabStoreid->setText(UI_STOREID); ui->mainLabStoreid->setText(QString::fromLocal8Bit(UI_STOREID));
ui->mainLabVersion->setText(APP_VERSION); ui->mainLabVersion->setText(APP_VERSION);
// 初始化表 // 初始化表
...@@ -147,7 +150,7 @@ void MainForm::onSetCurrentTime() ...@@ -147,7 +150,7 @@ void MainForm::onSetCurrentTime()
m_raiseIndex=0; m_raiseIndex=0;
raise(); raise();
} }
ui->mainSlabTime->setText(QDateTime::currentDateTime().toString("yyyy年MM月dd日 hh:mm:ss")); ui->mainSlabTime->setText(QDateTime::currentDateTime().toString(QString::fromLocal8Bit("yyyy年MM月dd日 hh:mm:ss")));
} }
void MainForm::onMainTabBtnClicked() void MainForm::onMainTabBtnClicked()
...@@ -232,12 +235,12 @@ void MainForm::onEntryResult(OrderObject *orderObject, int type) ...@@ -232,12 +235,12 @@ void MainForm::onEntryResult(OrderObject *orderObject, int type)
} }
if(type==1) if(type==1)
{ {
table->item(i,0)->setTextColor(QColor(0,0,0)); table->item(i,0)->setTextColor(QColor(98, 98, 98));
table->item(i,1)->setTextColor(QColor(0,0,0)); table->item(i,1)->setTextColor(QColor(98, 98, 98));
table->item(i,2)->setTextColor(QColor(0,0,0)); table->item(i,2)->setTextColor(QColor(98, 98, 98));
table->item(i,3)->setTextColor(QColor(0,0,0)); table->item(i,3)->setTextColor(QColor(98, 98, 98));
table->item(i,4)->setTextColor(QColor(0,0,0)); table->item(i,4)->setTextColor(QColor(98, 98, 98));
table->item(i,5)->setTextColor(QColor(0,0,0)); table->item(i,5)->setTextColor(QColor(98, 98, 98));
break; break;
} }
} }
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
#define APP_THEME "deaufult" #define APP_THEME "deaufult"
#define APP_VERSION "1.20170628.01" //TODO #define APP_VERSION "1.20170628.01" //TODO
#define SERVER_PASSWORD "posoperator@freemud.cn" //#define SERVER_PASSWORD "posoperator@freemud.cn"
#define SERVER_PASSWORD "pos@freemud.cn"
#define UI_CASHIER "<font color='#ff0000'>未选择</font>" #define UI_CASHIER "<font color='#ff0000'>未选择</font>"
#define UI_STOREID "<font color='#ff0000'>未登录</font>" #define UI_STOREID "<font color='#ff0000'>未登录</font>"
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#define VER_MINOR 1 #define VER_MINOR 1
#define VER_REVISION 0 #define VER_REVISION 0
#define VER_BUILD 2 #define VER_BUILD 3
//! Convert version numbers to string //! Convert version numbers to string
#define _STR(S) #S #define _STR(S) #S
......
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