Commit b76f2edb by wuyang.zou

POS 插件:

1、设备 ip 展示 (过滤非合法ip 和 mac地址并进行排序);
2、黑金优先制作:会员等级 + 打印扩展列表;
3、插件开机立刻启动,出现数据库服务还未Ready,插件连接异常导致登陆失败,新增插件连接异常重连机制;
4、针对OnePos 守护程序的路径变更为正确路径;
5、插件数据库表自增id 长度的考虑扩增;
------------------------------------------------------------------------------------
tb_main_prod_refinfo     自增ID 目前  2105692 【2,147,483,647】
tb_msr_customer_info    自增ID 目前 719439    【2,147,483,647】
tb_order_promotions      自增ID 目前 22803      【2,147,483,647】
tb_print_msr_customer   自增ID 目前 714955    【2,147,483,647】
--------------------------------------------------
SimProcOrderTable    无新增 ID
tb_notice_msg            数据量小可以忽略
------------------------------------------------------------------------------------
parent a2341a01
Pipeline #43790 failed with stage
in 0 seconds
...@@ -46,14 +46,12 @@ SocketCommunicate::~SocketCommunicate() ...@@ -46,14 +46,12 @@ SocketCommunicate::~SocketCommunicate()
while(!_stoped) { while(!_stoped) {
QLOG_INFO() << QString("SocketCommunicate:: ~SocketCommunicate()......"); QLOG_INFO() << QString("SocketCommunicate:: ~SocketCommunicate()......");
_stopFlag = true; _stopFlag = true;
if ( _sslSocket ) { if ( _sslSocket ) {
_sslSocket->disconnectFromHost(); // free Host And Port Resource; _sslSocket->disconnectFromHost(); // free Host And Port Resource;
// https://doc.qt.io/archives/qtjambi-4.5.2_01/com/trolltech/qt/network/QAbstractSocket.html#disconnectFromHost() // https://doc.qt.io/archives/qtjambi-4.5.2_01/com/trolltech/qt/network/QAbstractSocket.html#disconnectFromHost()
// Will Emit signal: disconnected() , Then Trigger Slot: deleteLater() // Will Emit signal: disconnected() , Then Trigger Slot: deleteLater()
// delete _sslSocket; _sslSocket = nullptr; // delete _sslSocket; _sslSocket = nullptr;
} }
emit quit(); emit quit();
EVENTWAIT(20); EVENTWAIT(20);
this->threadClose(); this->threadClose();
...@@ -100,13 +98,15 @@ bool SocketCommunicate::connectTcpSvr() ...@@ -100,13 +98,15 @@ 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;
...@@ -115,7 +115,7 @@ bool SocketCommunicate::connectTcpSvr() ...@@ -115,7 +115,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) ) {
...@@ -799,7 +799,7 @@ void SocketCommunicate::threadStart() ...@@ -799,7 +799,7 @@ void SocketCommunicate::threadStart()
} }
QLOG_INFO() << QString("Waitting HttpLogin / openTcpChannel / GetSvrIpPort Failed, Wait 10 Seconds, _httpLoginResult:%1, _openTcpChannel:%2, _stopFlag:%3") QLOG_INFO() << QString("Waitting HttpLogin / openTcpChannel / GetSvrIpPort Failed, Wait 10 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( SOCKET_START_TIMEOUT_INTERVAL ); Sleep( SOCKET_START_CHECK_TIMEOUT_INTERVAL );
FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _hostName,_workStationNum,_backupPos); FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _hostName,_workStationNum,_backupPos);
} }
......
...@@ -45,6 +45,7 @@ FlowControl::~FlowControl() ...@@ -45,6 +45,7 @@ FlowControl::~FlowControl()
m_reportOMSReocrdOrderTimer->deleteLater(); m_reportOMSReocrdOrderTimer->deleteLater();
m_presistInputPosSuccessReocrdTimer->deleteLater(); m_presistInputPosSuccessReocrdTimer->deleteLater();
m_loginTimer->deleteLater(); m_loginTimer->deleteLater();
m_loopRefreshTimer->deleteLater();
m_queryAllNoticeTimer->deleteLater(); m_queryAllNoticeTimer->deleteLater();
m_storageOrderTimer->deleteLater(); m_storageOrderTimer->deleteLater();
m_delayGetRefundDetailTimer->deleteLater(); m_delayGetRefundDetailTimer->deleteLater();
...@@ -67,7 +68,6 @@ FlowControl::FlowControl() ...@@ -67,7 +68,6 @@ FlowControl::FlowControl()
m_bFloatFromLockSt = false; m_bFloatFromLockSt = false;
m_initSimProcOrderDBRet = false; m_initSimProcOrderDBRet = false;
m_initPrintSumBillPosDBRet = false; m_initPrintSumBillPosDBRet = false;
m_initGetAuthPosDBRet = false;
m_initPrintCupStickPosDBRet = false; m_initPrintCupStickPosDBRet = false;
m_initPrintMsgQueueDBRet = false; m_initPrintMsgQueueDBRet = false;
m_initPrintOrderPromotionDBRet = false; m_initPrintOrderPromotionDBRet = false;
...@@ -106,6 +106,7 @@ FlowControl::FlowControl() ...@@ -106,6 +106,7 @@ FlowControl::FlowControl()
m_reportOMSReocrdOrderTimer = new QTimer(this); m_reportOMSReocrdOrderTimer = new QTimer(this);
m_presistInputPosSuccessReocrdTimer = new QTimer(this); m_presistInputPosSuccessReocrdTimer = new QTimer(this);
m_loginTimer=new QTimer(this); m_loginTimer=new QTimer(this);
m_loopRefreshTimer=new QTimer(this);
m_queryAllNoticeTimer = new QTimer(this); m_queryAllNoticeTimer = new QTimer(this);
m_storageOrderTimer = new QTimer(this); m_storageOrderTimer = new QTimer(this);
m_delayGetRefundDetailTimer = new QTimer(this); m_delayGetRefundDetailTimer = new QTimer(this);
...@@ -115,6 +116,7 @@ FlowControl::FlowControl() ...@@ -115,6 +116,7 @@ FlowControl::FlowControl()
qRegisterMetaType<AlertForm::Type>("AlertForm::Type"); qRegisterMetaType<AlertForm::Type>("AlertForm::Type");
connect(m_loginTimer,&QTimer::timeout,this,&FlowControl::_ClickToLogin); connect(m_loginTimer,&QTimer::timeout,this,&FlowControl::_ClickToLogin);
connect(m_loopRefreshTimer,&QTimer::timeout,this,&FlowControl::_LoopRefresh);
connect(m_queryAllNoticeTimer,&QTimer::timeout,this,&FlowControl::_QueryAllNoticeMsg); connect(m_queryAllNoticeTimer,&QTimer::timeout,this,&FlowControl::_QueryAllNoticeMsg);
connect(m_blockInputPosWarnningTimer,&QTimer::timeout,this,&FlowControl::_BlockInputPosWarnning); connect(m_blockInputPosWarnningTimer,&QTimer::timeout,this,&FlowControl::_BlockInputPosWarnning);
connect(m_storageOrderTimer,&QTimer::timeout,this,&FlowControl::_StoragePosOrderData); connect(m_storageOrderTimer,&QTimer::timeout,this,&FlowControl::_StoragePosOrderData);
...@@ -156,10 +158,6 @@ FlowControl::FlowControl() ...@@ -156,10 +158,6 @@ FlowControl::FlowControl()
PrintOrderPromotionDB::getInstance(); PrintOrderPromotionDB::getInstance();
m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB(); m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB();
// 打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库 //
GetCaboxAReAuth::getInstance();
m_initGetAuthPosDBRet = GetCaboxAReAuth::getInstance().initGetAuthPosDB();
// 打开SqlServer 用订单的全部去重Poskey校验 在POS本地数据库的有效性 // // 打开SqlServer 用订单的全部去重Poskey校验 在POS本地数据库的有效性 //
CheckPoskeyExistPosDB::getInstance(); CheckPoskeyExistPosDB::getInstance();
m_initCheckPoskeyExistPosDBRet = CheckPoskeyExistPosDB::getInstance().initCheckPoskeyExistPosDB(); m_initCheckPoskeyExistPosDBRet = CheckPoskeyExistPosDB::getInstance().initCheckPoskeyExistPosDB();
...@@ -177,10 +175,10 @@ FlowControl::FlowControl() ...@@ -177,10 +175,10 @@ FlowControl::FlowControl()
connect(&PrintCupStickPosDB::getInstance(), &PrintCupStickPosDB::triggerFlowContrlAlert, this, &FlowControl::onTriggerFlowContrlAlert); connect(&PrintCupStickPosDB::getInstance(), &PrintCupStickPosDB::triggerFlowContrlAlert, this, &FlowControl::onTriggerFlowContrlAlert);
} }
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::FlowControl() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2, m_initGetAuthPosDBRet:%3 ," QLOG_INFO()<<QString("[<<<<---FlowControl::FlowControl() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2,"
"m_initPrintCupStickPosDBRet:%4, m_initPrintMsgQueueDBRet:%5, m_initPrintOrderPromotionDBRet:%6, m_initCheckPoskeyExistPosDBRet:%7, " "m_initPrintCupStickPosDBRet:%3, m_initPrintMsgQueueDBRet:%4, m_initPrintOrderPromotionDBRet:%5, m_initCheckPoskeyExistPosDBRet:%6, "
"m_initSaveNoticeMsgDBRet:%8, m_initPosMetaDataDBRet:%9 --->>>>]") "m_initSaveNoticeMsgDBRet:%7, m_initPosMetaDataDBRet:%8 --->>>>]")
.arg( m_initSimProcOrderDBRet?1:0).arg( m_initPrintSumBillPosDBRet?1:0).arg( m_initGetAuthPosDBRet?1:0) .arg( m_initSimProcOrderDBRet?1:0).arg( m_initPrintSumBillPosDBRet?1:0)
.arg(m_initPrintCupStickPosDBRet?1:0).arg(m_initPrintMsgQueueDBRet?1:0).arg(m_initPrintOrderPromotionDBRet?1:0) .arg(m_initPrintCupStickPosDBRet?1:0).arg(m_initPrintMsgQueueDBRet?1:0).arg(m_initPrintOrderPromotionDBRet?1:0)
.arg(m_initCheckPoskeyExistPosDBRet?1:0).arg(m_initSaveNoticeMsgDBRet?1:0).arg(m_initPosMetaDataDBRet?1:0); .arg(m_initCheckPoskeyExistPosDBRet?1:0).arg(m_initSaveNoticeMsgDBRet?1:0).arg(m_initPosMetaDataDBRet?1:0);
...@@ -192,46 +190,33 @@ FlowControl::FlowControl() ...@@ -192,46 +190,33 @@ FlowControl::FlowControl()
_ClickOMSAssignArea(); _ClickOMSAssignArea();
m_loginTimer->start(10*1000); m_loginTimer->start(10*1000);
m_loopRefreshTimer->start(5*1000); // 5s 定期循环刷新: 1、补偿开机启动插件就运行连接数据库失败后重连操作;
} }
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();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress HostName:%1--->>>>]").arg(m_posHostName); QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress HostName:%1--->>>>]").arg(m_posHostName);
// CNSHBK01S00000(国家+城市+BK01+S+5位店号)其中的BK01代表PC // CNSHBK01S00000(国家+城市+BK01+S+5位店号)其中的BK01代表PC
// m_posHostName..contains("BK01",Qt::CaseInsensitive)
if ( m_posHostName.indexOf("BK01",Qt::CaseInsensitive) > 2 ) { if ( m_posHostName.indexOf("BK01",Qt::CaseInsensitive) > 2 ) {
m_backupPosFlag = true; m_backupPosFlag = true;
} }
foreach(QHostAddress address,info.addresses()) { m_ipPortAddress = ipAddress.c_str() + QString(":") + QString::number(ConfigManger::GetInstance().GetHttpServerPort());
if(address.protocol() == QAbstractSocket::IPv4Protocol) { QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real IpAddress: %1, hostName: %2, macAddress: %3, ipPortAddress: %4 --->>>>]")
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress IP:%1--->>>>]").arg(address.toString()); .arg(m_ipAddress).arg(m_posHostName).arg(m_posMacAddress).arg(m_ipPortAddress);
//1.1.1.1 > length > 7
if(address.toString().length()>7 && address.toString()!= "127.0.0.1" ) {
ipAddress=address.toString();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Real Right 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());
} }
...@@ -414,7 +399,6 @@ void FlowControl::_ClickToLogin() ...@@ -414,7 +399,6 @@ void FlowControl::_ClickToLogin()
// 先获取 posHostName; 识别是否 backup-pc机; // 先获取 posHostName; 识别是否 backup-pc机;
_GetIpAddress(); _GetIpAddress();
// V2.2023.6.26 版本开始启用插件自动登录的功能; [ 收银员账号 需设置为 "" ,不能体现收银员账号信息 ] // V2.2023.6.26 版本开始启用插件自动登录的功能; [ 收银员账号 需设置为 "" ,不能体现收银员账号信息 ]
// 原本准备 V2.2023.4.12 版本开始使用插件自动登录的功能; [内控不允许这么操作]
// 2023-05-24 后期出现Simphony系统 服务端证书授权服务的网络异常,门店无法正常登录,插件登录又依赖 店员针对 Simphony系统的首次登录; // 2023-05-24 后期出现Simphony系统 服务端证书授权服务的网络异常,门店无法正常登录,插件登录又依赖 店员针对 Simphony系统的首次登录;
_AutoLoginSkipCashier(); _AutoLoginSkipCashier();
} else { } else {
...@@ -424,6 +408,61 @@ void FlowControl::_ClickToLogin() ...@@ -424,6 +408,61 @@ void FlowControl::_ClickToLogin()
} }
} }
// 5s 定期循环刷新;
void FlowControl::_LoopRefresh()
{
// QLOG_INFO()<<QString("[<<<<---_LoopRefresh.......... --->>>>>]");
// Check Db Connect Whether Successed!!!;
if ( m_initSimProcOrderDBRet && m_initPrintSumBillPosDBRet && m_initPrintCupStickPosDBRet
&& m_initPrintMsgQueueDBRet && m_initPrintOrderPromotionDBRet && m_initCheckPoskeyExistPosDBRet &&
m_initSaveNoticeMsgDBRet && m_initPosMetaDataDBRet ) {
// Do Nothing ....;
} else {
if ( !m_initSimProcOrderDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initSimProcOrderDBRet Is Failed, Retry Connect--->>>>]");
m_initSimProcOrderDBRet = SimProcOrderDB::getInstance().initSimProcOrderDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initSimProcOrderDBRet Retry Connect Ret:= %1 --->>>>]").arg( m_initSimProcOrderDBRet ? 1 : 0 );
}
if ( !m_initPrintSumBillPosDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintSumBillPosDBRet Is Failed, Retry Connect--->>>>]");
m_initPrintSumBillPosDBRet = PrintSumBillPosDB::getInstance().initPrintSumBillPosDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintSumBillPosDBRet Retry Connect Ret:= %1 --->>>>]").arg( m_initPrintSumBillPosDBRet ? 1 : 0 );
}
if ( !m_initPrintCupStickPosDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintCupStickPosDBRet Is Failed, Retry Connect--->>>>]");
m_initPrintCupStickPosDBRet = PrintCupStickPosDB::getInstance().initPrintCupStickPosDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintCupStickPosDBRet Retry Connect Ret:= %1 --->>>>]").arg( m_initPrintCupStickPosDBRet ? 1 : 0 );
}
if ( !m_initPrintMsgQueueDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintMsgQueueDBRet Is Failed, Retry Connect--->>>>]");
m_initPrintMsgQueueDBRet = PrintMsgQueueDB::getInstance().initPrintMsgQueueDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() initPrintMsgQueueDB Retry Connect Ret:= %1 --->>>>]").arg( m_initPrintMsgQueueDBRet ? 1 : 0 );
}
if ( !m_initPrintOrderPromotionDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPrintOrderPromotionDBRet Is Failed, Retry Connect--->>>>]");
m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() initPrintOrderPromotionDB Retry Connect Ret:= %1 --->>>>]").arg( m_initPrintOrderPromotionDBRet ? 1 : 0 );
}
if ( !m_initCheckPoskeyExistPosDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initCheckPoskeyExistPosDBRet Is Failed, Retry Connect--->>>>]");
m_initCheckPoskeyExistPosDBRet = CheckPoskeyExistPosDB::getInstance().initCheckPoskeyExistPosDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() initCheckPoskeyExistPosDB Retry Connect Ret:= %1 --->>>>]").arg( m_initCheckPoskeyExistPosDBRet ? 1 : 0 );
}
if ( !m_initSaveNoticeMsgDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initSaveNoticeMsgDBRet Is Failed, Retry Connect--->>>>]");
m_initSaveNoticeMsgDBRet = SaveNoticeMsgDB::getInstance().initSaveNoticeMsgDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() initSaveNoticeMsgDB Retry Connect Ret:= %1 --->>>>]").arg( m_initSaveNoticeMsgDBRet ? 1 : 0 );
}
if ( !m_initPosMetaDataDBRet ) {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_LoopRefresh() m_initPosMetaDataDBRet Is Failed, Retry Connect--->>>>]");
m_initPosMetaDataDBRet = PosMetaDataDB::getInstance().initPosMetaDataDB();
QLOG_INFO()<<QString("[<<<<---FlowControl::_LoopRefresh() initPosMetaDataDB Retry Connect Ret:= %1 --->>>>]").arg( m_initPosMetaDataDBRet ? 1 : 0 );
}
}
}
void FlowControl::_QueryAllNoticeMsg() void FlowControl::_QueryAllNoticeMsg()
{ {
...@@ -1456,6 +1495,7 @@ bool FlowControl::_Login() ...@@ -1456,6 +1495,7 @@ bool FlowControl::_Login()
emit hideAlert(); emit hideAlert();
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();
...@@ -1484,14 +1524,14 @@ bool FlowControl::_Login() ...@@ -1484,14 +1524,14 @@ bool FlowControl::_Login()
m_remindCasherBlinkFloatTimer->start(5*1000); m_remindCasherBlinkFloatTimer->start(5*1000);
//在登陆时再次检查数据库连接是否都正常; //在登陆时再次检查数据库连接是否都正常;
if( !m_initSimProcOrderDBRet || !m_initPrintSumBillPosDBRet || !m_initGetAuthPosDBRet || !m_initPrintCupStickPosDBRet if( !m_initSimProcOrderDBRet || !m_initPrintSumBillPosDBRet || !m_initPrintCupStickPosDBRet
|| !m_initPrintMsgQueueDBRet || !m_initPrintOrderPromotionDBRet || !m_initCheckPoskeyExistPosDBRet || !m_initSaveNoticeMsgDBRet) || !m_initPrintMsgQueueDBRet || !m_initPrintOrderPromotionDBRet || !m_initCheckPoskeyExistPosDBRet || !m_initSaveNoticeMsgDBRet)
{ {
result = false; result = false;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_Login() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2, m_initGetAuthPosDBRet:%3 ," QLOG_INFO()<<QString("[<<<<---FlowControl::_Login() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2,"
"m_initPrintCupStickPosDBRet:%4, m_initPrintMsgQueueDBRet:%5, m_initPrintOrderPromotionDBRet:%6, m_initCheckPoskeyExistPosDBRet:%7," "m_initPrintCupStickPosDBRet:%3, m_initPrintMsgQueueDBRet:%4, m_initPrintOrderPromotionDBRet:%5, m_initCheckPoskeyExistPosDBRet:%6,"
"m_initSaveNoticeMsgDBRet:%8, m_initPosMetaDataDBRet:%9 --->>>>]") "m_initSaveNoticeMsgDBRet:%7, m_initPosMetaDataDBRet:%8 --->>>>]")
.arg( m_initSimProcOrderDBRet?1:0).arg( m_initPrintSumBillPosDBRet?1:0).arg( m_initGetAuthPosDBRet?1:0) .arg( m_initSimProcOrderDBRet?1:0).arg( m_initPrintSumBillPosDBRet?1:0)
.arg(m_initPrintCupStickPosDBRet?1:0).arg(m_initPrintMsgQueueDBRet?1:0).arg(m_initPrintOrderPromotionDBRet?1:0) .arg(m_initPrintCupStickPosDBRet?1:0).arg(m_initPrintMsgQueueDBRet?1:0).arg(m_initPrintOrderPromotionDBRet?1:0)
.arg(m_initCheckPoskeyExistPosDBRet?1:0).arg(m_initSaveNoticeMsgDBRet?1:0).arg(m_initPosMetaDataDBRet?1:0); .arg(m_initCheckPoskeyExistPosDBRet?1:0).arg(m_initSaveNoticeMsgDBRet?1:0).arg(m_initPosMetaDataDBRet?1:0);
...@@ -3760,12 +3800,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -3760,12 +3800,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
} }
cObj.insert("paid_trans_id",orderObject->id); cObj.insert("paid_trans_id",orderObject->id);
/************************************************************************************/ /************************************************************************************/
int hasCashbox = 0 ,hasRefundAuth = 0; cObj.insert("hasCashbox",1);
hasCashbox = GetCaboxAReAuth::getInstance().getUserHasCashBox(m_cashierId); cObj.insert("hasRefundAuth",1);
hasRefundAuth = GetCaboxAReAuth::getInstance().getUserRefundAuth(m_cashierId);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:] 获取当前用户是否绑定钱箱:hasCashbox:%1; 当前用户是否拥有退货权限:hasRefundAuth:%2:--->>>>>]").arg(hasCashbox).arg(hasRefundAuth);
cObj.insert("hasCashbox",hasCashbox);
cObj.insert("hasRefundAuth",hasRefundAuth);
/************************************************************************************/ /************************************************************************************/
rObj.insert("pay_id", cObj); rObj.insert("pay_id", cObj);
QJsonArray products; QJsonArray products;
...@@ -4235,7 +4271,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -4235,7 +4271,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
void FlowControl::_AutoLoginSkipCashier() { void FlowControl::_AutoLoginSkipCashier() {
QLOG_INFO()<<__FUNCTION__; QLOG_INFO()<<__FUNCTION__;
m_storeId = GetCaboxAReAuth::getInstance().getDbStoreId(); //未登陆成功前 DB storeId; // m_storeId = GetCaboxAReAuth::getInstance().getDbStoreId(); //未登陆成功前 DB storeId;
m_storeId = PosMetaDataDB::getInstance().getDbStoreId();
m_subStoreId = ConfigManger::GetInstance().GetSubStoreId(); m_subStoreId = ConfigManger::GetInstance().GetSubStoreId();
if ( m_backupPosFlag ) { if ( m_backupPosFlag ) {
m_posId= BACKUP_POS_UNIQUE_ID; m_posId= BACKUP_POS_UNIQUE_ID;
......
...@@ -174,6 +174,7 @@ private: ...@@ -174,6 +174,7 @@ private:
QTimer *m_reportOMSReocrdOrderTimer; QTimer *m_reportOMSReocrdOrderTimer;
QTimer *m_presistInputPosSuccessReocrdTimer; QTimer *m_presistInputPosSuccessReocrdTimer;
QTimer *m_loginTimer; QTimer *m_loginTimer;
QTimer *m_loopRefreshTimer;
QTimer *m_queryAllNoticeTimer; QTimer *m_queryAllNoticeTimer;
QTimer *m_storageOrderTimer; QTimer *m_storageOrderTimer;
QTimer *m_delayGetRefundDetailTimer; QTimer *m_delayGetRefundDetailTimer;
...@@ -249,7 +250,6 @@ private: ...@@ -249,7 +250,6 @@ private:
//新增三个bool变量用来标识 程序初始化时,两个数据库中的三张表是否能够连接正常; //新增三个bool变量用来标识 程序初始化时,两个数据库中的三张表是否能够连接正常;
bool m_initSimProcOrderDBRet; bool m_initSimProcOrderDBRet;
bool m_initPrintSumBillPosDBRet; bool m_initPrintSumBillPosDBRet;
bool m_initGetAuthPosDBRet;
bool m_initPrintCupStickPosDBRet; bool m_initPrintCupStickPosDBRet;
bool m_initPrintMsgQueueDBRet; bool m_initPrintMsgQueueDBRet;
bool m_initPrintOrderPromotionDBRet; bool m_initPrintOrderPromotionDBRet;
...@@ -315,6 +315,13 @@ signals: ...@@ -315,6 +315,13 @@ 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
...@@ -501,6 +508,8 @@ private slots: ...@@ -501,6 +508,8 @@ private slots:
void _ClickToLogin(); void _ClickToLogin();
void _LoopRefresh();
void RefreshPosMetaData(); void RefreshPosMetaData();
void _QueryAllNoticeMsg(); void _QueryAllNoticeMsg();
......
...@@ -106,3 +106,32 @@ bool PosMetaDataDB::queryPosMetaDataDB( PosMateDataObject* posMateDataObj) { ...@@ -106,3 +106,32 @@ bool PosMetaDataDB::queryPosMetaDataDB( PosMateDataObject* posMateDataObj) {
m_sqlDb.close(); m_sqlDb.close();
return result; return result;
} }
QString PosMetaDataDB::getDbStoreId() {
QMutexLocker mutex(&m_mutex);
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return "";
}
QString result = "";
QSqlQuery query(m_sqlDb);
QLOG_INFO()<< QString("SELECT TOP 1 ObjectNumber FROM [DataStore].[dbo].[V_HIERARCHY] where Parent1=1");
query.prepare( QString("SELECT TOP 1 ObjectNumber FROM [DataStore].[dbo].[V_HIERARCHY] where Parent1=1") );
if ( !query.exec() ) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:getDbStoreId--->>>>]"<<query.lastError().text();
result= "";
}
if ( query.first() ) {
result= query.value(0).toString();
QLOG_INFO()<<QString("[<<<<---SqlServer Database, getDbStoreId: %1--->>>>]").arg(result);
} else {
result = "";
}
m_sqlDb.close();
return result;
}
...@@ -29,6 +29,14 @@ public: ...@@ -29,6 +29,14 @@ public:
**/ **/
bool queryPosMetaDataDB(PosMateDataObject* posMateDataObj); bool queryPosMetaDataDB(PosMateDataObject* posMateDataObj);
/**
*功能:查询 “门店号” 是否存在本地的POS系统中;
*参数:[0]
*返回: 查询成功的门店号;
**/
QString getDbStoreId();
private: private:
QMutex m_mutex; QMutex m_mutex;
PosMetaDataDB(); PosMetaDataDB();
...@@ -36,6 +44,7 @@ private: ...@@ -36,6 +44,7 @@ private:
PosMetaDataDB& operator=(PosMetaDataDB const&); PosMetaDataDB& operator=(PosMetaDataDB const&);
QSqlDatabase m_sqlDb; QSqlDatabase m_sqlDb;
bool m_configTableExist; bool m_configTableExist;
QString m_dbStoreId;
signals: signals:
......
...@@ -20,10 +20,67 @@ ConfigManger::ConfigManger() ...@@ -20,10 +20,67 @@ ConfigManger::ConfigManger()
QString appDir = QApplication::applicationDirPath(); QString appDir = QApplication::applicationDirPath();
QString config = QString("%1/%2").arg(appDir).arg(CONFIG_NAME); QString config = QString("%1/%2").arg(appDir).arg(CONFIG_NAME);
QString userConfig = QString("%1/%2").arg(appDir).arg(USERCONFIG_NAME); QString userConfig = QString("%1/%2").arg(appDir).arg(USERCONFIG_NAME);
QString proxyServiceConfig = QString("C:\\Freemud\\daemonService\\fmproxy_service.config");
m_config = new QSettings(config, QSettings::IniFormat); m_config = new QSettings(config, QSettings::IniFormat);
m_userConfig = new QSettings(userConfig, QSettings::IniFormat); m_userConfig = new QSettings(userConfig, QSettings::IniFormat);
/* // One Pos 守护程序: 守护插件的路径的修改;
[FMKeeper]
Heartbeat={"fm_cmd":4}
HeartbeatPeer=24409
ServiceName=PosPluginDaemon
HeartbeatTryCnt=5
CheckInterval=180
PersistLaunch=0
KillElapse=0
DefaultExe=C:\\freemud\\fmPlugin\\fmTakeout.exe //<<---//
ServiceStartMode=2
ServiceStartDelayInterval=330
DaemonMultiProcessMode=1
MultiProcessPortExeMap=24409@C:\\freemud\\fmPlugin\\fmTakeout.exe;8080@C:\\Micros\\Simphony\\WebServer\\ServiceHost.exe //<<---//
ExtraDaemonServiceNameList=SbuxCapsServices;
*/
//判断文件是否存在,不存在则置空,存在则配置;
QFileInfo proxyServiceConfigFileInfo(proxyServiceConfig);
if ( proxyServiceConfigFileInfo.isFile() )
{
//QFile::rename(newConfigFileFullName ,newBakConfigFileFullName);
//QFile::copy(configFileFullName, newConfigFileFullName);
//QLOG_INFO() << QString(" Copy config.ini File:: %1 To %2 Success !!!").arg(configFileFullName).arg(newConfigFileFullName);
m_proxyServiceConfig = new QSettings(proxyServiceConfig, QSettings::IniFormat);
QString tempProcessMapCfg = m_proxyServiceConfig->value(INI_DAEMON_PROCESS_MAP_KEY).toString();
QString tempDefaultExeCfg = m_proxyServiceConfig->value(INI_DAEMON_DEFAULT_EXE_KEY).toString();
// 输出检查;
QLOG_INFO() << QString(" One Pos(Backup Pos) Daemon DefaultExe::%1 ; Daemon Service List:: %2 ").arg(tempDefaultExeCfg).arg(tempProcessMapCfg);
if ( tempProcessMapCfg.indexOf(INI_DAEMON_PROCESS_MAP_VALUE,Qt::CaseInsensitive) >= 0
&& tempDefaultExeCfg.indexOf(INI_DAEMON_DEFAULT_EXE_VALUE,Qt::CaseInsensitive) >= 0 ) {
QLOG_INFO() << QString(" One Pos(Backup Pos) Value Is New, No Need Modify !!!");
} else {
// 重置新路径配置;
if ( m_proxyServiceConfig->isWritable() ) {
QString tempNewProcessMapCfg = QString("24409@C:\\freemud\\fmPluginNew\\fmTakeout.exe;8080@C:\\Micros\\Simphony\\WebServer\\ServiceHost.exe");
m_proxyServiceConfig->setValue(INI_DAEMON_PROCESS_MAP_KEY, tempNewProcessMapCfg.trimmed());
QString tempNewDefaultExeCfg = "C:\\freemud\\fmPluginNew\\fmTakeout.exe";
m_proxyServiceConfig->setValue( INI_DAEMON_DEFAULT_EXE_KEY, tempNewDefaultExeCfg);
// 修改后再次输出检查;
tempProcessMapCfg = m_proxyServiceConfig->value(INI_DAEMON_PROCESS_MAP_KEY).toString();
tempDefaultExeCfg = m_proxyServiceConfig->value(INI_DAEMON_DEFAULT_EXE_KEY).toString();
QLOG_INFO() << QString(" One Pos(Backup Pos) After Modify --> Daemon DefaultExe::%1 ; Daemon Service List:: %2").arg(tempDefaultExeCfg).arg(tempProcessMapCfg);
} else {
QLOG_ERROR() << QString(" One Pos(Backup Pos) Mode , fmproxy_service.config No Writable !!!");
}
}
} else {
QLOG_INFO() << QString(" Not One Pos(Backup Pos) Mode, No Need Do Anthing");
m_proxyServiceConfig = new QSettings();
}
} }
ConfigManger::SqlConnectInfo ConfigManger::GetSqlConnectInfo() ConfigManger::SqlConnectInfo ConfigManger::GetSqlConnectInfo()
{ {
SqlConnectInfo info; SqlConnectInfo info;
...@@ -47,10 +104,12 @@ QString ConfigManger::GetLoginServerUrl() ...@@ -47,10 +104,12 @@ QString ConfigManger::GetLoginServerUrl()
{ {
return m_config->value(INI_LOGINSERVER).toString(); return m_config->value(INI_LOGINSERVER).toString();
} }
QString ConfigManger::GetOrderServerUrl() QString ConfigManger::GetOrderServerUrl()
{ {
return m_config->value(INI_ORDERSERVER).toString(); return m_config->value(INI_ORDERSERVER).toString();
} }
QString ConfigManger::GetStoreServerUrl() QString ConfigManger::GetStoreServerUrl()
{ {
return m_config->value(INI_STORESERVER).toString(); return m_config->value(INI_STORESERVER).toString();
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include <QSettings> #include <QSettings>
#include <QUrl> #include <QUrl>
#include <QPoint> #include <QPoint>
#include <QFileInfo>
#include "QsLog.h"
class ConfigManger class ConfigManger
{ {
...@@ -171,6 +173,7 @@ private: ...@@ -171,6 +173,7 @@ private:
// 程序配置和用户配置 // 程序配置和用户配置
QSettings *m_config; QSettings *m_config;
QSettings *m_userConfig; QSettings *m_userConfig;
QSettings *m_proxyServiceConfig;
}; };
#endif // CONFIGMANGER_H #endif // CONFIGMANGER_H
...@@ -14,7 +14,7 @@ PrintSumBillPosDB::PrintSumBillPosDB() ...@@ -14,7 +14,7 @@ PrintSumBillPosDB::PrintSumBillPosDB()
bool PrintSumBillPosDB::initPrintSumBillPosDB(){ bool PrintSumBillPosDB::initPrintSumBillPosDB(){
//QString dbPath = QString(ConfigManage::Instance().databasePath()); //QString dbPath = QString(ConfigManage::Instance().databasePath());
bool bRet = false, bRet20 = false, bRet21 = false; bool bRet = false, bRet20 = false, bRet21 = false, bRet24 = false;
bool bRetCheckColumn = false; bool bRetCheckColumn = false;
bool bRetChangeLength = false; bool bRetChangeLength = false;
m_sqlDb = QSqlDatabase::addDatabase("QODBC","PrintSumBillPosDB"); //数据库驱动类型为SQL Server m_sqlDb = QSqlDatabase::addDatabase("QODBC","PrintSumBillPosDB"); //数据库驱动类型为SQL Server
...@@ -38,25 +38,29 @@ bool PrintSumBillPosDB::initPrintSumBillPosDB(){ ...@@ -38,25 +38,29 @@ bool PrintSumBillPosDB::initPrintSumBillPosDB(){
} }
bRet = alterTablePrintSumBillPosDB(); bRet = alterTablePrintSumBillPosDB();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM TakeOut Plugin Version:2.20181130.1 Begin Add New Column Result: %1--->>>>]").arg(bRet?1:0); QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.20181130.1 Begin Add New Column Result: %1--->>>>]").arg(bRet?1:0);
bRetCheckColumn = alterTablePrintSumBillPosDBAndCheck(); bRetCheckColumn = alterTablePrintSumBillPosDBAndCheck();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM TakeOut Plugin Version:2.2019.520.1 Begin Alter table tb_msr_customer_info Column Result: %1--->>>>]") QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.2019.520.1 Begin Alter table tb_msr_customer_info Column Result: %1--->>>>]")
.arg(bRetCheckColumn?1:0); .arg(bRetCheckColumn?1:0);
bRet20 = alterTablePrintSumBillPosDB20(); bRet20 = alterTablePrintSumBillPosDB20();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM TakeOut Plugin Version:2.2020.5.12 Begin Add New Column Result: %1--->>>>]").arg(bRet20?1:0); QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.2020.5.12 Begin Add New Column Result: %1--->>>>]").arg(bRet20?1:0);
bRetChangeLength = alterTablePrintSumBillPosDBLength(); bRetChangeLength = alterTablePrintSumBillPosDBLength();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM TakeOut Plugin Version:2.2020.9.28 Begin Change Store Column Result: %1--->>>>]") QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.2020.9.28 Begin Change Store Column Result: %1--->>>>]")
.arg(bRetChangeLength?1:0); .arg(bRetChangeLength?1:0);
bRet21 = alterTablePrintSumBillPosDB21(); bRet21 = alterTablePrintSumBillPosDB21();
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM TakeOut Plugin Version:2.2021.8.2 Begin Add New Column Result: %1--->>>>]").arg(bRet21?1:0); QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.2021.8.2 Begin Add New Column Result: %1--->>>>]").arg(bRet21?1:0);
return (bRet && bRetCheckColumn && bRet20 && bRetChangeLength && bRet21 ); bRet24 = alterTablePrintSumBillPosDB24();
QLOG_INFO()<<QString("[<<<<---FM TakeOut Plugin Version:2.2024.1.31 Begin Add New Column Result: %1--->>>>]").arg(bRet24?1:0);
return (bRet && bRetCheckColumn && bRet20 && bRetChangeLength && bRet21 && bRet24);
} }
bool PrintSumBillPosDB::alterTablePrintSumBillPosDB() { bool PrintSumBillPosDB::alterTablePrintSumBillPosDB() {
QMutexLocker mutex(&m_mutex); QMutexLocker mutex(&m_mutex);
int addSuccessNum = 0; int addSuccessNum = 0;
...@@ -253,6 +257,7 @@ bool PrintSumBillPosDB::alterTablePrintSumBillPosDBAndCheck() { ...@@ -253,6 +257,7 @@ bool PrintSumBillPosDB::alterTablePrintSumBillPosDBAndCheck() {
} }
} }
bool PrintSumBillPosDB::alterTablePrintSumBillPosDB20() { bool PrintSumBillPosDB::alterTablePrintSumBillPosDB20() {
QMutexLocker mutex(&m_mutex); QMutexLocker mutex(&m_mutex);
int addSuccessNum = 0; int addSuccessNum = 0;
...@@ -824,6 +829,51 @@ bool PrintSumBillPosDB::alterTablePrintSumBillPosDBLength(){ ...@@ -824,6 +829,51 @@ bool PrintSumBillPosDB::alterTablePrintSumBillPosDBLength(){
} }
} }
bool PrintSumBillPosDB::alterTablePrintSumBillPosDB24() {
QMutexLocker mutex(&m_mutex);
int addSuccessNum = 0;
QSqlQuery query(m_sqlDb);
QString selectsql;
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---alterTablePrintSumBillPosDB24::SqlServer Database:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return false;
}
// Alter Table reserve41;
selectsql = "select * from syscolumns where id=object_id('tb_msr_customer_info') and name='reserve41'";
query.exec(selectsql);
if(!query.next()){
selectsql = "alter table tb_msr_customer_info add reserve41 varchar(MAX) null ";
if(!query.exec(selectsql)){
QLOG_ERROR()<< "[<<<<---alter table tb_msr_customer_info reserve41 Faild--->>>>]" <<query.lastError().text()<<QString::number(query.lastError().type());
} else { addSuccessNum++; }
} else { addSuccessNum++;}
// Alter Table reserve42;
/*
selectsql = "select * from syscolumns where id=object_id('tb_msr_customer_info') and name='reserve42'";
query.exec(selectsql);
if(!query.next()){
selectsql = "alter table tb_msr_customer_info add reserve42 varchar(80) null ";
if(!query.exec(selectsql)){
QLOG_ERROR()<< "[<<<<---alter table tb_msr_customer_info reserve42 Faild--->>>>]" <<query.lastError().text()<<QString::number(query.lastError().type());
} else { addSuccessNum++; }
} else { addSuccessNum++;}
*/
m_sqlDb.close();
if (1 == addSuccessNum) {
QLOG_INFO()<<"[<<<<---alterTablePrintSumBillPosDB24::addSuccessNum = 1 , Successed --->>>>]";
return true;
} else {
QLOG_ERROR()<<"[<<<<---alterTablePrintSumBillPosDB24::addSuccessNum< 1 --->>>>]"<<addSuccessNum;
return false;
}
}
PrintSumBillPosDB &PrintSumBillPosDB::getInstance() PrintSumBillPosDB &PrintSumBillPosDB::getInstance()
{ {
static PrintSumBillPosDB printSumBillPosDB; static PrintSumBillPosDB printSumBillPosDB;
...@@ -849,9 +899,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -849,9 +899,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
" pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price, " " pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price, "
" orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, " " orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, "
" pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount, " " pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount, "
" reserve8, reserve9, reserve10, reserve11, reserve12, reserve22, reserve23, reserve24, reserve25, reserve26, reserve27 ) " " reserve8, reserve9, reserve10, reserve11, reserve12, reserve13, reserve22, reserve23, reserve24, reserve25, reserve26, reserve27, reserve41 ) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
" ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ); " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" );
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->lastName); // --顾客-姓 query.addBindValue(orderObj->lastName); // --顾客-姓
query.addBindValue(orderObj->consigneeName); // --顾客-全名 query.addBindValue(orderObj->consigneeName); // --顾客-全名
...@@ -865,11 +915,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -865,11 +915,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
} else{ temp_customerSex = ""; } } else{ temp_customerSex = ""; }
query.addBindValue(temp_customerSex); // --顾客-性别 query.addBindValue(temp_customerSex); // --顾客-性别
query.addBindValue(0); // --顾客-生日 query.addBindValue(0); // --顾客-生日
QDateTime qdaTi = QDateTime::currentDateTimeUtc(); QDateTime qdaTi = QDateTime::currentDateTimeUtc();
QString posCheckOpenTime = posCheckTime.length()? QString posCheckOpenTime = posCheckTime.length()?
qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd ") + posCheckTime : qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss"); qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd ") + posCheckTime : qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss");
query.addBindValue(posCheckOpenTime); // --POS开单时间 query.addBindValue(posCheckOpenTime); // --POS开单时间
query.addBindValue(FlowControl::GetInstance()._GetCashierId()); // --订单处理者 query.addBindValue(FlowControl::GetInstance()._GetCashierId()); // --订单处理者
query.addBindValue(""); // --变更订单时间 //?????????????????????????????????????????? query.addBindValue(""); // --变更订单时间 //??????????????????????????????????????????
...@@ -892,7 +940,6 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -892,7 +940,6 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
query.addBindValue(orderObj->memo); // --订单备注 query.addBindValue(orderObj->memo); // --订单备注
query.addBindValue(orderObj->secretSignal); // --接头暗号 query.addBindValue(orderObj->secretSignal); // --接头暗号
query.addBindValue(orderObj->consumerRemark); // --顾客备注 query.addBindValue(orderObj->consumerRemark); // --顾客备注
// 与 oms协定此块业务出现 歧异 故在此处转换; // 与 oms协定此块业务出现 歧异 故在此处转换;
int tempBusinessType = orderObj->businessType.toInt(); int tempBusinessType = orderObj->businessType.toInt();
if ( ( "WSG-MOD" == orderObj->channel || "WSG-MOP" == orderObj->channel ) && "4" == orderObj->platformSource) { if ( ( "WSG-MOD" == orderObj->channel || "WSG-MOP" == orderObj->channel ) && "4" == orderObj->platformSource) {
...@@ -916,11 +963,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -916,11 +963,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
QString tempAppointedRemindTemplate = QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime; // 预约模板; QString tempAppointedRemindTemplate = QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime; // 预约模板;
query.addBindValue(tempAppointedRemindTemplate); query.addBindValue(tempAppointedRemindTemplate);
query.addBindValue(orderObj->orderType); query.addBindValue(orderObj->orderType);
QString tempChannel = ("WSG-MOD" == orderObj->channel) ? "MOD" : orderObj->channel; QString tempChannel = ("WSG-MOD" == orderObj->channel) ? "MOD" : orderObj->channel;
tempChannel = ( "WSG-MOP" == tempChannel || "MT-MOP" == tempChannel ) ? "MOP" : tempChannel; tempChannel = ( "WSG-MOP" == tempChannel || "MT-MOP" == tempChannel ) ? "MOP" : tempChannel;
tempChannel = ( "EC_WECHAT_MOP" == tempChannel ) ? "EC-MOP" : tempChannel; // EC_WECHAT_MOP: 电商微信MOP 需转换 电商MOP; tempChannel = ( "EC_WECHAT_MOP" == tempChannel ) ? "EC-MOP" : tempChannel; // EC_WECHAT_MOP: 电商微信MOP 需转换 电商MOP;
query.addBindValue(tempChannel); query.addBindValue(tempChannel);
query.addBindValue(orderObj->platformSource); query.addBindValue(orderObj->platformSource);
query.addBindValue(orderObj->payWay); query.addBindValue(orderObj->payWay);
...@@ -949,7 +994,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -949,7 +994,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
query.addBindValue(orderObj->packageSku); // 打包sku; query.addBindValue(orderObj->packageSku); // 打包sku;
query.addBindValue(orderObj->thirdPartyOrderId); // 三方订单号 query.addBindValue(orderObj->thirdPartyOrderId); // 三方订单号
query.addBindValue(0); // 商家优惠; 目前暂时使用不到,预留; query.addBindValue(0); // 商家优惠; 目前暂时使用不到,预留;
if ( orderObj->decouplePosVersion>= 20 && OrderObject::Refunded == orderObj->orderStatus ) { if ( OrderObject::Refunded == orderObj->orderStatus ) {
query.addBindValue( 0 - orderObj->packageFee ); // --解耦POS后, 退单打包金额需为负数; query.addBindValue( 0 - orderObj->packageFee ); // --解耦POS后, 退单打包金额需为负数;
query.addBindValue( 0 - orderObj->packDiscount); // --解耦POS后, 退单打包优惠金额需为负数; query.addBindValue( 0 - orderObj->packDiscount); // --解耦POS后, 退单打包优惠金额需为负数;
query.addBindValue( 0 - orderObj->deliveryPrice ); // --解耦POS后, 退单配送费金额需为负数; query.addBindValue( 0 - orderObj->deliveryPrice ); // --解耦POS后, 退单配送费金额需为负数;
...@@ -960,12 +1005,12 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -960,12 +1005,12 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
query.addBindValue(orderObj->deliveryPrice); // 配送费; query.addBindValue(orderObj->deliveryPrice); // 配送费;
query.addBindValue(orderObj->deliveryDiscount); // 配送费折扣; query.addBindValue(orderObj->deliveryDiscount); // 配送费折扣;
} }
query.addBindValue(orderObj->carNumber); // Curbside-车牌号; query.addBindValue(orderObj->carNumber); // Curbside-车牌号;
query.addBindValue(orderObj->privacyPhone); // Curbside-隐私号 query.addBindValue(orderObj->privacyPhone); // Curbside-隐私号
query.addBindValue(orderObj->remindTicketTime); // Curbside-打印街送提醒小票时间 query.addBindValue(orderObj->remindTicketTime); // Curbside-打印街送提醒小票时间
query.addBindValue(orderObj->carColor); // Curbside-车颜色; query.addBindValue(orderObj->carColor); // Curbside-车颜色;
query.addBindValue(orderObj->carBrandModel); // Curbside-车品牌车型; query.addBindValue(orderObj->carBrandModel); // Curbside-车品牌车型;
query.addBindValue(orderObj->memberLevel); // 会员等级: 黑金 金星 玉星 银星等;
query.addBindValue(orderObj->extendType); // 扩展类型: 20: MOD PLUS 渠道; query.addBindValue(orderObj->extendType); // 扩展类型: 20: MOD PLUS 渠道;
query.addBindValue(orderObj->deliveryProvider); // 配送商家类型: 1:蜂鸟 2:美团; query.addBindValue(orderObj->deliveryProvider); // 配送商家类型: 1:蜂鸟 2:美团;
query.addBindValue(orderObj->deliveryType); // 配送方式: 1: 二轮车 2: 四轮车 3: 美团无人机; query.addBindValue(orderObj->deliveryType); // 配送方式: 1: 二轮车 2: 四轮车 3: 美团无人机;
...@@ -976,6 +1021,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -976,6 +1021,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
} }
query.addBindValue(orderObj->blockPrintCupTicketTask); // block 打印杯贴小票; query.addBindValue(orderObj->blockPrintCupTicketTask); // block 打印杯贴小票;
query.addBindValue(orderObj->blockPrintRemindTicketTask); // block 打印街送提醒小票; query.addBindValue(orderObj->blockPrintRemindTicketTask); // block 打印街送提醒小票;
query.addBindValue(orderObj->posExtendListString); // POS扩展属性列表;
QLOG_INFO()<<QString("[<<<--PrintSumBillPosDB::insertOrderSumBill waybillId:%1-->>>>]").arg((orderObj->waybillId).length()?orderObj->waybillId:QString("0")); QLOG_INFO()<<QString("[<<<--PrintSumBillPosDB::insertOrderSumBill waybillId:%1-->>>>]").arg((orderObj->waybillId).length()?orderObj->waybillId:QString("0"));
...@@ -991,10 +1037,10 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -991,10 +1037,10 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
" pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price" " pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price"
" orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, " " orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, "
" pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount, " " pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount, "
" reserve8, reserve9, reserve10, reserve11, reserve12, reserve22, reserve23, reserve24, reserve25, reserve26, reserve27 ) " " reserve8, reserve9, reserve10, reserve11, reserve12, reserve13, reserve22, reserve23, reserve24, reserve25, reserve26, reserve27, reserve41 ) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18," "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, %41, %42" " %19, %20, %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, %63, %64, %65, %66, %67, %68 )") " %43, %44, %45, %46, %47, %48, %49, %50,%51, %52, %53, %54, %55, %56, %57, %58, %59, %60, %61, %62, %63, %64, %65, %66, %67, %68, %69, %70 )")
.arg(posCheckNo.toInt()) .arg(posCheckNo.toInt())
.arg(orderObj->lastName).arg(orderObj->customerName).arg(temp_customerSex) .arg(orderObj->lastName).arg(orderObj->customerName).arg(temp_customerSex)
.arg(0).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")).arg(FlowControl::GetInstance()._GetCashierId()).arg("").arg("") .arg(0).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")).arg(FlowControl::GetInstance()._GetCashierId()).arg("").arg("")
...@@ -1012,9 +1058,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -1012,9 +1058,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
.arg("").arg(APP_VERSION).arg(orderObj->packageSku).arg(orderObj->thirdPartyOrderId).arg(0).arg(orderObj->packageFee) .arg("").arg(APP_VERSION).arg(orderObj->packageSku).arg(orderObj->thirdPartyOrderId).arg(0).arg(orderObj->packageFee)
.arg(orderObj->packDiscount).arg(orderObj->deliveryPrice).arg(orderObj->deliveryDiscount) .arg(orderObj->packDiscount).arg(orderObj->deliveryPrice).arg(orderObj->deliveryDiscount)
.arg(orderObj->carNumber).arg(orderObj->privacyPhone).arg(orderObj->remindTicketTime) .arg(orderObj->carNumber).arg(orderObj->privacyPhone).arg(orderObj->remindTicketTime)
.arg(orderObj->carColor).arg(orderObj->carBrandModel) .arg(orderObj->carColor).arg(orderObj->carBrandModel).arg(orderObj->memberLevel)
.arg(orderObj->extendType).arg(orderObj->deliveryProvider).arg(orderObj->deliveryType).arg(orderObj->totalPriceForPos) .arg(orderObj->extendType).arg(orderObj->deliveryProvider).arg(orderObj->deliveryType).arg(orderObj->totalPriceForPos)
.arg(orderObj->blockPrintCupTicketTask).arg(orderObj->blockPrintRemindTicketTask); .arg(orderObj->blockPrintCupTicketTask).arg(orderObj->blockPrintRemindTicketTask).arg(orderObj->posExtendListString);
} else { } else {
QLOG_INFO()<<QString("[<<<<---SqlServer Database:Insert OrderId %1 Into tb_msr_customer_info Success--->>>>]").arg(orderObj->id); QLOG_INFO()<<QString("[<<<<---SqlServer Database:Insert OrderId %1 Into tb_msr_customer_info Success--->>>>]").arg(orderObj->id);
result = true; result = true;
......
...@@ -67,6 +67,13 @@ public: ...@@ -67,6 +67,13 @@ public:
bool alterTablePrintSumBillPosDBLength(); bool alterTablePrintSumBillPosDBLength();
/** /**
*功能:新增pos本地数据库打印小票信息表中字段;
*参数:[无]
*返回:true:新增成功,false:新增字段失败
**/
bool alterTablePrintSumBillPosDB24();
/**
*功能:插入一条汇总单信息到pos本地数据库中; *功能:插入一条汇总单信息到pos本地数据库中;
*参数:[1]订单对象指针 [2]小票号 [3]Pos机实际开单时间 *参数:[1]订单对象指针 [2]小票号 [3]Pos机实际开单时间
*返回:true操作成功,false失败 *返回:true操作成功,false失败
......
#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
...@@ -16,6 +16,11 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -16,6 +16,11 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
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++)
{ {
...@@ -44,8 +49,17 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -44,8 +49,17 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
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);
...@@ -60,6 +74,11 @@ OrderObject& OrderObject::operator =(const OrderObject& order) ...@@ -60,6 +74,11 @@ OrderObject& OrderObject::operator =(const OrderObject& order)
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++)
{ {
...@@ -89,9 +108,17 @@ OrderObject& OrderObject::operator =(const OrderObject& order) ...@@ -89,9 +108,17 @@ OrderObject& OrderObject::operator =(const OrderObject& order)
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;
} }
void OrderObject::FromJson(const QJsonObject &json) void OrderObject::FromJson(const QJsonObject &json)
{ {
qDeleteAll(proList); qDeleteAll(proList);
...@@ -106,6 +133,11 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -106,6 +133,11 @@ void OrderObject::FromJson(const QJsonObject &json)
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();
...@@ -192,6 +224,28 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -192,6 +224,28 @@ void OrderObject::FromJson(const QJsonObject &json)
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 );
}
// 更新 QJsonObject Value; // 更新 QJsonObject Value;
if (json.contains(JSON_PUSH_PLUGIN_OPTIONS) ) { if (json.contains(JSON_PUSH_PLUGIN_OPTIONS) ) {
pluginOptions = json[JSON_PUSH_PLUGIN_OPTIONS].toObject(); pluginOptions = json[JSON_PUSH_PLUGIN_OPTIONS].toObject();
...@@ -241,6 +295,7 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -241,6 +295,7 @@ void OrderObject::FromJson(const QJsonObject &json)
return; return;
} }
void OrderObject::FetchDataFromJson(const QJsonObject &json) void OrderObject::FetchDataFromJson(const QJsonObject &json)
{ {
QStringList keys = json.keys(); QStringList keys = json.keys();
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +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 <QJsonArray>
#include <QJsonDocument>
class OrderObject : public QObject class OrderObject : public QObject
{ {
...@@ -15,7 +18,6 @@ class OrderObject : public QObject ...@@ -15,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)
...@@ -24,7 +26,6 @@ class OrderObject : public QObject ...@@ -24,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)
...@@ -84,28 +85,21 @@ class OrderObject : public QObject ...@@ -84,28 +85,21 @@ 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 lastExpectDate READ getLastExpectDate WRITE setLastExpectDate) Q_PROPERTY (QString lastExpectDate READ getLastExpectDate WRITE setLastExpectDate)
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 tenderDeliveryDiscountB READ getTenderDeliveryDiscountB WRITE setTenderDeliveryDiscountB) Q_PROPERTY (int tenderDeliveryDiscountB READ getTenderDeliveryDiscountB WRITE setTenderDeliveryDiscountB)
Q_PROPERTY (QString tenderDeliveryDiscountBSku READ getTenderDeliveryDiscountBSku WRITE setTenderDeliveryDiscountBSku) Q_PROPERTY (QString tenderDeliveryDiscountBSku READ getTenderDeliveryDiscountBSku WRITE setTenderDeliveryDiscountBSku)
Q_PROPERTY (int decouplePosVersion READ getDecouplePosVersion WRITE setDecouplePosVersion) Q_PROPERTY (int decouplePosVersion READ getDecouplePosVersion WRITE setDecouplePosVersion)
Q_PROPERTY (bool deliveryAtProd READ getDeliveryAtProd WRITE setDeliveryAtProd) Q_PROPERTY (bool deliveryAtProd READ getDeliveryAtProd WRITE setDeliveryAtProd)
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 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 (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 carColor READ getCarColor WRITE setCarColor) Q_PROPERTY (QString carColor READ getCarColor WRITE setCarColor)
...@@ -117,8 +111,8 @@ class OrderObject : public QObject ...@@ -117,8 +111,8 @@ class OrderObject : public QObject
Q_PROPERTY (int totalPriceForPos READ getTotalPriceForPos WRITE setTotalPriceForPos ) Q_PROPERTY (int totalPriceForPos READ getTotalPriceForPos WRITE setTotalPriceForPos )
Q_PROPERTY (int blockPrintCupTicketTask READ getBlockPrintCupTicketTask WRITE setBlockPrintCupTicketTasks ) Q_PROPERTY (int blockPrintCupTicketTask READ getBlockPrintCupTicketTask WRITE setBlockPrintCupTicketTasks )
Q_PROPERTY (int blockPrintRemindTicketTask READ getBlockPrintRemindTicketTask WRITE setBlockPrintRemindTicketTask ) Q_PROPERTY (int blockPrintRemindTicketTask READ getBlockPrintRemindTicketTask WRITE setBlockPrintRemindTicketTask )
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)
...@@ -170,6 +164,15 @@ public: ...@@ -170,6 +164,15 @@ public:
//扩展 星巴克 组合支付的券信息 List; //扩展 星巴克 组合支付的券信息 List;
QList<CouponsObject*>orderCoupList; QList<CouponsObject*>orderCoupList;
// 扩展 星巴克 多条 POS打印扩展属性List;
// POS/PCS 扩展列表: 优先打印,店用餐具,一次性杯,自带杯
// {printType->string,qty->int,printName->string,printDesc->string}
// printType: 打印类型 1001:优先制作 1101:店用餐具 1102:一次性杯 1103:自带杯
// qty: 数量(自带杯)
// printName: 打印名称
// printDesc: 打印描述
// QList<PosExtendObject*>posExtendList; //不可动态新增字段,在PosExtendObject转序列化时会丢失新增字段; 顾放弃此模式;
//扩展 存储订单全部 Poskey List (用于做PosKey有效期检查); //扩展 存储订单全部 Poskey List (用于做PosKey有效期检查);
QStringList posKeyList; QStringList posKeyList;
...@@ -279,7 +282,6 @@ public: ...@@ -279,7 +282,6 @@ public:
int blockPrintCupTicketTask = 0; int blockPrintCupTicketTask = 0;
// block按时打印送餐提醒小票 0:不block; 1:block [reserve27] 对应OMS接口:remindTicketFlag 是否打印送餐小票 0 打印 1 不打印 // block按时打印送餐提醒小票 0:不block; 1:block [reserve27] 对应OMS接口:remindTicketFlag 是否打印送餐小票 0 打印 1 不打印
int blockPrintRemindTicketTask = 0; int blockPrintRemindTicketTask = 0;
int forwardPosStatus; // 正向单入机状态: 0:未知 1: 成功 2:失败; int forwardPosStatus; // 正向单入机状态: 0:未知 1: 成功 2:失败;
int negativePosStatus; // 负向单同上; int negativePosStatus; // 负向单同上;
int deliveryStatus; int deliveryStatus;
...@@ -307,6 +309,15 @@ public: ...@@ -307,6 +309,15 @@ public:
QString sbkAppRefundPayValue; QString sbkAppRefundPayValue;
bool backupPosFlag; bool backupPosFlag;
int totalPriceForPos; int totalPriceForPos;
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();
...@@ -609,6 +620,9 @@ public: ...@@ -609,6 +620,9 @@ public:
inline int getBlockPrintRemindTicketTask()const{return blockPrintRemindTicketTask;} inline int getBlockPrintRemindTicketTask()const{return blockPrintRemindTicketTask;}
inline void setBlockPrintRemindTicketTask(const int& v){blockPrintRemindTicketTask = v;} inline void setBlockPrintRemindTicketTask(const int& v){blockPrintRemindTicketTask = 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();
// Make an initial call to GetAdaptersAddresses to get the necessary size into the ulOutBufLen variable // 在线网卡可能存在多个,故还是需要像 upp 一样,将在线全部网卡进行排序后,取第一个
if(GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == ERROR_BUFFER_OVERFLOW) 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))
{ {
free(pAddresses); QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: interfaces[ %1 ] = %2").arg( i+1 ).arg( interfaces[i].hardwareAddress() );
pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen); macAddressList.append( interfaces[i].hardwareAddress() );
if (pAddresses == NULL)
return 0;
} }
if(GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAddresses, &outBufLen) == NO_ERROR)
{
for(PIP_ADAPTER_ADDRESSES pCurrAddresses = pAddresses; pCurrAddresses != NULL; pCurrAddresses = pCurrAddresses->Next)
{
if(pCurrAddresses->PhysicalAddressLength != 6)
continue;
char acMAC[32];
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;
} }
} }
free(pAddresses); // MAC地址列表大于1时(需要进行升序排序);
return ret; if ( macAddressList.size() > 1 ) {
*/ qSort(macAddressList.begin(), macAddressList.end(), [] (const QString& s1, const QString& s2) {
return s1 < s2;
} );
macAddress = macAddressList.first();
// MAC地址列表等于1时(无需排序,直接取唯一的值)
} else if ( macAddressList.size() == 1 ) {
macAddress = macAddressList.first();
} else {
// Do Nothing;
}
QString address =""; // ip 地址可能存在多个,故还是需要像 upp 一样,将全部 ip 地址进行排序后,取第一个
auto interfaces = QNetworkInterface::allInterfaces(); for (int i = 0; i < hostAddresses.length(); i++) {
for (int i = 0; i < interfaces.length(); i++) { // if(address.protocol() == QAbstractSocket::IPv4Protocol) { } //1.1.1.1 > length > 7
QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: interfaces[%1]= %2 ").arg( i+1 ).arg( interfaces[i].hardwareAddress() ); QHostAddress hadr = hostAddresses[i];
if ( interfaces[i].isValid() ) { if ( hadr.toString().length() > 7 && !hadr.toString().contains("127.0.0.1") && !hadr.toString().contains("192.168.")
/* if( interfaces[i].flags().testFlag(QNetworkInterface::IsUp) && && !hadr.toString().contains("10.0.75.1") && !hadr.toString().contains("172.") && hadr.toString().contains("10.") )
interfaces[i].flags().testFlag(QNetworkInterface::IsRunning) && {
!interfaces[i].flags().testFlag(QNetworkInterface::IsLoopBack)) */ QLOG_INFO()<<QString("GetMacByAdaptersAddresses:: hostAddresses[ %1 ] = %2 , protocol: %3")
address = interfaces[i].hardwareAddress(); .arg( i+1 ).arg( hadr.toString() ).arg( hadr.protocol() );
break; ipAddressList.append( hadr.toString() );
}
} }
// IP地址列表大于1时(需要进行升序排序);
if ( ipAddressList.size() > 1 ) {
qSort(ipAddressList.begin(), ipAddressList.end(), [] (const QString& s1, const QString& s2) {
return s1 < s2;
} );
ipAddress = ipAddressList.first();
// MAC地址列表等于1时(无需排序,直接取唯一的值)
} else if ( ipAddressList.size() == 1 ) {
ipAddress = ipAddressList.first();
} else {
// Do Nothing;
} }
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;
} }
}; };
......
...@@ -86,7 +86,8 @@ SOURCES += main.cpp\ ...@@ -86,7 +86,8 @@ SOURCES += main.cpp\
PrintTicketSelectForm.cpp \ PrintTicketSelectForm.cpp \
Model/PosMateDataObject.cpp \ Model/PosMateDataObject.cpp \
DTools/PosMetaDataDB.cpp \ DTools/PosMetaDataDB.cpp \
MiniStoreStatusForm.cpp MiniStoreStatusForm.cpp \
Model/PosExtendObject.cpp
HEADERS += \ HEADERS += \
Control/flowControl.h \ Control/flowControl.h \
...@@ -154,7 +155,8 @@ HEADERS += \ ...@@ -154,7 +155,8 @@ HEADERS += \
PrintTicketSelectForm.h \ PrintTicketSelectForm.h \
Model/PosMateDataObject.h \ Model/PosMateDataObject.h \
DTools/PosMetaDataDB.h \ DTools/PosMetaDataDB.h \
MiniStoreStatusForm.h MiniStoreStatusForm.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 2,2023,10,12 FILEVERSION 2,2024,1,31
PRODUCTVERSION 2,2023,10,12 PRODUCTVERSION 2,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", "Delivery Order Plugin Application" VALUE "FileDescription", "Delivery Order Plugin Application"
VALUE "InternalName", "fmTakeout.exe" VALUE "InternalName", "fmTakeout.exe"
VALUE "LegalCopyright", "Copyright (C)2014-2023" VALUE "LegalCopyright", "Copyright (C)2014-2024"
VALUE "OriginalFilename", "fmTakeout.exe" VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin" VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2023.10.12" VALUE "ProductVersion", "2.2024.1.31"
VALUE "FileVersion", "2.2023.10.12" VALUE "FileVersion", "2.2024.1.31"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -81,31 +81,6 @@ void CopyOriginConfigResetSelf(const QString& g_appDir){ ...@@ -81,31 +81,6 @@ void CopyOriginConfigResetSelf(const QString& g_appDir){
} }
// One Pos 守护程序: 守护插件的路径的修改;【启动项路径有待测试】
void ModifyDaemonExeConfigPath(){
// 等待下一个版本测试,再进行修改 守护程序路径;
// C:\Freemud\daemonService\fmproxy_service.config
/*
[FMKeeper]
Heartbeat={"fm_cmd":4}
HeartbeatPeer=24409
ServiceName=PosPluginDaemon
HeartbeatTryCnt=5
CheckInterval=180
PersistLaunch=0
KillElapse=0
DefaultExe=C:\\freemud\\fmPlugin\\fmTakeout.exe //<<---------------------//
ServiceStartMode=2
ServiceStartDelayInterval=330
DaemonMultiProcessMode=1
MultiProcessPortExeMap=24409@C:\\freemud\\fmPlugin\\fmTakeout.exe;8080@C:\\Micros\\Simphony\\WebServer\\ServiceHost.exe //<<---------------------//
ExtraDaemonServiceNameList=SbuxCapsServices;
*/
QLOG_INFO() << QString(" Wait Next Version , Change fmproxy_service.config File'DefaultExe And MultiProcessPortExeMap !!!");
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
...@@ -142,7 +117,6 @@ int main(int argc, char *argv[]) ...@@ -142,7 +117,6 @@ int main(int argc, char *argv[])
// 兼容之前老版本(Qt5.5 & VS2010)的配置文件 与 守护程序的配置文件: // 兼容之前老版本(Qt5.5 & VS2010)的配置文件 与 守护程序的配置文件:
CopyOriginConfigResetSelf(g_appDir); CopyOriginConfigResetSelf(g_appDir);
ModifyDaemonExeConfigPath();
// 将控制器移到工作线程 // 将控制器移到工作线程
FlowControl::GetInstance().moveToThread(&workThread); FlowControl::GetInstance().moveToThread(&workThread);
......
...@@ -53,6 +53,7 @@ MainForm::MainForm(QWidget *parent) : ...@@ -53,6 +53,7 @@ MainForm::MainForm(QWidget *parent) :
connect(&FlowControl::GetInstance(), &FlowControl::setOpeStatus, this, &MainForm::onSetOpeStatus); connect(&FlowControl::GetInstance(), &FlowControl::setOpeStatus, this, &MainForm::onSetOpeStatus);
connect(&FlowControl::GetInstance(), &FlowControl::setNetStatus, this, &MainForm::onSetNetStatus); connect(&FlowControl::GetInstance(), &FlowControl::setNetStatus, this, &MainForm::onSetNetStatus);
connect(&FlowControl::GetInstance(), &FlowControl::setStoreInfo, this, &MainForm::onSetStoreInfo); connect(&FlowControl::GetInstance(), &FlowControl::setStoreInfo, this, &MainForm::onSetStoreInfo);
connect(&FlowControl::GetInstance(), &FlowControl::setTerminalIp, this, &MainForm::onSetTerminalIp);
connect(&FlowControl::GetInstance(), &FlowControl::setCashierInfo, this, &MainForm::onSetCashierInfo); connect(&FlowControl::GetInstance(), &FlowControl::setCashierInfo, this, &MainForm::onSetCashierInfo);
connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus/*,Qt::BlockingQueuedConnection*/); connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus/*,Qt::BlockingQueuedConnection*/);
connect(&FlowControl::GetInstance(), &FlowControl::showOrderDetails, this, &MainForm::onShowOrderDetails); connect(&FlowControl::GetInstance(), &FlowControl::showOrderDetails, this, &MainForm::onShowOrderDetails);
...@@ -187,6 +188,7 @@ void MainForm::_Init() ...@@ -187,6 +188,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};
...@@ -468,6 +470,12 @@ void MainForm::onSetCashierInfo(const QString &cashierInfo) ...@@ -468,6 +470,12 @@ void MainForm::onSetCashierInfo(const QString &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);
......
...@@ -331,6 +331,13 @@ public slots: ...@@ -331,6 +331,13 @@ public slots:
* */ * */
void onSetStoreInfo(const QString& storeId); void onSetStoreInfo(const QString& storeId);
/* 功能:设置设备ip信息
* 参数:[1]设备ip信息
* 返回:NULL
* */
void onSetTerminalIp(const QString& terminalIp);
/* 功能:设置收银员信息 /* 功能:设置收银员信息
* 参数:[1]收银员编号 * 参数:[1]收银员编号
* 返回:NULL * 返回:NULL
......
...@@ -1181,7 +1181,7 @@ ...@@ -1181,7 +1181,7 @@
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_8" stretch="0,0,1"> <layout class="QHBoxLayout" name="horizontalLayout_8" stretch="0,0,0">
<property name="spacing"> <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
...@@ -1360,6 +1360,17 @@ ...@@ -1360,6 +1360,17 @@
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_19">
<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>
......
...@@ -51,10 +51,11 @@ ...@@ -51,10 +51,11 @@
//#define APP_VERSION "2.2023.6.29" //#define APP_VERSION "2.2023.6.29"
//#define APP_VERSION "2.2023.7.24" //#define APP_VERSION "2.2023.7.24"
// Qt 5.9.1 & VS2015 [2023-09-13] 开始启用新的大版本; // Qt 5.9.1 & VS2015 [2023-09-13] 开始启用新的大版本;
#define APP_VERSION "2.2023.10.12" #define APP_VERSION "2.2024.1.31"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn" #define SERVER_PASSWORD "posoperator@freemud.cn"
#define TERMINAL_DEF_IP "*.*.*.*"
#define CONFIG_NAME "config.ini" #define CONFIG_NAME "config.ini"
#define USERCONFIG_NAME "userConfig.ini" #define USERCONFIG_NAME "userConfig.ini"
...@@ -70,6 +71,11 @@ ...@@ -70,6 +71,11 @@
#define INI_LOGINSERVER "FmServer/loginUrl" #define INI_LOGINSERVER "FmServer/loginUrl"
#define INI_ORDERSERVER "FmServer/orderUrl" #define INI_ORDERSERVER "FmServer/orderUrl"
#define INI_STORESERVER "FmServer/storeUrl" #define INI_STORESERVER "FmServer/storeUrl"
#define INI_DAEMON_PROCESS_MAP_KEY "FMKeeper/MultiProcessPortExeMap"
#define INI_DAEMON_PROCESS_MAP_VALUE "24409@C:\\freemud\\fmPluginNew\\fmTakeout.exe"
#define INI_DAEMON_DEFAULT_EXE_KEY "FMKeeper/DefaultExe"
#define INI_DAEMON_DEFAULT_EXE_VALUE "C:\\freemud\\fmPluginNew\\fmTakeout.exe"
#define INI_PRINTERNAME "Printer/name" #define INI_PRINTERNAME "Printer/name"
#define INI_OMSBTNPOSTION "OmsBtn/postion" #define INI_OMSBTNPOSTION "OmsBtn/postion"
#define INI_OMSBTNWIDTHOFFSET "OmsBtn/widthoffset" #define INI_OMSBTNWIDTHOFFSET "OmsBtn/widthoffset"
...@@ -159,6 +165,7 @@ ...@@ -159,6 +165,7 @@
#define JSON_COUPONS "coupons" #define JSON_COUPONS "coupons"
#define JSON_EXCHANGECOUPONS "exchangeCoupons" #define JSON_EXCHANGECOUPONS "exchangeCoupons"
#define JSON_PAYMENTS "PaymentObjs" #define JSON_PAYMENTS "PaymentObjs"
#define JSON_POS_EXTEND_LIST "posExtendList"
#define JSON_SUBPRODUCTS "addExtra" #define JSON_SUBPRODUCTS "addExtra"
#define JSON_ITEMSDISCOUNT "itemsDiscount" #define JSON_ITEMSDISCOUNT "itemsDiscount"
#define JSON_COUPONPRODUCTS "skus" #define JSON_COUPONPRODUCTS "skus"
...@@ -238,6 +245,9 @@ ...@@ -238,6 +245,9 @@
#define SOCKET_CONNECT_TIMEOUT_INTERVAL 20*1000 #define SOCKET_CONNECT_TIMEOUT_INTERVAL 20*1000
// 写报文超时时间(单位: 毫秒); // 写报文超时时间(单位: 毫秒);
#define SOCKET_WRITE_TIMEOUT_INTERVAL 15*1000 #define SOCKET_WRITE_TIMEOUT_INTERVAL 15*1000
// 启动检查超时时间(单位: 毫秒);
#define SOCKET_START_CHECK_TIMEOUT_INTERVAL 5*1000
// 启动超时时间(单位: 毫秒); // 启动超时时间(单位: 毫秒);
#define SOCKET_START_TIMEOUT_INTERVAL 1*10*1000 #define SOCKET_START_TIMEOUT_INTERVAL 1*10*1000
// 短超时时间(单位: 毫秒); // 短超时时间(单位: 毫秒);
......
...@@ -81,7 +81,7 @@ QWidget ...@@ -81,7 +81,7 @@ QWidget
background-color: #303030; background-color: #303030;
} }
#mainSlabStoreid,#mainSlabOpeStatus,#mainSlabNetStatus,#mainSlabVersion,#mainSlabCashier, #mainSlabStoreid,#mainSlabOpeStatus,#mainSlabNetStatus,#mainSlabVersion,#mainSlabCashier,
#mainSlabTime,#mainLabStoreid,#mainLabOpeStatus,#mainLabNetStatus,#mainLabVersion,#mainLabCashier #mainSlabTime,#mainLabStoreid,#mainLabOpeStatus,#mainLabNetStatus,#mainLabVersion,#mainLabCashier,#mainSlabIp
{ {
color: #9b9b9b; color: #9b9b9b;
} }
......
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