Browse Source

mxg:垃圾数据检查《物理世界与模型一致性检查》添加 检查不通过检查 是否由于没有上传模型引起的。

mengxiangge 6 năm trước cách đây
mục cha
commit
17d6ba5a4f
1 tập tin đã thay đổi với 32 bổ sung16 xóa
  1. 32 16
      MBI/SAGA.MBI/ToolsData/DataCheck/MissDutyOrModeCheck.cs

+ 32 - 16
MBI/SAGA.MBI/ToolsData/DataCheck/MissDutyOrModeCheck.cs

@@ -14,6 +14,7 @@ using Autodesk.Revit.DB.Mechanical;
 using Newtonsoft.Json.Linq;
 using NPOI.SS.UserModel;
 using SAGA.DotNetUtils.Extend;
+using SAGA.DotNetUtils.Logger;
 using SAGA.DotNetUtils.Others;
 using SAGA.MBI.Calc;
 using SAGA.MBI.DataArrange;
@@ -54,7 +55,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
         /// </summary>
         /// <returns></returns>
         private bool GetCheckResult()
-        {            
+        {
             bool result = true;
             var floors = DalProjectTree.GetSelectedFloors(true);
             foreach (var mfloor in floors)
@@ -71,8 +72,8 @@ namespace SAGA.MBI.ToolsData.DataCheck
             try
             {
                 var tuple = CorrectLossDuty.GetCheckResult(mFloor);
-                list.AddRange(GetCheckResult(tuple.Item1,true));
-                list.AddRange(GetCheckResult(tuple.Item2,false));
+                list.AddRange(GetCheckResult(tuple.Item1, true));
+                list.AddRange(GetCheckResult(tuple.Item2, false));
             }
             catch (Exception e)
             {
@@ -80,16 +81,20 @@ namespace SAGA.MBI.ToolsData.DataCheck
             return list;
         }
 
-        private List<MissDutyOrModeCheckResult> GetCheckResult(CalcContext calcContext,bool isadd)
+        private List<MissDutyOrModeCheckResult> GetCheckResult(CalcContext calcContext, bool isadd)
         {
             List<MissDutyOrModeCheckResult> list = new List<MissDutyOrModeCheckResult>();
             try
             {
+                IEnumerable<IGrouping<string, DocumentChangedLogMode>> logsGroupByBimId=null;
                 //if (isadd)
-                //{
-                //    calcContext.OpenDocument();
-                //}
-                Action<List<MRevitEquipBase>, List<MissDutyOrModeCheckResult>, DCElementType> convetAction = (dutys, l,type) =>
+                {
+                    //检测有日志文件,才上传
+                    var logs = DalLogOperate.GetLogs(calcContext.MFloor.Id);
+                    //按id分组后的日志
+                    logsGroupByBimId = logs.GroupBy(t => t.Id);
+                }
+                Action<List<MRevitEquipBase>, List<MissDutyOrModeCheckResult>, DCElementType> convetAction = (dutys, l, type) =>
                 {
                     foreach (var duty in dutys)
                     {
@@ -97,24 +102,35 @@ namespace SAGA.MBI.ToolsData.DataCheck
                         result.FloorName = calcContext.MFloor.ToString();
                         result.IsRight = false;
                         result.Type = type;
+                        result.BIMID = duty.BimID.GetBIMID().ToString();
                         if (isadd)
                         {
-                            result.BIMID = duty.BimID.GetBIMID().ToString();
-                            result.RMessage = "无岗位,在模型中有可识别构件";
+                            result.RMessage = "模型中有可识别构件,但物理世界未找到对应岗位";
+                            
                         }
                         else
                         {
                             result.DutyId = duty.Id;
                             result.DutyName = duty.ToString();
-                            result.RMessage = "有岗位,在模型中找不到对应构件";
+                            result.RMessage = "岗位bimID有值,但在模型中未找到的对应构件";
+                        }
+                        //判断是否为没有上传模型引起的
+                        var logs = logsGroupByBimId?.FirstOrDefault(t => t.Key == result.BIMID);
+                        if (logs != null)
+                        {
+                            DocumentChangedLogMode log = DalLogOperate.CombineLogs(logs.ToList());
+                            if (log != null)
+                            {
+                                result.RMessage = "未上传模型";
+                            }
                         }
                         l.Add(result);
                     }
                 };
-                convetAction(calcContext.MEquipments.ToList<MRevitEquipBase>(), list,DCElementType.Equipment);
-                convetAction(calcContext.MEquipmentParts.ToList<MRevitEquipBase>(), list,DCElementType.EuipmentPart);
-                convetAction(calcContext.MBeacons.ToList<MRevitEquipBase>(), list,DCElementType.Beacon);
-                convetAction(calcContext.MSpaces.ToList<MRevitEquipBase>(), list,DCElementType.Space);
+                convetAction(calcContext.MEquipments.ToList<MRevitEquipBase>(), list, DCElementType.Equipment);
+                convetAction(calcContext.MEquipmentParts.ToList<MRevitEquipBase>(), list, DCElementType.EuipmentPart);
+                convetAction(calcContext.MBeacons.ToList<MRevitEquipBase>(), list, DCElementType.Beacon);
+                convetAction(calcContext.MSpaces.ToList<MRevitEquipBase>(), list, DCElementType.Space);
             }
             catch (Exception e)
             {
@@ -144,7 +160,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
 
                 #region 添加数据
                 int index = 3;
-                
+
                 foreach (MissDutyOrModeCheckResult result in Results)
                 {
                     //数量过多,只显示有问题的