From d4d607dc6afa718d0d753a0993266ac69a161950 Mon Sep 17 00:00:00 2001 From: taocong Date: Thu, 2 Jul 2026 10:23:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A02.0=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=9B=B4=E6=96=B0=E4=B8=8E=E8=BD=AC=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/metadataupdate/metadataprocessor.cpp | 2 +- src/metadataupdate/uf2interface.cpp | 25 +++++++++++++++++++++++- src/metadataupdate/uf2interface.h | 4 +++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/metadataupdate/metadataprocessor.cpp b/src/metadataupdate/metadataprocessor.cpp index aa99a01..12ce046 100644 --- a/src/metadataupdate/metadataprocessor.cpp +++ b/src/metadataupdate/metadataprocessor.cpp @@ -193,7 +193,7 @@ bool MetadataProcessor::processUf2Interfaces(const QString& basePath) QJsonObject custJson = readJson(custJsonPath); Uf2Interface uf2; - QMap resultMap = uf2.scanDir(dirPath, ufAcct20ProjectDir, uftDbSett, filterDict); + QMap resultMap = uf2.scanDir(dirPath, ufAcct20ProjectDir, uftDbSett, filterDict, custJson); QJsonObject resultJson; for (const QString& key : resultMap.keys()) { diff --git a/src/metadataupdate/uf2interface.cpp b/src/metadataupdate/uf2interface.cpp index 09e96f4..dd8956a 100644 --- a/src/metadataupdate/uf2interface.cpp +++ b/src/metadataupdate/uf2interface.cpp @@ -95,6 +95,11 @@ InterfaceInfo Uf2Interface::loadInterface(const QString& filePath) } else if (elementName == "code") { result.code = xml.readElementText(); + // readElementText() 内部消费了 EndElement, + // 但 elementStack 中 "code" 未被弹出,需要手动同步 + if (!elementStack.isEmpty() && elementStack.top() == "code") { + elementStack.pop(); + } if (filePath.contains("不用编译")) { result.code.clear(); } @@ -158,7 +163,8 @@ bool Uf2Interface::shouldFilter(const QString& filePath, QMap Uf2Interface::scanDir(const QString& dirPath, const QString& ufAcct20ProjectDir, const QString& uftDbSett, - const QMap& fileFilterDict) + const QMap& fileFilterDict, + const QJsonObject& custJson) { QMap resultMap; QStringList completeNameList = fileFilterDict.value("completeNameList"); @@ -167,6 +173,15 @@ QMap Uf2Interface::scanDir(const QString& dirPath, QMap moduleCodeMap; moduleCodeMap["转融通"] = "ref"; + // 预提取cust.json中的模块英文名映射 + QMap custMoudleENameMap; + if (!custJson.isEmpty() && custJson.contains("moudleEName")) { + QJsonObject moudleENameObj = custJson["moudleEName"].toObject(); + for (const QString& key : moudleENameObj.keys()) { + custMoudleENameMap[key] = moudleENameObj[key].toString(); + } + } + std::function scanModuleXmlRecursive; scanModuleXmlRecursive = [&](const QString& path) { if (path.isEmpty()) return; @@ -185,6 +200,14 @@ QMap Uf2Interface::scanDir(const QString& dirPath, QString modName = fileInfo.dir().dirName(); QString modEName = getModuleEName(filePath); + + // cust.json回退:当路径包含"外部接口(不用编译)"且英文名为空时 + if (filePath.contains("外部接口(不用编译)") && modEName.trimmed().isEmpty()) { + if (custMoudleENameMap.contains(modName)) { + modEName = custMoudleENameMap[modName]; + } + } + moduleCodeMap[modName] = modEName; } diff --git a/src/metadataupdate/uf2interface.h b/src/metadataupdate/uf2interface.h index a5eab6d..e118abb 100644 --- a/src/metadataupdate/uf2interface.h +++ b/src/metadataupdate/uf2interface.h @@ -4,6 +4,7 @@ #include #include #include +#include #include struct FieldInfo { @@ -50,7 +51,8 @@ public: QMap scanDir(const QString& dirPath, const QString& ufAcct20ProjectDir, const QString& uftDbSett, - const QMap& fileFilterDict); + const QMap& fileFilterDict, + const QJsonObject& custJson = QJsonObject()); private: QString getModuleEName(const QString& moduleXmlPath);