Commit b9db01d9 by wuyang.zou

1、decouple Pos插件自动登录功能;

2、decouple Pos插件自动获取工作站号;
3、decouple Pos插件支持小票补打功能;
4、双屏POS,插件展开时,可以拖拽到扩展屏(客显屏) 可能会遮盖右下角的录单按钮;
5、Curbside订单新增:车辆颜色+车辆品牌型号 两属性备用
6、Curbside订单,预约时间变更提醒&用户隐私号能否及时更新优化;

Version: 2.2022.10.20
parent 79741adb
Pipeline #41797 failed with stage
in 0 seconds
...@@ -122,37 +122,39 @@ FlowControl::FlowControl() ...@@ -122,37 +122,39 @@ FlowControl::FlowControl()
connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection); connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection); connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
/***打开Sql server express 数据库并登陆外卖插件***/ // /*
// 打开Sql server express 数据库并登陆外卖插件 //
SimProcOrderDB::getInstance(); SimProcOrderDB::getInstance();
m_initSimProcOrderDBRet = SimProcOrderDB::getInstance().initSimProcOrderDB(); m_initSimProcOrderDBRet = SimProcOrderDB::getInstance().initSimProcOrderDB();
/***打开SqlServer POS打印汇总信息本地数据库***/ // 打开SqlServer POS打印汇总信息本地数据库 //
PrintSumBillPosDB::getInstance(); PrintSumBillPosDB::getInstance();
m_initPrintSumBillPosDBRet = PrintSumBillPosDB::getInstance().initPrintSumBillPosDB(); m_initPrintSumBillPosDBRet = PrintSumBillPosDB::getInstance().initPrintSumBillPosDB();
/***打开SqlServer POS打印杯贴商品数据本地数据库***/ // 打开SqlServer POS打印杯贴商品数据本地数据库 //
PrintCupStickPosDB::getInstance(); PrintCupStickPosDB::getInstance();
m_initPrintCupStickPosDBRet = PrintCupStickPosDB::getInstance().initPrintCupStickPosDB(); m_initPrintCupStickPosDBRet = PrintCupStickPosDB::getInstance().initPrintCupStickPosDB();
/***打开SqlServer POS打印消息队列本地数据库***/ // 打开SqlServer POS打印消息队列本地数据库 //
PrintMsgQueueDB::getInstance(); PrintMsgQueueDB::getInstance();
m_initPrintMsgQueueDBRet = PrintMsgQueueDB::getInstance().initPrintMsgQueueDB(); m_initPrintMsgQueueDBRet = PrintMsgQueueDB::getInstance().initPrintMsgQueueDB();
/***打开SqlServer POS打印订单优惠明细数据本地数据库***/ // 打开SqlServer POS打印订单优惠明细数据本地数据库 //
PrintOrderPromotionDB::getInstance(); PrintOrderPromotionDB::getInstance();
m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB(); m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB();
/***打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库***/ // 打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库 //
GetCaboxAReAuth::getInstance(); GetCaboxAReAuth::getInstance();
m_initGetAuthPosDBRet = GetCaboxAReAuth::getInstance().initGetAuthPosDB(); 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();
/***打开SqlServer 存储上游推送的 通告消息 本地数据库***/ // 打开SqlServer 存储上游推送的 通告消息 本地数据库 //
SaveNoticeMsgDB::getInstance(); SaveNoticeMsgDB::getInstance();
m_initSaveNoticeMsgDBRet = SaveNoticeMsgDB::getInstance().initSaveNoticeMsgDB(); m_initSaveNoticeMsgDBRet = SaveNoticeMsgDB::getInstance().initSaveNoticeMsgDB();
// */
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::FlowControl() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2, m_initGetAuthPosDBRet:%3 ," QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::FlowControl() m_initSimProcOrderDBRet: %1, m_initPrintSumBillPosDBRet: %2, m_initGetAuthPosDBRet:%3 ,"
...@@ -943,19 +945,23 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -943,19 +945,23 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
} }
// 3: 刷新订单 预约时间 & 制作时间 & 街送小票时间; // 3: 刷新订单 预约时间 & 制作时间 & 街送小票时间;
if ( 3 == orderObject->inAdvanceTakemeal ) { if ( 3 == orderObject->inAdvanceTakemeal || oldArriveAhead != orderObject->inAdvanceTakemeal ) {
int updateOrderRet = PrintSumBillPosDB::getInstance().updateOrderDataToDB(orderObject, QString("UpdateTimeAction")); int updateOrderRet = PrintSumBillPosDB::getInstance().updateOrderDataToDB(orderObject, QString("UpdateTimeAction"));
QLOG_INFO() << QString("[<<<<---PrintSumBillPosDB.getInstance().updateOrderDataToDB orderId:%1 updateOrderRet:%2--->>>>]").arg(orderObject->id).arg(updateOrderRet); QLOG_INFO() << QString("[<<<<---PrintSumBillPosDB.getInstance().updateOrderDataToDB orderId:%1 updateOrderRet:%2--->>>>]").arg(orderObject->id).arg(updateOrderRet);
} else if ( oldArriveAhead != orderObject->inAdvanceTakemeal ) { }
int updateOrderRet = PrintSumBillPosDB::getInstance().updateOrderDataToDB(orderObject, QString("UpdateTimeAction")); /* // updateOrderDataToDB -> updateOrderTimeInfo()-> trigger show alert; [已经触发提示了;故此处注释此处代码]
QLOG_INFO() << QString("[<<<<---PrintSumBillPosDB.getInstance().updateOrderDataToDB orderId:%1 updateOrderRet:%2--->>>>]").arg(orderObject->id).arg(updateOrderRet); if ( oldArriveAhead != orderObject->inAdvanceTakemeal && 2 == orderObject->inAdvanceTakemeal ) {
QString warnMsg = QString::fromLocal8Bit("用户修改 %1 预约时间; 订单尾号: %2; 订单号: %3; 新预约时间: %4; 原预约时间: %5")
if ( 2 == orderObject->inAdvanceTakemeal ) { .arg( orderObject->channel ).arg( orderObject->id.mid(orderObject->id.length() - 5, 5) ).arg(orderObject->id)
QString warnMsg = QString::fromLocal8Bit("用户修改 %1 预约时间; 订单尾号: %2; 订单号: %3; 新预约时间: %4; 原预约时间: %5") .arg( orderObject->expectDate.mid(11,5) ).arg( orderObject->lastExpectDate.mid(11,5) );
.arg( orderObject->channel ).arg( orderObject->id.mid(orderObject->id.length() - 5, 5) ).arg(orderObject->id) emit showAlert(AlertForm::WARNNING, warnMsg );
.arg( orderObject->expectDate.mid(11,5) ).arg( orderObject->lastExpectDate.mid(11,5) ); }
emit showAlert(AlertForm::WARNNING, warnMsg ); */
} // 4: 特殊字段值存在则刷新(此类订单量小);
// 4.1: 更新手机隐私号;
if ( orderObject->privacyPhone.length() ) {
int updateOrderPhoneRet = PrintSumBillPosDB::getInstance().updateOrderDataToDB(orderObject, QString("UpdatePhoneAction"));
QLOG_INFO() << QString("[<<<<---PrintSumBillPosDB.getInstance().updateOrderDataToDB orderId:%1 updateOrderPhoneRet:%2--->>>>]").arg(orderObject->id).arg(updateOrderPhoneRet);
} }
} }
......
...@@ -88,13 +88,6 @@ public: ...@@ -88,13 +88,6 @@ public:
int syncOrderDataToDB(OrderObject* orderObj); int syncOrderDataToDB(OrderObject* orderObj);
/** /**
*功能: 根据订单对象 同步pos数据库中汇总单中的预约信息;
*参数:[1]订单对象指针
*返回: 0: 同步失败;1: 无需同步;2: 同步成功;
**/
int syncOrderTimeInfo(OrderObject* orderObj);
/**
*功能: 根据订单对象指针 更新pos本地数据库中数据; *功能: 根据订单对象指针 更新pos本地数据库中数据;
*参数:[1]订单对象指针 *参数:[1]订单对象指针
*返回: 0: 更新失败;1: 无需更新; 2: 更新成功; *返回: 0: 更新失败;1: 无需更新; 2: 更新成功;
...@@ -103,10 +96,18 @@ public: ...@@ -103,10 +96,18 @@ public:
/** /**
*功能: 根据订单对象 更新 pos数据库中汇总单中的预约信息; *功能: 根据订单对象 更新 pos数据库中汇总单中的预约信息;
*参数:[1]订单号 *参数:[1]订单号对象
*返回:true操作成功,false失败 *返回:0: 更新失败;1: 无需更新;2: 更新成功;
**/
int updateOrderTimeInfo(OrderObject* orderObj);
/**
*功能: 根据订单对象 更新 pos数据库中汇总单中的手机号信息;
*参数:[1]订单对象
*返回:0: 更新失败;1: 无需更新;2: 更新成功;
**/ **/
bool updateOrderTimeInfo(OrderObject* orderObj); int updateOrderPhoneInfo(OrderObject* orderObj);
/** /**
*功能: 根据订单ID 更新 pos本地数据库中汇总单状态信息; *功能: 根据订单ID 更新 pos本地数据库中汇总单状态信息;
......
...@@ -108,6 +108,8 @@ class OrderObject : public QObject ...@@ -108,6 +108,8 @@ class OrderObject : public QObject
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 carBrandModel READ getCarBrandModel WRITE setCarBrandModel)
Q_PROPERTY (QString privacyPhone READ getPrivacyPhone WRITE setPrivacyPhone) Q_PROPERTY (QString privacyPhone READ getPrivacyPhone WRITE setPrivacyPhone)
Q_PROPERTY (QString callBackUrl READ getCallBackUrl WRITE setCallBackUrl) Q_PROPERTY (QString callBackUrl READ getCallBackUrl WRITE setCallBackUrl)
Q_PROPERTY (bool skipPrint READ getSkipPrint WRITE setSkipPrint) Q_PROPERTY (bool skipPrint READ getSkipPrint WRITE setSkipPrint)
...@@ -257,6 +259,8 @@ public: ...@@ -257,6 +259,8 @@ public:
QString remindTicketTime; // 提醒小票时间 QString remindTicketTime; // 提醒小票时间
QString carNumber; // 车牌号 QString carNumber; // 车牌号
QString carColor; // 车颜色
QString carBrandModel; // 车-品牌车型
QString privacyPhone; // 隐私号 QString privacyPhone; // 隐私号
QString callBackUrl; // 为 Fulfillment Service 后多个OMS, 用于获取订单详情, 和汇报订单入机情况: 拉取订单详情成功时手动添加到订单json报文体中为了入机汇报接口; QString callBackUrl; // 为 Fulfillment Service 后多个OMS, 用于获取订单详情, 和汇报订单入机情况: 拉取订单详情成功时手动添加到订单json报文体中为了入机汇报接口;
bool skipPrint; // 上游推送的订单 是否跳过打印; bool skipPrint; // 上游推送的订单 是否跳过打印;
...@@ -559,6 +563,12 @@ public: ...@@ -559,6 +563,12 @@ public:
inline QString getCarNumber()const{return carNumber;} inline QString getCarNumber()const{return carNumber;}
inline void setCarNumber(const QString& v){carNumber = v;} inline void setCarNumber(const QString& v){carNumber = v;}
inline QString getCarColor()const{return carColor;}
inline void setCarColor(const QString& v){carColor = v;}
inline QString getCarBrandModel()const{return carBrandModel;}
inline void setCarBrandModel(const QString& v){carBrandModel = v;}
inline QString getPrivacyPhone()const{return privacyPhone;} inline QString getPrivacyPhone()const{return privacyPhone;}
inline void setPrivacyPhone(const QString& v){privacyPhone = v;} inline void setPrivacyPhone(const QString& v){privacyPhone = v;}
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <QList> #include <QList>
#include <QMap> #include <QMap>
#include <QProcess> #include <QProcess>
#include "windows.h"
#include <QThread> #include <QThread>
extern QThread workThread; extern QThread workThread;
...@@ -75,6 +76,65 @@ MainForm::~MainForm() ...@@ -75,6 +76,65 @@ MainForm::~MainForm()
} }
void MainForm::mouseMoveEvent(QMouseEvent *event)
{
if ((event->buttons()==Qt::LeftButton) && m_bMousePress)
{
QPoint moveAmount = event->globalPos() - m_lastMousePos;
m_absMove += moveAmount;
move(pos() + moveAmount);
m_lastMousePos = event->globalPos();
m_bMouseMove = true;
}
}
void MainForm::mousePressEvent(QMouseEvent *event)
{
if (event->button()==Qt::LeftButton) {
m_bMousePress = true;
m_lastMousePos = event->globalPos();
m_absMove = QPoint(0,0);
}
/*
if(event->button()==Qt::RightButton) {
sInfoThread.terminate();
workThread.terminate();
qApp->exit(-1);
QProcess::startDetached(qApp->applicationFilePath(), QStringList(qApp->applicationFilePath()));
}
*/
}
void MainForm::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button()==Qt::LeftButton)
{
m_bMousePress = false;
}
m_bMouseMove = false;
int x = m_absMove.x();
int y = m_absMove.y();
int form_width_x = this->width();
int from_height_y = this->height();
QPoint point = this->pos();
QLOG_INFO()<<QString("MainForm current Position(x:%1,y:%2) absMove: m_x=%3,m_y=%4").arg( point.x() ).arg( point.y() ).arg(x).arg(y);
int nWidth = GetSystemMetrics(SM_CXSCREEN);
int nHeight = GetSystemMetrics(SM_CYSCREEN);
QLOG_INFO()<<QString::fromLocal8Bit("MainForm active_Range(x: 0~%1,y: 0~%2)").arg( nWidth - form_width_x ).arg( nHeight -from_height_y );
if( (point.x() + form_width_x/3) < 0 || (point.x() + form_width_x) > (nWidth - 40)
|| (point.y() + from_height_y/3) < 0 || (point.y() + from_height_y) > (nHeight - 60) ) {
int reset_x = point.x() - x;
int reset_y = point.y() - y;
QLOG_INFO()<<QString::fromLocal8Bit("MainForm OutRange, Reset Position Before Move (x:%1,y:%2)").arg( reset_x ).arg( reset_y );
this->move( QPoint( reset_x, reset_y ) );
} else {
// this->move( QPoint( point.x()+x, point.y()+y ) ); // No Need Move, mouseMoveEvent Trigger Move;
}
}
void MainForm::MyShow() void MainForm::MyShow()
{ {
#ifdef QT_DEBUG #ifdef QT_DEBUG
...@@ -125,8 +185,9 @@ void MainForm::MyShow() ...@@ -125,8 +185,9 @@ void MainForm::MyShow()
void MainForm::_Init() void MainForm::_Init()
{ {
this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); //this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
//this->showFullScreen(); this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool);
QLOG_INFO()<<QString::fromLocal8Bit("MainForm _Init Size(width:%1,height:%2)").arg( this->width() ).arg( this->height() );
// 显示托盘 // 显示托盘
m_tray.show(); m_tray.show();
......
...@@ -35,8 +35,24 @@ public: ...@@ -35,8 +35,24 @@ public:
* 返回:NULL * 返回:NULL
* */ * */
void MyShow(); void MyShow();
protected:
void mouseMoveEvent(QMouseEvent * event);
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent * event);
private: private:
Ui::MainForm *ui; Ui::MainForm *ui;
// 记录左键按下去后是否移动过
bool m_bMouseMove;
// 记录左键是否按下去
bool m_bMousePress;
// 拖动前鼠标坐标
QPoint m_lastMousePos;
// 此次拖动一共移动的距离
QPoint m_absMove;
// 时间定时器 // 时间定时器
QTimer m_timeTimer; QTimer m_timeTimer;
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<number>10</number> <number>10</number>
</property> </property>
<item> <item>
<widget class="HeadFrame" name="mainFrmHead"> <widget class="QFrame" name="mainFrmHead">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16777215</width> <width>16777215</width>
...@@ -1480,12 +1480,6 @@ ...@@ -1480,12 +1480,6 @@
<extends>QLineEdit</extends> <extends>QLineEdit</extends>
<header location="global">clickedLineEdit.h</header> <header location="global">clickedLineEdit.h</header>
</customwidget> </customwidget>
<customwidget>
<class>HeadFrame</class>
<extends>QFrame</extends>
<header location="global">headframe.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections> <connections>
......
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