V20260507-2.5.3

丰富了实时翻译词库,在更多的界面提供了翻译支持。
增加了在后端可以使用临时账户登录的功能。
增加了自动删除超期的日志文件以及自动删除超期的存图路径数据库。
This commit is contained in:
2026-06-03 08:54:01 +08:00
parent cbf2756a16
commit ee97a4ab2c
40 changed files with 3427 additions and 1605 deletions
+18 -15
View File
@@ -28,8 +28,8 @@ public:
}
{
QMutexLocker locker(&queueLock);
queue.enqueue(std::make_pair(snCode, data));
QMutexLocker locker(&dataQueueLock);
dataQueue.enqueue(std::make_pair(snCode, data));
}
if (!isRunning()) {
@@ -45,19 +45,22 @@ public:
protected:
void run() override {
while (true) {
std::pair<QString, std::map<QString, QVariant>> val;
QQueue<std::pair<QString, std::map<QString, QVariant>>> vals;
// 从队列获取数据
{
QMutexLocker locker(&queueLock);
if (queue.isEmpty()) {
QMutexLocker locker(&dataQueueLock);
if (dataQueue.isEmpty()) {
break;
}
val = queue.dequeue();
dataQueue.swap(vals);
}
try {
processData(val.first, val.second);
while (!vals.empty()) {
auto val = vals.dequeue();
processData(val.first, val.second);
}
}
catch (const std::exception& ex) {
qCritical() << "addData: Exception caught:" << ex.what();
@@ -70,8 +73,8 @@ protected:
private:
// 统一锁顺序:先队列锁,再数据库锁
QMutex queueLock;
QQueue<std::pair<QString, std::map<QString, QVariant>>> queue;
QMutex dataQueueLock;
QQueue<std::pair<QString, std::map<QString, QVariant>>> dataQueue;
std::mutex _mutex;
int m_intervalMs = 10000;
@@ -197,9 +200,9 @@ private:
int hour = currentDateTime.time().hour();
int minute = currentDateTime.time().minute();
//判断是否为白班
bool isDayShift = (hour > 8 || (hour == 8 && minute >= 30)) && (hour < 20 || (hour == 20 && minute <= 30));
//判断是否为前一天
bool isDayBefore = hour < 8 || (hour == 8 && minute <= 29);
bool isDayShift = (hour > dayShiftHour || (hour == dayShiftHour && minute >= dayShiftMin)) && (hour < nightShiftHour || (hour == nightShiftHour && minute <= nightShiftMin));
//判断是否为前一天(只有夜班可能是前一天的
bool isDayBefore = hour < dayShiftHour || (hour == dayShiftHour && minute < dayShiftMin);
QString dateStr;
if (isDayBefore) {
@@ -217,9 +220,9 @@ private:
int hour = currentDateTime.time().hour();
int minute = currentDateTime.time().minute();
//判断是否为白班
bool isDayShift = (hour > 8 || (hour == 8 && minute >= 30)) && (hour < 20 || (hour == 20 && minute <= 30));
//判断是否为前一天
bool isDayBefore = hour < 8 || (hour == 8 && minute <= 29);
bool isDayShift = (hour > dayShiftHour || (hour == dayShiftHour && minute >= dayShiftMin)) && (hour < nightShiftHour || (hour == nightShiftHour && minute <= nightShiftMin));
//判断是否为前一天(只有白班可能是前一天的
bool isDayBefore = hour < nightShiftHour || (hour == nightShiftHour && minute < nightShiftMin);
QDateTime lastShiftDateTime;
//如果当前为前一天的夜班 那就返回前一天的白班
+12 -6
View File
@@ -1,3 +1,5 @@
#pragma once
#include <qfile.h>
#include <string>
#include <unordered_map>
@@ -131,8 +133,14 @@ public:
bool dropTable(const QString& tableName) {
QMutexLocker lock(&db_mutex);
QString sql = QString("DROP TABLE IF EXISTS %1").arg(tableName);
return execute_unsafe(sql);
QString sql = QString("DROP TABLE IF EXISTS \"%1\"").arg(tableName);
QSqlQuery query(db);
if (!query.exec(sql)) {
qCritical() << "SQL error:" << query.lastError().text();
qCritical() << "Query:" << sql;
return false;
}
return true;
}
bool addColumn(const QString& tableName, const QString& columnName, const QString& columnType) {
@@ -443,15 +451,13 @@ private:
}
void disconnect() {
QSqlDatabase::removeDatabase(m_connectionName);
if (db.isOpen()) {
db.close();
qDebug() << "Database closed.";
}
QSqlDatabase::removeDatabase(m_connectionName);
}
QString m_connectionName;
QString dbPath;
};
#pragma once
};