1
lixiaojun
2024-10-08 cc9b9802eb626bced11edbd39c31f3c13db740f9
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs
@@ -17,12 +17,19 @@
            bool IsMaching = false;
            var pumpMain = new BLL.PumpMain();
            var adaptingManage = new BLL.AdaptingManage();
            var pipeLineManage = new BLL.PipeLineManage();
            var pipeLineManage = new BLL.PipeLineMain();
            var valveMain = new BLL.ValveMain();
            var elbowMain = new BLL.ElbowMain();
            var threeLinkMain = new BLL.ThreeLinkMain();
            var fourLinkMain = new BLL.FourLinkMain();
            var allPump = await pumpMain.GetAll();
            var allAdapting = await adaptingManage.GetAll();
            var allPipeLine = await pipeLineManage.GetAll();
            var allValve = await valveMain.GetAll();
            var allElbow = await elbowMain.GetAll();
            var allThreeLink = await threeLinkMain.GetAll();
            var allFourLink = await fourLinkMain.GetAll();
            //泵匹配
            foreach (var item in assetsAutoMatchingView.PumpMatchingList)
            {
@@ -34,7 +41,7 @@
            //三通匹配
            foreach (var item in assetsAutoMatchingView.ThreelinkMatchingList)
            {
                if (MatchingThreelink(item, allAdapting))
                if (MatchingThreelink(item, allThreeLink))
                {
                    IsMaching = true;
                }
@@ -42,7 +49,7 @@
            //四通匹配
            foreach (var item in assetsAutoMatchingView.FourlinkMatchingList)
            {
                if (MatchingFourlink(item, allAdapting))
                if (MatchingFourlink(item, allFourLink))
                {
                    IsMaching = true;
                }
@@ -64,9 +71,9 @@
                }
            }
            //弯头匹配
            foreach (var item in assetsAutoMatchingView.ElbowsMatchingList)
            foreach (var item in assetsAutoMatchingView.ElbowMatchingList)
            {
                if (MatchingElbow(item, allAdapting))
                if (MatchingElbow(item, allElbow))
                {
                    IsMaching = true;
                }
@@ -188,12 +195,12 @@
            // 绝对匹配
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((i.Caliber == null) || i.Caliber == input.Diameter) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
               ((input.Material == null) || i.Material == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
                {
                    int commonCount = GetIntersect(input.ModelType, range.Name);
                    int commonCount = GetIntersect(input.ModelType, range.KeyWord);
                    if (commonCount > firstCount)
                    {
                        vmo = range;
@@ -226,7 +233,7 @@
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        if (range.Material == "默认")
                        if (range.Material == null)
                        {
                            materialList.Add(range);
                        }
@@ -244,7 +251,7 @@
                    firstCount = 0;
                    foreach (var material in materialList)
                    {
                        int commonCount = GetIntersect(input.ModelType, material.Name);
                        int commonCount = GetIntersect(input.ModelType, material.KeyWord);
                        if (commonCount > firstCount)
                        {
                            vmo = material;
@@ -259,7 +266,7 @@
            {
                foreach (var item in adaptingManageVmos)
                {
                    int commonCount = GetIntersect(input.ModelType, item.Name);
                    int commonCount = GetIntersect(input.ModelType, item.KeyWord);
                    if (commonCount > firstCount)
                    {
                        vmo = item;
@@ -275,27 +282,27 @@
                input.MatchingMaterial = vmo.Material;
                input.MatchingModelType = vmo.Name;
                //  input.MatchingValveSetting =
                input.MatchingValveType = vmo.Type.ToString();
                input.MatchingValveType = vmo.SeriesType.ToString();
                return true;
            }
            return false;
        }
        //管道匹配
        public static bool MatchingPipe(PipeMatchingViewModel input, List<Vmo.PipeLineManageVmo> pipeLineManageVmos)
        public static bool MatchingPipe(PipeMatchingViewModel input, List<Vmo.PipeLineMainVmo> pipeLineManageVmos)
        {
            Vmo.PipeLineManageVmo vmo = null;
            Vmo.PipeLineMainVmo vmo = null;
            int StartCount = 0;
            //口径最小差值
            // 绝对匹配
            var absoluteMatch = pipeLineManageVmos.Where(i =>
            ((i.Caliber == null) || i.Caliber == input.Diameter) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
               ((input.Material == null) || i.MaterialName == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
                {
                    int commonCount = GetIntersect(input.ModelType, range.Name);
                    int commonCount = GetIntersect(input.ModelType, range.KeyWord);
                    if (commonCount > StartCount)
                    {
                        vmo = range;
@@ -320,7 +327,7 @@
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        int commonCount = GetIntersect(input.Material, range.Material);
                        int commonCount = GetIntersect(input.Material, range.MaterialName);
                        if (commonCount > StartCount)
                        {
                            vmo = range;
@@ -334,7 +341,7 @@
            {
                foreach (var item in pipeLineManageVmos)
                {
                    int commonCount = GetIntersect(input.ModelType, item.Name);
                    int commonCount = GetIntersect(input.ModelType, item.KeyWord);
                    if (commonCount > StartCount)
                    {
                        vmo = item;
@@ -363,7 +370,7 @@
                        break;
                }
                input.MatchingDbId = vmo.ID.ToString();
                input.MatchingMaterial = vmo.Material;
                input.MatchingMaterial = vmo.MaterialName;
                input.MatchingModelType = vmo.Name;
                input.MatchingMinorLoss = vmo.Coefficient;
                return true;
@@ -372,20 +379,20 @@
        }
        //弯头匹配
        public static bool MatchingElbow(ElbowMatchingViewModel input, List<Vmo.AdaptingManageVmo> adaptingManageVmos)
        public static bool MatchingElbow(ElbowMatchingViewModel input, List<Vmo.ElbowMainVmo> adaptingManageVmos)
        {
            Vmo.AdaptingManageVmo vmo = null;
            Vmo.ElbowMainVmo vmo = null;
            int firstCount = 0;
            //口径最小差值
            // 绝对匹配
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((input.Caliber == null && i.Caliber == null) || i.Caliber == input.Caliber) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
               ((input.Material == null) || i.MaterialName == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
                {
                    int commonCount = GetIntersect(input.ModelType, range.Name);
                    int commonCount = GetIntersect(input.ModelType, range.KeyWord);
                    if (commonCount > firstCount)
                    {
                        vmo = range;
@@ -414,17 +421,17 @@
             .ToList();
                if (rangeMatch != null && rangeMatch.Count > 0)
                {
                    var materialList = new List<Vmo.AdaptingManageVmo>();
                    var materialList = new List<Vmo.ElbowMainVmo>();
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        if (range.Material == "默认")
                        if (range.MaterialName == null)
                        {
                            materialList.Add(range);
                        }
                        else
                        {
                            int commonCount = GetIntersect(input.Material, range.Material);
                            int commonCount = GetIntersect(input.Material, range.MaterialName);
                            if (commonCount > firstCount)
                            {
                                materialList.Add(range);
@@ -436,7 +443,7 @@
                    firstCount = 0;
                    foreach (var material in materialList)
                    {
                        int commonCount = GetIntersect(input.ModelType, material.Name);
                        int commonCount = GetIntersect(input.ModelType, material.KeyWord);
                        if (commonCount > firstCount)
                        {
                            vmo = material;
@@ -463,7 +470,7 @@
            {
                input.MatchingMinorLoss = vmo.Coefficient;
                input.MatchingDbId = vmo.ID.ToString();
                input.MatchingMaterial = vmo.Material;
                input.MatchingMaterial = vmo.MaterialName;
                input.MatchingModelType = vmo.Name;
                return true;
            }
@@ -471,15 +478,15 @@
        }
        //三通匹配
        public static bool MatchingThreelink(ThreelinkMatchingViewModel input, List<Vmo.AdaptingManageVmo> adaptingManageVmos)
        public static bool MatchingThreelink(ThreelinkMatchingViewModel input, List<Vmo.ThreeLinkMainVmo> adaptingManageVmos)
        {
            Vmo.AdaptingManageVmo vmo = null;
            Vmo.ThreeLinkMainVmo vmo = null;
            int firstCount = 0;
            //口径最小差值
            // 绝对匹配
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((input.Caliber == null && i.Caliber == null) || i.Caliber == input.Caliber) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
               ((input.Material == null) || i.MaterialName == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
@@ -513,17 +520,17 @@
             .ToList();
                if (rangeMatch != null && rangeMatch.Count > 0)
                {
                    var materialList = new List<Vmo.AdaptingManageVmo>();
                    var materialList = new List<Vmo.ThreeLinkMainVmo>();
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        if (range.Material == "默认")
                        if (range.MaterialName == null)
                        {
                            materialList.Add(range);
                        }
                        else
                        {
                            int commonCount = GetIntersect(input.Material, range.Material);
                            int commonCount = GetIntersect(input.Material, range.MaterialName);
                            if (commonCount > firstCount)
                            {
                                materialList.Add(range);
@@ -562,7 +569,7 @@
            {
                input.MatchingMinorLoss = vmo.Coefficient;
                input.MatchingDbId = vmo.ID.ToString();
                input.MatchingMaterial = vmo.Material;
                input.MatchingMaterial = vmo.MaterialName;
                input.MatchingModelType = vmo.Name;
                return true;
            }
@@ -570,15 +577,15 @@
        }
        //四通匹配
        public static bool MatchingFourlink(FourlinkMatchingViewModel input, List<Vmo.AdaptingManageVmo> adaptingManageVmos)
        public static bool MatchingFourlink(FourlinkMatchingViewModel input, List<Vmo.FourLinkMainVmo> adaptingManageVmos)
        {
            Vmo.AdaptingManageVmo vmo = null;
            Vmo.FourLinkMainVmo vmo = null;
            int firstCount = 0;
            //口径最小差值
            // 绝对匹配
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((input.Caliber == null && i.Caliber == null) || i.Caliber == input.Caliber) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
               ((input.Material == null) || i.MaterialName == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
@@ -612,17 +619,17 @@
             .ToList();
                if (rangeMatch != null && rangeMatch.Count > 0)
                {
                    var materialList = new List<Vmo.AdaptingManageVmo>();
                    var materialList = new List<Vmo.FourLinkMainVmo>();
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        if (range.Material == "默认")
                        if (range.MaterialName == null)
                        {
                            materialList.Add(range);
                        }
                        else
                        {
                            int commonCount = GetIntersect(input.Material, range.Material);
                            int commonCount = GetIntersect(input.Material, range.MaterialName);
                            if (commonCount > firstCount)
                            {
                                materialList.Add(range);
@@ -649,7 +656,7 @@
            {
                foreach (var item in adaptingManageVmos)
                {
                    int commonCount = GetIntersect(input.ModelType, item.Name);
                    int commonCount = GetIntersect(input.ModelType, item.KeyWord);
                    if (commonCount > firstCount)
                    {
                        vmo = item;
@@ -661,7 +668,7 @@
            {
                input.MatchingMinorLoss = vmo.Coefficient;
                input.MatchingDbId = vmo.ID.ToString();
                input.MatchingMaterial = vmo.Material;
                input.MatchingMaterial = vmo.MaterialName;
                input.MatchingModelType = vmo.Name;
                return true;
            }