|
@@ -476,7 +476,7 @@ namespace SAGA.MBI.DataArrange
|
|
|
/// <summary>
|
|
|
/// 判断物理世界岗位与本地岗位是否一致
|
|
|
/// 依据1:BimID
|
|
|
- /// 依据2:CADID
|
|
|
+ /// --暂时不使用,依据2:CADID
|
|
|
/// </summary>
|
|
|
/// <param name="cduty"></param>
|
|
|
/// <param name="lduty"></param>
|
|
@@ -489,6 +489,8 @@ namespace SAGA.MBI.DataArrange
|
|
|
do
|
|
|
{
|
|
|
result = lbimId == cbimId;
|
|
|
+ result = !cbimId.IsOnlyDutyNoModelBIMID() && result;
|
|
|
+ break;
|
|
|
//本地的bimid一定是完整的。
|
|
|
//有对应的bimId,或者bimId的格式正确。
|
|
|
if (result||!cbimId.IsOnlyDutyNoModelBIMID())
|
|
@@ -518,6 +520,51 @@ namespace SAGA.MBI.DataArrange
|
|
|
return result;
|
|
|
}
|
|
|
/// <summary>
|
|
|
+ /// 判断物理世界岗位与本地岗位是否一致
|
|
|
+ /// 依据1:BimID
|
|
|
+ /// 依据2:CADID
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="cduty"></param>
|
|
|
+ /// <param name="lduty"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static bool IsEqualDutyByCADID(MRevitEquipBase cduty, MRevitEquipBase lduty)
|
|
|
+ {
|
|
|
+ string lbimId = lduty.BimID;
|
|
|
+ string cbimId = cduty.BimID;
|
|
|
+ bool result = false;
|
|
|
+ do
|
|
|
+ {
|
|
|
+ result = lbimId == cbimId;
|
|
|
+ //本地的bimid一定是完整的。
|
|
|
+ //bimId的格式正确。直接返回,不进行CADID判断
|
|
|
+ if (!cbimId.IsOnlyDutyNoModelBIMID())
|
|
|
+ {
|
|
|
+ result = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ string lcadId, ccadId;
|
|
|
+ //bimId格式不正确,判断CADID
|
|
|
+ //设备
|
|
|
+ if (lduty is MEquipment lequip && cduty is MEquipment cequip)
|
|
|
+ {
|
|
|
+ lcadId = lequip.CADID;
|
|
|
+ ccadId = cequip.CADID;
|
|
|
+ result = lcadId.IsNotNullEmpty() && lcadId == ccadId;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //部件
|
|
|
+ if (lduty is MEquipmentPart lpart && cduty is MEquipmentPart cpart)
|
|
|
+ {
|
|
|
+ lcadId = lpart.CADID;
|
|
|
+ ccadId = cpart.CADID;
|
|
|
+ result = lcadId.IsNotNullEmpty() && lcadId == ccadId;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } while (false);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
/// 新旧文件对比过后,需要添加的数据
|
|
|
/// </summary>
|
|
|
public static void WrapperContext(CalcContext cloudContext, CalcContext localContext)
|
|
@@ -531,10 +578,14 @@ namespace SAGA.MBI.DataArrange
|
|
|
foreach (var lduty in localDutys)
|
|
|
{
|
|
|
var cdutys = cloudDutys.Where(t=> IsEqualCloudDuty2LocalDuty(t,lduty)).ToList();
|
|
|
+ var cdutysByCADID= cloudDutys.Where(t => IsEqualDutyByCADID(t, lduty)).ToList();
|
|
|
MRevitEquipBase cduty = null;
|
|
|
//如果对应多个岗位,仅保留信息点多的岗位,删除其它岗位
|
|
|
- if (cdutys.Any())
|
|
|
+ if (cdutys.Any()||cdutysByCADID.Count==1)
|
|
|
{
|
|
|
+ //如果通过CADID只找到一个,当做对应岗位处理。
|
|
|
+
|
|
|
+ cdutys.AddRange(cdutysByCADID);
|
|
|
if (cdutys.Count() > 1)
|
|
|
{//信息点的个数从大到小排序
|
|
|
cdutys.Sort((x, y) => { return -x.CloundJObject.Count.CompareTo(y.CloundJObject.Count); });
|
|
@@ -547,6 +598,7 @@ namespace SAGA.MBI.DataArrange
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ //通过CADID找到多个,也当做新增处理 190823 tjc
|
|
|
//请求Duty,Bim数据库中的id,待建模型清单产生的
|
|
|
var dutyId = lduty.GetDutyBIMRelationByBIM()?.DutyId;
|
|
|
if (dutyId.IsNotNullEmpty())
|