You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/tpvs17/lpReport/countdata.h

85 lines
2.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef COUNTDATA_H
#define COUNTDATA_H
#include <QObject>
#include "databasesql.h"
#include "QSqlQuery"
#pragma execution_character_set("utf-8")
class CountData : public QObject
{
Q_OBJECT
public:
CountData(QObject *parent = 0){ m_pDb = NULL; };
~CountData(){};
void setDB(class DataBaseSql *pDb){ m_pDb = pDb; };
public slots:
void doWork(QVariantMap m_Map) {
QMap<QString, int> *m_counter=new QMap<QString, int>();
QVariantMap m_proMap;
m_proMap.insert("Type", "start");
emit sgShowProgress(m_proMap);
QString result;
QSqlQuery sqlCount;
QSqlQuery sql;
/* ... here is the expensive or blocking operation ... */
QString strSql_Count = m_Map.value("SqlCount").toString();
QString strSql_Check = m_Map.value("SqlCheck").toString();
if (m_pDb){
//m_counter->clear();
m_proMap.insert("msg", "正在获取数量...");
emit sgShowProgress(m_proMap);
m_pDb->checkoutData(strSql_Count, sqlCount);
//emit sgShowMsg("正在查询数据");
int sum = 0;
int m_size = 0;
while (sqlCount.next())
{
m_size = sqlCount.value(0).toInt();
}
QString strname = QString("select model,count(model) from (%1) GROUP BY model ;").arg(strSql_Check);
m_pDb->checkoutData(strname, sql);
//m_pDb->checkoutData(strSql_Check, sql);
//emit sgShowMsg("正在统计中");
m_proMap.remove("msg");
m_proMap.insert("msg", QString("共%1条记录正在分类核算数据请稍后").arg(m_size));
emit sgShowProgress(m_proMap);
while (sql.next())
{
/*这里下面是统计查询到的通道对应的产品总数*/
QString model = sql.value(0).toString();
int nValue = sql.value(1).toInt();
if (m_counter->contains(model))
{
(*m_counter)[model]++;
}
else
{
m_counter->insert(model, nValue);
}
}
result = QString("%1").arg(m_size);
emit sgShowMsg("统计完成");
}
m_proMap.remove("Type");
m_proMap.insert("Type", "stop");
emit sgShowProgress(m_proMap);
emit resultReady(result, m_counter);
}
signals:
void resultReady(const QString &result, const QMap<QString, int> *p);
void sgShowMsg(QString str);
void sgShowProgress(QVariantMap m_map);
private:
class DataBaseSql *m_pDb;
};
#endif // COUNTDATA_H