Commit e3950090 by wuyang.zou

fix some bug;

rebuild ssl lib;
 tag:4.2019.1225.1
parent 656314a7
# StarBucks Pms Plugin
## 目录
* [背景介绍](#背景介绍)
* [开发](#开发)
* [使用说明](#使用说明)
* [其他](#其他)
<a name="背景介绍"></a>
## 背景介绍
*功能* :为 Starbucks 生产管理系统 PMS, 同步线上订单到PMS本地数据库中<br/>
*意义* :是帮助PMS集成 门店全部渠道的全部订单 不可或缺的功能;
<a name="开发说明"></a>
## 开发
*【开发】 为了集成 QRedis,把编译器版本提升至 MSVC2015, 使用 Qt 5.9.8, 使用Qt Create 4.8.2; <br/>
*【编译】<br/>
<1> QRedis 是使用源码集成到项目中,需要注意仓库地址版本,特别注意存在submodule;<br/>
<2> 插件使用了https 通信协议,代码中 使能 QSslConfiguration,故需要使用MSVC2015 编译 Openssl源码,得到两个库文件(libeay32.dll , ssleay32.dll),放置与该插件应用目录下;<br/>
<3> 本次插件也使用了 MYSQL 数据库,故需要使用 源码编译 Mysql数据库连接动态库: libmysql.dll <br/>
*【测试】<br/>
<1> 功能等同 PosPlugin:显示门店营业状态,展示订单,心跳检查,网络状态展示,同步订单,自测订单,部分渠道退单等功能;<br/>
<2> 特别功能:插订单数据到 PMS 本地数据库,通过 RedisList 进行消息同步;<br/>
*【git repo】仓库地址:git@scm.starbucks.com:china/delivery-postakeout.git
分支:pmsDevelop <br/>
<a name="使用说明"></a>
## 使用说明
同POS插件;
......@@ -665,6 +665,7 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
// 拉取订单详情接口: 新增 渠道 参数
url.append(QString("&")+JSON_CHANNEL+QString("=")+channel);
url.append(QString("&")+JSON_POSIPADDRESS+QString("=")+m_ipPortAddress);
url.append(QString("&")+JSON_PMSMACHINENO+QString("=")+m_pmsMachineNo);
QLOG_INFO() << QString("[<<<<---Pull Order Detail--->>>>][requestUrl:]")<<url;
QUrl TempQUrl = url;
m_pullOrderSocket->SetUrl(TempQUrl);
......@@ -673,6 +674,8 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
.arg(result).arg(error)<<recvJson;
if(!result) {
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
// refresh gui defaultStoreStatus;
emit doUpdateStoreStatus(0,0,0);
} else {
qDebug()<<recvJson;
emit setNetStatus(QString::fromLocal8Bit("正常"));
......@@ -708,7 +711,7 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
QJsonObject sendJson;
QJsonObject recvJson;
int ordertotalSum;
sendJson = DataManger::GetInstance().GetPullOrderListData(pageNo,pageSize);
sendJson = DataManger::GetInstance().GetPullOrderListData( pageNo, pageSize, m_pmsMachineNo );
QLOG_INFO() << QString("[<<<<---FlowControl::_PullOrderList: Pull Order List--->>>>][requestData:]")<<sendJson;
if(ConfigManger::GetInstance().GetOrderSslConfig()) {
......@@ -728,6 +731,8 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
.arg(result).arg(error)<<recvJson;
if(!result) {
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
// refresh gui defaultStoreStatus;
emit doUpdateStoreStatus(0,0,0);
} else {
qDebug()<<recvJson;
emit setNetStatus(QString::fromLocal8Bit("正常"));
......@@ -776,7 +781,7 @@ bool FlowControl::_SendHeart()
QJsonObject recvJson;
m_puginVersionComments = ConfigManger::GetInstance().GetOrderServerUrl();
sendJson = DataManger::GetInstance().GetHeartData(m_password,m_posId,m_ipPortAddress,m_puginVersionComments,m_bLastHeartIsError);
sendJson = DataManger::GetInstance().GetHeartData(m_password,m_posId,m_ipPortAddress,m_puginVersionComments,m_bLastHeartIsError,m_pmsMachineNo);
QLOG_INFO() << QString("[<<<<---Send Heart--->>>>][requestData:%1]")<<sendJson;
QUrl TempQUrl = ConfigManger::GetInstance().GetLoginServerUrl()+
ConfigManger::GetInstance().GetInterfaceName(INI_INTERFACE_HEART);
......@@ -788,6 +793,8 @@ bool FlowControl::_SendHeart()
{
m_bLastHeartIsError = true;
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
// refresh gui defaultStoreStatus;
emit doUpdateStoreStatus(0,0,0);
}else
{
QLOG_INFO() << QString("[<<<<---Send Heart Finish: code:%1--->>>>]").arg(recvJson[JSON_LOGINCODE].toInt());
......@@ -796,6 +803,8 @@ bool FlowControl::_SendHeart()
result = false;
m_bLastHeartIsError = true;
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
// refresh gui defaultStoreStatus;
emit doUpdateStoreStatus(0,0,0);
}else{
result = true;
emit setNetStatus(QString::fromLocal8Bit("<font color='#f5f5f5'>正常</font>"));
......@@ -2962,7 +2971,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
QString FlowControl::_Penny2Dollar(int penny)
{
double dollar = (double)penny/100;
double dollar = static_cast<double>(penny/100);
return QString::number(dollar,'f',1);
}
......
......@@ -165,6 +165,27 @@ int ConfigManger::GetLoginSslConfig()
return m_config->value("SSLConfig/login").toInt();
}
QString ConfigManger::GetMysqlIpConfig()
{
return m_config->value("MysqlConfig/ip").toString();
}
QString ConfigManger::GetMysqlPasswordConfig()
{
return m_config->value("MysqlConfig/password").toString();
}
QString ConfigManger::GetRedisIpConfig()
{
return m_config->value("RedisConfig/ip").toString();
}
QString ConfigManger::GetRedisPasswordConfig()
{
return m_config->value("RedisConfig/password").toString();
}
int ConfigManger::GetOrderSslConfig()
{
return m_config->value("SSLConfig/order").toInt();
......
......@@ -134,6 +134,15 @@ public:
int GetLoginSslConfig();
int GetOrderSslConfig();
// Get Mysql IP & Password Config;
QString GetMysqlIpConfig();
QString GetMysqlPasswordConfig();
// Get Redis IP & Password Config;
QString GetRedisIpConfig();
QString GetRedisPasswordConfig();
private:
ConfigManger();
ConfigManger(ConfigManger const&);
......
......@@ -60,7 +60,7 @@ QJsonObject DataManger::GetLoginData(const QString &partnerId, const QString &st
QJsonObject DataManger::GetHeartData(const QString &password,const QString &stationId,
const QString &ipAddress, const QString &versionComments,
const bool lastHeartIsError)
const bool lastHeartIsError,const QString &pmsMachineNo)
{
QJsonObject rObj;
rObj.insert(JSON_IPADDRESS, ipAddress);
......@@ -70,6 +70,7 @@ QJsonObject DataManger::GetHeartData(const QString &password,const QString &stat
rObj.insert(JSON_MACHINECODE, stationId);
rObj.insert(JSON_PLUGINVERSION, APP_VERSION);
rObj.insert(JSON_PLUGINVERSIONCOMMENTS, versionComments);
rObj.insert(JSON_PMSMACHINENO, pmsMachineNo);
if(lastHeartIsError){
rObj.insert(JSON_SYNCSTORESTATUS, 1);
}else{
......@@ -78,7 +79,7 @@ QJsonObject DataManger::GetHeartData(const QString &password,const QString &stat
return rObj;
}
QJsonObject DataManger::GetPullOrderListData(const int& pageNumber, const int& pageSize)
QJsonObject DataManger::GetPullOrderListData(const int& pageNumber, const int& pageSize, const QString& pmsMachineNo)
{
QJsonObject rObj;
rObj.insert(JSON_PAGENUMBER,pageNumber);
......@@ -86,6 +87,8 @@ QJsonObject DataManger::GetPullOrderListData(const int& pageNumber, const int& p
rObj.insert(JSON_SHOPCODE,m_storeId);
rObj.insert(JSON_POSIPADDRESS,QString("http://") + m_posIpAddress);
rObj.insert(JSON_CHANNEL,QString("ALL"));
rObj.insert(JSON_PMSMACHINENO, pmsMachineNo);
//rObj.insert(JSON_AUTOCONFIRM, autoconfirm);
return rObj;
}
......
......@@ -44,12 +44,12 @@ public:
* 返回:登录数据
* */
QJsonObject GetHeartData(const QString& password, const QString& stationId, const QString& ipAddress,
const QString& versionComments, const bool lastHeartIsError);
const QString& versionComments, const bool lastHeartIsError,const QString& pmsMachineNo);
/* 功能:获取拉取订单数据
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject GetPullOrderListData(const int &pageNumber=1, const int &pageSize=1000);
QJsonObject GetPullOrderListData(const int &pageNumber=1, const int &pageSize=1000 ,const QString& pmsMachineNo ="001");
/* 功能:获取拉取配送员数据
* 参数:[1]门店号[2]渠道代码
* 返回:登录数据
......
#include "pmsGetStoreConfig.h"
#include "QsLog.h"
#include "DTools/configManger.h"
PmsGetStoreConfig::PmsGetStoreConfig()
{
QLOG_INFO()<<"[<<<<---PmsGetStoreConfig:: ConStructure PMS Get Store Config DataBase--->>>>]";
......@@ -10,12 +12,16 @@ bool PmsGetStoreConfig::initPmsStoreConfigDB() {
m_sqlDb = QSqlDatabase::addDatabase("QMYSQL","PmsGetStoreConfig"); //数据库驱动类型为Mysql
if(m_sqlDb.isValid()){
QLOG_INFO()<<"[<<<<---PmsGetStoreConfig driver is valid--->>>>]";
m_sqlDb.setHostName("192.168.99.100"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDbIp = ConfigManger::GetInstance().GetMysqlIpConfig();
m_sqlDbPassword = ConfigManger::GetInstance().GetMysqlPasswordConfig();
m_sqlDb.setHostName( m_sqlDbIp.length() ? m_sqlDbIp :"127.0.0.1"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//m_sqlDb.setHostName("localhost"); // 本地测试;
m_sqlDb.setPort(3306); //连接数据库端口号,与设置一致
m_sqlDb.setDatabaseName("pms"); //连接数据库名,与设置一致
m_sqlDb.setUserName("oms"); //数据库用户名,与设置一致
m_sqlDb.setPassword("starbucks@oms");
m_sqlDb.setPassword(m_sqlDbPassword.length() ? m_sqlDbPassword :"starbucks@oms");
if(!m_sqlDb.open()) { //打开数据库
QLOG_ERROR()<<"[<<<<---PmsGetStoreConfig Open Database error:--->>>>]"<<m_sqlDb.lastError().text();
......
......@@ -37,6 +37,9 @@ private:
PmsGetStoreConfig& operator=(PmsGetStoreConfig const&);
QSqlDatabase m_sqlDb;
QString m_sqlDbIp;
QString m_sqlDbPassword;
signals:
public slots:
......
......@@ -3,6 +3,7 @@
#include "alertForm.h"
#include <QDateTime>
#include "Control/flowControl.h"
#include "DTools/configManger.h"
PmsOrdersData::PmsOrdersData() {
QLOG_INFO()<<"[<<<<---PmsOrdersData:: Structure PMS Orders Table--->>>>]";
......@@ -14,12 +15,15 @@ bool PmsOrdersData::initPmsOrdersData() {
if ( m_sqlDb.isValid() ) {
QLOG_INFO()<<"[<<<<---PmsOrdersData driver is valid--->>>>]";
m_sqlDb.setHostName("192.168.99.100"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDbIp = ConfigManger::GetInstance().GetMysqlIpConfig();
m_sqlDbPassword = ConfigManger::GetInstance().GetMysqlPasswordConfig();
m_sqlDb.setHostName( m_sqlDbIp.length() ? m_sqlDbIp :"127.0.0.1" ); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//m_sqlDb.setHostName("localhost"); //本地测试;
m_sqlDb.setPort(3306); //连接数据库端口号,与设置一致
m_sqlDb.setDatabaseName("pms"); //连接数据库名,与设置一致
m_sqlDb.setUserName("oms"); //数据库用户名,与设置一致
m_sqlDb.setPassword("starbucks@oms");
m_sqlDb.setPassword(m_sqlDbPassword.length() ? m_sqlDbPassword :"starbucks@oms");
if(!m_sqlDb.open()) { //打开数据库
QLOG_ERROR()<<"[<<<<---PmsOrdersData Open Database error:--->>>>]"<<m_sqlDb.lastError().text();
......@@ -206,9 +210,18 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
bool insertProRet = false;
bool insertSubProRet = false;
int insertProSucNum = 0;
int availProNum = 0; // Skip Some Invalid Products;
QString MainProOptions = "" ;
if(proList.count()) {
foreach(dishesObject* dishesObjectTemp, proList){
QString tempCodeLeftHead = dishesObjectTemp->code.left(1);
if ( dishesObjectTemp->code.contains("Default",Qt::CaseInsensitive) || (tempCodeLeftHead<QString('0')||tempCodeLeftHead>QString('9')) || !dishesObjectTemp->qty ){
continue;
}
++availProNum;
QSqlQuery query(m_sqlDb);
query.prepare("INSERT INTO order_items(order_id,product_id, product_code, product_name, en_product_name, product_qty, item_total,"
"spec_id, spec_name, en_spec_name, price, promotion_name, promotion_price, promotion_qty, promotion_sku,"
......@@ -248,23 +261,31 @@ bool PmsOrdersData::insertProductData(const QList<dishesObject*> proList, const
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderProductData:Insert OrderId %1 Product Success code:%2 increaseId:%3--->>>>]")
.arg(OrderId).arg(dishesObjectTemp->code).arg(ProInIdRef);
QString SubProInIdRef;
//插入配料商品数据;
if( dishesObjectTemp->sub_products.count() ) {
insertSubProRet = insertSubProductData(dishesObjectTemp->sub_products, ProInIdRef, SubProInIdRef);
//插入配料商品数据+Special Hot / Cold;
MainProOptions = dishesObjectTemp->options;
if( dishesObjectTemp->sub_products.count() || !MainProOptions.isEmpty() ) {
insertSubProRet = insertSubProductData(dishesObjectTemp->sub_products,MainProOptions, ProInIdRef, SubProInIdRef);
if(insertSubProRet){
insertProSucNum++;
} else{ // insertSubProductData occurred Error And Faild Need Return False Immediately;
insertProRet = false;
QLOG_ERROR()<<QString("[<<<<---PmsOrdersData::insertSubProductData: Insert MainProduct code:%1's SubProduct Failed --->>>>]").arg(dishesObjectTemp->code);
return insertProRet;
}
} else {
insertProSucNum++;
}
}
}
}else{
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertProductData OrderId %1 Has No Products--->>>>]").arg(OrderId);
}
if(insertProSucNum == proList.count()){
if( insertProSucNum == availProNum ){
insertProRet = true;
}
return insertProRet;
}
......@@ -275,10 +296,10 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
bool delSubProductFailRet = false;
int id = 0;
QSqlQuery query(m_sqlDb);
query.prepare(QString("select id from orders_items where order_id='%1'").arg(orderObj->id));
query.prepare(QString("select id from order_items where order_id='%1'").arg(orderObj->id));
if(!query.exec()) {
QLOG_ERROR()<<query.lastError().text()<<"[<<<<---PmsOrdersData::deleteProductData"
" select id from orders_items Failed orderId:--->>>>]"<<orderObj->id;
" select id from order_items Failed orderId:--->>>>]"<<orderObj->id;
delSubProductFailRet = true;
delProductFailRet = true;
} else {
......@@ -293,10 +314,10 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
}
}
//批量删除主商品;
query.prepare(QString("delete from orders_items where order_id='%1'").arg(orderObj->id) );
query.prepare(QString("delete from order_items where order_id='%1'").arg(orderObj->id) );
if(!query.exec()) {
QLOG_ERROR()<<query.lastError().text()<<QString("[<<<<---PmsOrdersData::deleteProductData"
" delete from orders_items where order_id='%1' Failed--->>>>]").arg(orderObj->id);
" delete from order_items where order_id='%1' Failed--->>>>]").arg(orderObj->id);
delProductFailRet = true;
}
}
......@@ -311,11 +332,21 @@ bool PmsOrdersData::deleteProductData(OrderObject* orderObj) {
}
//此函数将会在 insertProductData 函数中调用;顾无需加锁 否则 会导致死锁;
bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products, const QString& ProInIdRef, QString& SubProInIdRef) {
bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products, const QString& MainProOptions ,const QString& ProInIdRef, QString& SubProInIdRef) {
bool insertSubProRet = false;
int insertSubProSucNum = 0;
int availSubProNum = 0; // Skip Some Invalid Sub Products;
if(sub_products.count()) {
foreach(dishesObject* subDishesObjectTemp, sub_products){
QString tempSubCodeLeftHead = subDishesObjectTemp->code.left(1);
if ( subDishesObjectTemp->code.contains("Default",Qt::CaseInsensitive) || (tempSubCodeLeftHead<QString('0') || tempSubCodeLeftHead>QString('9')) || !subDishesObjectTemp->qty ){
continue;
}
++availSubProNum;
QSqlQuery query(m_sqlDb);
query.prepare("INSERT INTO order_item_condiments(item_id,condiment_id, condiment_code, condiment_name, en_condiment_name,"
" price, condimen_total, sequence, qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)");
......@@ -339,8 +370,9 @@ bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products
.arg(subDishesObjectTemp->enProductName).arg(subDishesObjectTemp->price * 0.01).arg(0).arg(subDishesObjectTemp->sequence).arg(subDishesObjectTemp->qty);
} else {
SubProInIdRef = query.lastInsertId().toString();
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 subProduct Success code:%2 increaseId:%3--->>>>]")
.arg(ProInIdRef).arg(subDishesObjectTemp->code).arg(SubProInIdRef);
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 subProduct Success code:%2 SubProInIdRef:%3"
" increaseId:%4--->>>>]")
.arg(ProInIdRef).arg(subDishesObjectTemp->code).arg(SubProInIdRef).arg( query.lastInsertId().toString() );
insertSubProSucNum++;
}
}
......@@ -348,7 +380,33 @@ bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertSubProductData ProInIdRef:%1 Has No subProducts--->>>>]").arg(ProInIdRef);
}
if(insertSubProSucNum == sub_products.count()){
//Special Insert MainProOptions;
if( !MainProOptions.isEmpty() ) {
++availSubProNum;
QSqlQuery query(m_sqlDb);
query.prepare("INSERT INTO order_item_condiments(item_id, condiment_code , price, condimen_total , qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.addBindValue(ProInIdRef.toInt()); // --主商品自增编号
query.addBindValue(MainProOptions); // --子商品code
query.addBindValue(0); // --子商品价格
query.addBindValue(0); // --子商品应收价格 dishesObjectTemp->totalQuantityPrice ????????
query.addBindValue(1); // --子商品数量
if(!query.exec()) {
QLOG_ERROR()<<QString("[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 MainProOptions code:%2 Failed --->>>>]")
.arg(ProInIdRef).arg(MainProOptions)
<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_ERROR()<<QString("INSERT INTO order_item_condiments(item_id, condiment_code , price, condimen_total , qty ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)")
.arg(ProInIdRef.toInt()).arg(MainProOptions).arg(0).arg(0).arg(1);
} else {
SubProInIdRef = query.lastInsertId().toString();
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertSubProductData:Insert ProInIdRef:%1 MainProOptions Success code:%2 SubProInIdRef:%3"
" increaseId:%4--->>>>]")
.arg(ProInIdRef).arg(MainProOptions).arg(SubProInIdRef).arg( query.lastInsertId().toString() );
insertSubProSucNum++;
}
}
if(insertSubProSucNum == availSubProNum ){
insertSubProRet = true;
}
return insertSubProRet;
......
......@@ -57,7 +57,7 @@ public:
*参数:[1]订单对象指针 [2]返回插入成功后的自增序号;
*返回:true操作成功,false失败
**/
bool insertSubProductData(const QList<dishesObject*> sub_products, const QString& ProInIdRef, QString& SubProInIdRef);
bool insertSubProductData(const QList<dishesObject*> sub_products, const QString& MainProOptions, const QString& ProInIdRef, QString& SubProInIdRef);
/**
*功能: 根据订单ID 更新 数据库中 Order 订单状态信息;
......@@ -89,6 +89,9 @@ private:
PmsOrdersData& operator=(PmsOrdersData const&);
QSqlDatabase m_sqlDb;
QString m_sqlDbIp;
QString m_sqlDbPassword;
signals:
public slots:
......
#include "qtRedisClient.h"
#include "QsLog.h"
#include "DTools/configManger.h"
QtRedisClient::QtRedisClient()
{
QLOG_INFO()<<"[<<<<---QtRedisClient:: ConStructure Redis Begin --->>>>]";
initRedisClient();
m_RedisConnectCnf.setHost("192.168.99.100");
m_redisIp = ConfigManger::GetInstance().GetRedisIpConfig();
//m_redisPassword = ConfigManger::GetInstance().GetRedisPasswordConfig();
m_RedisConnectCnf.setHost(m_redisIp.length()? m_redisIp : "127.0.0.1");
//m_RedisConnectCnf.setHost("127.0.0.1"); //本地测试;
m_RedisConnectCnf.setPort(6379);
//m_RedisConnectCnf.setAuth("123456"); //本地测试;
......
......@@ -45,6 +45,10 @@ private:
RedisClient::ConnectionConfig m_RedisConnectCnf;
RedisClient::Connection* m_pRedisConnectOperat = nullptr;
QString m_redisIp;
QString m_redisPassword;
signals:
public slots:
......
......@@ -26,11 +26,15 @@ bool SimProcOrderDB::initSimProcOrderDB(){
m_sqlDb.setUserName("sa"); //登录用户
m_sqlDb.setPassword("SIM29@123");
*/
m_sqlDb.setHostName("192.168.99.100"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
//PMS No Use;
/*
m_sqlDb.setHostName("127.0.0.1"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)
m_sqlDb.setPort(3306); //连接数据库端口号,与设置一致
m_sqlDb.setDatabaseName("pms"); //连接数据库名,与设置一致
m_sqlDb.setUserName("oms"); //数据库用户名,与设置一致
m_sqlDb.setPassword("starbucks@oms"); //数据库密码,与设置一致
*/
if(!m_sqlDb.open()) { //打开数据库
QLOG_ERROR()<<"[<<<<---SimProcOrderDB:: Open Database error:--->>>>]"<<m_sqlDb.lastError().text();
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2019,1031,1
PRODUCTVERSION 4,2019,1031,1
FILEVERSION 4,2019,1225,1
PRODUCTVERSION 4,2019,1225,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "PMS Plugin Application"
VALUE "InternalName", "PmsPlugin.exe"
VALUE "LegalCopyright", "Copyright (C)2013-2019"
VALUE "LegalCopyright", "Copyright (C)2013-2020"
VALUE "OriginalFilename", "PmsPlugin.exe"
VALUE "ProductName", "PMS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2019.1031.1"
VALUE "FileVersion", "4.2019.1031.1"
VALUE "ProductVersion", "4.2019.1225.1"
VALUE "FileVersion", "4.2019.1225.1"
//*************************************************************************//
END
END
......
......@@ -50,6 +50,18 @@ void LoadTheme(const QString& theme)
qssFile.close();
}
void FixAppEnvirment() {
QString curEnvPath = QProcessEnvironment::systemEnvironment().value("PATH");
QString dstEnvPath ;
dstEnvPath.append(g_appDir);
dstEnvPath.append(curEnvPath);
if ( !dstEnvPath.isEmpty() ) {
QLOG_INFO() << QString("Current path env::%s").arg(dstEnvPath);
} else {
QLOG_INFO() << QString("Current path env is empty");
}
}
int main(int argc, char *argv[])
{
#ifdef Q_OS_WIN
......@@ -73,6 +85,9 @@ int main(int argc, char *argv[])
// 初始化日志
InitLogger();
// 修正环境变量;
// FixAppEnvirment();
// 加载主题
LoadTheme(APP_THEME);
......
......@@ -5,7 +5,8 @@
#define APP_THEME "deaufult"
#define APP_VERSION "4.2019.1031.1"
//#define APP_VERSION "4.2019.1031.1"
#define APP_VERSION "4.2019.1225.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn"
......
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