Commit 62cf85b7 by wuyang.zou

Version 4.2020.526.1

1、完善 WSG功能;
2、准备 预约订单功能;
parent d91d29c1
......@@ -326,7 +326,7 @@ void FlowControl::_NotifyPmsPullOrder()
//如果订单存在库中则更新订单状态;
bExistOrder = PmsOrdersData::getInstance().isOrderExist(orderObject->id);
if( bExistOrder ){
updateRet = PmsOrdersData::getInstance().updateOrderStatus(orderObject,orderObject->orderStatus,orderObject->makeStatus);
updateRet = PmsOrdersData::getInstance().updateOrderStatus( orderObject, orderObject->orderStatus, orderObject->makeStatus );
//不存在则插入;
} else {
QString pmsOrderRef;
......@@ -422,6 +422,10 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->packDiscount = 0;
orderObject->deliveryPrice = 0;
orderObject->deliveryDiscount = 0;
orderObject->forwardPosStatus =0;
orderObject->negativePosStatus =0;
orderObject->businessType = "0";
orderObject->inAdvanceTakemeal = 0;
orderObject->FromJson(jsonObject);
orderObject->pushOrderType=0;
......@@ -439,17 +443,22 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->dataBasePosOrderCheckNo = "";
//插件程序内存中没有此订单时需要从数据库中获取该订单标志数据;同时在接受到退单情况时,也需要从数据库中重新获取(防止内存中标志数据未更新[入机后未更新]);
//查询此 订单+订单状态+制作状态 是否已经存在数据库中;
//查询此 订单+订单状态+制作状态+预约单提前到店 是否已经存在数据库中;
bool pmsMakeStatusIsExistRet = true;
bool pmsOrderStatusIsExistRet = PmsOrdersData::getInstance().isOrderAndStatusExist(orderObject->id, orderObject->orderStatus, orderObject->makeStatus, pmsMakeStatusIsExistRet );
int pmsArriveAheadFlag = 0;
bool pmsOrderStatusIsExistRet = PmsOrdersData::getInstance().isOrderAndStatusExist(orderObject->id, orderObject->orderStatus, orderObject->makeStatus, pmsMakeStatusIsExistRet, pmsArriveAheadFlag );
m_FmOrdersMap.insert(orderObject->id, orderObject);
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Orders Map:Insert New Order[ OrderId: %1 OrderDesc: %2 OrderStatus: %3 OrderMakeStatus: %4]--->>>>]")
.arg(orderObject->id).arg( orderObject->getOrderStatusDec() ).arg(orderObject->orderStatus).arg(orderObject->makeStatus);
if(!pmsOrderStatusIsExistRet || !pmsMakeStatusIsExistRet) {
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Orders Map:Insert New Order[ OrderId: %1 OrderDesc: %2 OrderStatus: %3 "
" MakeStatus: %4 oldArriverAhead: %5 NewArriverAhead: %6 ]--->>>>]")
.arg(orderObject->id).arg( orderObject->getOrderStatusDec() ).arg(orderObject->orderStatus)
.arg(orderObject->makeStatus).arg(pmsArriveAheadFlag).arg(orderObject->inAdvanceTakemeal);
if(!pmsOrderStatusIsExistRet || !pmsMakeStatusIsExistRet || (pmsArriveAheadFlag != orderObject->inAdvanceTakemeal) ) {
//程序刚启动+量大+ 异步也无碍 顾无需加锁;
m_simValidOrdersList.append(orderObject->id);
}
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis-> changeOrderStatus--->>>>]");
emit changeOrderStatus(orderObject);
}
......@@ -457,22 +466,26 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
else {
int oldStatus = orderObject->orderStatus;
QString oldMakeStatus = orderObject->makeStatus;
int oldArriverAhead = orderObject->inAdvanceTakemeal;
orderObject->FromJson(jsonObject);
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Order Map:Update orderId:%1 OldStatus:%2: curStatus:%3]--->>>>]")
.arg(orderObject->id).arg(oldStatus).arg(orderObject->orderStatus);
// 如果订单状态 和 制作状态 出现变化都需添加到队列;
if(oldStatus != orderObject->orderStatus || oldMakeStatus != orderObject->makeStatus) {
QLOG_INFO() << QString("[<<<<---FmTakeout Valid Order Map:Update orderId:%1 OldStatus:%2: curStatus:%3 "
"OldMakeStatus:%4: makeStatus:%5 OldArriverAhead:%6: ArriverAhead:%7 ]--->>>>]")
.arg(orderObject->id).arg(oldStatus).arg(orderObject->orderStatus)
.arg(oldMakeStatus).arg(orderObject->makeStatus).arg(oldArriverAhead).arg(orderObject->inAdvanceTakemeal);
// 如果订单状态 或 制作状态 或 预约单提前到店 出现变化都需添加到队列;
if(oldStatus != orderObject->orderStatus || oldMakeStatus != orderObject->makeStatus || oldArriverAhead != orderObject->inAdvanceTakemeal) {
bRetOrderEntryMutex =m_OrderEntryMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT);
if(!bRetOrderEntryMutex) {
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 Change m_OrderEntryMutex.tryLock Failed --->>>>]")
.arg(orderObject->id).arg(orderObject->orderStatus);
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 OrderStatus:%2 MakeStatus:%3 ArriverAhead:%4 Change m_OrderEntryMutex.tryLock Failed --->>>>]")
.arg(orderObject->id).arg(orderObject->orderStatus).arg(orderObject->makeStatus).arg(orderObject->inAdvanceTakemeal);
} else {
m_simValidOrdersList.append(orderObject->id);
m_OrderEntryMutex.unlock();
}
emit changeOrderStatus(orderObject, oldStatus);
}
}
orderObject->updateTime=QDateTime::currentDateTime().toTime_t();
......@@ -658,6 +671,9 @@ void FlowControl::_PullOrderData()
PullOrderInfo* info = m_orderPullList.takeFirst();
if(info->orderId.isEmpty()) {
// 调换拉取订单列表频率 4S 一页 30笔;
m_pullTimer->start(1000*4);
if ( _PullOrderList(info->pageSize,info->pageNumber) ) {
QLOG_INFO()<<"[<<<<----FlowControl::_PullOrderData _PullOrderList successful---->>>>>]";
m_orderPullList.removeOne(info);
......@@ -732,10 +748,10 @@ bool FlowControl::_PullOrderDetail(const QString& orderId, const QString& channe
}
/*解析json数据失败则20秒后重新拉单*/
if(!result) {
m_pullTimer->start(1000*10);
m_pullTimer->start(1000*20);
// 如果某次拉订单列表出现失败;此函数的外层函数 _PullOrderData:会将本次拉单对象存起来,等待下次拉取;
} else {
m_pullTimer->start(1000*5);
m_pullTimer->start(1000*2);
}
qDebug()<<"[<<<<---Pull Order Detail Result--->>>>]"<<result;
return result;
......@@ -809,7 +825,7 @@ bool FlowControl::_PullOrderList(const int &pageSize, const int &pageNo)
}
}
}
// 如果出现拉取订单列表失败,触发下一次拉门店有效订单的时间间隔变更为20(如果一开始就获取订单列表成功:时间间隔为5s)
// 如果出现拉取订单列表失败,触发下一次拉门店有效订单的时间间隔变更为10(如果一开始就获取订单列表成功:时间间隔为2s)
if(!result) {
m_pullTimer->start(1000*10);
// 如果某次拉订单列表出现失败;此函数的外层函数 _PullOrderData: 还会将本次拉单列表存起来等待下次拉取;
......@@ -1400,13 +1416,14 @@ QString FlowControl::_GetJsonStr(const QJsonObject &json)
return QString(QJsonDocument(json).toJson(QJsonDocument::Compact)).replace("\"","");
}
QJsonObject FlowControl::_PackHttpReplyJson(const int status, const QString &msg, const QJsonObject &data,const int& iscontinue)
QJsonObject FlowControl::_PackHttpReplyJson(const int status, const QString &msg, const QJsonObject &data, const int& iscontinue, const QString &orderId)
{
QJsonObject rObj;
rObj.insert("statusCode", status);
rObj.insert("msg", msg);
rObj.insert("iscontinue",iscontinue);
rObj.insert("data", data);
rObj.insert("orderId", orderId);
return rObj;
}
......
......@@ -492,7 +492,7 @@ public slots:
* 参数:NULL
* 返回:Json对象
* */
QJsonObject _PackHttpReplyJson(const int status, const QString& msg, const QJsonObject& data, const int &iscontinue);
QJsonObject _PackHttpReplyJson(const int status, const QString& msg, const QJsonObject& data, const int &iscontinue, const QString &orderId);
/**
*功能:FM外卖插件为响应Simphony请求准备返回数据
......
......@@ -4,6 +4,9 @@
#include <QDateTime>
#include "Control/flowControl.h"
#include "DTools/configManger.h"
#include <QSqlDriver>
//#include <windows.h>
PmsOrdersData::PmsOrdersData() {
QLOG_INFO()<<"[<<<<---PmsOrdersData:: Structure PMS Orders Table--->>>>]";
......@@ -13,7 +16,8 @@ bool PmsOrdersData::initPmsOrdersData() {
bool bRet = false;
m_sqlDb = QSqlDatabase::addDatabase("QMYSQL","PmsOrdersData"); //数据库驱动类型为Mysql
if ( m_sqlDb.isValid() ) {
QLOG_INFO()<<"[<<<<---PmsOrdersData driver is valid--->>>>]";
bool supportTransact = m_sqlDb.driver()->hasFeature(QSqlDriver::Transactions);
QLOG_INFO()<<"[<<<<---PmsOrdersData driver is valid and supportTransact: --->>>>]"<< supportTransact;
m_sqlDbIp = ConfigManger::GetInstance().GetMysqlIpConfig();
m_sqlDbPassword = ConfigManger::GetInstance().GetMysqlPasswordConfig();
......@@ -63,10 +67,16 @@ int PmsOrdersData::convertPosServiceTypeId( const OrderObject* orderObj, const
case OrderObject::Sendout :
case OrderObject::SimExceptSale :
case OrderObject::Finished :{
// 转换成星巴克规定的订单类型; 星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单
// 转换成星巴克规定的订单类型; 星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单; 7:预约单日订单; 8:拼单;
if(3 == orderObj->getOrderType()) {
tempOrderTypeId = 12;
}
else if ( 7== orderObj->getOrderType() ) {
tempOrderTypeId = 14;
}
else if ( 8== orderObj->getOrderType() ) {
tempOrderTypeId = 0;
}
// MOD渠道对应的业务逻辑 ; 星巴克-MOD,百度外卖,饿了么APP,美团外卖,星巴克-MOP;
else if("MOD" == orderObj->channel) {
// platformSource:平台来源:1 app;2 ele;3 ors;4 WeChat ;5 口碑;
......@@ -117,10 +127,16 @@ int PmsOrdersData::convertPosServiceTypeId( const OrderObject* orderObj, const
//refund-mode
case OrderObject::SimExceptRefund :
case OrderObject::Refunded :{
// 转换成星巴克规定的订单类型; 星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单
// 转换成星巴克规定的订单类型; 星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单; 7:预约单日订单; 8:拼单;
if(3 == orderObj->getOrderType()) {
tempOrderTypeId = 12;
}
else if ( 7== orderObj->getOrderType() ) {
tempOrderTypeId = 15;
}
else if ( 8== orderObj->getOrderType() ) {
tempOrderTypeId = 0;
}
// MOD渠道对应的业务逻辑 ; 星巴克-MOD,百度外卖,饿了么APP,美团外卖,星巴克-MOP;
else if("MOD" == orderObj->channel) {
// platformSource:平台来源:1 app;2 ele;3 ors;4 WeChat; 5 口碑;
......@@ -181,7 +197,15 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
m_mutex.unlock();
return false;
}
// 开启数据库事务实现原子操作: 保证 orders order_items order_item_condiments 同时插入成功;
// m_sqlDb.transaction(); 驱动不支持;
QSqlQuery query(m_sqlDb);
if ( !query.exec("START TRANSACTION") ) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData: Begin transaction Failed--->>>>]"<<m_sqlDb.lastError().text();
}
query.prepare("INSERT INTO orders(guid, order_id, order_status, update_time,order_channel, order_type,order_type_id,take_no, order_total, products_total, "
"discount_total, payment_method, invoice_url, invoice_status, third_party_id, third_party_index, package_fee, package_discount, accept_date, secret_signal, "
"address_detail, consignee_name ,first_name,last_name,consignee_phone, delivery_price,delivery_discount,delivery_time, order_estimation,make_finish_time,"
......@@ -266,10 +290,15 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
int tempBusinessType = orderObj->businessType.toInt();
if ( "WSG-MOD" == orderObj->channel && "4" == orderObj->platformSource)
tempBusinessType = 20;
if ( 7 == orderObj->orderType)
tempBusinessType = 10;
else if (8 == orderObj->orderType) {
tempBusinessType = 30;
}
query.addBindValue( tempBusinessType ); // --订单业务类型
query.addBindValue(orderObj->appointedTime); // --订单预约时间
query.addBindValue(orderObj->appointedRemindTemplate); // --订单预约提醒模板
query.addBindValue(orderObj->expectDate); // --订单预约时间
query.addBindValue( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime ); // --订单预约提醒模板
query.addBindValue(orderObj->subStoreId); // --母子门店的子门店编号;
if(!query.exec()) {
......@@ -301,7 +330,7 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
.arg(orderObj->storeName).arg(orderObj->storeAddress).arg("")
.arg("").arg(orderObj->lang).arg(orderObj->memo).arg(orderObj->riderPhone).arg(orderObj->riderName)
.arg(orderObj->disPlateformFee * 0.01).arg(orderObj->makeStatus).arg(orderObj->makeSource).arg(orderObj->makeDeviceId)
.arg( tempBusinessType ).arg(orderObj->appointedTime).arg(orderObj->appointedRemindTemplate)
.arg( tempBusinessType ).arg(orderObj->expectDate).arg( QString::number(orderObj->inAdvanceTakemeal) + ";" + orderObj->reserveMakeTime )
.arg(orderObj->subStoreId);
} else {
......@@ -316,6 +345,23 @@ bool PmsOrdersData::insertOrderData(OrderObject* orderObj,QString& pmsOrderRef)
}
QLOG_INFO()<<QString("[<<<<---PmsOrdersData::insertOrderData OrderId %1 insertProductData | insertConponData :--->>>>]").arg(orderObj->id)<<result;
}
// 结束数据库事务操作 保证 orders order_items order_item_condiments 同时插入成功;
// Sleep(10*1000); // test sqldb transaction
/* // m_sqlDb.commit() and m_sqlDb.rollback() 都是不支持的;
if ( !m_sqlDb.commit() ) {
bool rollbackRet = m_sqlDb.rollback();
QLOG_ERROR()<<QString("[<<<<---PmsOrdersData::insertOrderData OrderId %1 commit() failed and rollback:%2 --->>>>]").arg(orderObj->id).arg(rollbackRet?1:0);
}
*/
if ( !query.exec( "COMMIT" ) ) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData: Begin Commit Failed--->>>>]"<<m_sqlDb.lastError().text();
if ( !query.exec( "ROLLBACK" ) ) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::insertOrderData: Begin Rollback Failed--->>>>]"<<m_sqlDb.lastError().text();
}
}
m_sqlDb.close();
m_mutex.unlock();
//数据库原子操作:加锁失败;
......@@ -676,7 +722,7 @@ bool PmsOrdersData::insertSubProductData(const QList<dishesObject*> sub_products
}
//更新订单状态:需加锁;
bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderStatus , const QString &makeStatus) {
bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderStatus , const QString &makeStatus ) {
if ( !orderObj) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::updateOrderStatus orderObj Point is Null --->>>>]";
......@@ -700,9 +746,10 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
int tempOrderTypeId = convertPosServiceTypeId( orderObj, orderObj->orderStatus);
query.prepare(QString("update orders set order_status=%1,order_type_id=%2, make_status='%3',"
" make_source='%4', make_device_id='%5' where order_id='%6'")
" make_source='%4', make_device_id='%5', appointed_remind_template ='%6' where order_id='%7'")
.arg(QString::number(OrderStatus),QString::number(tempOrderTypeId),makeStatus,
orderObj->makeSource, orderObj->makeDeviceId, orderObj->id));
orderObj->makeSource, orderObj->makeDeviceId,
QString::number(orderObj->inAdvanceTakemeal) +';'+ orderObj->reserveMakeTime, orderObj->id));
if(!query.exec()) {
QLOG_ERROR()<<query.lastError().text()<<"[<<<<---PmsOrdersData::update Order Status Failed--->>>>]";
......@@ -724,14 +771,14 @@ bool PmsOrdersData::updateOrderStatus(OrderObject* orderObj, const int &OrderSta
}
//查询无需加锁;
bool PmsOrdersData::isOrderAndStatusExist(const QString& orderId, const int &OrderStatus, const QString& makeStatus, bool& pmsMakeStatusIsExistRet) {
bool PmsOrdersData::isOrderAndStatusExist(const QString& orderId, const int &OrderStatus, const QString& makeStatus, bool& pmsMakeStatusIsExistRet, int& arriveAheadFlag) {
bool result = false;
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::isOrderAndStatusExist:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return false;
}
QSqlQuery query(m_sqlDb);
query.prepare(QString("select order_id, make_status from orders where order_id='%1' and order_status='%2'").arg(orderId).arg(OrderStatus));
query.prepare(QString("select order_id, make_status, appointed_remind_template from orders where order_id='%1' and order_status='%2' ").arg(orderId).arg(OrderStatus));
if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---PmsOrdersData::isOrderAndStatusExist: isOrderAndStatusExist Selcet Failed--->>>>]"<<orderId<<query.lastError().text();
return false;
......@@ -742,6 +789,10 @@ bool PmsOrdersData::isOrderAndStatusExist(const QString& orderId, const int &Ord
if (makeStatus !=query.value(1).toString()) {
pmsMakeStatusIsExistRet = false;
}
QString appointedTemplate = query.value(2).toString();
if ( appointedTemplate.length() >3 ) {
arriveAheadFlag = appointedTemplate.split(";").first().toInt();
}
} else {
QLOG_ERROR()<<QString("[<<<<---PmsOrdersData::isOrderAndStatusExist: OrderId:%1 OrderStatus:%2 Not Exist--->>>>]").arg(orderId).arg(OrderStatus);
......
......@@ -92,7 +92,7 @@ public:
*参数:[1]订单号 [2]订单状态
*返回:true是,false否
**/
bool isOrderAndStatusExist(const QString& orderId, const int &OrderStatus, const QString& makeStatus, bool& pmsMakeStatusIsExistRet);
bool isOrderAndStatusExist(const QString& orderId, const int &OrderStatus, const QString& makeStatus, bool& pmsMakeStatusIsExistRet, int& arriveAheadFlag);
/**
*功能:查询订单是否存在PMS数据库;
......
......@@ -84,6 +84,9 @@ bool QtRedisClient::pushOrder2Redis(const OrderObject* orderObj ){
orderStatusObj.insert("MAKESOURCE",orderObj->makeSource);
orderStatusObj.insert("MAKEDEVICEID",orderObj->makeDeviceId);
orderStatusObj.insert("MAKEDEVICENAME","");
if ( 7== orderObj->orderType ) {
orderStatusObj.insert( "ARRIVEAHEAD", orderObj->inAdvanceTakemeal );
}
QJsonDocument orderStatusDoc = QJsonDocument(orderStatusObj);
cmdString.append(orderStatusDoc.toJson());
......
......@@ -28,6 +28,7 @@ void LocalHttpServer::run()
QJsonObject replyObject;
int status; //解析json结果
QString msg;
QString pushOrderId;
QJsonObject data; //回复的内容json
int iscontinue =0;
recvObject = QJsonDocument::fromJson(recvData.toUtf8(), &jsonError).object();
......@@ -48,9 +49,10 @@ void LocalHttpServer::run()
if(!FlowControl::GetInstance()._SimValidOrdersListIsEmpty()) {
iscontinue=1;
}
pushOrderId = recvObject["orderId"].toString();
}
/***将FM外卖插件中的合法有效数据返回给上面Http发过来的请求***/
replyObject = FlowControl::GetInstance()._PackHttpReplyJson(status, msg, data,iscontinue);
replyObject = FlowControl::GetInstance()._PackHttpReplyJson( status, msg, data,iscontinue, pushOrderId );
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM外卖插件回应Http拉单请求后的返回结果:--->>>>]") << replyObject;
session->replyJsonObject(replyObject);
}
......
......@@ -130,36 +130,48 @@ void OrderObject::FetchDataFromJson(const QJsonObject &json)
QString OrderObject::getChannelName()
{
QLOG_INFO() << QString("[<<<<---OrderObject:getChannelName [%1]--->>>>]").arg(channel);
if ("MOD" == channel && 3 != orderType){
if ( "4" == platformSource ) {
if ( "20" == businessType ) {
return QString::fromLocal8Bit("微信用星说");
} else if ( "30" == businessType ) {
return QString::fromLocal8Bit("拼单-MOD");
}
return QString::fromLocal8Bit("微信-MOD");
if ( "MOD" == channel ) {
if (3 == orderType ) {
return QString::fromLocal8Bit("星-客诉");
} else if ( 7 == orderType ) {
return QString::fromLocal8Bit("预约-MOD");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼单-MOD");
} else {
return QString::fromLocal8Bit("星-MOD");
if ( "4" == platformSource ) {
return QString::fromLocal8Bit("微信-MOD");
} else {
return QString::fromLocal8Bit("星-MOD");
}
}
}else if("MOD" == channel && 3 == orderType){
return QString::fromLocal8Bit("星-客诉");
}else if("WSG-MOD" == channel ){ // 兼容渠道名称不统一问题;
return QString::fromLocal8Bit("微信用星说");
}else if("WSG-MOD" == channel ){
if (7 == orderType ) {
return QString::fromLocal8Bit("预约-WSG");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼单-WSG");
} else {
return QString::fromLocal8Bit("微信用星说");
}
}else if("ELE" == channel){
return QString::fromLocal8Bit("饿了么");
}else if("MOP" == channel && 4 != orderType){
if ( "5" == platformSource ) {
return QString::fromLocal8Bit("口碑-MOP");
}else if( "MOP" == channel ){
if (4 == orderType ) {
return QString::fromLocal8Bit("星-自测");
} else if ( 7 == orderType ) {
return QString::fromLocal8Bit("预约-MOP");
} else if ( 8 == orderType ) {
return QString::fromLocal8Bit("拼单-MOP");
} else {
return QString::fromLocal8Bit("星-MOP");
if ( "5" == platformSource ) {
return QString::fromLocal8Bit("口碑-MOP");
} else {
return QString::fromLocal8Bit("星-MOP");
}
}
}else if("MOP" == channel && 4 == orderType){
return QString::fromLocal8Bit("星-自测");
}else{
return QString::fromLocal8Bit("未知");
}
......
......@@ -91,8 +91,9 @@ class OrderObject : public QObject
Q_PROPERTY (QString platformSource READ getPlatformSource WRITE setPlatformSource)
Q_PROPERTY (int orderIndex READ getOrderIndex WRITE setOrderIndex)
Q_PROPERTY (QString appointedTime READ getAppointedTime WRITE setAppointedTime)
Q_PROPERTY (QString appointedRemindTemplate READ getAppointedRemindTemplate WRITE setAppointedRemindTemplate)
Q_PROPERTY (QString expectDate READ getExpectDate WRITE setExpectDate)
Q_PROPERTY (QString reserveMakeTime READ getReserveMakeTime WRITE setReserveMakeTime)
Q_PROPERTY (int inAdvanceTakemeal READ getInAdvanceTakemeal WRITE setInAdvanceTakemeal)
Q_PROPERTY (QString subStoreId READ getSubStoreId WRITE setSubStoreId)
public:
OrderObject(QObject *parent=0)
......@@ -191,9 +192,10 @@ public:
QString makeDeviceId = ""; //PMS 更新制作状态的设备Id
QString businessType = "0"; //订单业务类型: 10:预约单 20:杯贴祝福 30:拼团
QString appointedTime = "0000-00-00 00:00:00"; // 预约日期 [预约单-预约日期] 必须设置默认值否则插库失败;
QString appointedRemindTemplate = ""; // 预约提醒模板【新增字段:string】
QString subStoreId = ""; // 子门店号 【新增字段:string】
QString expectDate = "0000-00-00 00:00:00"; // 预约时间 [预约单-顾客预计取餐时间] 必须设置默认值否则插库失败;
QString reserveMakeTime = "0000-00-00 00:00:00"; // 预约制作时间【新增字段:string】
int inAdvanceTakemeal = 0; // 预约单提前到店标志【新增字段:int】
QString subStoreId = ""; // 子门店号 【新增字段:string】
int forwardPosStatus = 0; // 正向单入机状态: 0:未知 1: 成功 2:失败;
int negativePosStatus = 0; // 负向单同上;
......@@ -447,11 +449,14 @@ public:
inline QString getSecretSignal()const{return secretSignal;}
inline void setSecretSignal(const QString& v){secretSignal = v;}
inline QString getAppointedTime()const{return appointedTime;}
inline void setAppointedTime(const QString& v){appointedTime = v;}
inline QString getExpectDate()const{return expectDate;}
inline void setExpectDate(const QString& v){expectDate = v;}
inline QString getAppointedRemindTemplate()const{return appointedRemindTemplate;}
inline void setAppointedRemindTemplate(const QString& v){appointedRemindTemplate = v;}
inline QString getReserveMakeTime()const{return reserveMakeTime;}
inline void setReserveMakeTime(const QString& v){reserveMakeTime = v;}
inline int getInAdvanceTakemeal()const{return inAdvanceTakemeal;}
inline void setInAdvanceTakemeal(const int& v){inAdvanceTakemeal = v;}
inline QString getSubStoreId()const{return subStoreId;}
inline void setSubStoreId(const QString& v){subStoreId = v;}
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 4,2020,521,1
PRODUCTVERSION 4,2020,521,1
FILEVERSION 4,2020,526,1
PRODUCTVERSION 4,2020,526,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "PmsPlugin.exe"
VALUE "ProductName", "PMS Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "4.2020.521.1"
VALUE "FileVersion", "4.2020.521.1"
VALUE "ProductVersion", "4.2020.526.1"
VALUE "FileVersion", "4.2020.526.1"
//*************************************************************************//
END
END
......
......@@ -9,7 +9,7 @@
//#define APP_VERSION "4.2020.318.1"
//#define APP_VERSION "4.2020.423.1"
//#define APP_VERSION "4.2020.520.1"
#define APP_VERSION "4.2020.521.1"
#define APP_VERSION "4.2020.526.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