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