Ver código fonte

mxg:模型检查:设备族编码检查,修改为按族名称进行分组后显示

mengxiangge 6 anos atrás
pai
commit
b2be4737f2
1 arquivos alterados com 26 adições e 2 exclusões
  1. 26 2
      MBI/SAGA.MBI/ToolsData/ModeCheck/FamilyNameCheck.cs

+ 26 - 2
MBI/SAGA.MBI/ToolsData/ModeCheck/FamilyNameCheck.cs

@@ -54,6 +54,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
         {
             bool unitResult = true;
             var ccategories = DataCheckRule.GetCodeCheckCategories();
+            var list = new List<FamilyNameCheckResult>();
             foreach (SagaSignCheckResult signResult in RBase.Results)
             {
                 var document = signResult.RDocument;
@@ -78,7 +79,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                                 result.RBase = signResult;
                                 //由于数量太多,只显示族名称
                                 result.Id = "-";
-                                Results.Add(result);
+                                list.Add(result);
                                 //foreach (var tempElem in subElements)
                                 //{
                                 //    var tempResult = result?.Clone();
@@ -96,6 +97,8 @@ namespace SAGA.MBI.ToolsData.ModeCheck
 
                 }
             }
+            //按族名称,对楼层进行合并显示
+            GroupByFamilyName(list);
             return Results.All(t => t.IsRight);
         }
         /// <summary>
@@ -131,6 +134,26 @@ namespace SAGA.MBI.ToolsData.ModeCheck
             }
             return result;
         }
+
+
+        private void GroupByFamilyName(List<FamilyNameCheckResult> modes)
+        {
+            var groupByFamilyName = modes.GroupBy(t => t.FamilyName);
+            foreach (IGrouping<string, FamilyNameCheckResult> grouping in groupByFamilyName)
+            {
+                var item = grouping.ToList().FirstOrDefault();
+                if (item == null) continue;
+
+                FamilyNameCheckResult mode = new FamilyNameCheckResult();
+                mode.FamilyName = grouping.Key;
+                mode.Type = item.Type;
+                mode.IsRight = item.IsRight;
+                if (!mode.IsRight)
+                    mode.RMessage =
+                        $"使用到该设备族的楼层:{string.Join("、", grouping.Select(t => ((SagaSignCheckResult) t.RBase).RFloorName).ToArray())}";
+                Results.Add(mode);
+            }
+        }
         //[DataCheckProcessAspect]
         public override void Export()
         {
@@ -163,7 +186,8 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                     SagaSignCheckResult rbase = result.RBase as SagaSignCheckResult;
                     if (rbase == null)
                         continue;
-                    if (result.IsRight) continue;
+                    //全部显示
+                    //if (result.IsRight) continue;
                     index++;
                     IRow rowN = sheet.CreateRow(index);
                     DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;