From db9d120efcfe76bb73df089dca8986eca9ee0e6f Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 10 十二月 2025 10:11:37 +0800
Subject: [PATCH] 1.扫码上报,但未在配置中设置变量;

---
 SourceCode/Bond/Servo/CMaster.cpp |  116 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 84 insertions(+), 32 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 11397ce..cf85b05 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -1483,6 +1483,7 @@
 							this->saveState();
 							LOGE("<Master>ProcessJob(%s)瀹屾垚.",
 								pJob->id().c_str());
+							processJobFromInPorcessToComplete(pJob);
 							if (m_listener.onPjEnd != nullptr) {
 								m_listener.onPjEnd(this, pJob);
 							}
@@ -1543,12 +1544,14 @@
 			LOGI("<Master>onProcessStateChanged<%d>", (int)state);
 			if (state == PROCESS_STATE::Processing) {
 				if (pGlass != nullptr) {
-					m_pCollector->batchStart(eqid,
+					m_pCollector->batchStart(SlotToMid(eqid, slotNo),
 						pGlass->getID().c_str(), 10 * 60 * 1000ULL);
 				}
 			}
 			else if (state == PROCESS_STATE::Complete) {
-				m_pCollector->batchStop(eqid);
+				if (pGlass != nullptr) {
+					m_pCollector->batchStop(SlotToMid(eqid, slotNo));
+				}
 			}
 		};
 		listener.onMapMismatch = [&](void* pEquipment, short scanMap, short downMap) {
@@ -1643,14 +1646,14 @@
 
 				CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(2);
 				auto& dataTypes = CServoUtilsTool::getEqDataTypes();
-				auto& bonderTypes = dataTypes[eqid];
+				auto& bonderTypes = dataTypes[SlotToMid(eqid, 2)];
 				for (const auto& mapping : bonderMapping) {
 					int paramIndex = mapping.first;
 					int channel = mapping.second;
 
 					if (paramIndex < params.size() && channel - 1 < bonderTypes.size()) {
 						if(m_pCollector != nullptr)
-							m_pCollector->buffersPush(eqid, channel, ts, params.at(paramIndex).getDoubleValue());
+							m_pCollector->buffersPush(SlotToMid(eqid, 2), channel, ts, params.at(paramIndex).getDoubleValue());
 						if(pGlass != nullptr)
 							pGlass->addSVData(eqid, bonderTypes[channel - 1], ts, params.at(paramIndex).getDoubleValue());
 					}
@@ -1667,21 +1670,30 @@
 				CGlass* pGlass1 = ((CEquipment*)pEquipment)->getGlassFromSlot(1);
 				CGlass* pGlass2 = ((CEquipment*)pEquipment)->getGlassFromSlot(2);
 				auto& dataTypes = CServoUtilsTool::getEqDataTypes();
-				auto& vacuumbakeTypes = dataTypes[eqid];
+				auto& vacuumbakeTypes = dataTypes[SlotToMid(eqid, 1)];
 				LOGD("<Master>onSVDataReport 003 : %d", vacuumMapping.size());
 				for (const auto& mapping : vacuumMapping) {
 					int paramIndex = mapping.first;
 					int channel = mapping.second;
 
 					if (paramIndex < params.size() && channel - 1 < vacuumbakeTypes.size()) {
-						double value = params.at(paramIndex).getDoubleValue();
+						auto& param = params.at(paramIndex);
+						double value = param.getDoubleValue();
 						const std::string& dataType = vacuumbakeTypes[channel - 1];
-						if (m_pCollector != nullptr)
-							m_pCollector->buffersPush(eqid, channel, ts, value);
+						const std::string& paramName = param.getName();
+						const char slotTag = !paramName.empty() ? paramName[0] : '\0';
+
+						if (m_pCollector != nullptr) {
+							if (slotTag == 'A')
+								m_pCollector->buffersPush(SlotToMid(eqid, 1), channel, ts, value);
+							else if (slotTag == 'B')
+								m_pCollector->buffersPush(SlotToMid(eqid, 2), channel, ts, value);
+						}
+
 						// 鏍规嵁鑵斾綋鍓嶇紑鍐欏叆瀵瑰簲 Slot 鐨勭幓鐠�
-						if (pGlass1 != nullptr && !dataType.empty() && dataType[0] == 'A')
+						if (pGlass1 != nullptr && !dataType.empty() && slotTag == 'A')
 							pGlass1->addSVData(eqid, dataType, ts, value);
-						if (pGlass2 != nullptr && !dataType.empty() && dataType[0] == 'B')
+						if (pGlass2 != nullptr && !dataType.empty() && slotTag == 'B')
 							pGlass2->addSVData(eqid, dataType, ts, value);
 					}
 				}
@@ -1699,7 +1711,7 @@
 				CGlass* pGlass3 = ((CEquipment*)pEquipment)->getGlassFromSlot(3); // B Bake
 				CGlass* pGlass4 = ((CEquipment*)pEquipment)->getGlassFromSlot(4); // B Cool
 				auto& dataTypes = CServoUtilsTool::getEqDataTypes();
-				auto& coolingTypes = dataTypes[eqid];
+				auto& coolingTypes = dataTypes[SlotToMid(eqid, 1)];
 				LOGD("<Master>onSVDataReport 003B : %d", coolingMapping.size());
 				auto addToGlass = [&](CGlass* glass, const std::string& type, double val) {
 					if (glass != nullptr)
@@ -1710,24 +1722,33 @@
 					int channel = mapping.second;
 
 					if (paramIndex < params.size() && channel - 1 < coolingTypes.size()) {
-						double value = params.at(paramIndex).getDoubleValue();
+						auto& param = params.at(paramIndex);
+						double value = param.getDoubleValue();
 						const std::string& dataType = coolingTypes[channel - 1];
-						if (m_pCollector != nullptr)
-							m_pCollector->buffersPush(eqid, channel, ts, value);
+						const std::string& paramName = param.getName();
+						const char slotTag = !paramName.empty() ? paramName[0] : '\0';
+						const bool paramIsBake = paramName.find("鐑樼儰") != std::string::npos;
+						const bool paramIsCooling = paramName.find("鍐峰嵈") != std::string::npos;
+
+						if (m_pCollector != nullptr && paramIsBake) {
+							if (slotTag == 'A')
+								m_pCollector->buffersPush(SlotToMid(eqid, 1), channel, ts, value);
+							else if (slotTag == 'B')
+								m_pCollector->buffersPush(SlotToMid(eqid, 3), channel, ts, value);
+						}
+
 						if (!dataType.empty()) {
-							const bool isBake = dataType.find("鐑樼儰") != std::string::npos;
-							const bool isCooling = dataType.find("鍐峰嵈") != std::string::npos;
-							switch (dataType[0]) {
+							switch (slotTag) {
 							case 'A':
-								if (isBake)
+								if (paramIsBake)
 									addToGlass(pGlass1, dataType, value);
-								else if (isCooling)
+								else if (paramIsCooling)
 									addToGlass(pGlass2, dataType, value);
 								break;
 							case 'B':
-								if (isBake)
+								if (paramIsBake)
 									addToGlass(pGlass3, dataType, value);
-								else if (isCooling)
+								else if (paramIsCooling)
 									addToGlass(pGlass4, dataType, value);
 								break;
 							default:
@@ -3174,29 +3195,60 @@
 
 			// 1) 娉ㄥ唽鏈哄彴锛堟帹鑽愶細鍏堟敞鍐� id + 鏈哄櫒鍚嶇О锛�
 			RetentionPolicy defP; defP.mode = RetainMode::ByCount; defP.maxSamples = 200;
-			m_pCollector->registryAddMachine(EQ_ID_Bonder1, "Bonder1", defP);
-			m_pCollector->registryAddMachine(EQ_ID_Bonder2, "Bonder2", defP);
-			m_pCollector->registryAddMachine(EQ_ID_VACUUMBAKE, "鍓嶇儤鐑�", defP);
-			m_pCollector->registryAddMachine(EQ_ID_BAKE_COOLING, "鐑樼儰鍐峰嵈", defP);
+			m_pCollector->registryAddMachine(MID_Bonder1, "Bonder1", defP);
+			m_pCollector->registryAddMachine(MID_Bonder2, "Bonder2", defP);
+			m_pCollector->registryAddMachine(MID_VacuumBakeA, "鍓嶇儤-A", defP);
+			m_pCollector->registryAddMachine(MID_VacuumBakeB, "鍓嶇儤-B", defP);
+			m_pCollector->registryAddMachine(MID_BakeCoolingA, "鍚庣儤-A", defP);
+			m_pCollector->registryAddMachine(MID_BakeCoolingB, "鍚庣儤-B", defP);
 
 
 			// 2) 涓洪�氶亾璁剧疆鈥滄洸绾垮悕绉扳��
 			auto& dataTypes = CServoUtilsTool::getEqDataTypes();
-			auto& bonderTypes = dataTypes[EQ_ID_Bonder1];
+			auto& bonderTypes = dataTypes[MID_Bonder1];
 			for (size_t i = 0; i < bonderTypes.size(); ++i) {
-				m_pCollector->buffersSetChannelName(EQ_ID_Bonder1, i + 1, bonderTypes[i].c_str());
-				m_pCollector->buffersSetChannelName(EQ_ID_Bonder2, i + 1, bonderTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_Bonder1, i + 1, bonderTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_Bonder2, i + 1, bonderTypes[i].c_str());
 			}
 
-			auto& vacuumbakeTypes = dataTypes[EQ_ID_VACUUMBAKE];
+			auto& vacuumbakeTypes = dataTypes[MID_VacuumBakeA];
 			for (size_t i = 0; i < vacuumbakeTypes.size(); ++i) {
-				m_pCollector->buffersSetChannelName(EQ_ID_VACUUMBAKE, i + 1, vacuumbakeTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_VacuumBakeA, i + 1, vacuumbakeTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_VacuumBakeB, i + 1, vacuumbakeTypes[i].c_str());
 			}
 
-			auto& coolingTypes = dataTypes[EQ_ID_BAKE_COOLING];
+			auto& coolingTypes = dataTypes[MID_BakeCoolingA];
 			for (size_t i = 0; i < coolingTypes.size(); ++i) {
-				m_pCollector->buffersSetChannelName(EQ_ID_VACUUMBAKE, i + 1, coolingTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_BakeCoolingA, i + 1, coolingTypes[i].c_str());
+				m_pCollector->buffersSetChannelName(MID_BakeCoolingB, i + 1, coolingTypes[i].c_str());
 			}
 		}
 	}
+
+	uint32_t CMaster::SlotToMid(int eqid, int slot)
+	{
+		if (eqid == EQ_ID_Bonder1) {
+			return MID_Bonder1;
+		}
+
+		if (eqid == EQ_ID_Bonder2) {
+			return MID_Bonder2;
+		}
+
+		if (eqid == EQ_ID_VACUUMBAKE) {
+			if(slot == 1)
+				return MID_VacuumBakeA;
+			if (slot == 2)
+				return MID_VacuumBakeB;
+		}
+
+		if (eqid == EQ_ID_BAKE_COOLING) {
+			if (slot == 1)
+				return MID_BakeCoolingA;
+			if (slot == 3)
+				return MID_BakeCoolingB;
+		}
+
+		return 0;
+	}
 }

--
Gitblit v1.9.3