Browse Source

修改返修绑定支持多前缀

callm 18 hours ago
parent
commit
6269881551

+ 12 - 0
UAS_MES_ZT/.workbuddy/memory/2026-10-21.md

@@ -0,0 +1,12 @@
+# 2026-10-21
+
+## Special_ReSNBD / Special_ReSNBDNoStep 防呆规则改造
+- 文件:FunctionCode/Special/Special_ReSNBD.cs、FunctionCode/Special/Special_ReSNBDNoStep.cs(约 145-175 行)
+- 需求:productsnrule.PSR_LENGTH 支持多条长度规则,以 `|` 分隔,SN 长度满足其中任意一条即视为通过。
+- 实现:原 `sncode.Text.Length != int.Parse(PSR_LENGTH)` 改为按 `|` 拆分数组 + `int.TryParse` 逐条比对,命中任一长度即 LengthPass=true;否则仍报「长度错误,不满足产品防呆规则」。
+- 备注:校验不通过时仍走「包含工单号 + 结尾 Z/W」的兜底判断。
+
+## 修正:多值字段应为 psr_prefix(非 PSR_LENGTH)
+- 用户澄清:productsnrule 里含 `|` 多值的是 **psr_prefix**,PSR_LENGTH 保持单值原逻辑。
+- 最终实现(两个文件一致):`psr_prefix.Split('|')` 拆成数组,逐个 Trim 后判 `sncode.Text.StartsWith(...)`,命中任一即通过;全不命中才报「前缀错误,不满足产品防呆规则」。
+- PSR_LENGTH 仍为 `sncode.Text.Length != int.Parse(PSR_LENGTH)` 单值比对,未改动。

+ 13 - 1
UAS_MES_ZT/FunctionCode/Special/Special_ReSNBD.cs

@@ -149,7 +149,19 @@ namespace UAS_MES_NEW.Special
                             string psr_prefix = dt.Rows[0]["psr_prefix"].ToString();
                             string PSR_LENGTH = dt.Rows[0]["PSR_LENGTH"].ToString();
 
-                            if (!sncode.Text.StartsWith(psr_prefix))
+                            //psr_prefix支持多个前缀,以|分隔,满足其中任意一个即可
+                            string[] psr_prefix_Arr = psr_prefix.Split('|');
+                            bool PrefixPass = false;
+                            foreach (string prefixItem in psr_prefix_Arr)
+                            {
+                                string prefixValue = prefixItem.Trim();
+                                if (prefixValue != "" && sncode.Text.StartsWith(prefixValue))
+                                {
+                                    PrefixPass = true;
+                                    break;
+                                }
+                            }
+                            if (!PrefixPass)
                             {
                                 Err = "序列号:" + sncode.Text + " 前缀错误,不满足产品防呆规则";
                             }

+ 13 - 1
UAS_MES_ZT/FunctionCode/Special/Special_ReSNBDNoStep.cs

@@ -149,7 +149,19 @@ namespace UAS_MES_NEW.Special
                             string psr_prefix = dt.Rows[0]["psr_prefix"].ToString();
                             string PSR_LENGTH = dt.Rows[0]["PSR_LENGTH"].ToString();
 
-                            if (!sncode.Text.StartsWith(psr_prefix))
+                            //psr_prefix支持多个前缀,以|分隔,满足其中任意一个即可
+                            string[] psr_prefix_Arr = psr_prefix.Split('|');
+                            bool PrefixPass = false;
+                            foreach (string prefixItem in psr_prefix_Arr)
+                            {
+                                string prefixValue = prefixItem.Trim();
+                                if (prefixValue != "" && sncode.Text.StartsWith(prefixValue))
+                                {
+                                    PrefixPass = true;
+                                    break;
+                                }
+                            }
+                            if (!PrefixPass)
                             {
                                 Err = "序列号:" + sncode.Text + " 前缀错误,不满足产品防呆规则";
                             }