Commit d97925b3 by guanghui.cui

socket发送数据添加包头

parent 726d67ae
version.h
...@@ -334,79 +334,76 @@ QByteArray flowControll::_GetOrderEntryData(const OrderObject *orderObject, bool ...@@ -334,79 +334,76 @@ QByteArray flowControll::_GetOrderEntryData(const OrderObject *orderObject, bool
bool flowControll::DoSalesSlip(const OrderObject *orderObject, bool bVerify)//写销售单 bool flowControll::DoSalesSlip(const OrderObject *orderObject, bool bVerify)//写销售单
{ {
QTcpSocket socket; QTcpSocket *socket = new QTcpSocket(this);
// 连接 // 连接
QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始写销售单"); QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始写销售单");
QByteArray byteSlip=_GetOrderEntryData(orderObject, bVerify); QByteArray byteSlip=_GetOrderEntryData(orderObject, bVerify);
QLOG_INFO() << "this is comming slip"<<byteSlip.data(); QLOG_INFO() << "this is comming slip"<<byteSlip.data();
socket.connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort()); socket->connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket.waitForConnected()) if (socket->waitForConnected())
{ {
// 发送 if(SendToMonitor(_GetOrderEntryData(orderObject, bVerify),socket)){
socket.write(_GetOrderEntryData(orderObject, bVerify));
if (socket.waitForBytesWritten())
{
// 接收返回 // 接收返回
if (socket.waitForReadyRead()) if (socket->waitForReadyRead())
{ {
QJsonObject recvJson = QJsonDocument::fromJson(socket.readAll()).object(); QJsonObject recvJson = QJsonDocument::fromJson(socket->readAll()).object();
QLOG_INFO() << QString("slip order[%1:%2].[data:%3]") QLOG_INFO() << QString("slip order[%1:%2].[data:%3]")
.arg(orderObject->order_id, orderObject->status_desc) .arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(recvJson)); .arg(_GetJsonStr(recvJson));
if(recvJson["statusCode"].toInt()==100) if(recvJson["statusCode"].toInt()==100)
{ {
socket.close(); socket->close();
return true; return true;
}else }else
{ {
error = recvJson["msg"].toString(); error = recvJson["msg"].toString();
socket.close(); socket->close();
return false; return false;
} }
} }
} }
} }
error = socket.errorString(); error = socket->errorString();
socket.close(); socket->close();
return false; return false;
} }
bool flowControll::RefuseSalesSlip(const OrderObject *orderObject)//退单 bool flowControll::RefuseSalesSlip(const OrderObject *orderObject)//退单
{ {
QTcpSocket socket; QTcpSocket *socket = new QTcpSocket(this);
// 连接 // 连接
QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始退单"); QLOG_INFO() << InitClass::GetInstance().GB2312ToUnicode("开始退单");
QByteArray byteSlip= _GetOrderRefuseData(orderObject); QByteArray byteSlip= _GetOrderRefuseData(orderObject);
QLOG_INFO() << "this is comming refund slip"<<byteSlip.data(); QLOG_INFO() << "this is comming refund slip"<<byteSlip.data();
socket.connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort()); socket->connectToHost(ConfigManger::GetInstance().GetSlipIp(), ConfigManger::GetInstance().GetSlipPort());
if (socket.waitForConnected()) if (socket->waitForConnected())
{ {
// 发送 // 发送
socket.write(_GetOrderRefuseData(orderObject)); //socket->write(_GetOrderRefuseData(orderObject));
if (socket.waitForBytesWritten()) if (SendToMonitor(_GetOrderRefuseData(orderObject),socket))
{ {
// 接收返回 // 接收返回
if (socket.waitForReadyRead()) if (socket->waitForReadyRead())
{ {
QJsonObject recvJson = QJsonDocument::fromJson(socket.readAll()).object(); QJsonObject recvJson = QJsonDocument::fromJson(socket->readAll()).object();
QLOG_INFO() << QString("refund slip order[%1:%2].[data:%3]") QLOG_INFO() << QString("refund slip order[%1:%2].[data:%3]")
.arg(orderObject->order_id, orderObject->status_desc) .arg(orderObject->order_id, orderObject->status_desc)
.arg(_GetJsonStr(recvJson)); .arg(_GetJsonStr(recvJson));
if(recvJson["statusCode"].toInt()==100) if(recvJson["statusCode"].toInt()==100)
{ {
socket.close(); socket->close();
return true; return true;
}else }else
{ {
error = recvJson["msg"].toString(); error = recvJson["msg"].toString();
socket.close(); socket->close();
return false; return false;
} }
} }
} }
} }
error = socket.errorString(); error = socket->errorString();
socket.close(); socket->close();
return false; return false;
} }
...@@ -1468,3 +1465,38 @@ bool flowControll::_RefundOrder(const QString& orderId, QString reason)//退单 ...@@ -1468,3 +1465,38 @@ bool flowControll::_RefundOrder(const QString& orderId, QString reason)//退单
} }
return false; return false;
} }
bool flowControll::SendToMonitor(const QByteArray &data,QTcpSocket *pSocket)
{
bool result=true;
//QTcpSocket client;
int jsonLength=data.length();
char* m_pFmPackage = new char[jsonLength + sizeof(FMSOCKEHEADER)];
FMSOCKEHEADER header = { 0, 0, 0 };
header.flag = 0x4d46;
header.len = jsonLength;
header.ver = 0x1;
memcpy(m_pFmPackage, &header, sizeof(FMSOCKEHEADER));
memcpy(m_pFmPackage+sizeof(FMSOCKEHEADER), data, jsonLength);
int toSendLength = jsonLength + sizeof(FMSOCKEHEADER);
int curSendLength = 0;
while(curSendLength < toSendLength)
{
int rlt= pSocket->write(m_pFmPackage+curSendLength,toSendLength - curSendLength);
pSocket->waitForBytesWritten();
if(rlt==-1){
QLOG_ERROR() << "发送数据失败:" << data;
result=false;
break;
}
curSendLength += rlt;
}
delete[] m_pFmPackage;
return result;
}
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
#include "Tool/HttpSocket.h" #include "Tool/HttpSocket.h"
#include <QTimer> #include <QTimer>
typedef struct {
int flag;
int ver;
int len;
}FMSOCKEHEADER;
class flowControll : public QObject class flowControll : public QObject
{ {
Q_OBJECT Q_OBJECT
...@@ -47,6 +52,7 @@ public: ...@@ -47,6 +52,7 @@ public:
bool RefuseSalesSlip(const OrderObject *orderObject);//退单 bool RefuseSalesSlip(const OrderObject *orderObject);//退单
QByteArray _GetOrderRefuseData(const OrderObject *orderObject);//拼接json数据 QByteArray _GetOrderRefuseData(const OrderObject *orderObject);//拼接json数据
QByteArray _GetOrderEntryData(const OrderObject *orderObject, bool bVerify);//拼接json数据 QByteArray _GetOrderEntryData(const OrderObject *orderObject, bool bVerify);//拼接json数据
bool SendToMonitor(const QByteArray &data,QTcpSocket *pSocket);
//自定义网络 //自定义网络
HttpSocket *m_loginSocket; HttpSocket *m_loginSocket;
......
...@@ -159,6 +159,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path) ...@@ -159,6 +159,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path)
if(jsonError.error != QJsonParseError::NoError) //if error occured, see link 2 if(jsonError.error != QJsonParseError::NoError) //if error occured, see link 2
{ {
QLOG_WARN() << file_path << " parsed failed."; QLOG_WARN() << file_path << " parsed failed.";
return obj;
} }
else else
{ {
...@@ -184,7 +185,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path) ...@@ -184,7 +185,7 @@ QJsonObject ConfigManger::_GetFileJson(const QString &file_path)
int ConfigManger::GetSlipPort() int ConfigManger::GetSlipPort()
{ {
return m_config->value(FMP_INIKEY_TAKEOUT_PORT, 55555).toInt(); return m_config->value(FMP_INIKEY_TAKEOUT_PORT, 23772).toInt();
} }
QString ConfigManger::GetSlipIp() QString ConfigManger::GetSlipIp()
......
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