From 94ad631d316da04c46266ddb1fc6e63e6f8f2fae Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 17 三月 2026 17:34:15 +0800
Subject: [PATCH] feat: 同步协议处理、前端交互与业务联调改动

---
 Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs
index 1d4186b..3bf744f 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs
@@ -24,7 +24,7 @@
 
     public bool Process(IMemoryStore memoryStore, ProtocolTemplate template, ProtocolRuntimeState runtimeState)
     {
-        var configRules = ResolveConfiguredRules();
+        var configRules = ResolveConfiguredRules(template);
         var autoRules = ResolveAutoRulesFromTemplate(template, configRules.Select(x => x.RuleId));
 
         bool changed = false;
@@ -37,12 +37,15 @@
         return changed;
     }
 
-    private IReadOnlyList<MirrorAckRuleOptions> ResolveConfiguredRules()
+    private IReadOnlyList<MirrorAckRuleOptions> ResolveConfiguredRules(ProtocolTemplate template)
     {
         if (_options.WcsLineRuleIds.Count == 0)
         {
             return Array.Empty<MirrorAckRuleOptions>();
         }
+
+        // 鎸夋ā鏉垮瓧娈佃繃婊よ鍒欙紝閬垮厤鎶� 11001 杩欑被瑙勫垯閿欒濂楀埌鍏朵粬绾夸綋妯℃澘涓娿��
+        var keySet = new HashSet<string>(template.Fields.Select(x => x.FieldKey), StringComparer.OrdinalIgnoreCase);
 
         return _options.WcsLineRuleIds
             .Where(x => !string.IsNullOrWhiteSpace(x))
@@ -51,6 +54,7 @@
                 string.Equals(x.RuleId, ruleId, StringComparison.OrdinalIgnoreCase)))
             .Where(rule => rule != null)
             .Select(rule => rule!)
+            .Where(rule => keySet.Contains(rule.WcsAckFieldKey) && keySet.Contains(rule.PlcStbFieldKey))
             .ToArray();
     }
 

--
Gitblit v1.9.3