Commit 59acccd8 by wuyang.zou

PCS插件:

1、插件长连接断开重连时,设备获取的mac地址出现随机排序,导致插件长连接重连服务端验签异常,上游订单无法推送到门店;
2、设备ip展示(过滤非合法ip 和 mac地址并进行排序);
3、黑金优先制作:会员等级 + 打印扩展列表;

Version: 4.2024.1.31
parent b9c94866
...@@ -98,14 +98,17 @@ bool SocketCommunicate::connectTcpSvr() ...@@ -98,14 +98,17 @@ bool SocketCommunicate::connectTcpSvr()
//下载证书接口(需要门店号 & 设备号)待调试, 评估是否需要保存证书文件: //下载证书接口(需要门店号 & 设备号)待调试, 评估是否需要保存证书文件:
QLOG_INFO() << "connectTcpSvr:: Get Certificate From Url: ......................"; QLOG_INFO() << "connectTcpSvr:: Get Certificate From Url: ......................";
std::string tempMacAddress = ""; std::string tempMacAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress ); std::string tempIpAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress , tempIpAddress );
if ( !getMacRet) { if ( !getMacRet) {
QLOG_ERROR() << "connectTcpSvr:: MacTool::GetMacByAdaptersAddresses Falied"; QLOG_ERROR() << "connectTcpSvr:: MacTool::GetMacByAdaptersAddresses Falied";
// 是否需要弹框提示 伙伴. // 是否需要弹框提示 伙伴.
} }
_macAddress = tempMacAddress.c_str(); _macAddress = tempMacAddress.c_str();
_localIp = tempIpAddress.c_str();
// 组装请求头+请求体, 获取证书相关数据; // 组装请求头+请求体, 获取证书相关数据;
QString reqCertificateRealUrl = _getCertificateUrl + "storeId=" + _storeId + "&deviceId=" + _macAddress; QString reqCertificateRealUrl = _getCertificateUrl + "storeId=" + _storeId + "&deviceId=" + _macAddress;
...@@ -114,7 +117,7 @@ bool SocketCommunicate::connectTcpSvr() ...@@ -114,7 +117,7 @@ bool SocketCommunicate::connectTcpSvr()
QString requestError; QString requestError;
int requestErrorNum = 0; int requestErrorNum = 0;
// 如果获取证书失败,需要循环获取,且频次需要越来越低; // 如果获取证书失败,需要循环获取,且频次需要越来越低;
if ( 0 == _certPublishKey.length() || 0 == _certPrivateKey.length() ) { if ( 0 == _certPublishKey.length() || 0 == _certPrivateKey.length() || _reconnectTimes >= 5 ) {
do { do {
if ( S_GetRequest( reqCertificateRealUrl, outCertificateData, requestError) ) { if ( S_GetRequest( reqCertificateRealUrl, outCertificateData, requestError) ) {
outCertificateJson = QJsonDocument::fromJson(outCertificateData).object(); outCertificateJson = QJsonDocument::fromJson(outCertificateData).object();
...@@ -794,7 +797,7 @@ void SocketCommunicate::threadStart() ...@@ -794,7 +797,7 @@ void SocketCommunicate::threadStart()
} }
QLOG_INFO() << QString("Waitting HttpLogin / openTcpChannel / GetSvrIpPort Failed, Wait 60 Seconds, _httpLoginResult:%1, _openTcpChannel:%2, _stopFlag:%3") QLOG_INFO() << QString("Waitting HttpLogin / openTcpChannel / GetSvrIpPort Failed, Wait 60 Seconds, _httpLoginResult:%1, _openTcpChannel:%2, _stopFlag:%3")
.arg( _httpLoginResult?1:0 ).arg(_openTcpChannel?1:0).arg(_stopFlag?1:0); .arg( _httpLoginResult?1:0 ).arg(_openTcpChannel?1:0).arg(_stopFlag?1:0);
Sleep(60*1000); Sleep(20*1000);
FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _hostName, _workStationNum); FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _hostName, _workStationNum);
} }
......
...@@ -175,34 +175,21 @@ bool FlowControl::_AppendOrderInfo2Redis(const OrderObject* orderObject) { ...@@ -175,34 +175,21 @@ bool FlowControl::_AppendOrderInfo2Redis(const OrderObject* orderObject) {
void FlowControl::_GetIpAddress() void FlowControl::_GetIpAddress()
{ {
/***已经验证:IP地址 优先取配置文件中的[IpAddress/ip];只有没有配置的情况才会根据主机名获取ipv4的IP地址,因此为保证IP的准确性,注释通过配置文件获取ip的代码***/ std::string macAddress = "";
std::string tempMacAddress = ""; std::string ipAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress ); int getMacRet = MacTool::GetMacByAdaptersAddresses( macAddress , ipAddress);
if ( !getMacRet) { if ( !getMacRet) {
QLOG_ERROR() << "FlowControl::_GetIpAddress MacTool->GetMacByAdaptersAddresses Falied"; QLOG_ERROR() << "FlowControl::_GetIpAddress MacTool->GetMacByAdaptersAddresses Falied";
} }
m_posMacAddress = tempMacAddress.c_str(); m_posMacAddress = macAddress.c_str();
m_ipAddress = ipAddress.c_str();
QString ipAddress;
QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName()); QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
m_posHostName = info.hostName(); m_posHostName = info.hostName();
m_ipPortAddress = ipAddress.c_str() + QString(":") + QString::number(ConfigManger::GetInstance().GetHttpServerPort());
foreach(QHostAddress address,info.addresses()) { QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real IpAddress: %1, hostName: %2, macAddress: %3, ipPortAddress: %4 --->>>>]")
if(address.protocol() == QAbstractSocket::IPv4Protocol) { .arg(m_ipAddress).arg(m_posHostName).arg(m_posMacAddress).arg(m_ipPortAddress);
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress getFromLocalHostName:%1--->>>>]").arg(address.toString());
//1.1.1.1 > length > 7
if(address.toString().length()>7 && address.toString()!= "127.0.0.1" && !(address.toString().contains("192.168."))
&& !(address.toString().contains("10.0.75.1") ) && !(address.toString().contains("172.") ) ) {
ipAddress=address.toString();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real IpAddress: %1 hostName: %2 macAddress: %3 --->>>>]")
.arg(ipAddress).arg(m_posHostName).arg(m_posMacAddress);
break;
}
}
}
m_ipAddress = ipAddress;
m_ipPortAddress = ipAddress+QString(":")+QString::number(ConfigManger::GetInstance().GetHttpServerPort());
} }
...@@ -801,6 +788,7 @@ bool FlowControl::_Login() ...@@ -801,6 +788,7 @@ bool FlowControl::_Login()
arg(m_storeId).arg(m_cashierName); arg(m_storeId).arg(m_cashierName);
emit setStoreInfo(m_storeId); emit setStoreInfo(m_storeId);
emit setCashierInfo(m_cashierName); emit setCashierInfo(m_cashierName);
emit setTerminalIp(m_ipAddress);
//***********************登陆时获取门店的营业状态 begin ************************// //***********************登陆时获取门店的营业状态 begin ************************//
m_eleStoreStatus = recvJson[JSON_ELESTORESTS].toInt(); m_eleStoreStatus = recvJson[JSON_ELESTORESTS].toInt();
......
...@@ -262,16 +262,25 @@ signals: ...@@ -262,16 +262,25 @@ signals:
* 返回:NULL * 返回:NULL
* */ * */
void setStoreInfo(const QString& storeId); void setStoreInfo(const QString& storeId);
/* 功能:设置主界面终端IP
* 参数:[1]终端IP
* 返回:NULL
* */
void setTerminalIp(const QString& terminalIp);
/* 功能:设置主界收银员信息 /* 功能:设置主界收银员信息
* 参数:[1]收银员信息 * 参数:[1]收银员信息
* 返回:NULL * 返回:NULL
* */ * */
void setCashierInfo(const QString& cashierInfo); void setCashierInfo(const QString& cashierInfo);
/* 功能:设置门店营业状态 /* 功能:设置门店营业状态
* 参数:[1]营业状态 * 参数:[1]营业状态
* 返回:NULL * 返回:NULL
* */ * */
void setOpeStatus(const QString& status); void setOpeStatus(const QString& status);
/* 功能:设置门店网络状态 /* 功能:设置门店网络状态
* 参数:[1]网络状态 * 参数:[1]网络状态
* 返回:NULL * 返回:NULL
......
...@@ -206,13 +206,13 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -206,13 +206,13 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
"is_package, last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, confirm_time,customer_id,customer_gender," "is_package, last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, confirm_time,customer_id,customer_gender,"
"way_bill_id,store_id,store_name,store_address,store_street, pos_id, lang, ext_info, rider_phone, rider_name, " "way_bill_id,store_id,store_name,store_address,store_street, pos_id, lang, ext_info, rider_phone, rider_name, "
"displateform_fee, make_status, make_source, make_device_id,reserve_type, appointed_time,appointed_remind_template,sub_store_id, " "displateform_fee, make_status, make_source, make_device_id,reserve_type, appointed_time,appointed_remind_template,sub_store_id, "
"global_order_type,global_service_type,platform_source,callback_url ) " "global_order_type,global_service_type,platform_source,callback_url, member_level, pcs_extend_list ) "
"VALUES(?, ?, ?, ?, ?,?, ?, ?, ?, ?, " "VALUES(?, ?, ?, ?, ?,?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?," "?, ?, ?, ?, ?, ?, ?, ?, ?, ?,"
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ); "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" );
query.addBindValue(orderObj->id); // --非码OMS订单号 query.addBindValue(orderObj->id); // --非码OMS订单号
query.addBindValue(orderObj->id); // --非码OMS订单号 query.addBindValue(orderObj->id); // --非码OMS订单号
...@@ -327,6 +327,20 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -327,6 +327,20 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
tempPcsCallbackUrl = m_puginInitUrl.mid(0, m_puginInitUrl.length() - 4) + "pcs/order/pms/callback"; tempPcsCallbackUrl = m_puginInitUrl.mid(0, m_puginInitUrl.length() - 4) + "pcs/order/pms/callback";
} }
query.addBindValue( tempPcsCallbackUrl ); // --平台来源枚举值 //PCS系统拼接的 callback_url query.addBindValue( tempPcsCallbackUrl ); // --平台来源枚举值 //PCS系统拼接的 callback_url
query.addBindValue( orderObj->memberLevel ); // 会员等级;
query.addBindValue( orderObj->posExtendListString ); // POS/PCS 扩展属性列表;
/*
QStringList tempSlist;
QString tempPcsExtendList;
if ( orderObj->posExtendList.isEmpty() ) {
tempPcsExtendList = QString("");
} else {
foreach (PosExtendObject* posExtend, orderObj->posExtendList) {
tempSlist.append( posExtend->objectToString() );
}
tempPcsExtendList = QString("[").toUtf8() + tempSlist.join(",") + QString("]").toUtf8();
}
*/
if(!query.exec()) { if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData:Insert Order Error--->>>>]"<<query.lastError().text() QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData:Insert Order Error--->>>>]"<<query.lastError().text()
...@@ -340,10 +354,12 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -340,10 +354,12 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
"last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, " "last_pay_time, address_latitude, address_longitude, oms_msrno, consumer_birthday, cancel_reason, "
"confirm_time,customer_id,customer_gender,way_bill_id,store_id,store_name,store_address,store_street, " "confirm_time,customer_id,customer_gender,way_bill_id,store_id,store_name,store_address,store_street, "
"pos_id, lang, ext_info, rider_phone, rider_name, displateform_fee, make_status, make_source, make_device_id," "pos_id, lang, ext_info, rider_phone, rider_name, displateform_fee, make_status, make_source, make_device_id,"
" reserve_type, appointed_time,appointed_remind_template,sub_store_id,global_order_type,global_service_type,platform_source,callback_url ) " "reserve_type, appointed_time,appointed_remind_template,sub_store_id,global_order_type,global_service_type,platform_source,"
"callback_url, member_level, pcs_extend_list ) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, " "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, "
"%21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40," "%21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31, %32, %33, %34, %35, %36, %37, %38, %39, %40,"
"%41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54,%55,%56,%57,%58,%59,%60,%61,%62)") "%41, %42, %43, %44, %45, %46, %47, %48, %49, %50, %51, %52, %53, %54,%55,%56,%57,%58,%59,%60,%61,"
"%62,%63,%64)")
.arg(orderObj->id).arg(orderObj->id).arg(orderObj->orderStatus).arg(updateTimeString).arg( tempChannel ) .arg(orderObj->id).arg(orderObj->id).arg(orderObj->orderStatus).arg(updateTimeString).arg( tempChannel )
.arg(orderObj->orderType).arg(tempOrderTypeId) .arg(orderObj->orderType).arg(tempOrderTypeId)
.arg(orderObj->pickupCode).arg(orderObj->totalPrice * 0.01).arg(orderObj->productPrice * 0.01).arg(orderObj->orderDiscount * 0.01) .arg(orderObj->pickupCode).arg(orderObj->totalPrice * 0.01).arg(orderObj->productPrice * 0.01).arg(orderObj->orderDiscount * 0.01)
...@@ -358,7 +374,8 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef) ...@@ -358,7 +374,8 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
.arg("").arg(orderObj->lang).arg(orderObj->memo).arg(orderObj->riderPhone).arg(orderObj->riderName) .arg("").arg(orderObj->lang).arg(orderObj->memo).arg(orderObj->riderPhone).arg(orderObj->riderName)
.arg(orderObj->disPlateformFee * 0.01).arg(orderObj->makeStatus).arg(orderObj->makeSource).arg(orderObj->makeDeviceId) .arg(orderObj->disPlateformFee * 0.01).arg(orderObj->makeStatus).arg(orderObj->makeSource).arg(orderObj->makeDeviceId)
.arg( tempBusinessType ).arg(orderObj->expectDate).arg( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime ) .arg( tempBusinessType ).arg(orderObj->expectDate).arg( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime )
.arg(orderObj->subStoreId).arg(orderObj->globalOrderType).arg(orderObj->globalServiceType).arg(orderObj->platformSource).arg( tempPcsCallbackUrl ); .arg(orderObj->subStoreId).arg(orderObj->globalOrderType).arg(orderObj->globalServiceType).arg(orderObj->platformSource)
.arg( tempPcsCallbackUrl ).arg( orderObj->memberLevel ).arg( orderObj->posExtendListString );
} else { } else {
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderData:Insert OrderId %1 Into PMS Order Success--->>>>]").arg(orderObj->id); QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderData:Insert OrderId %1 Into PMS Order Success--->>>>]").arg(orderObj->id);
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <QObject> #include <QObject>
#include <QMutex> #include <QMutex>
#include "Model/orderObject.h" #include "Model/orderObject.h"
#include "Model/PosExtendObject.h"
#include <Model/couponsObject.h> #include <Model/couponsObject.h>
#include <Model/singleProductObject.h> #include <Model/singleProductObject.h>
#include "preDefine.h" #include "preDefine.h"
......
#include "PosExtendObject.h"
#include "preDefine.h"
#include <QJsonArray>
PosExtendObject::PosExtendObject(const PosExtendObject &posExtendObj, QObject *parent):QObject(parent)
{
const QMetaObject *m = posExtendObj.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) {
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = posExtendObj.property(key.toUtf8());
this->setProperty(key.toUtf8(), value);
}
}
PosExtendObject& PosExtendObject::operator =(const PosExtendObject& posExtendObj)
{
const QMetaObject *m = posExtendObj.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) {
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = posExtendObj.property(key.toUtf8());
this->setProperty(key.toUtf8(), value);
}
return *this;
}
void PosExtendObject::FetchDataFromJson(const QJsonObject &json)
{
foreach(QString key, json.keys()) {
setProperty(key.toUtf8(), json[key].toVariant());
}
return;
}
QString PosExtendObject::objectToString(){
QString tempString;
tempString = "{\"printType\":\"" + printType + "\","
+ "\"qty\":" + QString::number( qty ) + ","
+ "\"printName\":\"" + printName + "\","
+ "\"printDesc\":\"" + printDesc + "\"}" ;
return tempString;
}
#ifndef POSEXTENDOBJECT_H
#define POSEXTENDOBJECT_H
#include <QObject>
#include <QJsonObject>
#include <QVariant>
#include <QMetaProperty>
class PosExtendObject : public QObject
{
Q_OBJECT
Q_PROPERTY (QString printType READ getPrintType WRITE setPrintType)
Q_PROPERTY (int qty READ getQty WRITE setQty)
Q_PROPERTY (QString printName READ getPrintName WRITE setPrintName)
Q_PROPERTY (QString printDesc READ getPrintDesc WRITE setPrintDesc)
public:
explicit PosExtendObject(QObject *parent = 0):QObject(parent){}
PosExtendObject(const PosExtendObject& posExtendObj,QObject* parent=0);
PosExtendObject& operator =(const PosExtendObject& posExtendObj);
void FetchDataFromJson(const QJsonObject &json);
QString objectToString();
QString printType;
int qty = 0;
QString printName;
QString printDesc;
protected:
inline QString getPrintType(){ return printType; }
inline void setPrintType(const QString& v){ printType = v; }
inline int getQty(){ return qty; }
inline void setQty(const int& v){ qty = v; }
inline QString getPrintName(){ return printName; }
inline void setPrintName(const QString& v){ printName = v; }
inline QString getPrintDesc(){ return printDesc; }
inline void setPrintDesc(const QString& v){ printDesc = v; }
};
#endif // POSEXTENDOBJECT_H
...@@ -6,11 +6,20 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -6,11 +6,20 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
/*
qDeleteAll(posExtendList);
posExtendList.clear();
*/
const QMetaObject *m = order.metaObject(); const QMetaObject *m = order.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{ {
QMetaProperty qmp = m->property(i); QMetaProperty qmp = m->property(i);
...@@ -18,29 +27,49 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -18,29 +27,49 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
QVariant value = order.property(key.toUtf8()); QVariant value = order.property(key.toUtf8());
this->setProperty(key.toUtf8(), value); this->setProperty(key.toUtf8(), value);
} }
foreach (auto ptr, order.proList) { foreach (auto ptr, order.proList) {
dishesObject *product=new dishesObject(*ptr,this); dishesObject *product=new dishesObject(*ptr,this);
this->proList.append(product); this->proList.append(product);
} }
foreach (auto ptr, order.coupList) { foreach (auto ptr, order.coupList) {
CouponsObject *coupon=new CouponsObject(*ptr,this); CouponsObject *coupon=new CouponsObject(*ptr,this);
this->coupList.append(coupon); this->coupList.append(coupon);
} }
foreach (auto ptr, order.paymentList) { foreach (auto ptr, order.paymentList) {
PaymentObject *payment=new PaymentObject(*ptr,this); PaymentObject *payment=new PaymentObject(*ptr,this);
this->paymentList.append(payment); this->paymentList.append(payment);
} }
/*
foreach (auto ptr, order.posExtendList) {
PosExtendObject *posExtendObj=new PosExtendObject(*ptr,this);
this->posExtendList.append(posExtendObj);
}
*/
} }
OrderObject& OrderObject::operator =(const OrderObject& order) OrderObject& OrderObject::operator =(const OrderObject& order)
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
/*
qDeleteAll(posExtendList);
posExtendList.clear();
*/
const QMetaObject *m = order.metaObject(); const QMetaObject *m = order.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{ {
QMetaProperty qmp = m->property(i); QMetaProperty qmp = m->property(i);
...@@ -48,18 +77,29 @@ OrderObject& OrderObject::operator =(const OrderObject& order) ...@@ -48,18 +77,29 @@ OrderObject& OrderObject::operator =(const OrderObject& order)
QVariant value = order.property(key.toUtf8()); QVariant value = order.property(key.toUtf8());
this->setProperty(key.toUtf8(), value); this->setProperty(key.toUtf8(), value);
} }
foreach (auto ptr, order.proList) { foreach (auto ptr, order.proList) {
dishesObject *product=new dishesObject(*ptr,this); dishesObject *product=new dishesObject(*ptr,this);
this->proList.append(product); this->proList.append(product);
} }
foreach (auto ptr, order.coupList) { foreach (auto ptr, order.coupList) {
CouponsObject *coupon = new CouponsObject(*ptr,this); CouponsObject *coupon = new CouponsObject(*ptr,this);
this->coupList.append(coupon); this->coupList.append(coupon);
} }
foreach (auto ptr, order.paymentList) { foreach (auto ptr, order.paymentList) {
PaymentObject *payment=new PaymentObject(*ptr,this); PaymentObject *payment=new PaymentObject(*ptr,this);
this->paymentList.append(payment); this->paymentList.append(payment);
} }
/*
foreach (auto ptr, order.posExtendList) {
PosExtendObject *posExtendObj=new PosExtendObject(*ptr,this);
this->posExtendList.append(posExtendObj);
}
*/
return *this; return *this;
} }
...@@ -67,11 +107,20 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -67,11 +107,20 @@ void OrderObject::FromJson(const QJsonObject &json)
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
/*
qDeleteAll(posExtendList);
posExtendList.clear();
*/
FetchDataFromJson(json); FetchDataFromJson(json);
QJsonArray products = json[JSON_PRODUCTS].toArray(); QJsonArray products = json[JSON_PRODUCTS].toArray();
foreach(QJsonValue product, products) foreach(QJsonValue product, products)
{ {
...@@ -114,9 +163,33 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -114,9 +163,33 @@ void OrderObject::FromJson(const QJsonObject &json)
paymObject->FetchDataFromJson(paymJson); paymObject->FetchDataFromJson(paymJson);
paymentList.append(paymObject); paymentList.append(paymObject);
} }
//解析多条POS扩展属性 List;
/*
QJsonArray posExtends = json[JSON_POS_EXTEND_LIST].toArray();
foreach(QJsonValue posExtend, posExtends)
{
QJsonObject posExtendJson = posExtend.toObject();
PosExtendObject *posExtendObject = new PosExtendObject(this);
posExtendObject->qty = 0;
posExtendObject->FetchDataFromJson(posExtendJson);
posExtendList.append(posExtendObject);
}
*/
QJsonArray posExtends = json[JSON_POS_EXTEND_LIST].toArray();
if ( posExtends.isEmpty() ) {
posExtendListString = QString("");
} else {
QJsonDocument tempDoc( posExtends );
// 获取JSON文本表示形式的字符串
QByteArray tempByteArray = tempDoc.toJson(QJsonDocument::Compact);
posExtendListString = QString::fromUtf8( tempByteArray );
}
return; return;
} }
void OrderObject::FetchDataFromJson(const QJsonObject &json) void OrderObject::FetchDataFromJson(const QJsonObject &json)
{ {
QStringList keys = json.keys(); QStringList keys = json.keys();
...@@ -127,6 +200,7 @@ void OrderObject::FetchDataFromJson(const QJsonObject &json) ...@@ -127,6 +200,7 @@ void OrderObject::FetchDataFromJson(const QJsonObject &json)
return; return;
} }
QString OrderObject::getChannelName() QString OrderObject::getChannelName()
{ {
if ( "MOD" == channel ) { if ( "MOD" == channel ) {
......
...@@ -5,7 +5,9 @@ ...@@ -5,7 +5,9 @@
#include "Model/dishesObject.h" #include "Model/dishesObject.h"
#include "Model/couponsObject.h" #include "Model/couponsObject.h"
#include "Model/paymentObject.h" #include "Model/paymentObject.h"
#include "Model/PosExtendObject.h"
#include <QDateTime> #include <QDateTime>
#include <QJsonDocument>
class OrderObject : public QObject class OrderObject : public QObject
{ {
...@@ -16,7 +18,6 @@ class OrderObject : public QObject ...@@ -16,7 +18,6 @@ class OrderObject : public QObject
Q_PROPERTY (QString thirdPartyBatch READ getThirdPartyBatch WRITE setThirdPartyBatch) Q_PROPERTY (QString thirdPartyBatch READ getThirdPartyBatch WRITE setThirdPartyBatch)
Q_PROPERTY (QString refundFmId READ getRefundFmId WRITE setRefundFmId) Q_PROPERTY (QString refundFmId READ getRefundFmId WRITE setRefundFmId)
Q_PROPERTY (QString thirdPartyOrderId READ getThirdPartyOrderId WRITE setThirdPartyOrderId) Q_PROPERTY (QString thirdPartyOrderId READ getThirdPartyOrderId WRITE setThirdPartyOrderId)
Q_PROPERTY (int orderType READ getOrderType WRITE setOrderType) Q_PROPERTY (int orderType READ getOrderType WRITE setOrderType)
Q_PROPERTY (QString orgOrderId READ getOrgOrderId WRITE setOrgOrderId) Q_PROPERTY (QString orgOrderId READ getOrgOrderId WRITE setOrgOrderId)
Q_PROPERTY (QString waybillId READ getWaybillId WRITE setWaybillId) Q_PROPERTY (QString waybillId READ getWaybillId WRITE setWaybillId)
...@@ -25,7 +26,6 @@ class OrderObject : public QObject ...@@ -25,7 +26,6 @@ class OrderObject : public QObject
Q_PROPERTY (QString customerId READ getCustomerId WRITE setCustomerId) Q_PROPERTY (QString customerId READ getCustomerId WRITE setCustomerId)
Q_PROPERTY (QString customerName READ getCustomerName WRITE setCustomerName) Q_PROPERTY (QString customerName READ getCustomerName WRITE setCustomerName)
Q_PROPERTY (QString phone READ getPhone WRITE setPhone) Q_PROPERTY (QString phone READ getPhone WRITE setPhone)
Q_PROPERTY (QString msr_no READ getMsr_no WRITE setMsr_no) Q_PROPERTY (QString msr_no READ getMsr_no WRITE setMsr_no)
Q_PROPERTY (QString storeId READ getStoreId WRITE setStoreId) Q_PROPERTY (QString storeId READ getStoreId WRITE setStoreId)
Q_PROPERTY (QString storeName READ getStoreName WRITE setStoreName) Q_PROPERTY (QString storeName READ getStoreName WRITE setStoreName)
...@@ -43,7 +43,6 @@ class OrderObject : public QObject ...@@ -43,7 +43,6 @@ class OrderObject : public QObject
Q_PROPERTY (QString cancelTime READ getCancelTime WRITE setCancelTime) Q_PROPERTY (QString cancelTime READ getCancelTime WRITE setCancelTime)
Q_PROPERTY (QString cancelReason READ getCancelReason WRITE setCancelReason) Q_PROPERTY (QString cancelReason READ getCancelReason WRITE setCancelReason)
Q_PROPERTY (QString lang READ getLang WRITE setLang) Q_PROPERTY (QString lang READ getLang WRITE setLang)
Q_PROPERTY (QString memo READ getMemo WRITE setMemo) Q_PROPERTY (QString memo READ getMemo WRITE setMemo)
Q_PROPERTY (QString consumerRemark READ getConsumerRemark WRITE setConsumerRemark) Q_PROPERTY (QString consumerRemark READ getConsumerRemark WRITE setConsumerRemark)
Q_PROPERTY (QString invoiceType READ getInvoiceType WRITE setInvoiceType) Q_PROPERTY (QString invoiceType READ getInvoiceType WRITE setInvoiceType)
...@@ -66,7 +65,6 @@ class OrderObject : public QObject ...@@ -66,7 +65,6 @@ class OrderObject : public QObject
Q_PROPERTY (int disPlateformFee READ getDisPlateformFee WRITE setDisPlateformFee) Q_PROPERTY (int disPlateformFee READ getDisPlateformFee WRITE setDisPlateformFee)
Q_PROPERTY (int packageFee READ getPackageFee WRITE setPackageFee) Q_PROPERTY (int packageFee READ getPackageFee WRITE setPackageFee)
Q_PROPERTY (int isPackage READ getIsPackage WRITE setIsPackage) Q_PROPERTY (int isPackage READ getIsPackage WRITE setIsPackage)
Q_PROPERTY (QString packageSku READ getPackageSku WRITE setPackageSku) Q_PROPERTY (QString packageSku READ getPackageSku WRITE setPackageSku)
Q_PROPERTY (QString storeMakeSku READ getStoreMakeSku WRITE setStoreMakeSku) Q_PROPERTY (QString storeMakeSku READ getStoreMakeSku WRITE setStoreMakeSku)
Q_PROPERTY (QString secretSignal READ getSecretSignal WRITE setSecretSignal) Q_PROPERTY (QString secretSignal READ getSecretSignal WRITE setSecretSignal)
...@@ -90,29 +88,25 @@ class OrderObject : public QObject ...@@ -90,29 +88,25 @@ class OrderObject : public QObject
Q_PROPERTY (QString customerSex READ getCustomerSex WRITE setCustomerSex) Q_PROPERTY (QString customerSex READ getCustomerSex WRITE setCustomerSex)
Q_PROPERTY (QString platformSource READ getPlatformSource WRITE setPlatformSource) Q_PROPERTY (QString platformSource READ getPlatformSource WRITE setPlatformSource)
Q_PROPERTY (int orderIndex READ getOrderIndex WRITE setOrderIndex) Q_PROPERTY (int orderIndex READ getOrderIndex WRITE setOrderIndex)
Q_PROPERTY (QString expectDate READ getExpectDate WRITE setExpectDate) Q_PROPERTY (QString expectDate READ getExpectDate WRITE setExpectDate)
Q_PROPERTY (QString reserveMakeTime READ getReserveMakeTime WRITE setReserveMakeTime) Q_PROPERTY (QString reserveMakeTime READ getReserveMakeTime WRITE setReserveMakeTime)
Q_PROPERTY (int inAdvanceTakemeal READ getInAdvanceTakemeal WRITE setInAdvanceTakemeal) Q_PROPERTY (int inAdvanceTakemeal READ getInAdvanceTakemeal WRITE setInAdvanceTakemeal)
Q_PROPERTY (QString subStoreId READ getSubStoreId WRITE setSubStoreId) Q_PROPERTY (QString subStoreId READ getSubStoreId WRITE setSubStoreId)
Q_PROPERTY (int globalServiceType READ getGlobalServiceType WRITE setGlobalServiceType) Q_PROPERTY (int globalServiceType READ getGlobalServiceType WRITE setGlobalServiceType)
Q_PROPERTY (int globalOrderType READ getGlobalOrderType WRITE setGlobalOrderType) Q_PROPERTY (int globalOrderType READ getGlobalOrderType WRITE setGlobalOrderType)
Q_PROPERTY (int isGiftitForward READ getIsGiftitForward WRITE setIsGiftitForward ) Q_PROPERTY (int isGiftitForward READ getIsGiftitForward WRITE setIsGiftitForward )
Q_PROPERTY (QString remindTicketTime READ getRemindTicketTime WRITE setRemindTicketTime ) Q_PROPERTY (QString remindTicketTime READ getRemindTicketTime WRITE setRemindTicketTime )
Q_PROPERTY (QString carNumber READ getCarNumber WRITE setCarNumber) Q_PROPERTY (QString carNumber READ getCarNumber WRITE setCarNumber)
Q_PROPERTY (QString privacyPhone READ getPrivacyPhone WRITE setPrivacyPhone) Q_PROPERTY (QString privacyPhone READ getPrivacyPhone WRITE setPrivacyPhone)
Q_PROPERTY (QString callBackUrl READ getCallBackUrl WRITE setCallBackUrl) Q_PROPERTY (QString callBackUrl READ getCallBackUrl WRITE setCallBackUrl)
Q_PROPERTY (QString pcsCallbackUrl READ getPcsCallbackUrl WRITE setPcsCallbackUrl) Q_PROPERTY (QString pcsCallbackUrl READ getPcsCallbackUrl WRITE setPcsCallbackUrl)
Q_PROPERTY (int extendType READ getExtendType WRITE setExtendType) Q_PROPERTY (int extendType READ getExtendType WRITE setExtendType)
Q_PROPERTY (int deliveryProvider READ getDeliveryProvider WRITE setDeliveryProvider) Q_PROPERTY (int deliveryProvider READ getDeliveryProvider WRITE setDeliveryProvider)
Q_PROPERTY (int deliveryType READ getDeliveryType WRITE setDeliveryType) Q_PROPERTY (int deliveryType READ getDeliveryType WRITE setDeliveryType)
Q_PROPERTY (bool skipPrint READ getSkipPrint WRITE setSkipPrint) Q_PROPERTY (bool skipPrint READ getSkipPrint WRITE setSkipPrint)
Q_PROPERTY (bool deliveryAtProd READ getDeliveryAtProd WRITE setDeliveryAtProd) Q_PROPERTY (bool deliveryAtProd READ getDeliveryAtProd WRITE setDeliveryAtProd)
Q_PROPERTY (bool packageFeeAtProduct READ getPackageFeeAtProduct WRITE setPackageFeeAtProduct) Q_PROPERTY (bool packageFeeAtProduct READ getPackageFeeAtProduct WRITE setPackageFeeAtProduct)
Q_PROPERTY (QString memberLevel READ getMemberLevel WRITE setMemberLevel)
public: public:
OrderObject(QObject *parent=0) OrderObject(QObject *parent=0)
...@@ -138,6 +132,15 @@ public: ...@@ -138,6 +132,15 @@ public:
//扩展 星巴克 多条支付方式入机 List; //扩展 星巴克 多条支付方式入机 List;
QList<PaymentObject*>paymentList; QList<PaymentObject*>paymentList;
// 扩展 星巴克 多条 POS打印扩展属性List;
// POS/PCS 扩展列表: 优先打印,店用餐具,一次性杯,自带杯
// {printType->string,qty->int,printName->string,printDesc->string}
// printType: 打印类型 1001:优先制作 1101:店用餐具 1102:一次性杯 1103:自带杯
// qty: 数量(自带杯)
// printName: 打印名称
// printDesc: 打印描述
// QList<PosExtendObject*>posExtendList; //不可动态新增字段,在PosExtendObject转序列化时会丢失新增字段; 顾放弃此模式;
public: public:
QString id =""; //编号 QString id =""; //编号
...@@ -250,6 +253,17 @@ public: ...@@ -250,6 +253,17 @@ public:
int dataBaseIsORSPushInt = 0; int dataBaseIsORSPushInt = 0;
int dataBaseIsORSCancleInt = 0; int dataBaseIsORSCancleInt = 0;
QString dataBasePosOrderCheckNo = ""; QString dataBasePosOrderCheckNo = "";
QString memberLevel; // 会员等级: 黑金-Black、金星-Gold、玉星-Green、银星-Welcome;
QString posExtendListString;
// 扩展 星巴克 多条 POS打印扩展属性List;
// POS/PCS 扩展列表: 优先打印,店用餐具,一次性杯,自带杯
// {printType->string,qty->int,printName->string,printDesc->string}
// printType: 打印类型 1001:优先制作 1101:店用餐具 1102:一次性杯 1103:自带杯
// qty: 数量(自带杯)
// printName: 打印名称
// printDesc: 打印描述
QString getChannelName(); QString getChannelName();
...@@ -533,6 +547,9 @@ public: ...@@ -533,6 +547,9 @@ public:
inline bool getPackageFeeAtProduct()const{return packageFeeAtProduct;} inline bool getPackageFeeAtProduct()const{return packageFeeAtProduct;}
inline void setPackageFeeAtProduct(const bool& v){packageFeeAtProduct = v;} inline void setPackageFeeAtProduct(const bool& v){packageFeeAtProduct = v;}
inline QString getMemberLevel()const{return memberLevel;}
inline void setMemberLevel(const QString& v){memberLevel = v;}
}; };
#endif // ORDEROBJECT_H #endif // ORDEROBJECT_H
...@@ -16,70 +16,77 @@ class MacTool ...@@ -16,70 +16,77 @@ class MacTool
{ {
public: public:
static int GetMacByAdaptersAddresses(std::string& macOut) static int GetMacByAdaptersAddresses(std::string& macOut, std::string& ipOut)
{ {
int ret = 0; int ret = 0;
/* QString macAddress ="";
ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES); QStringList macAddressList;
PIP_ADAPTER_ADDRESSES pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen); QString ipAddress ="";
if (pAddresses == NULL) QStringList ipAddressList;
return 0; auto interfaces = QNetworkInterface::allInterfaces();
auto hostAddresses = QNetworkInterface::allAddresses();
// 在线网卡可能存在多个,故还是需要像 upp 一样,将在线全部网卡进行排序后,取第一个
QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: interfaces size: %1 , hostAddresses: %2 ").arg( interfaces.size() ).arg( hostAddresses.size() );
for (int i = 0; i < interfaces.length(); i++) {
if ( interfaces[i].isValid() ) {
if( interfaces[i].flags().testFlag(QNetworkInterface::IsUp) && interfaces[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!interfaces[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: interfaces[ %1 ] = %2").arg( i+1 ).arg( interfaces[i].hardwareAddress() );
macAddressList.append( interfaces[i].hardwareAddress() );
}
}
}
// Make an initial call to GetAdaptersAddresses to get the necessary size into the ulOutBufLen variable // MAC地址列表大于1时(需要进行升序排序);
if(GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == ERROR_BUFFER_OVERFLOW) if ( macAddressList.size() > 1 ) {
{ qSort(macAddressList.begin(), macAddressList.end(), [] (const QString& s1, const QString& s2) {
free(pAddresses); return s1 < s2;
pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen); } );
if (pAddresses == NULL) macAddress = macAddressList.first();
return 0; // MAC地址列表等于1时(无需排序,直接取唯一的值)
} else if ( macAddressList.size() == 1 ) {
macAddress = macAddressList.first();
} else {
// Do Nothing;
} }
if(GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == NO_ERROR) // ip 地址可能存在多个,故还是需要像 upp 一样,将全部 ip 地址进行排序后,取第一个
{ for (int i = 0; i < hostAddresses.length(); i++) {
for(PIP_ADAPTER_ADDRESSES pCurrAddresses = pAddresses; pCurrAddresses != NULL; pCurrAddresses = pCurrAddresses->Next) // if(address.protocol() == QAbstractSocket::IPv4Protocol) { } //1.1.1.1 > length > 7
QHostAddress hadr = hostAddresses[i];
if ( hadr.toString().length() > 7 && !hadr.toString().contains("127.0.0.1") && !hadr.toString().contains("192.168.")
&& !hadr.toString().contains("10.0.75.1") && !hadr.toString().contains("172.") && hadr.toString().contains("10.") )
{ {
if(pCurrAddresses->PhysicalAddressLength != 6) QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: hostAddresses[ %1 ] = %2 , protocol: %3")
continue; .arg( i+1 ).arg( hadr.toString() ).arg( hadr.protocol() );
char acMAC[32]; ipAddressList.append( hadr.toString() );
sprintf(acMAC, "%02X-%02X-%02X-%02X-%02X-%02X",
int (pCurrAddresses->PhysicalAddress[0]),
int (pCurrAddresses->PhysicalAddress[1]),
int (pCurrAddresses->PhysicalAddress[2]),
int (pCurrAddresses->PhysicalAddress[3]),
int (pCurrAddresses->PhysicalAddress[4]),
int (pCurrAddresses->PhysicalAddress[5]));
macOut = acMAC;
ret = 1;
break;
} }
} }
// IP地址列表大于1时(需要进行升序排序);
free(pAddresses); if ( ipAddressList.size() > 1 ) {
return ret; qSort(ipAddressList.begin(), ipAddressList.end(), [] (const QString& s1, const QString& s2) {
*/ return s1 < s2;
} );
QString address =""; ipAddress = ipAddressList.first();
auto interfaces = QNetworkInterface::allInterfaces(); // MAC地址列表等于1时(无需排序,直接取唯一的值)
for (int i = 0; i < interfaces.length(); i++) { } else if ( ipAddressList.size() == 1 ) {
QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: interfaces[ %1 ] = %2 ").arg( i+1 ).arg( interfaces[i].hardwareAddress() ); ipAddress = ipAddressList.first();
if ( interfaces[i].isValid() ) { } else {
/* if( interfaces[i].flags().testFlag(QNetworkInterface::IsUp) && // Do Nothing;
interfaces[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!interfaces[i].flags().testFlag(QNetworkInterface::IsLoopBack)) */
address = interfaces[i].hardwareAddress();
break;
}
} }
if (address.isEmpty()) { if ( macAddress.isEmpty() || ipAddress.isEmpty() ) {
QLOG_ERROR()<<QString("GetMacByAdaptersAddresses:: Local Hardware Address Acquisition Failed!"); QLOG_ERROR()<<QString("GetMacByAdaptersAddresses:: Local Hardware Address Acquisition Failed || Local IP Address Failed");
} else { } else {
ret = 1; ret = 1;
address = address.replace(QRegExp(":"), "-"); macAddress = macAddress.replace(QRegExp(":"), "-");
macOut = address.toStdString(); macOut = macAddress.toStdString();
QLOG_INFO()<<QString("GetMacByAdaptersAddresses::MAC= %1 ").arg( address ); ipOut = ipAddress.toStdString();
QLOG_INFO()<<QString("GetMacByAdaptersAddresses::MAC: %1 , IP: %2").arg( macAddress ).arg(ipAddress);
} }
return ret; return ret;
} }
}; };
......
...@@ -67,7 +67,8 @@ SOURCES += main.cpp\ ...@@ -67,7 +67,8 @@ SOURCES += main.cpp\
DTools/pmsGetStoreConfig.cpp \ DTools/pmsGetStoreConfig.cpp \
DTools/pmsOrdersData.cpp \ DTools/pmsOrdersData.cpp \
Network/ThreadSocket.cpp \ Network/ThreadSocket.cpp \
Control/SocketCommunicate.cpp Control/SocketCommunicate.cpp \
Model/PosExtendObject.cpp
HEADERS += \ HEADERS += \
mainForm.h \ mainForm.h \
...@@ -113,7 +114,8 @@ HEADERS += \ ...@@ -113,7 +114,8 @@ HEADERS += \
Control/SocketCommunicate.h \ Control/SocketCommunicate.h \
SslOperate/algorithmProcess.h \ SslOperate/algorithmProcess.h \
SslOperate/certificateOperate.h \ SslOperate/certificateOperate.h \
SslOperate/MacTool.h SslOperate/MacTool.h \
Model/PosExtendObject.h
FORMS += mainForm.ui \ FORMS += mainForm.ui \
alertForm.ui \ alertForm.ui \
......
...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico" ...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif #endif
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2023,10,12 FILEVERSION 4,2024,1,31
PRODUCTVERSION 4,2023,10,12 PRODUCTVERSION 4,2024,1,31
//*************************************************************************// //*************************************************************************//
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
...@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO ...@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd." VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "PCS Plugin Application" VALUE "FileDescription", "PCS Plugin Application"
VALUE "InternalName", "PcsPlugin.exe" VALUE "InternalName", "PcsPlugin.exe"
VALUE "LegalCopyright", "Copyright (C)2014-2023" VALUE "LegalCopyright", "Copyright (C)2014-2024"
VALUE "OriginalFilename", "PcsPlugin.exe" VALUE "OriginalFilename", "PcsPlugin.exe"
VALUE "ProductName", "PCS Plugin" VALUE "ProductName", "PCS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2023.10.12" VALUE "ProductVersion", "4.2024.1.31"
VALUE "FileVersion", "4.2023.10.12" VALUE "FileVersion", "4.2024.1.31"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -52,6 +52,7 @@ MainForm::MainForm(QWidget *parent) : ...@@ -52,6 +52,7 @@ MainForm::MainForm(QWidget *parent) :
//connect(&FlowControl::GetInstance(), &FlowControl::showAlert, this, &MainForm::onShowAlert,Qt::QueuedConnection); //connect(&FlowControl::GetInstance(), &FlowControl::showAlert, this, &MainForm::onShowAlert,Qt::QueuedConnection);
//connect(&FlowControl::GetInstance(), &FlowControl::setStoreInfo, this, &MainForm::onSetStoreInfo,Qt::QueuedConnection); //connect(&FlowControl::GetInstance(), &FlowControl::setStoreInfo, this, &MainForm::onSetStoreInfo,Qt::QueuedConnection);
//connect(&FlowControl::GetInstance(), &FlowControl::setCashierInfo, this, &MainForm::onSetCashierInfo,Qt::QueuedConnection); //connect(&FlowControl::GetInstance(), &FlowControl::setCashierInfo, this, &MainForm::onSetCashierInfo,Qt::QueuedConnection);
connect(&FlowControl::GetInstance(), &FlowControl::setTerminalIp, this, &MainForm::onSetTerminalIp);
connect(&FlowControl::GetInstance(), &FlowControl::setOpeStatus, this, &MainForm::onSetOpeStatus,Qt::QueuedConnection); connect(&FlowControl::GetInstance(), &FlowControl::setOpeStatus, this, &MainForm::onSetOpeStatus,Qt::QueuedConnection);
connect(&FlowControl::GetInstance(), &FlowControl::setNetStatus, this, &MainForm::onSetNetStatus,Qt::QueuedConnection); connect(&FlowControl::GetInstance(), &FlowControl::setNetStatus, this, &MainForm::onSetNetStatus,Qt::QueuedConnection);
connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus,Qt::QueuedConnection); connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus,Qt::QueuedConnection);
...@@ -191,6 +192,7 @@ void MainForm::_Init() ...@@ -191,6 +192,7 @@ void MainForm::_Init()
// 初始化文字 // 初始化文字
ui->mainLabStoreid->setText(QString::fromLocal8Bit(UI_STOREID)); ui->mainLabStoreid->setText(QString::fromLocal8Bit(UI_STOREID));
ui->mainLabVersion->setText(APP_VERSION); ui->mainLabVersion->setText(APP_VERSION);
ui->mainSlabIp->setText(TERMINAL_DEF_IP);
// 初始化表 // 初始化表
int scales6[] = {3, 4, 2, 3, 3, 3}; int scales6[] = {3, 4, 2, 3, 3, 3};
...@@ -438,6 +440,11 @@ void MainForm::onSetCashierInfo(const QString &cashierInfo) ...@@ -438,6 +440,11 @@ void MainForm::onSetCashierInfo(const QString &cashierInfo)
ui->mainLabCashier->setText(cashierInfo); ui->mainLabCashier->setText(cashierInfo);
} }
void MainForm::onSetTerminalIp(const QString &terminalIp)
{
ui->mainSlabIp->setText(terminalIp);
}
void MainForm::onSetOpeStatus(const QString &status) void MainForm::onSetOpeStatus(const QString &status)
{ {
ui->mainLabOpeStatus->setText(status); ui->mainLabOpeStatus->setText(status);
......
...@@ -302,6 +302,13 @@ public slots: ...@@ -302,6 +302,13 @@ public slots:
* 返回:NULL * 返回:NULL
* */ * */
void onSetCashierInfo(const QString& cashierInfo); void onSetCashierInfo(const QString& cashierInfo);
/* 功能:设置设备ip信息
* 参数:[1]设备ip信息
* 返回:NULL
* */
void onSetTerminalIp(const QString &terminalIp);
/* 功能:设置门店营业状态 /* 功能:设置门店营业状态
* 参数:[1]营业状态 * 参数:[1]营业状态
* 返回:NULL * 返回:NULL
......
...@@ -1335,6 +1335,17 @@ ...@@ -1335,6 +1335,17 @@
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QLabel" name="mainSlabIp">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing"> <property name="spacing">
<number>10</number> <number>10</number>
......
No preview for this file type
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