Browse Source

mxg:添加数据检查《与业务空间有所在关系的设备的实际位置和业务空间位置不一致检查》

mengxiangge 6 years ago
parent
commit
d810667ac5

+ 1 - 1
MBI/SAGA.MBI/JsonConvert/PEPCodeConvert.cs

@@ -69,7 +69,7 @@ namespace SAGA.MBI.JsonConvert
                         item.EnumSource = subj.GetValueEx("dataSource");
                         item.Remark = (string)subj["note"];
                         item.Classification = (string)subj["classification"];
-                        item.IsShow = (string)subj["visible"] =="true";
+                        item.IsShow = (bool)subj["visible"];
                         item.CollectionCmptCode = DalInfoCode.GetInputType(item.InputType);
                         tb.PropertyDefineItems.Add(item);
                     }

+ 0 - 2
MBI/SAGA.MBI/Model/MISpace.cs

@@ -113,8 +113,6 @@ namespace SAGA.MBI.Model
         public override CompositeItem SetFixedProperty()
         {
             CompositeItem item = new PropertyCollection();
-            string code = this.EquipClassCode;
-            PropertyDefineTb pdtb = PEPCodeConvert.GetPropertyDefineTb(code);
 
             Property property = new Property(this);
             //属性窗格用到的信息

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

@@ -82,6 +82,7 @@ namespace SAGA.MBI.ToolsData.CheckBase
             list.Add(new QRCodeContextCheck());
             list.Add(new MissDutyOrMode());
             list.Add(new BIMDuplicationCheck());
+            list.Add(new SpaceEquipFloorCheck());
             list.ForEach(t =>
             {
                 t.RIsChecked = true;

+ 61 - 45
MBI/SAGA.MBI/ToolsData/DataCheck/SpaceEquipFloorCheck.cs

@@ -4,26 +4,18 @@
  * 创建日期:2018/10/23 15:08:55
  * ==============================================================================*/
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using Autodesk.Revit.DB;
-using Autodesk.Revit.DB.Mechanical;
 using Newtonsoft.Json.Linq;
 using NPOI.SS.UserModel;
-using SAGA.DotNetUtils.Extend;
 using SAGA.DotNetUtils.Others;
 using SAGA.MBI.DataArrange;
-using SAGA.MBI.JsonConvert;
 using SAGA.MBI.Model;
 using SAGA.MBI.RequestData;
-using SAGA.MBI.Tools;
 using SAGA.MBI.ToolsData.CheckBase;
 using SAGA.MBI.ToolsData.ModeCheck;
-using SAGA.RevitUtils.Extends;
 using SAGA.RevitUtils.MEP;
+using System;
+using System.Collections.Generic;
+using System.Linq;
 
 namespace SAGA.MBI.ToolsData.DataCheck
 {
@@ -34,7 +26,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
     {
         public SpaceEquipFloorCheck()
         {
-            Name = "业务空间所在楼层与设备所在楼层一致性检查";
+            Name = "与业务空间有所在关系的设备的实际位置和业务空间位置不一致检查";
         }
         [DataCheckProcessAspect]
         public override bool Check()
@@ -66,9 +58,9 @@ namespace SAGA.MBI.ToolsData.DataCheck
             }
             return Results.All(t => t.IsRight);
         }
-        private List<MissDutyOrModeCheckResult> GetCheckResult(MFloor mFloor)
+        private List<SpaceEquipFloorCheckResult> GetCheckResult(MFloor mFloor)
         {
-            List<MissDutyOrModeCheckResult> list = new List<MissDutyOrModeCheckResult>();
+            List<SpaceEquipFloorCheckResult> list = new List<SpaceEquipFloorCheckResult>();
 
             try
             {
@@ -77,7 +69,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
                 //本层下的业务空间
                 foreach (GraphRelationType businessSpaceType in m_BusinessSpaceTypes)
                 {
-                    var spaces = DalCommon.DownLoadCouldData(mFloor.Id, new[] { businessSpaceType.Code });
+                    list.AddRange(GetCheckResult(equips,businessSpaceType,mFloor));
                 }
             }
             catch (Exception e)
@@ -85,17 +77,14 @@ namespace SAGA.MBI.ToolsData.DataCheck
             }
             return list;
         }
-
-
-        //忽略的信息点
-        private List<string> m_IgnoreList = new List<string>() { "EquipID", "EquipName" };
-        private DutyFMInfoCheckResult GetCheckResult(List<MRevitEquipBase> equipsA, GraphRelationType businessSpaceType, MFloor mFloor)
+        private List<SpaceEquipFloorCheckResult> GetCheckResult(List<MRevitEquipBase> equipsA, GraphRelationType businessSpaceType, MFloor mFloor)
         {
-            DutyFMInfoCheckResult result = null;
+            List<SpaceEquipFloorCheckResult> list = new List<SpaceEquipFloorCheckResult>();
             try
             {
                 var spacesB = DalCommon.DownLoadCouldData(mFloor.Id, new[] { businessSpaceType.Code });
-                JObject jobject = new JObject();
+                JObject jObject = new JObject();
+                JArray jArray=new JArray();
                 foreach (MRevitEquipBase space in spacesB)
                 {
                     JObject graphJObject = new JObject();
@@ -103,20 +92,56 @@ namespace SAGA.MBI.ToolsData.DataCheck
                     graphJObject.Add("relType", businessSpaceType.Rel_Type);
                     graphJObject.Add("side", "fromId");
                     graphJObject.Add("toId", space.Id);
-                    jobject.Add(graphJObject);
+                    jArray.Add(graphJObject);
                 }
-                var equipsC= CommonConvert.FloorQuery_SubSet(mFloor.Id, jobject, new[] { businessSpaceType.Code });
+                jObject.Add("include",jArray);
+                var equipsC = CommonConvert.FloorQuery_SubSet(mFloor.Id, jObject, new[] { businessSpaceType.Code });
                 var equipsD = equipsC.Except(equipsA, new CommonEqualComparer<MRevitEquipBase>((a, b) => a.Id == b.Id));
+                foreach (MRevitEquipBase equipBase in equipsD)
+                {
+                    SpaceEquipFloorCheckResult mode = new SpaceEquipFloorCheckResult();
+                    mode.SpaceType = businessSpaceType.Name;
+                    var space = QuerySpaceByEquipId(businessSpaceType, equipBase.Id,mFloor.Id);
+                    mode.SpaceName = space?.ToString();
+                    mode.SpaceId = space?.Id;
+                    mode.SpaceFloorName = mFloor.ToString();
+                    mode.EquipName = equipBase.ToString();
+                    mode.EquipId = equipBase.Id;
+                    mode.EquipFloorName = DalProjectTree.GetFloorNameByFloorId(equipBase.FloorId);
+                    mode.IsRight = false;
+                    mode.RMessage = "业务空间所在楼层与该空间内设备的所在楼层信息不一致。";
+                    list.Add(mode);
 
+                }
             }
             catch (Exception e)
             {
-                return result;
+                return list;
             }
-            return result;
+            return list;
         }
-
-
+        /// <summary>
+        /// 由设备id,查询业务空间
+        /// </summary>
+        /// <param name="businessSpaceType"></param>
+        /// <param name="equipId">与空间有EquipinSpace关联的设备</param>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        private MRevitEquipBase QuerySpaceByEquipId( GraphRelationType businessSpaceType, string equipId,string floorId)
+        {
+            JObject jObject = new JObject();
+            JArray jArray = new JArray();
+            JObject graphJObject = new JObject();
+            graphJObject.Add("graphType", businessSpaceType.Code);
+            graphJObject.Add("relType", businessSpaceType.Rel_Type);
+            graphJObject.Add("side", "fromId");
+            graphJObject.Add("fromId", equipId);
+            jArray.Add(graphJObject);
+            jObject.Add("include", jArray);
+            var items = CommonConvert.FloorQuery_SubSet(floorId, jObject, new[] { businessSpaceType.Code });
+            return items.FirstOrDefault();
+        }
+        
 
         #endregion
 
@@ -135,18 +160,8 @@ namespace SAGA.MBI.ToolsData.DataCheck
                 //添加 共检查XXX条数据,未通过检查的如下 提示
                 IRow rowTip = sheet.CreateRow(index - 1);
                 rowTip.AddCell(0, $"总检查{Results.Count}条数据,未通过检查的如下", DataCheckNPOIStyle.Title);
-                //IRow row4 = sheet.CreateRow(index);
-                //row4.HeightInPoints = 15;
 
-                //row4.AddCell(0, "楼层本地名称", DataCheckNPOIStyle.Title);
-                //row4.AddCell(1, "文件名", DataCheckNPOIStyle.Title);
-                //row4.AddCell(2, "文件地址", DataCheckNPOIStyle.Title);
-                //row4.AddCell(3, "族名称", DataCheckNPOIStyle.Title);
-                //row4.AddCell(4, "类型", DataCheckNPOIStyle.Title);
-                //row4.AddCell(5, "ID", DataCheckNPOIStyle.Title);
-                //row4.AddCell(6, "通过", DataCheckNPOIStyle.Title);
-                //row4.AddCell(7, "备注(失败原因)", DataCheckNPOIStyle.Title);
-                foreach (DutyFMInfoCheckResult result in Results)
+                foreach (SpaceEquipFloorCheckResult result in Results)
                 {
                     //数量过多,只显示有问题的
                     if (result.IsRight) continue;
@@ -154,12 +169,13 @@ namespace SAGA.MBI.ToolsData.DataCheck
                     IRow rowN = sheet.CreateRow(index);
                     DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;
                     int i = 0;
-                    rowN.AddCell(i++, result.FloorName, style);
-                    rowN.AddCell(i++, result.FMId, style);
-                    rowN.AddCell(i++, result.FMName, style);
-                    rowN.AddCell(i++, result.DutyId, style);
-                    rowN.AddCell(i++, result.DutyName, style);
-                    rowN.AddCell(i++, result.BIMID, style);
+                    rowN.AddCell(i++, result.SpaceType, style);
+                    rowN.AddCell(i++, result.SpaceName, style);
+                    rowN.AddCell(i++, result.SpaceId, style);
+                    rowN.AddCell(i++, result.SpaceFloorName, style);
+                    rowN.AddCell(i++, result.EquipName, style);
+                    rowN.AddCell(i++, result.EquipId, style);
+                    rowN.AddCell(i++, result.EquipFloorName, style);
                     string rowN4 = result.IsRight ? "通过" : "不通过";
                     rowN.AddCell(i++, rowN4, style);
                     rowN.AddCell(i++, result.RMessage, style);

+ 2 - 1
MBI/SAGA.MBI/WinView/ModeInfoMaintenance/PWGInstace.cs

@@ -47,7 +47,8 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
             PropertyDefineTb pdtb = PEPCodeConvert.GetPropertyDefineTb(code);
             foreach (var pdItem in pdtb.PropertyDefineItems)
             {
-                if (!pdItem.IsShow) continue;
+                //此时默认都显示,后期会添加选择控制,只显示推荐还是全部显示
+                //if (!pdItem.IsShow) continue;
                 if (equipment is MISpace)
                 {
                     //空间