Browse Source

mxg:数据检查 添加检查结果汇总页

mengxiangge 6 years ago
parent
commit
a2b35978e9

BIN
MBI/MBIResource/DataCheck/模型检查结果输出格式-模版.xlsx


+ 53 - 0
MBI/SAGA.MBI/ToolsData/CheckBase/CheckOperation.cs

@@ -12,6 +12,8 @@ using NPOI.SS.UserModel;
 using SAGA.MBI.ToolsData.ModeCheck;
 using SAGA.DotNetUtils.Extend;
 using SAGA.DotNetUtils.Logger;
+using SAGA.DotNetUtils.Others;
+using SAGA.MBI.DataArrange;
 using SAGA.MBI.ToolsData.DataCheck;
 
 namespace SAGA.MBI.ToolsData.CheckBase
@@ -101,6 +103,7 @@ namespace SAGA.MBI.ToolsData.CheckBase
             DCRExport.ClearWorkbook();
             //保存
             list.ForEach(t => t.Export2());
+            ExportResultSummary(list);
             DCRExport.Save(context.SavePath, DCRExport.GetWorkbook());
             DataCheckProgressBarClient.UpdateBigTip("结束");
         }
@@ -124,5 +127,55 @@ namespace SAGA.MBI.ToolsData.CheckBase
             }
             return path;
         }
+        /// <summary>
+        /// 检查结果汇总
+        /// </summary>
+        /// <param name="list"></param>
+        /// <param name="context"></param>
+        private static void ExportResultSummary(List<ICheckBase> list)
+        {
+            var mbuilding = DalProjectTree.GetSelectedBuilding();
+            string buildingName = mbuilding.ToString();
+            var floors = DalProjectTree.GetSelectedFloors();
+            try
+            {
+                IWorkbook book = DCRExport.GetWorkbook();
+                string sheetName = "检查结果汇总";
+                ISheet sheet = book.GetSheet(sheetName);
+                //本次检查的建筑体
+                var row0 = sheet.GetRow(0);
+                row0.AddCell(1,buildingName,hasStyle:false);
+                //本次检查楼层
+                var row1 = sheet.GetRow(1);
+                row1.AddCell(1,string.Join("、",floors.Select(t=>t.ToString())));
+
+                #region 添加数据
+                int index = 3;
+
+                foreach (var result in list)
+                {
+                    //数量过多,只显示有问题的
+                    //if (result.IsRight) continue;
+                    index++;
+                    IRow rowN = sheet.CreateRow(index);
+                    DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;
+                    int i = 0;
+                    rowN.AddCell(i++, result.Name, DataCheckNPOIStyle.HyperLink,true);
+                    //链接到指定页签
+                    var cellN0 = rowN.GetCell(i-1);
+                    cellN0.Hyperlink = DCRExport.CreateLink(result.Name);
+                    rowN.AddCell(i++, result.RIsChecked?"是":"否", style);
+                    //检查,并且结果为不通过
+                    string rowN4 = !result.IsRight&&result.RIsChecked ? "包含问题数据" : "";
+                    rowN.AddCell(i++, rowN4, style);
+                }
+                #endregion
+
+            }
+            catch (Exception e)
+            {
+                MessageShowBase.Show(e);
+            }
+        }
     }
 }

+ 29 - 0
MBI/SAGA.MBI/ToolsData/CheckBase/DCNPOIExtend.cs

@@ -75,6 +75,9 @@ namespace SAGA.MBI.ToolsData.CheckBase
                 case DataCheckNPOIStyle.Error:
                     cellstyle = LeftCenterRedStyle(workbook);
                     break;
+                case DataCheckNPOIStyle.HyperLink:
+                    cellstyle = HyperLinkStyle(workbook);
+                    break;
                 default:
                     cellstyle = LeftCenterBlackStyle(workbook);
                     break;
@@ -82,6 +85,30 @@ namespace SAGA.MBI.ToolsData.CheckBase
             return cellstyle;
         }
         /// <summary>
+        /// 设置样式为超级链接
+        /// </summary>
+        /// <param name="workbook"></param>
+        /// <returns></returns>
+        private static ICellStyle HyperLinkStyle(IWorkbook workbook)
+        {
+            ICellStyle style = workbook.CreateCellStyle();
+            //设置单元格的样式:水平对齐左侧垂直居中
+            style.Alignment = HorizontalAlignment.Left;
+            style.VerticalAlignment = VerticalAlignment.Center;
+            //新建一个字体样式对象
+
+            IFont font = workbook.CreateFont();
+            font.Underline = FontUnderlineType.Single;
+            //设置字体颜色
+            font.Color = HSSFColor.Blue.Index;
+            font.FontHeight = 12;
+            //使用SetFont方法将字体样式添加到单元格样式中 
+
+            style.SetFont(font);
+            //将新的样式赋给单元格
+            return style;
+        }
+        /// <summary>
         /// 设置样式为水平左侧垂直居中,红色字体
         /// </summary>
         /// <param name="workbook"></param>
@@ -186,5 +213,7 @@ namespace SAGA.MBI.ToolsData.CheckBase
         Title,
         Content,
         Error,
+        HyperLink,
+        None
     }
 }

+ 9 - 0
MBI/SAGA.MBI/ToolsData/CheckBase/ICheckBase.cs

@@ -17,7 +17,16 @@ namespace SAGA.MBI.ToolsData.CheckBase
     public interface ICheckBase
     {
         string Name { get; set; }
+
+        /// <summary>
+        /// 是否检查
+        /// </summary>
         bool RIsChecked { get; set; }
+
+        /// <summary>
+        /// 是否通过较验
+        /// </summary>
+        bool IsRight { get; set; }
         void Check2(CheckContext context);
 
         void Export2();

+ 1 - 1
MBI/SAGA.MBI/ToolsData/DataCheck/BIMDuplicationCheck.cs

@@ -61,7 +61,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
             var bybimidGroups = dutys.GroupBy(t => t.BimID);
             var exceptionGroups = bybimidGroups.Where(t => t.Count() >= 2 && !t.Key.IsOnlyDutyNoModelBIMID());
             Results.AddRange(GetCheckResult(exceptionGroups));
-            return Results.Count==0;
+            return Results.All(t => t.IsRight);
         }
 
         private List<BIMDuplicationCheckResult> GetCheckResult(IEnumerable<IGrouping<string, MRevitEquipBase>> groups)

+ 1 - 1
MBI/SAGA.MBI/ToolsData/DataCheck/DutyFMInfoCheck.cs

@@ -92,7 +92,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
                     break;
                 }
             }
-            return result;
+            return Results.All(t => t.IsRight);
         }
         //忽略的信息点
         private List<string> m_IgnoreList=new List<string>(){ "EquipID" ,"EquipName"};

+ 1 - 1
MBI/SAGA.MBI/ToolsData/DataCheck/MissDutyOrModeCheck.cs

@@ -61,7 +61,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
             {
                 Results.AddRange(GetCheckResult(mfloor));
             }
-            return result;
+            return Results.All(t => t.IsRight);
         }
 
         private List<MissDutyOrModeCheckResult> GetCheckResult(MFloor mFloor)

+ 1 - 1
MBI/SAGA.MBI/ToolsData/DataCheck/QRCodeContextCheck.cs

@@ -87,7 +87,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
                     break;
                 }
             }
-            return result;
+            return Results.All(t => t.IsRight);
         }
 
         private QRCodeContextCheckResult GetCheckResult(MEquipFM fm,MQRCode qrcode)

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/ColumnCheck.cs

@@ -57,7 +57,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                     Results.Add(result);
                 }
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
 
         /// <summary>

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/ConnectorCheck.cs

@@ -58,7 +58,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                 var list = Check(signResult);
                 Results.AddRange(list);
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
 
         }
         /// <summary>

+ 11 - 0
MBI/SAGA.MBI/ToolsData/ModeCheck/DCRExport.cs

@@ -83,6 +83,17 @@ namespace SAGA.MBI.ToolsData.ModeCheck
             return m_ExportWorkBook;
         }
         /// <summary>
+        /// 联接到指定Sheet页
+        /// </summary>
+        /// <param name="sheetName"></param>
+        /// <returns></returns>
+        public static XSSFHyperlink CreateLink(string sheetName)
+        {
+            XSSFHyperlink link=new XSSFHyperlink(HyperlinkType.Document);
+            link.Address = $"'{sheetName}'!A1";
+            return link;
+        }
+        /// <summary>
         /// 重置workbook
         /// </summary>
         public static void ClearWorkbook()

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/ElementRangeCheck.cs

@@ -56,7 +56,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
             {
                 CheckCurrentFloor(signResult);
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
         /// <summary>
         /// 检查当前层

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/EquipmentInSpaceCheck.cs

@@ -60,7 +60,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                     Results.Add(result);
                 }
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
 
         /// <summary>

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/EquipmentPartRefEqCheck.cs

@@ -60,7 +60,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                     Results.Add(result);
                 }
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
 
         /// <summary>

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/FamilyNameCheck.cs

@@ -96,7 +96,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
 
                 }
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
         /// <summary>
         /// 获取检测结果

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/SagaPositionCheck.cs

@@ -68,7 +68,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                 Results.Add(tempResult);
             }
 
-            return sequenceResult;
+            return Results.All(t => t.IsRight);
         }
 
         public override void Correct()

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/SagaSignCheck.cs

@@ -137,7 +137,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
 
                 }
             }
-            return allRight;
+            return Results.All(t => t.IsRight);
         }
 
         #endregion

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/SystemCheck.cs

@@ -56,7 +56,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                 var list = Check(signResult);
                 Results.AddRange(list);
             }
-            return unitResult;
+            return Results.All(t => t.IsRight);
         }
 
         private List<DCR_MEPSystem> m_MEPSystems;

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/UnitCheck.cs

@@ -44,7 +44,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                     unitResult = ismmUnit;
                 }
             }
-            IsRight = unitResult;
+            IsRight =  Results.All(t => t.IsRight); ;
             return IsRight;
         }