From 93f5c18553c036768ef6202547eeb899511fd50a Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期五, 25 十月 2024 11:16:54 +0800
Subject: [PATCH] 修改阀门匹配逻辑

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs |   68 +++++++++++++++++++++++----------
 1 files changed, 47 insertions(+), 21 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs
index 21c70a2..04fb8e8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs
@@ -211,29 +211,55 @@
                 return true;
             }
             HStation.Vmo.AssetsValveMainVmo vmo = null;
-            int firstCount = 0;
             //鍙e緞鏈�灏忓樊鍊�
             // 缁濆鍖归厤
-
             adaptingManageVmos = adaptingManageVmos.Where(x => x.Type.ToString() == input.ValveType).ToList();
             var nameMatching = adaptingManageVmos.Where(x => GetIntersect(x.KeyWord == string.Empty
-    ? x.Name : x.KeyWord, input.ModelType) >= 2)
+    ? x.Name : x.KeyWord, input.ModelType) >= 1)
     .OrderByDescending(x => GetIntersect(x.KeyWord == string.Empty ? x.Name : x.KeyWord, input.ModelType))
     .ToList();//浣跨敤鍨嬪彿鍚嶆垨鑰呭叧閿瓧鎵惧嚭鐩稿悓瀛楃鍦�2浠ヤ笂骞朵笖杩涜鎺掑簭
             if (nameMatching.Count > 0)
             {
-                /*      var absoluteMatch = nameMatching.Where(i =>
-                ((i.Caliber == null) || i.Caliber == input.Diameter) &&
-                 ((input.MaterialName == null && i.MaterialName == null) || i.MaterialName == input.MaterialName)).ToList();
-                      if (absoluteMatch.Count > 1)
-                      {
-                      }*/
+                var absoluteMatching = nameMatching.Where(i =>
+              ((i.Caliber == null) || Math.Abs(Convert.ToInt64(i.Caliber) - input.Diameter) <= _caliberTolerance) &&  //鐩村緞绾︽潫
+               i.MaterialName == input.Material &&  //鏉愭枡绾︽潫
+                 (i.ValveLift == input.ValveLift || Math.Abs(Convert.ToInt64(i.ValveLift) - Convert.ToInt64(input.ValveLift)) <= _valveLift)  //闃�闂ㄥ紑搴︾害鏉�
+                ).ToList();
+                if (absoluteMatching.Count > 1)
+                {
+                    return false;
+                }
+                else if (absoluteMatching.Count == 1)
+                {
+                    vmo = absoluteMatching.First();
+                }
+                else
+                    return false;
+            }
+            else if (nameMatching.Count == 1)
+            {
+                vmo = nameMatching.First();
             }
             else
             {
+                var absoluteMatching = adaptingManageVmos.Where(i =>
+          ((i.Caliber == null) || Math.Abs(Convert.ToInt64(i.Caliber) - input.Diameter) <= _caliberTolerance) &&  //鐩村緞绾︽潫
+           i.MaterialName == input.Material &&  //鏉愭枡绾︽潫
+             (i.ValveLift == input.ValveLift || Math.Abs(Convert.ToInt64(i.ValveLift) - Convert.ToInt64(input.ValveLift)) <= _valveLift)  //闃�闂ㄥ紑搴︾害鏉�
+            ).ToList();
+                if (absoluteMatching.Count > 1)
+                {
+                    return false;
+                }
+                else if (absoluteMatching.Count == 1)
+                {
+                    vmo = absoluteMatching.First();
+                }
+                else
+                    return false;
             }
 
-            var absoluteMatch = adaptingManageVmos.Where(i =>
+            /*var absoluteMatch = adaptingManageVmos.Where(i =>
               ((i.Caliber == null) || i.Caliber == input.Diameter) &&
                ((input.Material == null && i.MaterialName == null) || i.MaterialName == input.Material)).ToList();
             if (absoluteMatch.Count > 1)
@@ -247,10 +273,10 @@
                     return false;//閫氳繃鍨嬪彿鍚嶆病鏈夋壘鍒�,鍒欒涓烘病鏈夊尮閰嶅埌
                 foreach (var item in allMatchingList)
                 {
-                    /*   if (item.IsDefault)
-                       {
-                           vmo = item;
-                       }*/
+                    if (item.IsDefault)
+                    {
+                        vmo = item;
+                    }
                 }
                 vmo = allMatchingList.First();//濡傛灉娌℃湁璁剧疆榛樿鍊�,鍒欓粯璁よ繑鍥炲尮閰嶅瓧绗︽渶澶氱殑涓�鏉℃暟鎹�
             }
@@ -299,16 +325,16 @@
                         return false;//閫氳繃鍨嬪彿鍚嶆病鏈夋壘鍒�,鍒欒涓烘病鏈夊尮閰嶅埌
                     foreach (var item in allMatchingList)
                     {
-                        /*    if (item.IsDefault)
-                            {
-                                vmo = item;
-                            }*/
+                        if (item.IsDefault)
+                        {
+                            vmo = item;
+                        }
                     }
                     vmo = allMatchingList.First();//濡傛灉娌℃湁璁剧疆榛樿鍊�,鍒欓粯璁よ繑鍥炲尮閰嶅瓧绗︽渶澶氱殑涓�鏉℃暟鎹�
                 }
             }
             //鍙e緞鍜屾潗鏂欓兘娌℃湁鍖归厤涓�,灏辩敤鍨嬪彿鍚嶅尮閰�
-            firstCount = 0;
+            firstCount = 0;*/
             if (vmo != null)
             {
                 input.MatchingMinorLoss = vmo.Coefficient;
@@ -316,7 +342,7 @@
                 input.MatchingDiameter = vmo.Caliber;
                 input.MatchingMaterial = vmo.MaterialName;
                 input.MatchingModelType = vmo.Name;
-                //  input.MatchingValveSetting =
+                input.MatchingValveSetting = vmo.ValveSetting;
                 input.MatchingValveLift = vmo.ValveLift;
                 input.MatchingValveType = vmo.Type.ToString();
                 return true;
@@ -723,7 +749,7 @@
         public static int GetIntersect(string str1, string str2)
         {
             if (str1 == null || str2 == null) return 0;
-
+            var a = string.Join("", str1.Intersect(str2)).Count();
             return string.Join("", str1.Intersect(str2)).Count();
         }
     }

--
Gitblit v1.9.3