Commit 4f8ef409 by xiaoqing.gu

1、添加档口选择 2、显示档口菜单 3、修改登录界面

parent d08ae8df
......@@ -22,7 +22,7 @@ PickUpOrderWork::~PickUpOrderWork()
}
}
bool PickUpOrderWork::event(QEvent *e)
bool PickUpOrderWork:: event(QEvent *e)
{
if(e->type() == PosEvent::s_pickuporder_opt)
{
......
......@@ -2,10 +2,12 @@
#include "event/fmapplication.h"
#include "event/posevent.h"
#include "QsLog.h"
#include <QJsonArray>
StallsGetWork::StallsGetWork(WorkObject *parent) : WorkObject(parent)
{
FMApplication::subscibeEvent(this, PosEvent::s_token_change);
FMApplication::subscibeEvent(this, PosEvent::s_login_storeinfo);
}
StallsGetWork::~StallsGetWork()
......@@ -36,9 +38,27 @@ bool StallsGetWork::event(QEvent *e)
return true;
}
if(e->type() == PosEvent::s_login_storeinfo)
{
QVariantMap storeinfo;
GETEVENTINFO(storeinfo,e,QVariantMap);
QLOG_DEBUG() << "StallsGetWork::event::PosEvent::s_login_storeinfo:" << storeinfo;
_storeinfo = storeinfo;
return true;
}
return WorkObject::event(e);
}
void StallsGetWork::setUrl(const QString &url)
{
_url = url;
}
void StallsGetWork::workstart()
{
if(_token.isEmpty())
......@@ -48,9 +68,49 @@ void StallsGetWork::workstart()
loop.exec();
}
while(_stopflag)
QLOG_DEBUG() << "StallsGetWork::workstart loop quit";
while(!_stopflag)
{
//获取档口信息
QJsonObject json, recvjson;
QString realurl;
QString error;
if(!GetStallsDataProcess::getStallsOptRequest(json, _storeinfo[JSON_KEY_PARTNERID].toString()))
{
QLOG_ERROR() << "getStallsOptRequest failed";
return;
}
QLOG_INFO() << "getStallsOptRequest request json : " << json;
if(!GetStallsDataProcess::getRealUrl(ADVANCEORDER, json, _url, realurl))
{
QLOG_ERROR() << "getStallsOptRequest getRealUrl failed";
return;
}
QLOG_INFO() << "getStallsOptRequest request url :" << realurl;
if(!this->S_Request(json, recvjson, realurl, error))
{
QLOG_ERROR() << "getStallsOptRequest failed : " << error;
return;
}
QLOG_INFO() << "getStallsOptRequest return json : " << recvjson;
//判断recvjson,如果返回失败和一种,则不推送这个消息
QJsonObject tmpjson;
QJsonArray tmparray;
if(recvjson.contains(EVENT_KEY_RESULT) && recvjson[EVENT_KEY_RESULT].toObject().contains(EVENT_KEY_FILEPRODUCTLIST)) {
tmpjson = recvjson[EVENT_KEY_RESULT].toObject();
tmparray = tmpjson[EVENT_KEY_FILEPRODUCTLIST].toArray();
if(recvjson[JSON_KEY_CODE].toString() != "100" || tmparray.size() == 0) {
POSTEVENTTYPE(PosEvent::s_change_stalls, recvjson, QJsonObject);
}
}
//获取档口信息完成后检擦是否退出表示
if(_stopflag)
......@@ -60,5 +120,6 @@ void StallsGetWork::workstart()
connect(this, &StallsGetWork::quit, &loop, &QEventLoop::quit);
loop.exec();
}
_stoped = true;
}
#ifndef STALLSGETWORK_H
#define STALLSGETWORK_H
#include <QEvent>
#include <QString>
#include <QJsonObject>
#include <QTimer>
#include <QEventLoop>
#include "workobject.h"
#include "preDefine.h"
#include "base/Arithmetic/cretopt.h"
class StallsGetWork : public WorkObject
#define ADVANCEORDER 0
class StallsGetWork : public WorkObject
{
Q_OBJECT
public:
......@@ -13,12 +22,109 @@ public:
bool event(QEvent *e);
void setUrl(const QString &url);
signals:
public slots:
void workstart();
private:
QVariantMap _storeinfo;
QString _token;
QString _url;
};
class GetStallsDataProcess
{
public:
friend class StallsGetWork;
private:
static bool getAction(int REQ, QString &action)
{
#ifndef USE_QAACTION
switch (REQ)
{
case ADVANCEORDER:
action = QString("saas.printFile.query");
return true;
default:
return false;
}
#else
switch (REQ)
{
case ADVANCEORDER:
action = QString("qasaas.printFile.query");
return true;
default:
return false;
}
#endif
}
static bool getAccess_Token(QString &access_toekn)
{
access_toekn = DEFAULT_ACCESS_TOKEN;
return true;
}
static bool getVer(QString &ver)
{
ver = "1";
return true;
}
static bool getRealUrl(int reqtype, const QJsonObject &json, const QString &url, QString &realurl)
{
QString action, access_token, ver, sign;
if(!GetStallsDataProcess::requestGetRSASign(reqtype, json, sign, action, access_token, ver))
return false;
QString tmpurl = url;
realurl = tmpurl.arg(action, access_token, ver, sign);
return true;
}
static bool requestGetRSASign(int reqtype, const QJsonObject &json, QString &sign, QString &action, QString &access_token, QString &ver)
{
QJsonObject tmpjson;
if(!GetStallsDataProcess::getAction(reqtype, action) ||
!GetStallsDataProcess::getAccess_Token(access_token) ||
!GetStallsDataProcess::getVer(ver))
return false;
GetStallsDataProcess::getComplateJson(action, access_token, ver, json, tmpjson);
return CretOperate::GetSign(tmpjson, sign);
}
static void getComplateJson(QString action, QString access_token, QString ver, const QJsonObject &json, QJsonObject &complatejson)
{
complatejson = json;
complatejson.insert(JSON_KEY_ACTION, action);
complatejson.insert(JSON_KEY_ACCESS_TOKEN, access_token);
complatejson.insert(JSON_KEY_VER, ver);
}
// static bool getPickUpOrderOptRequest(QJsonObject &data, QString orderid, int opt)
// {
// data.insert(JSON_KEY_PIVKUP_ORDERID, orderid);
// data.insert(JSON_KEY_PIVKUP_OPT, opt);
// return true;
// }
static bool getStallsOptRequest(QJsonObject &data, QString partnerid)
{
data.insert(JSON_KEY_PARTNERID, partnerid);
return true;
}
};
#endif // STALLSGETWORK_H
......@@ -26,6 +26,8 @@ QEvent::Type PosEvent::s_pickuporder_remind = static_cast<QEvent::Type>(QEvent::
QEvent::Type PosEvent::s_change_prt = static_cast<QEvent::Type>(QEvent::registerEventType());
QEvent::Type PosEvent::s_delete_prt = static_cast<QEvent::Type>(QEvent::registerEventType());
QEvent::Type PosEvent::s_change_stalls = static_cast<QEvent::Type>(QEvent::registerEventType());
PosEvent::PosEvent(Type e):QEvent(e)
{
//qDebug() << "------event : " << this;
......
......@@ -107,6 +107,9 @@ public:
static Type s_change_prt;
//删除打印机
static Type s_delete_prt;
//---------------------档口相关------------------------
//添加档口信息
static Type s_change_stalls;
private:
//事件携带的信息,该内存你应当在堆中分配
void *_info;
......
......@@ -4,6 +4,7 @@
#include "control/ordergetwork.h"
#include "model/posorderpool.h"
#include "model/posprtpool.h"
#include "model/posstallspool.h"
#include "view/mainForm.h"
#include "view/floatForm.h"
#include "view/newmainform.h"
......@@ -12,6 +13,7 @@
#include "control/orderprintwork.h"
#include "control/pickuporderwork.h"
#include "control/prtlocalizework.h"
#include "control/stallsgetwork.h"
#include "base/Dump/dump.h"
#include "view/loginform.h"
#include <QVariantMap>
......@@ -135,12 +137,16 @@ int main(int argc, char *argv[])
QThread threadt;
QThread prtthreadt;
QThread prtthreadpickup;
//获取档口线程
QThread stallsThread;
QLOG_INFO() << "Thread List :" << &thread << &threadt << QThread::currentThread();
//初始化打印文件
InitPtr();
//初始化全局订单池主线程中工作
PosOrderPool::InitOrderPool();
PosPrtPool::InitPrtPool();
PosStallsPool::InitPosStallsPool();
//读取配置文件
QString geturl;
QString pushurl;
......@@ -159,7 +165,12 @@ int main(int argc, char *argv[])
PickUpOrderWork pickuporderwork;
//打印机数据本地化
PrtLocalizeWork prtlocalizework;
//档口获取
StallsGetWork stallsgetwork;
stallsgetwork.setUrl(geturl);
pickuporderwork.setUrl(geturl);
work.setUrl(geturl);
work.setAutoconfirm(autoconf);
......@@ -172,11 +183,14 @@ int main(int argc, char *argv[])
pwork.moveToThread(&threadt, true);
pickuporderwork.moveToThread(&prtthreadpickup, true);
prtlocalizework.moveToThread(&prtthreadpickup, false);
stallsgetwork.moveToThread(&stallsThread, true);
//启动tcp长链接和拉单工作流
thread.start();
threadt.start();
prtthreadt.start();
prtthreadpickup.start();
stallsThread.start();
//界面类定义及初始化
#ifndef FM_NEW_UI
MainForm mainform;
......
#include "posstallspool.h"
#include "preDefine.h"
#include "QsLog.h"
#include "event/fmapplication.h"
#include "event/posevent.h"
#include <QJsonDocument>
#include <QJsonObject>
PosStallsPool::PosStallsPool(QObject *parent) : QObject(parent)
{
FMApplication::subscibeEvent(this,PosEvent::s_change_stalls);
}
//QStringList PosStallsPool::stallslist()
//{
// return _stallList;
//}
//QVariantMap PosStallsPool::getStallsIdNameMap()
//{
// return _stallsIdNameMap;
//}
//QVariantMap PosStallsPool::getStallsNamePrdMap()
//{
// return _stallsNamePrdMap;
//}
void PosStallsPool::InitPosStallsPool()
{
static PosStallsPool stallspool;
}
bool PosStallsPool::event(QEvent *e)
{
if(e->type() == PosEvent::s_change_stalls)
{
QLOG_DEBUG() << "PosEvent::s_change_stalls : " << QThread::currentThreadId();
QJsonObject info;
GETEVENTINFO(info,e,QJsonObject);
QLOG_DEBUG() << "info : " << info;
//解析档口信息
praseGetStallsInfo(info);
return true;
}
}
void PosStallsPool::praseGetStallsInfo(QJsonObject json)
{
// QStringList stallsList = map.value(EVENT_KEY_STALLSLIST).toStringList();
// for(int i = 0; i < stallsList.size(); i++) {
// _stallList.append(stallsList.at(i)["file_name"]);
// stallsIdNameMap.insert(stallsList.at(i)["file_id"], stallsList.at(i)["file_name"]);
// stallsNamePrdMap.insert(stallsList.at(i)["file_name"], stallsList.at(i)["product_list"]);
// }
}
......@@ -2,16 +2,35 @@
#define POSSTALLSPOOL_H
#include <QObject>
#include <QVariantMap>
#include <QJsonObject>
class PosStallsPool : public QObject
{
Q_OBJECT
public:
private:
explicit PosStallsPool(QObject *parent = 0);
public:
// static QStringList stallslist();
// static QVariantMap getStallsIdNameMap();
// static QVariantMap getStallsNamePrdMap();
static void InitPosStallsPool();
bool event(QEvent *e);
signals:
public slots:
private:
//解析订阅档口改变事件中拿到的档口信息
void praseGetStallsInfo(QJsonObject json);
//档口名称列表
static QStringList _stallList;
static QMap<QString, QString> _stallsIdNameMap;
static QMap<QString, QStringList> _stallsNamePrdMap;
};
#endif // POSSTALLSPOOL_H
......@@ -207,6 +207,15 @@
#define EVENT_KEY_PRTCONFIG "prt_config"
#define DEVENT_KEY_PRTSTALLS "prt_stalls"
//档口信息
#define EVENT_KEY_STALLSLIST "file_list"
#define EVENT_KEY_RESULT "result"
#define EVENT_KEY_FILEPRODUCTLIST "fileProductList"
#define EVENT_KEY_FILEID "file_id"
#define EVENT_KEY_FILENAME "file_name"
#define EVENT_KEY_PRODUCTLIST "productList"
#define EVENT_KEY_FILEPRODUCT "file_product"
#define EVENT_KEY_SEASIONCODE "reason_code"
#define EVENT_KEY_SEASION "reason"
#define EVENT_KEY_ORDERSTATUS "orderstatus"
......
......@@ -21,7 +21,7 @@ LIBS += -L$$PWD/lib -llibeay32 -lssleay32 -lwinspool
LIBS += -lWs2_32
LIBS += -lDbghelp
DEFINES += USE_QAACTION
#DEFINES += USE_QAACTION
DEFINES += FM_NEW_UI
#DEFINES += FM_TEST
......
......@@ -26,7 +26,7 @@ NewLoginForm::NewLoginForm(QWidget *parent) :
connect(ui->lineEdit_account_2, &ClickedLineEdit::clicked, this, &NewLoginForm::GetCurrLineEdit);
connect(ui->lineEdit_partnerid_2, &ClickedLineEdit::clicked, this, &NewLoginForm::GetCurrLineEdit);
connect(ui->lineEdit_pwd_2, &ClickedLineEdit::clicked, this, &NewLoginForm::GetCurrLineEdit);
//connect(ui->lineEdit_posno_2, &ClickedLineEdit::clicked, this, &LoginForm::GetCurrLineEdit);
connect(ui->lineEdit_posno_2, &ClickedLineEdit::clicked, this, &NewLoginForm::GetCurrLineEdit);
connect(ui->lineEdit_storeid_2, &ClickedLineEdit::clicked, this, &NewLoginForm::GetCurrLineEdit);
connect(ui->pushButton_10, &QPushButton::clicked, this, &NewLoginForm::number_btn_click);
......@@ -92,7 +92,7 @@ void NewLoginForm::SetStoreInfo()
ui->lineEdit_partnerid_2->setText(partnerid);
ui->lineEdit_storeid_2->setText(storeid);
//ui->lineEdit_posno_2->setText(stationid);
ui->lineEdit_posno_2->setText(stationid);
ui->lineEdit_account_2->setText(userid);
ui->lineEdit_pwd_2->setText(pwd);
}
......@@ -185,7 +185,7 @@ void NewLoginForm::on_pushButton_login_2_clicked()
if(ui->lineEdit_account_2->text().isEmpty() ||
ui->lineEdit_pwd_2->text().isEmpty() ||
ui->lineEdit_partnerid_2->text().isEmpty() ||
/*ui->lineEdit_posno_2->text().isEmpty() ||*/
ui->lineEdit_posno_2->text().isEmpty() ||
ui->lineEdit_storeid_2->text().isEmpty() )
{
onShowAlert(AlertForm::ERROR, QString::fromLocal8Bit("商户号/门店号/POS编号/账号/密码均不能为空"));
......@@ -193,7 +193,7 @@ void NewLoginForm::on_pushButton_login_2_clicked()
}
map.insert(JSON_STOREID, ui->lineEdit_storeid_2->text());
// map.insert(JSON_STATIONID, ui->lineEdit_posno_2->text());
map.insert(JSON_STATIONID, ui->lineEdit_posno_2->text());
map.insert(JSON_KEY_USERID, ui->lineEdit_account_2->text());
map.insert(JSON_KEY_PWD, ui->lineEdit_pwd_2->text());
map.insert(JSON_KEY_PARTNERID, ui->lineEdit_partnerid_2->text());
......
......@@ -15,6 +15,10 @@
#include <QScrollBar>
#include <QJsonDocument>
#include <QList>
#include <QStringList>
#include <QJsonArray>
#include <QJsonObject>
NewMainForm::NewMainForm(QWidget *parent) :
QWidget(parent),
......@@ -41,6 +45,7 @@ NewMainForm::NewMainForm(QWidget *parent) :
FMApplication::subscibeEvent(this, PosEvent::s_login_storeinfo);
FMApplication::subscibeEvent(this, PosEvent::s_show_mainform);
FMApplication::subscibeEvent(this, PosEvent::s_network_outtime);
FMApplication::subscibeEvent(this, PosEvent::s_change_stalls);
this->show();
//this->showFullScreen();
......@@ -634,6 +639,13 @@ bool NewMainForm::event(QEvent *e)
return true;
}
if(e->type() == PosEvent::s_change_stalls)
{
QJsonObject value;
GETEVENTINFO(value,e,QJsonObject);
onSetStalls(value);
}
return QWidget::event(e);
}
......@@ -1068,6 +1080,41 @@ void NewMainForm::DoGetPrtSetting(QString curr)
}
}
void NewMainForm::onSetStalls(QJsonObject json)
{
QStringList stallsList;
QStringList productList;
QJsonObject resjson = json[EVENT_KEY_RESULT].toObject();
QJsonArray tmparray = resjson[EVENT_KEY_FILEPRODUCTLIST].toArray();
QMap<QString, QStringList> stallsNamePrdMap;
for(int i = 0; i < tmparray.size(); i++) {
QJsonObject tmpjson = tmparray[i].toObject();
QString stallsStr;
stallsList.append(tmpjson[EVENT_KEY_FILENAME].toString());
stallsStr.append(tmpjson[EVENT_KEY_FILENAME].toString() + QString::fromLocal8Bit(":"));
if(tmpjson.contains(EVENT_KEY_PRODUCTLIST)) {
QJsonArray proarray = tmpjson[EVENT_KEY_PRODUCTLIST].toArray();
if(proarray.size() != 0) {
for(int j = 0;j < proarray.size();j++) {
stallsStr.append(proarray[j].toObject()[EVENT_KEY_FILEPRODUCT].toString() + QString::fromLocal8Bit(" "));
}
}
}
productList.append(stallsStr);
}
ui->newmaincmbox_stalls->addItems(stallsList);
//档口菜单显示
for(int k = 0; k < productList.size(); k++) {
ui->stallsTextBrowser->append(QString(productList.at(k)));
}
}
void NewMainForm::InitOrderSetting()
{
QString confpath = qApp->applicationDirPath() + "/" + CONFIG_NAME;
......
......@@ -184,6 +184,9 @@ private:
void onSetNetStatus(const QString &netstatus);
void onHideAlert();
void DoGetPrtSetting(QString curr);
//更新界面的档口选择
void onSetStalls(QJsonObject json);
};
class NewMainFormDataProcess
......
......@@ -6,13 +6,13 @@
<rect>
<x>0</x>
<y>0</y>
<width>2800</width>
<height>606</height>
<width>1647</width>
<height>733</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>2800</width>
<width>800</width>
<height>600</height>
</size>
</property>
......@@ -3693,29 +3693,80 @@ QTabWidget#newmaintbwgt QTabBar::tab
<property name="styleSheet">
<string notr="true"/>
</property>
<widget class="QComboBox" name="newmaincmbox_stalls">
<property name="geometry">
<rect>
<x>390</x>
<y>10</y>
<width>69</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>290</x>
<y>10</y>
<width>54</width>
<height>12</height>
</rect>
</property>
<property name="text">
<string>档口:</string>
</property>
</widget>
<layout class="QVBoxLayout" name="verticalLayout_17">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_34">
<item>
<spacer name="horizontalSpacer_100">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_stalls">
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>档口:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_99">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QComboBox" name="newmaincmbox_stalls">
<property name="minimumSize">
<size>
<width>150</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_101">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QTextBrowser" name="stallsTextBrowser"/>
</item>
</layout>
</widget>
</item>
</layout>
......@@ -4563,6 +4614,11 @@ QTabWidget#newmaintbwgt QTabBar::tab
</widget>
<customwidgets>
<customwidget>
<class>ClickedLineEdit</class>
<extends>QLineEdit</extends>
<header location="global">view/clickedlineedit.h</header>
</customwidget>
<customwidget>
<class>MainBtn</class>
<extends>QWidget</extends>
<header location="global">view/mainbtn.h</header>
......@@ -4571,11 +4627,6 @@ QTabWidget#newmaintbwgt QTabBar::tab
<signal>clicked()</signal>
</slots>
</customwidget>
<customwidget>
<class>ClickedLineEdit</class>
<extends>QLineEdit</extends>
<header location="global">view/clickedlineedit.h</header>
</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