|
@@ -395,23 +395,75 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
|
|
{
|
|
{
|
|
FloorName = floorName;
|
|
FloorName = floorName;
|
|
FMList = new ObservableCollection<MEquipFM>();
|
|
FMList = new ObservableCollection<MEquipFM>();
|
|
|
|
+ //1,首先按方案1过滤
|
|
|
|
+ //1.a,如果有值,过滤没有关联岗位的。
|
|
|
|
+ //1.b,1.a有值,推荐1.a;没有值,推荐1;
|
|
|
|
+ //2,1没有值,按方案2过滤
|
|
|
|
+ var tempList = list.Where(t => IsMathPlan1(t, equip));
|
|
|
|
+ if (tempList.Any())
|
|
|
|
+ {
|
|
|
|
+ var nodutyList = tempList.Where(t => t.EquipmentId.IsNotNullEmpty());
|
|
|
|
+ if (nodutyList.Any())
|
|
|
|
+ {
|
|
|
|
+ foreach (MEquipFM fm in nodutyList)
|
|
|
|
+ {
|
|
|
|
+ FMList.Add(fm);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ foreach (MEquipFM fm in tempList)
|
|
|
|
+ {
|
|
|
|
+ FMList.Add(fm);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ foreach (var item in list)
|
|
|
|
+ {
|
|
|
|
+ if (IsMathPlan2(item, equip))
|
|
|
|
+ FMList.Add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
- foreach (var item in list)
|
|
|
|
|
|
+ }
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 推荐方案1,同设备族and距离近
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="equipFm"></param>
|
|
|
|
+ /// <param name="equip"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ private bool IsMathPlan1(MEquipFM equipFm, MRevitEquipBase equip)
|
|
|
|
+ {
|
|
|
|
+ bool result = false;
|
|
|
|
+ List<Func<MEquipFM, MRevitEquipBase, bool>> funcs = new List<Func<MEquipFM, MRevitEquipBase, bool>>();
|
|
|
|
+ funcs.Add(IsLocationNear);
|
|
|
|
+ while (true)
|
|
{
|
|
{
|
|
- if (IsMath(item, equip))
|
|
|
|
- FMList.Add(item);
|
|
|
|
|
|
+ if (equipFm.FamilyCode != equip.Family.Code)
|
|
|
|
+ break;
|
|
|
|
+ result = funcs.Any(t => t(equipFm, equip));
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
-
|
|
|
|
- private bool IsMath(MEquipFM equipFm, MRevitEquipBase equip)
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 推荐方案2,同设备族and没有与其它岗位关联,
|
|
|
|
+ /// 同一楼层or点位同一楼层or安装位置同一楼层or本地名称或本地编码不为null,且相等
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="equipFm"></param>
|
|
|
|
+ /// <param name="equip"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ private bool IsMathPlan2(MEquipFM equipFm, MRevitEquipBase equip)
|
|
{
|
|
{
|
|
bool result = false;
|
|
bool result = false;
|
|
- List<Func< MEquipFM , MRevitEquipBase ,bool>> funcs=new List<Func<MEquipFM, MRevitEquipBase, bool>>();
|
|
|
|
|
|
+ List<Func<MEquipFM, MRevitEquipBase, bool>> funcs = new List<Func<MEquipFM, MRevitEquipBase, bool>>();
|
|
funcs.Add(IsSameFloor);
|
|
funcs.Add(IsSameFloor);
|
|
funcs.Add(IsSamePointFloor);
|
|
funcs.Add(IsSamePointFloor);
|
|
funcs.Add(IsSameInstallLocation);
|
|
funcs.Add(IsSameInstallLocation);
|
|
funcs.Add(IsSameLocalNameOrId);
|
|
funcs.Add(IsSameLocalNameOrId);
|
|
- funcs.Add(IsLocationNear);
|
|
|
|
while (true)
|
|
while (true)
|
|
{
|
|
{
|
|
//不推荐已经绑定过的
|
|
//不推荐已经绑定过的
|
|
@@ -419,7 +471,7 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
|
|
break;
|
|
break;
|
|
if (equipFm.FamilyCode != equip.Family.Code)
|
|
if (equipFm.FamilyCode != equip.Family.Code)
|
|
break;
|
|
break;
|
|
- result=funcs.Any(t => t(equipFm, equip));
|
|
|
|
|
|
+ result = funcs.Any(t => t(equipFm, equip));
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
return result;
|
|
return result;
|