From 8ecf44db1abd6b61b57c5f386e6fa3f0a32adceb Mon Sep 17 00:00:00 2001 From: taocong Date: Fri, 29 May 2026 09:40:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DUF20=E3=80=81UFT30=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/metadataupdate/metadataprocessor.cpp | 132 +++++++++++------------ src/metadataupdate/metadataprocessor.h | 1 + src/metadataupdate/uf2interface.cpp | 14 ++- src/metadataupdate/uft3interface.cpp | 11 +- 4 files changed, 79 insertions(+), 79 deletions(-) diff --git a/src/metadataupdate/metadataprocessor.cpp b/src/metadataupdate/metadataprocessor.cpp index 54aac7f..d40b7f3 100644 --- a/src/metadataupdate/metadataprocessor.cpp +++ b/src/metadataupdate/metadataprocessor.cpp @@ -70,6 +70,8 @@ QString MetadataProcessor::readConfig(const QString& section, const QString& key bool MetadataProcessor::writeJson(const QString& filePath, const QJsonObject& jsonObject) { + LogManager::instance()->log(QString("准备写入JSON文件: %1, 对象大小: %2").arg(filePath).arg(jsonObject.size())); + QFile file(filePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { LogManager::instance()->logError(QString("无法打开文件: %1").arg(filePath)); @@ -77,11 +79,68 @@ bool MetadataProcessor::writeJson(const QString& filePath, const QJsonObject& js } QJsonDocument doc(jsonObject); - file.write(doc.toJson(QJsonDocument::Indented)); + qint64 bytesWritten = file.write(doc.toJson(QJsonDocument::Indented)); file.close(); + + LogManager::instance()->log(QString("成功写入JSON文件: %1, 写入字节数: %2").arg(filePath).arg(bytesWritten)); return true; } +QJsonObject MetadataProcessor::interfaceInfoToUFT3Json(const InterfaceInfo& info) +{ + QJsonObject interfaceJson; + interfaceJson["cname"] = info.cname; + interfaceJson["eName"] = info.eName; + interfaceJson["functionNo"] = info.functionNo; + interfaceJson["flag"] = info.flag; + interfaceJson["path"] = info.path; + interfaceJson["code"] = info.code; + interfaceJson["id"] = info.id; + interfaceJson["sysStatus"] = info.sysStatus; + interfaceJson["description"] = info.description; + interfaceJson["moudle"] = info.moudle; + + QJsonObject inputFieldsJson; + for (const QString& fieldName : info.inputFields.keys()) { + const FieldInfo& field = info.inputFields[fieldName]; + QJsonObject fieldJson; + fieldJson["name"] = field.name; + fieldJson["flag"] = field.flag; + fieldJson["desc"] = field.desc; + fieldJson["uuid"] = field.uuid; + inputFieldsJson[fieldName] = fieldJson; + } + interfaceJson["inputFileds"] = inputFieldsJson; + + QJsonObject outputFieldsJson; + for (const QString& fieldName : info.outputFields.keys()) { + const FieldInfo& field = info.outputFields[fieldName]; + QJsonObject fieldJson; + fieldJson["name"] = field.name; + fieldJson["flag"] = field.flag; + fieldJson["desc"] = field.desc; + fieldJson["paramType"] = field.paramType; + fieldJson["uuid"] = field.uuid; + outputFieldsJson[fieldName] = fieldJson; + } + interfaceJson["outputFileds"] = outputFieldsJson; + + QJsonObject internalFieldsJson; + for (const QString& fieldName : info.internalFields.keys()) { + const FieldInfo& field = info.internalFields[fieldName]; + QJsonObject fieldJson; + fieldJson["name"] = field.name; + fieldJson["type"] = field.type; + fieldJson["desc"] = field.desc; + fieldJson["paramType"] = field.paramType; + fieldJson["uuid"] = field.uuid; + internalFieldsJson[fieldName] = fieldJson; + } + interfaceJson["internalFileds"] = internalFieldsJson; + + return interfaceJson; +} + QJsonObject MetadataProcessor::readJson(const QString& filePath) { QFile file(filePath); @@ -204,7 +263,6 @@ bool MetadataProcessor::processUf2Interfaces(const QString& basePath) } QString outputPath = QDir(uf2touft3Path).filePath("uf2.json"); - LogManager::instance()->log(QString("输出文件路径(uf2.json): %1").arg(outputPath)); if (!writeJson(outputPath, resultJson)) { return false; @@ -213,7 +271,6 @@ bool MetadataProcessor::processUf2Interfaces(const QString& basePath) LogManager::instance()->log(QString("UF2.0 接口处理完成,结果已保存到: %1").arg(outputPath)); if (!resultMap.isEmpty()) { QString firstKey = resultMap.keys().first(); - LogManager::instance()->log(QString("示例功能号: %1").arg(resultMap[firstKey].functionNo)); } return true; @@ -247,65 +304,14 @@ bool MetadataProcessor::processUft3Interfaces(const QString& basePath) QMap resultMap = result.first; QMap transCodeMap = result.second; + QJsonObject resultJson; for (const QString& key : resultMap.keys()) { const InterfaceInfo& info = resultMap[key]; - - QJsonObject interfaceJson; - interfaceJson["cname"] = info.cname; - interfaceJson["eName"] = info.eName; - interfaceJson["functionNo"] = info.functionNo; - interfaceJson["flag"] = info.flag; - interfaceJson["path"] = info.path; - interfaceJson["code"] = info.code; - interfaceJson["id"] = info.id; - interfaceJson["sysStatus"] = info.sysStatus; - interfaceJson["description"] = info.description; - interfaceJson["moudle"] = info.moudle; - - QJsonObject inputFieldsJson; - for (const QString& fieldName : info.inputFields.keys()) { - const FieldInfo& field = info.inputFields[fieldName]; - QJsonObject fieldJson; - fieldJson["name"] = field.name; - fieldJson["flag"] = field.flag; - fieldJson["desc"] = field.desc; - fieldJson["uuid"] = field.uuid; - inputFieldsJson[fieldName] = fieldJson; - } - interfaceJson["inputFileds"] = inputFieldsJson; - - QJsonObject outputFieldsJson; - for (const QString& fieldName : info.outputFields.keys()) { - const FieldInfo& field = info.outputFields[fieldName]; - QJsonObject fieldJson; - fieldJson["name"] = field.name; - fieldJson["flag"] = field.flag; - fieldJson["desc"] = field.desc; - fieldJson["paramType"] = field.paramType; - fieldJson["uuid"] = field.uuid; - outputFieldsJson[fieldName] = fieldJson; - } - interfaceJson["outputFileds"] = outputFieldsJson; - - QJsonObject internalFieldsJson; - for (const QString& fieldName : info.internalFields.keys()) { - const FieldInfo& field = info.internalFields[fieldName]; - QJsonObject fieldJson; - fieldJson["name"] = field.name; - fieldJson["type"] = field.type; - fieldJson["desc"] = field.desc; - fieldJson["paramType"] = field.paramType; - fieldJson["uuid"] = field.uuid; - internalFieldsJson[fieldName] = fieldJson; - } - interfaceJson["internalFileds"] = internalFieldsJson; - - resultJson[key] = interfaceJson; + resultJson[key] = interfaceInfoToUFT3Json(info); } QString outputPath = QDir(uf2touft3Path).filePath("uft3.json"); - LogManager::instance()->log(QString("输出文件路径(uft3.json): %1").arg(outputPath)); if (!writeJson(outputPath, resultJson)) { return false; @@ -314,26 +320,16 @@ bool MetadataProcessor::processUft3Interfaces(const QString& basePath) QJsonObject transCodeJson; for (const QString& key : transCodeMap.keys()) { const InterfaceInfo& info = transCodeMap[key]; - - QJsonObject interfaceJson; - interfaceJson["cname"] = info.cname; - interfaceJson["eName"] = info.eName; - interfaceJson["functionNo"] = info.functionNo; - interfaceJson["flag"] = info.flag; - interfaceJson["path"] = info.path; - interfaceJson["code"] = info.code; - transCodeJson[key] = interfaceJson; + transCodeJson[key] = interfaceInfoToUFT3Json(info); } QString transOutputPath = QDir(uf2touft3Path).filePath("uft3Trans.json"); - LogManager::instance()->log(QString("输出文件路径(uft3Trans.json): %1").arg(transOutputPath)); if (!writeJson(transOutputPath, transCodeJson)) { return false; } LogManager::instance()->log(QString("UFT3.0 接口处理完成,结果已保存到: %1").arg(outputPath)); - LogManager::instance()->log(QString("交易码结果已保存到: %1").arg(transOutputPath)); - + return true; } \ No newline at end of file diff --git a/src/metadataupdate/metadataprocessor.h b/src/metadataupdate/metadataprocessor.h index 0501936..542ee40 100644 --- a/src/metadataupdate/metadataprocessor.h +++ b/src/metadataupdate/metadataprocessor.h @@ -26,6 +26,7 @@ private: QString readConfig(const QString& section, const QString& key, const QString& basePath); bool writeJson(const QString& filePath, const QJsonObject& jsonObject); QJsonObject readJson(const QString& filePath); + QJsonObject interfaceInfoToUFT3Json(const InterfaceInfo& info); QString m_basePath; }; diff --git a/src/metadataupdate/uf2interface.cpp b/src/metadataupdate/uf2interface.cpp index f9db034..879edb8 100644 --- a/src/metadataupdate/uf2interface.cpp +++ b/src/metadataupdate/uf2interface.cpp @@ -93,19 +93,17 @@ InterfaceInfo Uf2Interface::loadInterface(const QString& filePath) field.desc = attrs.value("desc").toString(); result.variableFields[field.name] = field; } + else if (elementName == "code") { + result.code = xml.readElementText(); + if (filePath.contains("不用编译")) { + result.code.clear(); + } + } } else if (token == QXmlStreamReader::EndElement) { if (!elementStack.isEmpty()) { elementStack.pop(); } - - QString elementName = xml.name().toString(); - if (elementName == "code") { - result.code = xml.text().toString(); - if (filePath.contains("不用编译")) { - result.code.clear(); - } - } } } diff --git a/src/metadataupdate/uft3interface.cpp b/src/metadataupdate/uft3interface.cpp index b49627f..2ee07d7 100644 --- a/src/metadataupdate/uft3interface.cpp +++ b/src/metadataupdate/uft3interface.cpp @@ -160,12 +160,17 @@ bool Uft3Interface::shouldFilter(const QString& filePath, QString fileName = fileInfo.fileName(); QString relPath = filePath.mid(dirPath.length()); - QString suffix = relPath.mid(relPath.indexOf('.')); - if (!containNameList.contains(suffix)) { + if (completeNameList.contains(fileName)) { return true; } - if (completeNameList.contains(fileName)) { + int dotPos = relPath.indexOf('.'); + QString suffix; + if (dotPos != -1) { + suffix = relPath.mid(dotPos); + } + + if (!containNameList.contains(suffix)) { return true; }