feat:玉泉煤溜检测
This commit is contained in:
parent
ac69d356e8
commit
c76b687c2a
|
@ -19,6 +19,8 @@ MainWindow::MainWindow(QWidget* parent)
|
||||||
|
|
||||||
m_systemSetting = new QSettings("system.ini", QSettings::IniFormat);
|
m_systemSetting = new QSettings("system.ini", QSettings::IniFormat);
|
||||||
|
|
||||||
|
this->setWindowTitle(m_systemSetting->value("system/name").toString());
|
||||||
|
|
||||||
calendarLoopPlay();
|
calendarLoopPlay();
|
||||||
|
|
||||||
setSystemTitle();
|
setSystemTitle();
|
||||||
|
@ -69,6 +71,7 @@ bool MainWindow::eventFilter(QObject* watched, QEvent* event)
|
||||||
|
|
||||||
void MainWindow::addBeltWarnInfoToTextEdit(const QString& consoleInfo)
|
void MainWindow::addBeltWarnInfoToTextEdit(const QString& consoleInfo)
|
||||||
{
|
{
|
||||||
|
qDebug() << consoleInfo;
|
||||||
m_textEditConsoleInfo.append(consoleInfo);
|
m_textEditConsoleInfo.append(consoleInfo);
|
||||||
QDateTime startDateTime = QDateTime::currentDateTime();
|
QDateTime startDateTime = QDateTime::currentDateTime();
|
||||||
QString formattedTime = startDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
QString formattedTime = startDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
||||||
|
@ -77,10 +80,10 @@ void MainWindow::addBeltWarnInfoToTextEdit(const QString& consoleInfo)
|
||||||
return;
|
return;
|
||||||
QString lastConsoleInfo = m_textEditConsoleInfo.last();
|
QString lastConsoleInfo = m_textEditConsoleInfo.last();
|
||||||
|
|
||||||
qint64 timeDifferenceInMilliseconds = m_previousConsleInfoDateTime.secsTo(startDateTime);
|
// qint64 timeDifferenceInMilliseconds = m_previousConsleInfoDateTime.secsTo(startDateTime);
|
||||||
|
|
||||||
if ((lastConsoleInfo == consoleInfo) && timeDifferenceInMilliseconds < 2)
|
// if ((lastConsoleInfo == consoleInfo) && timeDifferenceInMilliseconds < 2)
|
||||||
return;
|
// return;
|
||||||
|
|
||||||
QString consoleInfoResult = QStringLiteral("[%1]%2").arg(formattedTime).arg(consoleInfo);
|
QString consoleInfoResult = QStringLiteral("[%1]%2").arg(formattedTime).arg(consoleInfo);
|
||||||
ui->textEdit_beltWarnInfo->append(consoleInfoResult);
|
ui->textEdit_beltWarnInfo->append(consoleInfoResult);
|
||||||
|
@ -168,6 +171,8 @@ void MainWindow::addCoalStatisticsChart()
|
||||||
coalStatisticsChartWidget->setContentsMargins(0, 0, 0, 0);
|
coalStatisticsChartWidget->setContentsMargins(0, 0, 0, 0);
|
||||||
ui->widget_coalStatisticsChart->layout()->addWidget(
|
ui->widget_coalStatisticsChart->layout()->addWidget(
|
||||||
coalStatisticsChartWidget);
|
coalStatisticsChartWidget);
|
||||||
|
|
||||||
|
connect(coalStatisticsChartWidget, &CoalStatisticsChartWidget::querySuccessInfo, this, &MainWindow::addBeltWarnInfoToTextEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::addCoalBeltVideo()
|
void MainWindow::addCoalBeltVideo()
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<string>MainWindow</string>
|
<string>MainWindow</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset resource="resource.qrc">
|
||||||
<normaloff>:/Resource/image/logo.png</normaloff>:/Resource/image/logo.png</iconset>
|
<normaloff>:/Resource/image/logo.png</normaloff>:/Resource/image/logo.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralWidget">
|
<widget class="QWidget" name="centralWidget">
|
||||||
|
@ -1670,6 +1670,9 @@ QPushButton:pressed{
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget_belt2" native="true">
|
<widget class="QWidget" name="widget_belt2" native="true">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_35">
|
<layout class="QVBoxLayout" name="verticalLayout_35">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
|
@ -2266,6 +2269,9 @@ QPushButton:pressed{
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget_belt3" native="true">
|
<widget class="QWidget" name="widget_belt3" native="true">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_42">
|
<layout class="QVBoxLayout" name="verticalLayout_42">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
|
@ -3300,6 +3306,8 @@ QPushButton:pressed{
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources>
|
||||||
|
<include location="resource.qrc"/>
|
||||||
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -44,7 +44,7 @@ CoalDistributBarChartWidget::~CoalDistributBarChartWidget()
|
||||||
void CoalDistributBarChartWidget::updateChart()
|
void CoalDistributBarChartWidget::updateChart()
|
||||||
{
|
{
|
||||||
int radio = getCoalRatioByTCPSocket();
|
int radio = getCoalRatioByTCPSocket();
|
||||||
if (radio <= 0 || radio > 100) {
|
if (radio < 0 || radio > 90) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,7 @@ CoalStatisticsChartWidget::CoalStatisticsChartWidget(QWidget* parent)
|
||||||
|
|
||||||
m_systemSetting = new QSettings("system.ini", QSettings::IniFormat);
|
m_systemSetting = new QSettings("system.ini", QSettings::IniFormat);
|
||||||
|
|
||||||
initCoalStatisticsBarChart();
|
initCustomCoalStatisticsBarChart();
|
||||||
|
|
||||||
getCoalStatisInfoByHttpRequest("2024-09-01 08", "2024-09-02 08");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CoalStatisticsChartWidget::~CoalStatisticsChartWidget()
|
CoalStatisticsChartWidget::~CoalStatisticsChartWidget()
|
||||||
|
@ -34,96 +32,41 @@ void CoalStatisticsChartWidget::on_pushButton_coalStatisOk_clicked()
|
||||||
QString beginTimeStr = ui->dateTimeEdit_startTime->text();
|
QString beginTimeStr = ui->dateTimeEdit_startTime->text();
|
||||||
QString endTimeStr = ui->dateTimeEdit_endTime->text();
|
QString endTimeStr = ui->dateTimeEdit_endTime->text();
|
||||||
|
|
||||||
qDebug() << "beginTimeStr" << beginTimeStr;
|
qDebug() << "beginTimeStr " << beginTimeStr;
|
||||||
qDebug() << "endTimeStr" << endTimeStr;
|
qDebug() << "endTimeStr: " << endTimeStr;
|
||||||
|
|
||||||
|
// 统计单位
|
||||||
|
QString statisticUnit = ui->comboBox_unit->currentText();
|
||||||
|
|
||||||
// 创建 QDateTime 对象
|
// 创建 QDateTime 对象
|
||||||
QDateTime beginTime = QDateTime::fromString(beginTimeStr, "yyyy/MM/d HH:mm");
|
QDateTime beginTime = QDateTime::fromString(beginTimeStr, "yyyy/MM/d HH:mm");
|
||||||
QDateTime endTime = QDateTime::fromString(endTimeStr, "yyyy/MM/d HH:mm");
|
QDateTime endTime = QDateTime::fromString(endTimeStr, "yyyy/MM/d HH:mm");
|
||||||
|
|
||||||
// 判断是否转换成功
|
// 格式化为 "yyyy-MM-d H" 形式
|
||||||
if (!beginTime.isValid() || !endTime.isValid()) {
|
QString formattedBeginTime = beginTime.toString("yyyy-MM-dd HH");
|
||||||
qDebug() << "Invalid date/time format!";
|
QString formattedEndTime = endTime.toString("yyyy-MM-dd HH");
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int unitIndex = ui->comboBox_unit->currentIndex();
|
QString startTimestr = "起始时间" + formattedBeginTime;
|
||||||
|
QString endTimestr = "终止时间" + formattedEndTime;
|
||||||
|
|
||||||
// 选择的时间单位
|
emit querySuccessInfo(startTimestr);
|
||||||
switch (unitIndex) {
|
emit querySuccessInfo(endTimestr);
|
||||||
case TimeUnit::Hour: {
|
|
||||||
// 计算整时
|
|
||||||
QList<QDateTime> dateTimes;
|
|
||||||
int minutes = beginTime.time().minute(); // 获取分钟部分
|
|
||||||
beginTime = beginTime.addSecs(-minutes * 60); // 向下取整
|
|
||||||
|
|
||||||
// 遍历时间范围
|
// 输出格式化后的时间
|
||||||
while (beginTime <= endTime) {
|
qDebug() << "Formatted Begin Time: " << formattedBeginTime;
|
||||||
dateTimes.append(beginTime);
|
qDebug() << "Formatted End Time: " << formattedEndTime;
|
||||||
beginTime = beginTime.addSecs(3600); // 增加1小时
|
qDebug() << "statisticUnit:" << statisticUnit;
|
||||||
}
|
|
||||||
|
|
||||||
// 输出结果
|
// 查询结果信息
|
||||||
for (const QDateTime& dateTime : dateTimes) {
|
QMap<QString, double> volumeDataMap;
|
||||||
qDebug() << "整小时数" << dateTime.toString("yyyy/MM/d HH:mm");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TimeUnit::Day: {
|
|
||||||
// 计算整天
|
|
||||||
QList<QDateTime> dateTimes;
|
|
||||||
beginTime.setTime(QTime(0, 0)); // 将起始时间设置为当天的00:00:00
|
|
||||||
|
|
||||||
// 遍历时间范围
|
getCoalStatisInfoByHttpRequest(formattedBeginTime, formattedEndTime, statisticUnit, volumeDataMap);
|
||||||
while (beginTime <= endTime) {
|
|
||||||
dateTimes.append(beginTime);
|
|
||||||
beginTime = beginTime.addDays(1); // 增加1天
|
|
||||||
}
|
|
||||||
|
|
||||||
// 输出结果
|
ui->label_totalVolume->clear();
|
||||||
for (const QDateTime& dateTime : dateTimes) {
|
ui->label_totalVolume->setText(QString("煤量总计:%1吨").arg(m_toalValue));
|
||||||
qDebug() << "整天数" << dateTime.toString("yyyy/MM/d");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TimeUnit::Month: {
|
|
||||||
// 计算整月
|
|
||||||
QList<QDateTime> dateTimes;
|
|
||||||
beginTime.setDate(QDate(beginTime.date().year(), beginTime.date().month(), 1)); // 设置为当月的1号
|
|
||||||
|
|
||||||
// 遍历时间范围
|
// 更新查询的数据至图表
|
||||||
while (beginTime <= endTime) {
|
// updateCoalStatisticsChart(volumeDataMap);
|
||||||
dateTimes.append(beginTime);
|
|
||||||
beginTime = beginTime.addMonths(1); // 增加1个月
|
|
||||||
}
|
|
||||||
|
|
||||||
// 输出结果
|
|
||||||
for (const QDateTime& dateTime : dateTimes) {
|
|
||||||
qDebug() << "整月数" << dateTime.toString("yyyy/MM");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TimeUnit::Year: {
|
|
||||||
// 计算整年
|
|
||||||
QList<QDateTime> dateTimes;
|
|
||||||
beginTime.setDate(QDate(beginTime.date().year(), 1, 1)); // 设置为当年的1月1日
|
|
||||||
|
|
||||||
// 遍历时间范围
|
|
||||||
while (beginTime <= endTime) {
|
|
||||||
dateTimes.append(beginTime);
|
|
||||||
beginTime = beginTime.addYears(1); // 增加1年
|
|
||||||
}
|
|
||||||
|
|
||||||
// 输出结果
|
|
||||||
for (const QDateTime& dateTime : dateTimes) {
|
|
||||||
qDebug() << "整年数" << dateTime.toString("yyyy");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
qDebug() << "无效的时间单位!";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoalStatisticsChartWidget::initCoalStatisticsBarChart()
|
void CoalStatisticsChartWidget::initCoalStatisticsBarChart()
|
||||||
|
@ -134,68 +77,126 @@ void CoalStatisticsChartWidget::initCoalStatisticsBarChart()
|
||||||
m_chart->setMargins(QMargins(0, 0, 0, 0));
|
m_chart->setMargins(QMargins(0, 0, 0, 0));
|
||||||
m_chart->legend()->hide();
|
m_chart->legend()->hide();
|
||||||
|
|
||||||
// 创建图表视图并设置
|
// 创建图表视图
|
||||||
m_chartView = new QChartView(m_chart);
|
m_chartView = new QChartView(m_chart);
|
||||||
m_chartView->setBackgroundBrush(Qt::transparent);
|
m_chartView->setBackgroundBrush(Qt::transparent);
|
||||||
m_chartView->setStyleSheet("background: transparent;");
|
|
||||||
m_chartView->setRenderHint(QPainter::Antialiasing);
|
m_chartView->setRenderHint(QPainter::Antialiasing);
|
||||||
m_chartView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
m_chartView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
|
||||||
// 创建柱状图
|
// 创建柱状图数据集
|
||||||
m_series = new QBarSeries();
|
m_series = new QBarSeries();
|
||||||
m_chart->addSeries(m_series);
|
m_chart->addSeries(m_series);
|
||||||
|
|
||||||
// 设置X轴为时间
|
// // 初始化 QDateTimeAxis 作为 X 轴
|
||||||
m_axisX = new QDateTimeAxis;
|
// m_axisX = new QDateTimeAxis();
|
||||||
m_axisX->setFormat("yyyy/MM/d H"); // 设置日期时间格式
|
// m_axisX->setFormat("yyyy-MM-dd HH"); // 设置时间格式
|
||||||
// m_axisX->setTitleText("时间");
|
// // m_axisX->setTitleText("时间");
|
||||||
m_axisX->setTitleBrush(QBrush(Qt::gray));
|
// m_axisX->setLabelsColor(Qt::gray);
|
||||||
m_axisX->setLinePen(QPen(Qt::gray));
|
|
||||||
m_axisX->setLabelsColor(Qt::gray);
|
|
||||||
|
|
||||||
// 获取当前时间并设置时间范围为最近六个小时
|
// // 设置 X 轴范围为最近6小时
|
||||||
QDateTime currentTime = QDateTime::currentDateTime();
|
// QDateTime currentTime = QDateTime::currentDateTime();
|
||||||
QDateTime startTime = currentTime.addSecs(-6 * 3600); // 当前时间减去六个小时
|
// QDateTime startTime = currentTime.addSecs(-6 * 3600); // 当前时间前6小时
|
||||||
|
// m_axisX->setRange(startTime, currentTime);
|
||||||
|
|
||||||
// m_axisX->setLabelsAngle(45);
|
// m_chart->addAxis(m_axisX, Qt::AlignBottom);
|
||||||
|
// m_series->attachAxis(m_axisX);
|
||||||
|
|
||||||
// 设置X轴时间范围
|
// 设置Y轴
|
||||||
m_axisX->setRange(startTime, currentTime);
|
|
||||||
m_chart->addAxis(m_axisX, Qt::AlignBottom);
|
|
||||||
m_series->attachAxis(m_axisX);
|
|
||||||
|
|
||||||
// 设置Y轴为百分比
|
|
||||||
m_axisY = new QValueAxis;
|
m_axisY = new QValueAxis;
|
||||||
m_axisY->setTitleText("吨");
|
m_axisY->setTitleText("吨");
|
||||||
m_axisY->setTitleBrush(QBrush(Qt::gray));
|
|
||||||
m_axisY->setLinePen(QPen(Qt::gray));
|
|
||||||
m_axisY->setLabelsColor(Qt::gray);
|
m_axisY->setLabelsColor(Qt::gray);
|
||||||
m_axisY->setRange(0, 100);
|
m_axisY->setRange(0, 100);
|
||||||
m_chart->addAxis(m_axisY, Qt::AlignLeft);
|
m_chart->addAxis(m_axisY, Qt::AlignLeft);
|
||||||
m_series->attachAxis(m_axisY);
|
m_series->attachAxis(m_axisY);
|
||||||
m_axisY->setTitleFont(QFont("Arial", 10));
|
|
||||||
m_axisY->setTitleVisible(true);
|
|
||||||
|
|
||||||
// 获取 widget_coalChart 的布局
|
// 布局设置
|
||||||
QVBoxLayout* layout = static_cast<QVBoxLayout*>(ui->widget_coalChart->layout());
|
QVBoxLayout* layout = static_cast<QVBoxLayout*>(ui->widget_coalChart->layout());
|
||||||
if (!layout) {
|
if (!layout) {
|
||||||
// 如果没有布局,创建一个新的布局并设置
|
|
||||||
layout = new QVBoxLayout(ui->widget_coalChart);
|
layout = new QVBoxLayout(ui->widget_coalChart);
|
||||||
ui->widget_coalChart->setLayout(layout);
|
ui->widget_coalChart->setLayout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置布局参数
|
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
|
|
||||||
// 确保视图只添加一次
|
if (layout->indexOf(m_chartView) == -1) {
|
||||||
if (!layout->indexOf(m_chartView) != -1) {
|
|
||||||
layout->addWidget(m_chartView);
|
layout->addWidget(m_chartView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoalStatisticsChartWidget::getCoalStatisInfoByHttpRequest(const QString& beginTime, const QString& endTime)
|
QList<QString> CoalStatisticsChartWidget::getLastSixFullHours(const QDateTime& currentTime)
|
||||||
{
|
{
|
||||||
|
// 将当前时间设置为整点
|
||||||
|
QDateTime roundedTime = currentTime;
|
||||||
|
roundedTime.setTime(QTime(currentTime.time().hour(), 0)); // 设置时间到整点
|
||||||
|
|
||||||
|
bool insertTime = false; // 用于控制每隔一个插入时间,其他插入0
|
||||||
|
|
||||||
|
// 计算距当前整点数的前六个小时
|
||||||
|
QList<QString> timeList;
|
||||||
|
for (int i = 6; i >= 1; --i) {
|
||||||
|
|
||||||
|
QDateTime prevHour = roundedTime.addSecs(-i * 3600); // 向前推算每个整点
|
||||||
|
|
||||||
|
timeList.append(prevHour.toString("H"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return timeList;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoalStatisticsChartWidget::initCustomCoalStatisticsBarChart()
|
||||||
|
{
|
||||||
|
// 创建图表
|
||||||
|
m_chart = new QChart();
|
||||||
|
m_chart->setBackgroundBrush(Qt::transparent);
|
||||||
|
m_chart->setMargins(QMargins(0, 0, 0, 0));
|
||||||
|
m_chart->legend()->hide();
|
||||||
|
|
||||||
|
// 创建图表视图
|
||||||
|
m_chartView = new QChartView(m_chart);
|
||||||
|
m_chartView->setBackgroundBrush(Qt::transparent);
|
||||||
|
m_chartView->setRenderHint(QPainter::Antialiasing);
|
||||||
|
m_chartView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
|
||||||
|
// 创建柱状图数据集
|
||||||
|
m_series = new QBarSeries();
|
||||||
|
m_chart->addSeries(m_series);
|
||||||
|
|
||||||
|
// 创建X轴
|
||||||
|
m_axisX = new QBarCategoryAxis();
|
||||||
|
m_axisX->setLabelsColor(Qt::gray);
|
||||||
|
m_axisX->setLineVisible(true);
|
||||||
|
|
||||||
|
QDateTime currentTime = QDateTime::currentDateTime();
|
||||||
|
QList<QString> timeList = getLastSixFullHours(currentTime);
|
||||||
|
m_axisX->append(timeList);
|
||||||
|
m_chart->addAxis(m_axisX, Qt::AlignBottom); // 添加X轴到图表
|
||||||
|
m_series->attachAxis(m_axisX); // 将X轴与柱状图数据集关联
|
||||||
|
|
||||||
|
// 设置Y轴
|
||||||
|
m_axisY = new QValueAxis;
|
||||||
|
m_axisY->setTitleText("吨");
|
||||||
|
m_axisY->setLabelsColor(Qt::gray);
|
||||||
|
m_axisY->setRange(0, 100);
|
||||||
|
m_chart->addAxis(m_axisY, Qt::AlignLeft);
|
||||||
|
m_series->attachAxis(m_axisY);
|
||||||
|
|
||||||
|
// 布局设置
|
||||||
|
QVBoxLayout* layout = static_cast<QVBoxLayout*>(ui->widget_coalChart->layout());
|
||||||
|
if (!layout) {
|
||||||
|
layout = new QVBoxLayout(ui->widget_coalChart);
|
||||||
|
ui->widget_coalChart->setLayout(layout);
|
||||||
|
}
|
||||||
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
layout->setSpacing(0);
|
||||||
|
|
||||||
|
if (layout->indexOf(m_chartView) == -1) {
|
||||||
|
layout->addWidget(m_chartView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoalStatisticsChartWidget::getCoalStatisInfoByHttpRequest(const QString& beginTime, const QString& endTime, const QString& statisticUnit, QMap<QString, double>& volumeDataMap)
|
||||||
|
{
|
||||||
|
|
||||||
// 使用类成员变量 QNetworkAccessManager
|
// 使用类成员变量 QNetworkAccessManager
|
||||||
QNetworkAccessManager* manager = new QNetworkAccessManager(this);
|
QNetworkAccessManager* manager = new QNetworkAccessManager(this);
|
||||||
|
|
||||||
|
@ -218,15 +219,21 @@ void CoalStatisticsChartWidget::getCoalStatisInfoByHttpRequest(const QString& be
|
||||||
endTimePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"end_time\""));
|
endTimePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"end_time\""));
|
||||||
endTimePart.setBody(endTime.toUtf8());
|
endTimePart.setBody(endTime.toUtf8());
|
||||||
|
|
||||||
|
// 统计单位参数
|
||||||
|
QHttpPart statisticUnitPart;
|
||||||
|
statisticUnitPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"statistic_unit\""));
|
||||||
|
statisticUnitPart.setBody(statisticUnit.toUtf8());
|
||||||
|
|
||||||
// 将表单字段附加到 multipart 请求体中
|
// 将表单字段附加到 multipart 请求体中
|
||||||
multiPart->append(beginTimePart);
|
multiPart->append(beginTimePart);
|
||||||
multiPart->append(endTimePart);
|
multiPart->append(endTimePart);
|
||||||
|
multiPart->append(statisticUnitPart);
|
||||||
|
|
||||||
// 发送 POST 请求
|
// 发送 POST 请求
|
||||||
QNetworkReply* reply = manager->post(request, multiPart);
|
QNetworkReply* reply = manager->post(request, multiPart);
|
||||||
|
|
||||||
// 连接信号和槽
|
// 连接信号和槽
|
||||||
QObject::connect(reply, &QNetworkReply::finished, [this, reply, multiPart]() {
|
QObject::connect(reply, &QNetworkReply::finished, [this, reply, multiPart, &volumeDataMap]() {
|
||||||
if (reply->error() == QNetworkReply::NoError) {
|
if (reply->error() == QNetworkReply::NoError) {
|
||||||
// 处理成功的响应
|
// 处理成功的响应
|
||||||
QByteArray responseData = reply->readAll();
|
QByteArray responseData = reply->readAll();
|
||||||
|
@ -236,14 +243,30 @@ void CoalStatisticsChartWidget::getCoalStatisInfoByHttpRequest(const QString& be
|
||||||
int code = jsonObj["code"].toInt();
|
int code = jsonObj["code"].toInt();
|
||||||
QString message = jsonObj["message"].toString();
|
QString message = jsonObj["message"].toString();
|
||||||
QJsonObject data = jsonObj["data"].toObject();
|
QJsonObject data = jsonObj["data"].toObject();
|
||||||
double totalVolume = data["total_volum"].toDouble();
|
m_toalValue = data["total_volum"].toDouble();
|
||||||
|
QJsonObject statisticUnitVolum = data["statistic_unit_volum"].toObject();
|
||||||
|
|
||||||
|
int statisticUnitVolumSize = statisticUnitVolum.count();
|
||||||
|
QString statisticUnitVolumSizeString = "查询结果数" + QString::number(statisticUnitVolumSize);
|
||||||
|
emit querySuccessInfo(statisticUnitVolumSizeString);
|
||||||
|
|
||||||
|
QString totalVolumeString = "总吨数" + QString::number(m_toalValue);
|
||||||
|
emit querySuccessInfo(totalVolumeString);
|
||||||
|
|
||||||
|
// 遍历 statistic_unit_volum 中的键值对并存入 volumeDataMap
|
||||||
|
// for (const QString& key : statisticUnitVolum.keys()) {
|
||||||
|
// double value = statisticUnitVolum.value(key).toDouble();
|
||||||
|
// volumeDataMap.insert(key, value);
|
||||||
|
// }
|
||||||
|
|
||||||
qDebug() << "Code:" << code;
|
qDebug() << "Code:" << code;
|
||||||
qDebug() << "Message:" << message;
|
qDebug() << "Message:" << message;
|
||||||
qDebug() << "Total Volume:" << totalVolume;
|
qDebug() << "Total Volume:" << m_toalValue;
|
||||||
} else {
|
} else {
|
||||||
// 处理错误
|
// 处理错误
|
||||||
QString errorString = reply->errorString();
|
QString errorString = reply->errorString();
|
||||||
|
|
||||||
|
emit querySuccessInfo(errorString);
|
||||||
qDebug() << "Error:" << errorString;
|
qDebug() << "Error:" << errorString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,3 +275,59 @@ void CoalStatisticsChartWidget::getCoalStatisInfoByHttpRequest(const QString& be
|
||||||
multiPart->deleteLater();
|
multiPart->deleteLater();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CoalStatisticsChartWidget::updateCoalStatisticsChart(const QMap<QString, double>& volumeDataMap)
|
||||||
|
{
|
||||||
|
qDebug() << "更新图表程序" << volumeDataMap.size();
|
||||||
|
|
||||||
|
// 清除旧数据
|
||||||
|
m_series->clear();
|
||||||
|
|
||||||
|
// 创建新的数据集
|
||||||
|
QBarSet* set = new QBarSet("煤量");
|
||||||
|
|
||||||
|
// 用于存储时间标签
|
||||||
|
QList<QString> categories;
|
||||||
|
|
||||||
|
// 将字符串格式的时间转换为 QDateTime,并准备时间标签
|
||||||
|
for (auto it = volumeDataMap.begin(); it != volumeDataMap.end(); ++it) {
|
||||||
|
// 将时间字符串转换为 QDateTime 对象
|
||||||
|
QDateTime time = QDateTime::fromString(it.key(), "yyyy-MM-dd HH");
|
||||||
|
|
||||||
|
// 如果转换失败,跳过这个数据项
|
||||||
|
if (!time.isValid()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
*set << it.value(); // 将数据量加入到数据集
|
||||||
|
|
||||||
|
// 根据选择的时间单位,格式化时间标签
|
||||||
|
QString label;
|
||||||
|
if (ui->comboBox_unit->currentText() == QStringLiteral("时")) {
|
||||||
|
label = time.toString("H");
|
||||||
|
} else if (ui->comboBox_unit->currentText() == QStringLiteral("日")) {
|
||||||
|
label = time.toString("dd"); // 使用 'dd' 来格式化日期
|
||||||
|
} else if (ui->comboBox_unit->currentText() == QStringLiteral("月")) {
|
||||||
|
label = time.toString("MM"); // 使用 'MM' 来格式化月份
|
||||||
|
} else if (ui->comboBox_unit->currentText() == QStringLiteral("年")) {
|
||||||
|
label = time.toString("yyyy"); // 使用 'yyyy' 来格式化年份
|
||||||
|
}
|
||||||
|
|
||||||
|
categories.append(label); // 将时间标签添加到列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将数据集添加到 series
|
||||||
|
m_series->append(set);
|
||||||
|
|
||||||
|
// 使用 QCategoryAxis 设置 X 轴为字符串格式的时间标签
|
||||||
|
m_axisX->clear(); // 清除之前的标签
|
||||||
|
m_axisX->append(categories); // 将新的时间标签添加到 X 轴
|
||||||
|
|
||||||
|
// 将 X 轴绑定到 series
|
||||||
|
// m_chart->addAxis(m_axisX, Qt::AlignBottom);
|
||||||
|
// m_series->attachAxis(m_axisX);
|
||||||
|
|
||||||
|
// 更新 Y 轴范围
|
||||||
|
double maxValue = *std::max_element(volumeDataMap.begin(), volumeDataMap.end());
|
||||||
|
m_axisY->setRange(0, maxValue + 10); // 设置为最大值并留出余量
|
||||||
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ public:
|
||||||
explicit CoalStatisticsChartWidget(QWidget* parent = nullptr);
|
explicit CoalStatisticsChartWidget(QWidget* parent = nullptr);
|
||||||
~CoalStatisticsChartWidget();
|
~CoalStatisticsChartWidget();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void querySuccessInfo(QString& queryInfo);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,9 +40,31 @@ private:
|
||||||
void initCoalStatisticsBarChart();
|
void initCoalStatisticsBarChart();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief getCoalStatisInfoByHttpRequest通过Http请求获取煤量统计信息
|
* @brief getLastSixFullHours 计算前六个整点时间
|
||||||
|
* @param currentTime 当前时间
|
||||||
|
* @return 六个整点数
|
||||||
*/
|
*/
|
||||||
void getCoalStatisInfoByHttpRequest(const QString& startTime, const QString& endTime);
|
QList<QString> getLastSixFullHours(const QDateTime& currentTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief initCustomCoalStatisticsBarChart 初始化用户自定义柱状图
|
||||||
|
*/
|
||||||
|
void initCustomCoalStatisticsBarChart();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getCoalStatisInfoByHttpRequest 通过Http请求获取煤量统计信息
|
||||||
|
* @param startTime 请求起始时间
|
||||||
|
* @param endTime 请求终止时间
|
||||||
|
* @param statisticUnit 统计单位
|
||||||
|
* @param volumeDataMap 体积统计结果Map
|
||||||
|
*/
|
||||||
|
void getCoalStatisInfoByHttpRequest(const QString& startTime, const QString& endTime, const QString& statisticUnit, QMap<QString, double>& volumeDataMap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief updateCoalStatisticsChart 更新煤溜统计柱状图数据
|
||||||
|
* @param volumeDataMap 统计结果数据
|
||||||
|
*/
|
||||||
|
void updateCoalStatisticsChart(const QMap<QString, double>& volumeDataMap);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CoalStatisticsChartWidget* ui;
|
Ui::CoalStatisticsChartWidget* ui;
|
||||||
|
@ -47,12 +72,16 @@ private:
|
||||||
QChart* m_chart;
|
QChart* m_chart;
|
||||||
QChartView* m_chartView;
|
QChartView* m_chartView;
|
||||||
QBarSeries* m_series;
|
QBarSeries* m_series;
|
||||||
QDateTimeAxis* m_axisX;
|
QBarCategoryAxis* m_axisX;
|
||||||
|
// QDateTimeAxis* m_axisX;
|
||||||
|
// QValueAxis* m_axisX;
|
||||||
QValueAxis* m_axisY;
|
QValueAxis* m_axisY;
|
||||||
|
|
||||||
QTimer* m_timer;
|
QTimer* m_timer;
|
||||||
|
|
||||||
QSettings* m_systemSetting;
|
QSettings* m_systemSetting;
|
||||||
|
|
||||||
|
double m_toalValue = 0.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COALSTATISTICSCHARTWIDGET_H
|
#endif // COALSTATISTICSCHARTWIDGET_H
|
||||||
|
|
|
@ -13,6 +13,12 @@
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">#CoalStatisticsChartWidget
|
||||||
|
{
|
||||||
|
background-color:transparent;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,1,8">
|
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,1,8">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
|
@ -63,7 +69,7 @@
|
||||||
<widget class="ZDateTimeEdit" name="dateTimeEdit_startTime">
|
<widget class="ZDateTimeEdit" name="dateTimeEdit_startTime">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>120</width>
|
||||||
<height>25</height>
|
<height>25</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
@ -115,7 +121,7 @@ QDateTimeEdit::up-button, QDateTimeEdit::down-button {
|
||||||
<widget class="ZDateTimeEdit" name="dateTimeEdit_endTime">
|
<widget class="ZDateTimeEdit" name="dateTimeEdit_endTime">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>120</width>
|
||||||
<height>25</height>
|
<height>25</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
@ -208,13 +214,13 @@ QDateTimeEdit::up-button, QDateTimeEdit::down-button {
|
||||||
<widget class="QPushButton" name="pushButton_coalStatisOk">
|
<widget class="QPushButton" name="pushButton_coalStatisOk">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>45</width>
|
||||||
<height>0</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>45</width>
|
<width>50</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
@ -251,7 +257,7 @@ QPushButton:pressed{
|
||||||
<number>10</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_totalVolume">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QLabel{
|
<string notr="true">QLabel{
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
|
@ -276,65 +282,16 @@ QPushButton:pressed{
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="radioButton_hour">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QRadioButton{
|
|
||||||
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>时</string>
|
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="radioButton_day">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QRadioButton{
|
|
||||||
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>日</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="radioButton_month">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QRadioButton{
|
|
||||||
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>月</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QRadioButton" name="radioButton_year">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QRadioButton{
|
|
||||||
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>年</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget_coalChart" native="true">
|
<widget class="QWidget" name="widget_coalChart" native="true">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">#widget_coalChart{
|
||||||
|
|
||||||
|
background-color:transparent;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3"/>
|
<layout class="QVBoxLayout" name="verticalLayout_3"/>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
Loading…
Reference in New Issue