123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- /* ==============================================================================
- * 功能描述:MatchFMRequest
- * 创 建 者:Garrett
- * 创建日期:2018/4/13 11:50:30
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Autodesk.Revit.DB;
- using Newtonsoft.Json.Linq;
- using SAGA.DotNetUtils;
- using SAGA.DotNetUtils.Extend;
- using SAGA.DotNetUtils.Http;
- using SAGA.DotNetUtils.Logger;
- using SAGA.MBI.Common;
- using SAGA.MBI.DataArrange;
- using SAGA.MBI.Model;
- using SAGA.MBI.RequestData;
- using SAGA.MBI.Tools;
- using SAGA.RevitUtils;
- using SAGA.RevitUtils.MEP;
- using SAGA.RevitUtils.Extends;
- namespace SAGA.MBI.JsonConvert
- {
- /// <summary>
- /// MatchFMRequest
- /// </summary>
- public class MatchFMConvert
- {
- /// <summary>
- /// 根据设备id创建一个设备所关联的资产
- /// </summary>
- /// <returns></returns>
- public static string CreateFMById(MRevitEquipBase equipment)
- {
- string fmid = "";
- string json = MatchFMRequest.CreateFMById(equipment);
- if (json.IsSuccessRequest())
- {
- JObject jObject = JObject.Parse(json);
- fmid = (string)jObject["FmId"];
- }
- return fmid;
- }
- /// <summary>
- /// 从扫楼数据库获取所有资产,目前定范围为建筑
- /// </summary>
- /// <returns></returns>
- public static List<MEquipFM> GetAllEquipFmFromScanBuilding(string buildId)
- {
- List<MEquipFM> list = new List<MEquipFM>();
- Log4Net.Debug("开始读取扫楼数据");
- string json = MatchFMRequest.GetAllEquipFmFromScanBuilding(buildId);
- if (!json.IsRequestHasItem()) return list;
- Log4Net.Debug("开始扫楼数据解析");
- JObject jObject = JObject.Parse(json);
- foreach (JObject fmItem in jObject["FmList"])
- {
- try
- {
- MEquipFM mEquipFm = GetMEquipFm(fmItem);
- //贴码类型3 撕码和-5 已撕码 的过滤掉
- if (mEquipFm != null && mEquipFm.CodeType != 3 && mEquipFm.CodeType != -5)
- list.Add(mEquipFm);
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- }
- Log4Net.Debug("扫楼数据排序");
- //排序
- list.Sort(new CommonComparer<MEquipFM>((a, b) =>
- {
- return CommonTool.GetFloorSequenceByFloorId(b.FloorId)
- .CompareTo(CommonTool.GetFloorSequenceByFloorId(a.FloorId));
- }));
- Log4Net.Debug("扫楼数据整理完毕");
- return list;
- }
- /// <summary>
- /// 由FMID获取资产的信息
- /// </summary>
- /// <param name="fmId"></param>
- /// <returns></returns>
- public static MEquipFM GetFMInfoByFMId(string fmId)
- {
- if (fmId.IsNullOrEmpty()) return null;
- string json = MatchFMRequest.GetFMInfoFromScanBuilding(fmId);
- if (!json.IsRequestHasItem()) return null;
- JObject jObject = JObject.Parse(json);
- foreach (JObject fmItem in jObject["FmList"])
- {
- try
- {
- MEquipFM mEquipFm = GetMEquipFm(fmItem);
- return mEquipFm;
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- }
- return null;
- }
- /// <summary>
- /// 由资产返回值转为实体类
- /// </summary>
- /// <param name="fmItem"></param>
- /// <returns></returns>
- private static MEquipFM GetMEquipFm(JObject fmItem)
- {
- string distantImageStr = "带二维码的设备远景照片";
- try
- {
- MEquipFM mEquipFm = new MEquipFM();
- mEquipFm.FamilyCode = fmItem.GetValueEx("Family");
- mEquipFm.FamilyName = fmItem.GetValueEx("FamilyName");
- mEquipFm.Id = fmItem.GetValueEx("FmId");
- mEquipFm.Name = fmItem.GetValueEx("FmName");
- mEquipFm.EquipmentId = fmItem.GetValueEx("EquipmentId");
- mEquipFm.FloorId = fmItem.GetValueEx("FloorId");
- mEquipFm.FloorName = fmItem.GetValueEx("FloorName").IsNotNullEmpty() ? fmItem.GetValueEx("FloorName") : DalProjectTree.GetFloorNameByFloorId(mEquipFm.FloorId);
- mEquipFm.PointId = fmItem.GetValueEx("PointId");
- mEquipFm.PointName = fmItem.GetValueEx("PointName");
- mEquipFm.PointFloorId = fmItem.GetValueEx("PointFloorId");
- mEquipFm.CodeType = fmItem.GetValueEx("CodeType").ToInt();
- mEquipFm.Note = fmItem.GetValueEx("Note");
- mEquipFm.SpaceId = fmItem.GetValueEx("SpaceId");
- mEquipFm.X = fmItem.GetValueEx("X").ToDouble();
- mEquipFm.Y = fmItem.GetValueEx("Y").ToDouble();
- if (fmItem.IsContainKeyEx("Infos"))
- {
- var fmInfos = (JObject)fmItem["Infos"];
- if (fmInfos.IsContainKeyEx("Pic"))
- {
- foreach (JObject imageObj in fmInfos["Pic"])
- {
- mEquipFm.ImageList.Add(new MServiceAttachment(imageObj.GetValueEx("key"), imageObj.GetValueEx("name"), imageObj.GetValueEx("type").ConvertToServiceImageType()));
- }
- mEquipFm.DistantImage = mEquipFm.ImageList.FirstOrDefault(t => t.ImageName == distantImageStr)?? mEquipFm.ImageList.FirstOrDefault();
- }
- mEquipFm.FMJson = fmInfos.ToString();
- mEquipFm.SetPropertyValue(mEquipFm.FMJson);
- }
-
- return mEquipFm;
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- return null;
- }
- /// <summary>
- /// 有资产id,设备id创建关联关系
- /// </summary>
- /// <returns></returns>
- public static bool CreateRelationFMWithId(MRevitEquipBase equip, MEquipFM equipFm)
- {
- if (equip == null || equipFm == null) return false;
- string json = MatchFMRequest.CreateRelationFMWithId(equip, equipFm);
- return json.IsSuccessRequest();
- }
- /// <summary>
- /// 删除设备资产
- /// </summary>
- /// <returns></returns>
- public static bool DeleteEquipFM(string fmId)
- {
- string json = MatchFMRequest.DeleteEquipFM(fmId);
- return json.IsSuccessRequest();
- }
- /// <summary>
- /// 断开资产与设备的关联
- /// </summary>
- /// <param name="fmid"></param>
- /// <returns></returns>
- public static bool DisConEquipFm(string fmid)
- {
- string json = MatchFMRequest.UpdateEquipFm(fmid);
- return json.IsSuccessRequest();
- }
- }
- }
|