فهرست منبع

mxg:上传逻辑添加待建模清单数据

mengxiangge 6 سال پیش
والد
کامیت
df3845433f

+ 50 - 24
MBI/SAGA.MBI/DataArrange/DalUploadFloor.cs

@@ -24,6 +24,7 @@ using System.Collections.ObjectModel;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using SAGA.MBI.FileStream;
 using SAGA.RevitUtils.MEP;
 
 namespace SAGA.MBI.DataArrange
@@ -68,7 +69,7 @@ namespace SAGA.MBI.DataArrange
                     ProjectLogManager.ClearFile(tuple.Item1);
                     //更新拓扑计算结果版本
                     GplotWatch.RefreshAll(DateTime.Now);
-                   
+
                     j++;
                 }
                 else
@@ -454,17 +455,6 @@ namespace SAGA.MBI.DataArrange
             }
             return list;
         }
-       
-        /// <summary>
-        /// 上传
-        /// </summary>
-        public static void Upload()
-        {
-            //常规计算
-            //常规上传
-            //拓扑计算
-            //拓扑上传
-        }
         /// <summary>
         /// 获取所有的拓扑图类型
         /// </summary>
@@ -497,7 +487,7 @@ namespace SAGA.MBI.DataArrange
             cloudContext.SetState(DocumentChangedOperator.None);
             localContext.SetState(DocumentChangedOperator.None);
             #region Modify Add
-            foreach (var lduty in localContext.GetAllDutys())
+            foreach (var lduty in localDutys)
             {
                 string bimId = lduty.BimID;
                 var cdutys = cloudDutys.Where(t => t.BimID == bimId).ToList();
@@ -514,11 +504,20 @@ namespace SAGA.MBI.DataArrange
                             cdutys[i].Operator = DocumentChangedOperator.Delete;
                         }
                     }
-                    cduty = cdutys.FirstOrDefault();
                 }
-
+                else
+                {
+                    //请求Duty,Bim数据库中的id,待建模型清单产生的
+                    var dutyId = lduty.GetDutyBIMRelationByBIM()?.DutyId;
+                    if (dutyId.IsNotNullEmpty())
+                    {
+                        cdutys = cloudDutys.Where(t => t.Id == dutyId).ToList();
+                    }
+                }
+                cduty = cdutys.FirstOrDefault();
                 if (cduty == null)
-                {//找不到物理世界对应的岗位,即为添加
+                {
+                    //找不到物理世界对应的岗位,即为添加
                     lduty.Operator = DocumentChangedOperator.Add;
                 }
                 else
@@ -540,7 +539,6 @@ namespace SAGA.MBI.DataArrange
                     }
                 }
 
-
                 //处理设备所在空间的关系
                 OperateBaseRelation(localContext, lduty);
             }
@@ -551,8 +549,8 @@ namespace SAGA.MBI.DataArrange
             //CloudDuty,有两种操作,更新和删除。更新等价于None
             foreach (var duty in cloudDutys)
             {
-                //物理世界修改,不做处理
-                if (duty.Operator == DocumentChangedOperator.Modified)
+                //物理世界修改,不做处理或台账转过来的岗位
+                if (duty.BimID.IsOnlyDutyNoModelBIMID() || duty.Operator == DocumentChangedOperator.Modified)
                 {
                     duty.Operator = DocumentChangedOperator.None;
                     continue;
@@ -563,11 +561,11 @@ namespace SAGA.MBI.DataArrange
             }
 
             #endregion
-            
-            
+
+
         }
         /// <summary>
-        /// 处理基本关系
+        /// 删除服务器基本关系
         /// </summary>
         private static void DelServiceRelation(CalcContext localContext, MRevitEquipBase mode)
         {
@@ -578,7 +576,7 @@ namespace SAGA.MBI.DataArrange
             var beaconrelations = localContext.RltBeaconinElementSps;
             if (mode is MBSpace)
             {
-                var equipRelation=new RltEquipInSpace(null,mode.Id){Operator = DocumentChangedOperator.Delete};
+                var equipRelation = new RltEquipInSpace(null, mode.Id) { Operator = DocumentChangedOperator.Delete };
                 equiprelations.Add(equipRelation);
                 var beaconRelation = new RltBeaconinElementSp(null, mode.Id) { Operator = DocumentChangedOperator.Delete };
                 beaconrelations.Add(beaconRelation);
@@ -593,7 +591,7 @@ namespace SAGA.MBI.DataArrange
                 var equipRelation = new RltEquipInSpace(mode.Id, null) { Operator = DocumentChangedOperator.Delete };
                 equiprelations.Add(equipRelation);
             }
-            
+
 
             #endregion
         }
@@ -647,5 +645,33 @@ namespace SAGA.MBI.DataArrange
 
             #endregion
         }
+        /// <summary>
+        /// 上传岗位和基本关系数据操作
+        /// </summary>
+        /// <param name="floor"></param>
+        public static void UploadDataOperate(MFloor floor)
+        {
+            CalcContext serviceContext = DalCommon.DownLoadCouldData(floor);
+            CalcContext localContext = ObjectCalc.Calc(floor);
+            WrapperContext(serviceContext, localContext);
+            serviceContext.Upload();
+            localContext.Upload();
+        }
+
+        /// <summary>
+        /// 上传或下载完成之后的操作
+        /// </summary>
+        public static void AfterUploadOperate(MFloor floor, bool isunlock = true)
+        {
+            //请除Duty和BIMID的关系
+            MBIAssistHelper.DeleteFloorRelation(floor.Id);
+            if (isunlock)
+                //解锁
+                DalLock.UnLockFloor(floor.Id, false);
+            //上传成功后清除日志数据
+            ProjectLogManager.ClearFiles(floor.Id);
+            //删除备份文件
+            FloorFileOperate.Del000BakFile(floor.FullPath);
+        }
     }
 }

+ 2 - 2
MBI/SAGA.MBI/Extend/StringExtend.cs

@@ -26,7 +26,7 @@ namespace SAGA.MBI.Tools
 
         /// <summary>
         /// 云平台BIMId转化为Revit Id
-        /// 去掉文件名前缀,找不到返回值为0
+        /// 去掉文件名前缀,找不到返回值为-1
         /// </summary>
         /// <returns></returns>
         public static int GetBIMID(this string cbimId)
@@ -42,7 +42,7 @@ namespace SAGA.MBI.Tools
             catch (Exception e)
             {
                 Console.WriteLine(e);
-                return 0;
+                return -1;
             }
 
         }

+ 2 - 2
MBI/SAGA.MBI/Model/MFloor.cs

@@ -466,7 +466,7 @@ namespace SAGA.MBI.Model
             if (downloadResult == true)
             {
                 //清除旧的日志
-                ProjectLogManager.ClearFiles(Id);
+                DalUploadFloor.AfterUploadOperate(this,false);
                 var unlockResult = LockConvert.UnLockFloor(this.Id, ref msg2);
                 if (unlockResult)
                 {
@@ -486,7 +486,7 @@ namespace SAGA.MBI.Model
             else if (downloadResult == null)
             {
                 //清除旧的日志
-                ProjectLogManager.ClearFiles(Id);
+                DalUploadFloor.AfterUploadOperate(this, false);
                 var unlockResult = LockConvert.UnLockFloor(this.Id, ref msg2);
                 if (unlockResult)
                 {

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

@@ -88,7 +88,7 @@ namespace SAGA.MBI.ToolsData.DataCheck
             {
                 string bimid = group.Key;
                 var revitId=bimid.GetBIMID();
-                if (revitId == 0) return list;
+                if (revitId == -1) return list;
                 string floorId = bimid.GetFloorId();
                 if (floorId.IsNullOrEmpty()) return list;
                 string floorName = DalProjectTree.GetFloorNameByFloorId(floorId);

+ 5 - 16
MBI/SAGA.MBI/WinView/Upload/VMUploadModeManage.cs

@@ -130,31 +130,20 @@ namespace SAGA.MBI.WinView.Upload
 
 
                                 #region 同步空间名称
-                                var document = ExternalDataWrapper.Current.App.OpenDocumentFile(ufloor.MFloor.FullPath);
+                                var document = ExternalDataWrapper.Current.App.OpenDocumentFile(floor.FullPath);
                                 MBIModelInfoManager.SyncPlatformToRevit(document);
                                 #endregion
 
 
-                                #region 准备并上传数据
-                                CalcContext serviceContext = DalCommon.DownLoadCouldData(ufloor.MFloor);
-                                CalcContext localContext = ObjectCalc.Calc(floor);
-                                DalUploadFloor.WrapperContext(serviceContext, localContext);
-                                serviceContext.Upload();
-                                localContext.Upload();
+                                #region 上传数据
+                                DalUploadFloor.UploadDataOperate(floor);
                                 #endregion
 
                                 #region 上传文件及上传完成后续动作
 
-                                if (FloorFileOperate.UploadFile(ufloor.MFloor.ToString(), ufloor.MFloor.FullPath, count, i))
+                                if (FloorFileOperate.UploadFile(floor.ToString(), floor.FullPath, count, i))
                                 {
-                                    //请除Duty和BIMID的关系
-                                    MBIAssistHelper.DeleteFloorRelation(ufloor.MFloor.Id);
-                                    //解锁
-                                    DalLock.UnLockFloor(ufloor.MFloor.Id, false);
-                                    //上传成功后清除日志数据
-                                    ProjectLogManager.ClearFiles(ufloor.MFloor.Id);
-                                    //删除备份文件
-                                    FloorFileOperate.Del000BakFile(ufloor.MFloor.FullPath);
+                                    DalUploadFloor.AfterUploadOperate(floor);
                                     //上传完日志反馈
                                     successList.Add(floorName);
                                     failList.Remove(floorName);