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()
connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
/***打开Sql server express 数据库并登陆外卖插件***/
// /*
// 打开Sql server express 数据库并登陆外卖插件 //
SimProcOrderDB::getInstance();
m_initSimProcOrderDBRet = SimProcOrderDB::getInstance().initSimProcOrderDB();
/***打开SqlServer POS打印汇总信息本地数据库***/
// 打开SqlServer POS打印汇总信息本地数据库 //
PrintSumBillPosDB::getInstance();
m_initPrintSumBillPosDBRet = PrintSumBillPosDB::getInstance().initPrintSumBillPosDB();
/***打开SqlServer POS打印杯贴商品数据本地数据库***/
// 打开SqlServer POS打印杯贴商品数据本地数据库 //
PrintCupStickPosDB::getInstance();
m_initPrintCupStickPosDBRet = PrintCupStickPosDB::getInstance().initPrintCupStickPosDB();
/***打开SqlServer POS打印消息队列本地数据库***/
// 打开SqlServer POS打印消息队列本地数据库 //
PrintMsgQueueDB::getInstance();
m_initPrintMsgQueueDBRet = PrintMsgQueueDB::getInstance().initPrintMsgQueueDB();
/***打开SqlServer POS打印订单优惠明细数据本地数据库***/
// 打开SqlServer POS打印订单优惠明细数据本地数据库 //
PrintOrderPromotionDB::getInstance();
m_initPrintOrderPromotionDBRet = PrintOrderPromotionDB::getInstance().initPrintOrderPromotionDB();
/***打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库***/
// 打开SqlServer POS获取 当前用户 是否绑定钱箱+是否拥有退货权限 本地数据库 //
GetCaboxAReAuth::getInstance();
m_initGetAuthPosDBRet = GetCaboxAReAuth::getInstance().initGetAuthPosDB();
/***打开SqlServer 用订单的全部去重Poskey校验 在POS本地数据库的有效性***/
// 打开SqlServer 用订单的全部去重Poskey校验 在POS本地数据库的有效性 //
CheckPoskeyExistPosDB::getInstance();
m_initCheckPoskeyExistPosDBRet = CheckPoskeyExistPosDB::getInstance().initCheckPoskeyExistPosDB();
/***打开SqlServer 存储上游推送的 通告消息 本地数据库***/
// 打开SqlServer 存储上游推送的 通告消息 本地数据库 //
SaveNoticeMsgDB::getInstance();
m_initSaveNoticeMsgDBRet = SaveNoticeMsgDB::getInstance().initSaveNoticeMsgDB();
// */
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)
}
// 3: 刷新订单 预约时间 & 制作时间 & 街送小票时间;
if ( 3 == orderObject->inAdvanceTakemeal ) {
if ( 3 == orderObject->inAdvanceTakemeal || oldArriveAhead != orderObject->inAdvanceTakemeal ) {
int updateOrderRet = PrintSumBillPosDB::getInstance().updateOrderDataToDB(orderObject, QString("UpdateTimeAction"));
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"));
QLOG_INFO() << QString("[<<<<---PrintSumBillPosDB.getInstance().updateOrderDataToDB orderId:%1 updateOrderRet:%2--->>>>]").arg(orderObject->id).arg(updateOrderRet);
if ( 2 == orderObject->inAdvanceTakemeal ) {
QString warnMsg = QString::fromLocal8Bit("用户修改 %1 预约时间; 订单尾号: %2; 订单号: %3; 新预约时间: %4; 原预约时间: %5")
.arg( orderObject->channel ).arg( orderObject->id.mid(orderObject->id.length() - 5, 5) ).arg(orderObject->id)
.arg( orderObject->expectDate.mid(11,5) ).arg( orderObject->lastExpectDate.mid(11,5) );
emit showAlert(AlertForm::WARNNING, warnMsg );
}
}
/* // updateOrderDataToDB -> updateOrderTimeInfo()-> trigger show alert; [已经触发提示了;故此处注释此处代码]
if ( oldArriveAhead != orderObject->inAdvanceTakemeal && 2 == orderObject->inAdvanceTakemeal ) {
QString warnMsg = QString::fromLocal8Bit("用户修改 %1 预约时间; 订单尾号: %2; 订单号: %3; 新预约时间: %4; 原预约时间: %5")
.arg( orderObject->channel ).arg( orderObject->id.mid(orderObject->id.length() - 5, 5) ).arg(orderObject->id)
.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:
int syncOrderDataToDB(OrderObject* orderObj);
/**
*功能: 根据订单对象 同步pos数据库中汇总单中的预约信息;
*参数:[1]订单对象指针
*返回: 0: 同步失败;1: 无需同步;2: 同步成功;
**/
int syncOrderTimeInfo(OrderObject* orderObj);
/**
*功能: 根据订单对象指针 更新pos本地数据库中数据;
*参数:[1]订单对象指针
*返回: 0: 更新失败;1: 无需更新; 2: 更新成功;
......@@ -103,10 +96,18 @@ public:
/**
*功能: 根据订单对象 更新 pos数据库中汇总单中的预约信息;
*参数:[1]订单号
*返回:true操作成功,false失败
*参数:[1]订单号对象
*返回:0: 更新失败;1: 无需更新;2: 更新成功;
**/
int updateOrderTimeInfo(OrderObject* orderObj);
/**
*功能: 根据订单对象 更新 pos数据库中汇总单中的手机号信息;
*参数:[1]订单对象
*返回:0: 更新失败;1: 无需更新;2: 更新成功;
**/
bool updateOrderTimeInfo(OrderObject* orderObj);
int updateOrderPhoneInfo(OrderObject* orderObj);
/**
*功能: 根据订单ID 更新 pos本地数据库中汇总单状态信息;
......
......@@ -108,6 +108,8 @@ class OrderObject : public QObject
Q_PROPERTY (QString remindTicketTime READ getRemindTicketTime WRITE setRemindTicketTime )
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 callBackUrl READ getCallBackUrl WRITE setCallBackUrl)
Q_PROPERTY (bool skipPrint READ getSkipPrint WRITE setSkipPrint)
......@@ -257,6 +259,8 @@ public:
QString remindTicketTime; // 提醒小票时间
QString carNumber; // 车牌号
QString carColor; // 车颜色
QString carBrandModel; // 车-品牌车型
QString privacyPhone; // 隐私号
QString callBackUrl; // 为 Fulfillment Service 后多个OMS, 用于获取订单详情, 和汇报订单入机情况: 拉取订单详情成功时手动添加到订单json报文体中为了入机汇报接口;
bool skipPrint; // 上游推送的订单 是否跳过打印;
......@@ -559,6 +563,12 @@ public:
inline QString getCarNumber()const{return carNumber;}
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 void setPrivacyPhone(const QString& v){privacyPhone = v;}
......
......@@ -9,6 +9,7 @@
#include <QList>
#include <QMap>
#include <QProcess>
#include "windows.h"
#include <QThread>
extern QThread workThread;
......@@ -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()
{
#ifdef QT_DEBUG
......@@ -125,8 +185,9 @@ void MainForm::MyShow()
void MainForm::_Init()
{
this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
//this->showFullScreen();
//this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
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();
......
......@@ -35,8 +35,24 @@ public:
* 返回:NULL
* */
void MyShow();
protected:
void mouseMoveEvent(QMouseEvent * event);
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent * event);
private:
Ui::MainForm *ui;
// 记录左键按下去后是否移动过
bool m_bMouseMove;
// 记录左键是否按下去
bool m_bMousePress;
// 拖动前鼠标坐标
QPoint m_lastMousePos;
// 此次拖动一共移动的距离
QPoint m_absMove;
// 时间定时器
QTimer m_timeTimer;
......
......@@ -36,7 +36,7 @@
<number>10</number>
</property>
<item>
<widget class="HeadFrame" name="mainFrmHead">
<widget class="QFrame" name="mainFrmHead">
<property name="maximumSize">
<size>
<width>16777215</width>
......@@ -1480,12 +1480,6 @@
<extends>QLineEdit</extends>
<header location="global">clickedLineEdit.h</header>
</customwidget>
<customwidget>
<class>HeadFrame</class>
<extends>QFrame</extends>
<header location="global">headframe.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<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