logic 추가

git-svn-id: svn://192.168.0.12/source@302 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2016-10-21 10:01:11 +00:00
parent ffbaf3084f
commit 23021133c6
13 changed files with 152 additions and 53 deletions

View File

@@ -26,7 +26,8 @@ SOURCES += main.cpp\
scompanyprocess.cpp \
serrorprocess.cpp \
srunningprocess.cpp \
slogwidget.cpp
slogwidget.cpp \
seffectlogic.cpp
HEADERS += widget.h \
scompanylistwidget.h \
@@ -40,6 +41,7 @@ HEADERS += widget.h \
scompanyprocess.h \
serrorprocess.h \
srunningprocess.h \
slogwidget.h
slogwidget.h \
seffectlogic.h
FORMS += widget.ui

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.0, 2016-10-19T19:14:14. -->
<!-- Written by QtCreator 3.3.0, 2016-10-21T19:00:52. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -6,6 +6,7 @@
#include <QString>
#include <QDate>
#include <QStringList>
#include <QDebug>
namespace
@@ -24,11 +25,13 @@ SCompanyProcess::SCompanyProcess():SParentProcess(),
void SCompanyProcess::setList(const QVector<int>& _list)
{
clear();
m_vecRunList = _list;
}
void SCompanyProcess::setList(QVector<int>&& _list)
{
clear();
m_vecRunList = std::move(_list);
}
@@ -45,6 +48,7 @@ void SCompanyProcess::setList(QVector<SEffectRow>&& _list)
void SCompanyProcess::runInit()
{
setInnerMode(E_INNER_RUN_MODE::MODE_WAIT_INIT);
QSqlDatabase db = QSqlDatabase::database(strDatabaseName);
if (!db.open())
{
@@ -53,13 +57,14 @@ void SCompanyProcess::runInit()
return;
}
QString strQuery("select num, enddate from company where enddate in (");
foreach (auto& num, m_vecRunList)
QString strQuery("select num, enddate from company where num in (");
foreach (auto num, m_vecRunList)
{
strQuery += (QString::number(num) + ",");
}
strQuery = strQuery.left(strQuery.length() - 1);
strQuery += ")";
signalLog(strQuery);
QSqlQuery query(db);
if (!query.exec(strQuery))
@@ -68,12 +73,10 @@ void SCompanyProcess::runInit()
emit signalTerminateError(getError());
return;
}
while (query.next())
{
QDate enddate = QDate::fromString(query.value(1).toString(), "yyyy-MM-dd");
QDate today = QDate::currentDate();
if (today <= enddate.addMonths(1))
{
m_vecRunOrderList.push_back(query.value(0).toInt());
@@ -133,9 +136,9 @@ void SCompanyProcess::runInit()
void SCompanyProcess::initIterator()
{
m_iterRunOrderList = m_vecRunList.begin();
m_iterRunOrderList = m_vecRunOrderList.begin();
while (m_iterRunOrderList != m_vecRunList.end())
while (m_iterRunOrderList != m_vecRunOrderList.end())
{
if (m_mapEffectRow.contains(*m_iterRunOrderList))
{
@@ -155,17 +158,19 @@ void SCompanyProcess::nextIterator()
if (m_iterEffectRow == m_mapEffectRow[*m_iterRunOrderList].end())
{
m_bDoneCompany = true;
while (m_iterRunOrderList != m_vecRunList.end())
while (++m_iterRunOrderList != m_vecRunOrderList.end())
{
if (m_mapEffectRow.contains(*m_iterRunOrderList))
{
m_iterEffectRow = m_mapEffectRow[*m_iterRunOrderList].begin();
break;
}
/*
else
{
++m_iterRunOrderList;
}
*/
}
}
else
@@ -174,7 +179,7 @@ void SCompanyProcess::nextIterator()
bool SCompanyProcess::isDone()
{
return m_iterRunOrderList == m_vecRunList.end();
return m_iterRunOrderList == m_vecRunOrderList.end();
}
void SCompanyProcess::runEventCode()
@@ -189,6 +194,7 @@ void SCompanyProcess::runEventCode()
if (isDone())
{
qDebug() << "Done";
setInnerMode(E_INNER_RUN_MODE::MODE_WAIT_TERMINATE);
emit signalTerminateNormal();
return;
@@ -198,6 +204,8 @@ void SCompanyProcess::runEventCode()
setCurrentEffectRow(row);
nextIterator();
emit signalCompanyStart(row.company_num);
runProcess(getProcessArguments(row));
}

View File

@@ -18,6 +18,8 @@ public:
signals:
void signalTerminateCompany(int _company_num);
void signalCompanyStart(int _company_num);
void signalCompanyOutdated(const QVector<int>& _vecCompanyNum);
private:
void initIterator();

View File

@@ -19,17 +19,21 @@ void SErrorProcess::setList(QVector<int>&& _list)
void SErrorProcess::setList(const QVector<SEffectRow>& _list)
{
clear();
m_vecRunList = _list;
}
void SErrorProcess::setList(QVector<SEffectRow>&& _list)
{
clear();
m_vecRunList = std::move(_list);
}
void SErrorProcess::runInit()
{
setInnerMode(E_INNER_RUN_MODE::MODE_WAIT_INIT);
initIterator();
setInnerMode(E_INNER_RUN_MODE::MODE_RUN_EVENTCODE);
}
void SErrorProcess::runEventCode()

View File

@@ -12,6 +12,7 @@ SLogWidget::SLogWidget(QWidget *parent):QWidget(parent),
{
m_pLayout->addWidget(m_plwLog);
setLayout(m_pLayout);
//m_plwLog->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}

View File

@@ -2,6 +2,7 @@
#include "sutilfunction.h"
#include <QThread>
#include <QString>
#include <QDebug>
extern QString ERROR_MESSAGE[];
@@ -15,8 +16,8 @@ const QString SPLIT_KEYWORD = "!@#";
SParentProcess::SParentProcess():m_pProcess(new QProcess(this)), m_bRunning(false), nTime(0),
m_bUserAbort(false), m_eInnerMode(E_INNER_RUN_MODE::MODE_WAIT)
{
QObject::connect(m_pProcess, SIGNAL(QProcess::finished(int, QProcess::ExitStatus)),
this, SLOT(SParentProcess::finishedProcess(int, QProcess::ExitStatus)));
QObject::connect(m_pProcess, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(finishedProcess(int, QProcess::ExitStatus)));
QObject::connect(this, &SParentProcess::signalTerminateError,
this, &SParentProcess::slotTerminateError);
}
@@ -44,7 +45,7 @@ QVector<SEffectRow> SParentProcess::getErrorList() const
SReportSummary SParentProcess::getReportSummary(int _id) const
{
return m_mapReportSummary[_id];
return m_mapReportSummary.value(_id, SReportSummary());
}
QMap<int, SReportSummary> SParentProcess::getReportSummary() const
@@ -78,15 +79,23 @@ QStringList SParentProcess::getProcessArguments(SEffectRow&& _row) const
return QStringList();
}
void SParentProcess::runProcess(QStringList _arguments)
{
if (_arguments.size() > 0)
{
QString arg = _arguments.at(0);
_arguments.removeFirst();
m_pProcess->start(arg, _arguments);
}
else
{
emit signalLog("x " + m_erCurrentRow.eventcode + " " + m_erCurrentRow.url + "\nERROR:NO_PROGRAM");
emit signalTerminateEachEvent(m_erCurrentRow.company_num, E_CRAWL_STATE::FAIL);
m_vecError.append(m_erCurrentRow);
setInnerMode(E_INNER_RUN_MODE::MODE_RUN_EVENTCODE);
}
}
void SParentProcess::setError(const SError& _error)
{
@@ -110,7 +119,6 @@ void SParentProcess::update()
case E_INNER_RUN_MODE::MODE_WAIT:
{
clear();
setInnerMode(E_INNER_RUN_MODE::MODE_RUN_INIT);
break;
}
@@ -190,6 +198,7 @@ void SParentProcess::finishedProcess(int exitCode, QProcess::ExitStatus exitStat
emit signalLog(strLog);
emit signalTerminateEachEvent(analyzedResult.company_num, analyzedResult.state);
setInnerMode(E_INNER_RUN_MODE::MODE_RUN_EVENTCODE);
//This may be unnecessary :(
//pPro->kill();
}
@@ -354,5 +363,6 @@ void SParentProcess::setCurrentEffectRow(const SEffectRow& _row)
void SParentProcess::setCurrentEffectRow(SEffectRow&& _row)
{
m_erCurrentRow = _row;
m_erCurrentRow = std::move(_row);
}

View File

@@ -288,9 +288,12 @@ void SRunningListWidget::setWaiting(int _id)
void SRunningListWidget::setComplete(int _id)
{
QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::LAST_UPDATE_TIME);
if (item)
if (QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::LAST_UPDATE_TIME))
item->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
if (QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::STATUS))
item->setText("Complete");
}
void SRunningListWidget::setOutDate(int _id)

View File

@@ -1,12 +1,12 @@
#include "srunningprocess.h"
#include <QTimer>
#include <QDebug>
namespace{
const int ONE_SECOND = 1000; // 1 second
const int HALF_SECOND = 500; // 0.5 second
}
SRunningProcess::SRunningProcess():
m_pTimer(new QTimer(this)), m_pErrorProcess(new SErrorProcess),
m_pCompanyProcess(new SCompanyProcess), m_eMode(E_PROCESS_MODE::WAIT),
@@ -19,13 +19,15 @@ SRunningProcess::SRunningProcess():
bool SRunningProcess::isRunning()
{
if (m_pCurrentProcess == nullptr && !m_pTimer->isActive())
return true;
return false;
else
return m_pCurrentProcess->isWaiting() && !m_pTimer->isActive();
return !(m_pCurrentProcess->isWaiting() && !m_pTimer->isActive());
}
void SRunningProcess::setList(const QVector<SEffectRow>& _list)
{
qDebug() << isRunning();
if (!isRunning())
{
m_pCurrentProcess = m_pErrorProcess;
@@ -35,6 +37,8 @@ void SRunningProcess::setList(const QVector<SEffectRow>& _list)
void SRunningProcess::setList(QVector<SEffectRow>&& _list)
{
qDebug() << isRunning();
if (!isRunning())
{
m_pCurrentProcess = m_pErrorProcess;
@@ -44,6 +48,7 @@ void SRunningProcess::setList(QVector<SEffectRow>&& _list)
void SRunningProcess::setList(const QVector<int>& _list)
{
qDebug() << isRunning();
if (!isRunning())
{
m_pCurrentProcess = m_pCompanyProcess;
@@ -53,6 +58,7 @@ void SRunningProcess::setList(const QVector<int>& _list)
void SRunningProcess::setList(QVector<int>&& _list)
{
qDebug() << isRunning();
if (!isRunning())
{
m_pCurrentProcess = m_pCompanyProcess;
@@ -110,6 +116,7 @@ void SRunningProcess::stop()
void SRunningProcess::slotCompanyComplete(int _num)
{
qDebug() << "slotCompanyComplete";
SReportSummary summary = m_pCurrentProcess->getReportSummary(_num);
emit signalCompanyComplete(_num, summary);
}
@@ -122,15 +129,16 @@ void SRunningProcess::slotSuccessErrorCompany(int _num)
void SRunningProcess::slotTerminateError()
{
terminate();
SError error = m_pCurrentProcess->getError();
emit signalTerminateError(error);
//SError error = m_pCurrentProcess->getError();
emit signalTerminateError();
}
void SRunningProcess::slotTerminateNormal()
{
terminate();
qDebug() << "slotTerminteNormal ??";
QVector<SEffectRow> errors = m_pCurrentProcess->getErrorList();
QMap<int, SReportSummary> reportSummary = m_pCurrentProcess->getReportSummary();
terminate();
emit signalTerminateNormal(errors, reportSummary);
}
@@ -149,5 +157,21 @@ void SRunningProcess::initConnect()
QObject::connect(&(*m_pCompanyProcess), &SCompanyProcess::signalTerminateCompany, this, &SRunningProcess::slotCompanyComplete);
QObject::connect(&(*m_pErrorProcess), &SErrorProcess::signalTerminateCompany, this, &SRunningProcess::slotSuccessErrorCompany);
QObject::connect(&(*m_pCompanyProcess), &SCompanyProcess::signalUserAbort, this, &SRunningProcess::slotUserAbort);
QObject::connect(&(*m_pErrorProcess), &SErrorProcess::signalUserAbort, this, &SRunningProcess::slotUserAbort);
QObject::connect(&(*m_pCompanyProcess), &SCompanyProcess::signalCompanyStart, this, &SRunningProcess::slotCompanyStart);
QObject::connect(&(*m_pCompanyProcess), &SCompanyProcess::signalCompanyOutdated, this, &SRunningProcess::slotCompanyOutDated);
}
void SRunningProcess::slotCompanyOutDated(const QVector<int>& _vecCompanyNum)
{
emit signalCompanyOutDated(_vecCompanyNum);
}
void SRunningProcess::slotCompanyStart(int _companyNum)
{
emit signalCompanyStart(_companyNum);
}

View File

@@ -44,6 +44,8 @@ private slots:
void slotSuccessErrorCompany(int _num);
void slotTerminateError();
void slotTerminateNormal();
void slotCompanyOutDated(const QVector<int>& _vecCompanyNum);
void slotCompanyStart(int _companyNum);
signals:
@@ -51,9 +53,11 @@ signals:
void signalUserAbort();
void signalTerminateNormal(const QVector<SEffectRow>& _error,
const QMap<int, SReportSummary>& _report);
void signalTerminateError(const SError& _error);
void signalTerminateError();
void signalCompanyComplete(int _num, const SReportSummary& summary);
void signalSuccessErrorCompany(int _num);
void signalCompanyOutDated(const QVector<int>& _vecCompanyNum);
void signalCompanyStart(int _companyNum);
private:
std::unique_ptr<QTimer> m_pTimer;

View File

@@ -225,7 +225,8 @@ void SRunProcess::runInitCompany()
if (!query.exec(strQuery))
{
SError err(E_ERROR_CODE::DB_QUERY_ERROR, query.lastQuery() + "\n" + query.lastError().text());
processError(std::move(err));
//processError(std::move(err));
processError(err);
return;
}
@@ -256,7 +257,8 @@ void SRunProcess::runInitCompany()
if (!query.exec(strQuery))
{
SError err(E_ERROR_CODE::DB_QUERY_ERROR, query.lastQuery() + "\n" + query.lastError().text());
processError(std::move(err));
//processError(std::move(err));
processError(err);
return;
}

View File

@@ -4,42 +4,64 @@
#include "srunninglistwidget.h"
#include "sadddelwidget.h"
#include "slogwidget.h"
#include "stimer.h"
#include "seffectlogic.h"
#include "srunningprocess.h"
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) :
QWidget(parent),
SCompanyListWidget *m_pCompanyWidget;
SRunningListWidget *m_pRunningListWidget;
SAddDelWidget *m_pAddDelWidget;
SLogWidget *m_pLogWidget;
STimer *m_pTimer;
SEffectLogic *m_pLogic;
Widget::Widget(QWidget *parent) : m_pCompanyWidget(new SCompanyListWidget),
m_pRunningListWidget(new SRunningListWidget), m_pAddDelWidget(new SAddDelWidget),
m_pLogWidget(new SLogWidget), m_pTimer(new STimer), m_pLogic(new SEffectLogic),
m_pProcess(new SRunningProcess),
ui(new Ui::Widget)
{
ui->setupUi(this);
SCompanyListWidget *c = new SCompanyListWidget;
SRunningListWidget *d = new SRunningListWidget;
SAddDelWidget *e = new SAddDelWidget;
SLogWidget *f = new SLogWidget;
QHBoxLayout* mainLayout = new QHBoxLayout(this);
mainLayout->addWidget(c);
mainLayout->addWidget(e);
QHBoxLayout* mainLayout = new QHBoxLayout();
QVBoxLayout* vmainLayout = new QVBoxLayout(this);
mainLayout->addWidget(d);
mainLayout->addWidget(f);
mainLayout->addWidget(m_pCompanyWidget);
mainLayout->addWidget(m_pAddDelWidget);
mainLayout->addWidget(m_pRunningListWidget);
vmainLayout->addLayout(mainLayout);
vmainLayout->addWidget(m_pLogWidget);
connect(e, &SAddDelWidget::signalClickedAddBtn, [&c, &d](){
d->addList(c->getSelectedList());
});
connect(m_pAddDelWidget, &SAddDelWidget::signalClickedAddBtn, this, &Widget::slotClickAdd);
connect(m_pAddDelWidget, &SAddDelWidget::signalClickedDelBtn, this, &Widget::slotClickDel);
connect(e, &SAddDelWidget::signalClickedDelBtn, [&c, &d](){
d->removeSelectedList();
});
m_pLogic->setSAddDelWidget(m_pAddDelWidget);
m_pLogic->setSLogWidget(m_pLogWidget);
m_pLogic->setSTimer(m_pTimer);
m_pLogic->setSRunningProcess(m_pProcess);
m_pLogic->setSRunningWidget(m_pRunningListWidget);
setLayout(mainLayout);
m_pLogic->initConnect();
setLayout(vmainLayout);
setWindowTitle("EffectUI " + QString::number(QCoreApplication::applicationPid()));
show();
c->refresh();
m_pCompanyWidget->refresh();
}
Widget::~Widget()
{
}
void Widget::slotClickAdd()
{
m_pRunningListWidget->addList(m_pCompanyWidget->getSelectedList());
}
void Widget::slotClickDel()
{
m_pRunningListWidget->removeSelectedList();
}

View File

@@ -4,6 +4,14 @@
#include <QWidget>
#include <memory>
class SCompanyListWidget;
class SRunningListWidget;
class SAddDelWidget;
class STimer;
class SLogWidget;
class SEffectLogic;
class SRunningProcess;
namespace Ui {
class Widget;
}
@@ -16,11 +24,20 @@ public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected slots:
void slotClickAdd();
void slotClickDel();
private:
std::unique_ptr<Ui::Widget> ui;
SCompanyListWidget *m_pCompanyWidget;
SRunningListWidget *m_pRunningListWidget;
SAddDelWidget *m_pAddDelWidget;
SLogWidget *m_pLogWidget;
STimer *m_pTimer;
SEffectLogic *m_pLogic;
SRunningProcess* m_pProcess;
};
#endif // WIDGET_H