public string GetDeviceState(RequiredDevTables rt) { var comState = GetState(rt.ComObj); if (!string.IsNullOrEmpty(comState)) { return(comState); } var selfState = GetState(rt.SelfObj); if (!string.IsNullOrEmpty(selfState)) { return(selfState); } var connectState = GetState(rt.ConnectObj); if (!string.IsNullOrEmpty(connectState)) { return(connectState); } var gnwzState = GetState(rt.GnwzObj); if (!string.IsNullOrEmpty(gnwzState)) { return(gnwzState); } return("未知状态"); }
public static void FieldReflection(XProps source, RequiredDevTables rdt, int g3eFno) { try { GenerateHelper.ResetXProps(ref source); if (rdt.SelfObj != null) { GenerateHelper.PartialCopyToCAD(rdt.SelfObj, source, g3eFno); } if (rdt.ConnectObj != null) { GenerateHelper.PartialCopyToCAD(rdt.ConnectObj, source, g3eFno); } if (rdt.GnwzObj != null) { GenerateHelper.PartialCopyToCAD(rdt.GnwzObj, source, g3eFno); } //把这个放最后的目的是因为所有设备的BZ 字段都取公共表里面的BZ if (rdt.ComObj != null) { GenerateHelper.PartialCopyToCAD(rdt.ComObj, source, g3eFno); } } catch (Exception ex) { LogManager.Instance.Error(ex); } }
public static FieldTableNameAndBZMerger GetBZValue(RequiredDevTables rdt) { FieldTableNameAndBZMerger bz = new FieldTableNameAndBZMerger(); try { if (rdt != null) { if (rdt.ComObj != null) { var bz1 = rdt.DevObj.SingleOrDefault(o => o.Name.Equals("BZ1") && o.SaveValueByFid); //查看下到底所属支线是那个字段 if (bz1 != null) { bz.Field = bz1.Name; bz.BzDeclare = rdt.ComObj.BZ1; } else { var bz2 = rdt.DevObj.SingleOrDefault(o => o.Name.Equals("BZ2") && o.SaveValueByFid); if (bz2 != null) { bz.Field = bz2.Name; bz.BzDeclare = rdt.ComObj.BZ2; } } } } } catch (Exception ex) { LogManager.Instance.Error(ex.Message); } return(bz); }
public static FieldTableNameAndBZMerger GetXlfl(RequiredDevTables rdt) { FieldTableNameAndBZMerger xlfl = new FieldTableNameAndBZMerger(); try { var simpleEntry = DeviceAttributeConfig.Instance.Attributes.SingleOrDefault(o => o.Fno == rdt.Fno); if (simpleEntry != null) { if (simpleEntry.GnwzXlfl != null) { try { var type = TypeCache.Instance.GetTypeFromCache(typeof(DBEntity), simpleEntry.GnwzXlfl.TableName); if (type != null) { var ent = DBManager.Instance.GetEntity(type, rdt.Fid); xlfl.BzDeclare = ent.GetAttribute(simpleEntry.GnwzXlfl.FieldName); xlfl.Field = simpleEntry.GnwzXlfl.FieldName; } } catch (Exception ex) { LogManager.Instance.Error(ex.Message); } } } } catch (Exception ex) { LogManager.Instance.Error(ex.Message); } return(xlfl); }
public void UpdateAttribute(XProps CurPropertyObj, ref ObjectId objId, RequiredDevTables rdt) { if (rdt == null || objId.IsNull || CurPropertyObj == null) { return; } ObjectId newObjId = ObjectId.Null; //只有块才可以更换符号 if (!DCadApi.UpdateSymbol(objId, CurPropertyObj, out newObjId)) { objId = newObjId; } else { FixEntity.Instance.ResetEntityRecord(newObjId, objId); if (objId != newObjId) { objId = newObjId; } } UpdateAttribute(rdt, CurPropertyObj, false); }
/// <summary> /// 根据设备FNO和FID获取组件表 /// </summary> /// <param name="g3e_fno"></param> /// <param name="g3e_fid"></param> /// <returns></returns> public static RequiredDevTables GetDevTables(long g3e_fno, long g3e_fid) { try { var DevTables = DeviceAttributeConfig.Instance.Attributes.SingleOrDefault(o => o.Fno == (int)g3e_fno); if (DevTables == null) { PublicMethod.Instance.ShowMessage("数据源中不存在所查找设备"); return(null); } var rdt = new RequiredDevTables { Fno = (int)g3e_fno, Fid = g3e_fid }; GenerateHelper.EmptyPrevFeatureAttribute(); try { if (!string.IsNullOrEmpty(DevTables.Common.TableName)) { rdt.ComObj = DBManager.Instance.GetEntity <Common_n>(g3e_fid); if (rdt.ComObj != null) { GenerateHelper.Atff.com = rdt.ComObj.Clone() as Common_n; } else { GenerateHelper.Atff.com = null; PublicMethod.Instance.ShowMessage(string.Format("缺失公共属性表数据!G3E_FID:{0}\n", g3e_fid)); } } } catch (NotExistException ex) { rdt.ComObj = null; PublicMethod.Instance.GetError(g3e_fno, g3e_fid, ex.Message); } try { if (!string.IsNullOrEmpty(DevTables.SelfAttribute.TableName)) { var self = TypeCache.Instance.GetTypeFromCache(typeof(DBEntity), DevTables.SelfAttribute.TableName.Trim()); if (self != null) { rdt.SelfObj = DBManager.Instance.GetEntity(self, g3e_fid); } if (rdt.SelfObj != null) { GenerateHelper.Atff.self = rdt.SelfObj.Clone() as DBEntity; //RecordClickDevFid(rdt.SelfObj); } else { GenerateHelper.Atff.self = null; PublicMethod.Instance.ShowMessage(string.Format("缺失功自身属性表数据!G3E_FID:{0}\n", g3e_fid)); } } } catch (NotExistException ex) { rdt.SelfObj = null; } try { if (!string.IsNullOrEmpty(DevTables.Connectivity.TableName)) { rdt.ConnectObj = DBManager.Instance.GetEntity <Connectivity_n>(g3e_fid); if (rdt.ConnectObj != null) { GenerateHelper.Atff.connectivity = rdt.ConnectObj.Clone() as Connectivity_n; } else { GenerateHelper.Atff.connectivity = null; PublicMethod.Instance.ShowMessage(string.Format("缺失连接关系表数据!G3E_FID:{0}\n", g3e_fid)); } } } catch (NotExistException ex) { rdt.ConnectObj = null; } try { if (!string.IsNullOrEmpty(DevTables.Gnwz.TableName)) { rdt.GnwzObj = DBManager.Instance.GetEntity <Gg_pd_gnwzmc_n>(g3e_fid); if (rdt.GnwzObj != null) { GenerateHelper.Atff.gnwz = rdt.GnwzObj.Clone() as Gg_pd_gnwzmc_n; //RecordClickDevFid(rdt.GnwzObj); } else { GenerateHelper.Atff.gnwz = null; PublicMethod.Instance.ShowMessage(string.Format("缺失功能位置表数据!G3E_FID:{0}\n", g3e_fid)); } } } catch (NotExistException ex) { rdt.GnwzObj = null; } if (rdt.ComObj == null && rdt.SelfObj == null && rdt.ConnectObj == null && rdt.GnwzObj == null) { return(null); } var xprops = GenerateObj.Instance.GenderObjByFno((int)g3e_fno); if (xprops == null) { if (g3e_fno != 250) { LogManager.Instance.Error("FNO=" + g3e_fno + "的对象生成失败!!!"); } return(null); } FieldReflection(xprops, rdt, (int)g3e_fno); rdt.DevObj = xprops; if (rdt.DevObj == null) { return(null); } return(rdt); } catch (SystemException ex) { LogManager.Instance.Error(ex.Message); } return(null); }
/// <summary> /// 按表逐个更新属性 /// </summary> /// <param name="CurPropertyObj"></param> /// <param name="rdt"></param> /// <param name="g3e_fno"></param> /// <param name="flag">是否是批量修改公共属性</param> private void RefAttribute(XProps CurPropertyObj, RequiredDevTables rdt, int g3e_fno, bool flag) { var tablename = string.Empty; try { if (rdt.ComObj != null) { tablename = rdt.ComObj.GetType().Name; GenerateHelper.PartialCopyFromCAD(CurPropertyObj, rdt.ComObj, g3e_fno); if (GenerateHelper.Atff.com != null && rdt.ComObj.CompareProperties(GenerateHelper.Atff.com).Any()) { if (rdt.ComObj.EntityState == EntityState.None) { rdt.ComObj.EntityState = EntityState.Update; } DBManager.Instance.Update(rdt.ComObj); } } if (!flag) { #region 如果是批量修改公共属性表就只针对公共属性表做修改别的表不处理 if (rdt.SelfObj != null) { tablename = rdt.SelfObj.GetType().Name; GenerateHelper.PartialCopyFromCAD(CurPropertyObj, rdt.SelfObj, g3e_fno); if (GenerateHelper.Atff.self != null && rdt.SelfObj.CompareProperties(GenerateHelper.Atff.self).Any()) { if (rdt.SelfObj.EntityState == EntityState.None) { rdt.SelfObj.EntityState = EntityState.Update; } DBManager.Instance.Update(rdt.SelfObj); } } if (rdt.ConnectObj != null) { tablename = rdt.ConnectObj.GetType().Name; GenerateHelper.PartialCopyFromCAD(CurPropertyObj, rdt.ConnectObj, g3e_fno); if (GenerateHelper.Atff.connectivity != null && rdt.ConnectObj.CompareProperties(GenerateHelper.Atff.connectivity).Any()) { if (rdt.ConnectObj.EntityState == EntityState.None) { rdt.ConnectObj.EntityState = EntityState.Old_Nal_Nal; } DBManager.Instance.Update(rdt.ConnectObj); } } if (rdt.GnwzObj != null) { tablename = rdt.GnwzObj.GetType().Name; GenerateHelper.PartialCopyFromCAD(CurPropertyObj, rdt.GnwzObj, g3e_fno); if (g3e_fno == 199) { rdt.GnwzObj.GNWZ_SSTJ = rdt.ComObj != null ? rdt.ComObj.SBMC : null; } if (g3e_fno == 198) { rdt.GnwzObj.MC = rdt.ComObj != null ? rdt.ComObj.SBMC : null; } if (GenerateHelper.Atff.gnwz != null && rdt.GnwzObj.CompareProperties(GenerateHelper.Atff.gnwz).Any()) { if (rdt.GnwzObj.EntityState == EntityState.None) { rdt.GnwzObj.EntityState = EntityState.Update; } DBManager.Instance.Update(rdt.GnwzObj); } } #endregion } SymbolLabel.ShowSymbolLabel(rdt.Fno, rdt.Fid); //更新的时候自动更新标注 } catch (UpdataArgumentException ee) { throw new UpdataArgumentException(tablename, ee.FieldName); } finally { if (RefreshFeatureAttributeEvent != null) { RefreshFeatureAttributeEvent(null, new RefreshAttributeArgs { Rdt = rdt }); } } }
/// <summary> /// 更新指定的实体属性 /// </summary> /// <param name="values"></param> /// <param name="objDev"></param> /// <param name="flag">是否是批量修改公共表</param> private void UpdateAttribute(RequiredDevTables values, XProps objDev, bool flag) { try { DCadApi.isModifySymbol = true; #region if (values.Fno == 148) { var currentAzwz = GenerateHelper.GetPropertyValue(objDev, GenerateHelper.GetGnwzTableNameByFno(148), "GNWZ_FL2"); string oldAzwz = string.Empty; if (values.GnwzObj != null) { oldAzwz = values.GnwzObj.GNWZ_FL2; } //安装位置由非台架变成台架 if (currentAzwz != null && currentAzwz.ToString().Equals("台架")) { //以前是台架只需更新 if (oldAzwz.Equals("台架")) { RefAttribute(objDev, values, 148, flag); //因为都是台架所以更新完148后还要更新199, long tjFid = 0; if (values.GnwzObj != null && long.TryParse(values.GnwzObj.GNWZ_SSTJ, out tjFid)) { var tjTables = DevEventHandler.GetDevTables(199, tjFid); RefAttribute(objDev, tjTables, 199, flag); } } else //以前为空或不是台架 { //先添加一条台架记录 //注意在添加新的台架数据之前先看看有没有对应的原始的台架数据(即被标记为Delete的数据) try { var tj = DBManager.Instance.GetEntity <Gg_gz_tj_n>(o => o.HasAttribute("GNWZ_FID") && o.GNWZ_FID != null && o.GNWZ_FID.Equals(values.Fid.ToString())); if (tj != null) { tj.EntityState = EntityState.Update; tj.IsErased = false; DBManager.Instance.Update(tj); var tjcom = DBManager.Instance.GetEntity <Common_n>(tj.G3E_FID); if (tjcom != null) { tjcom.EntityState = EntityState.Update; tjcom.IsErased = false; DBManager.Instance.Update(tjcom); } var tjGnwz = DBManager.Instance.GetEntity <Gg_pd_gnwzmc_n>(tj.G3E_FID); if (tjGnwz != null) { tjGnwz.EntityState = EntityState.Update; tjGnwz.IsErased = false; DBManager.Instance.Update(tjGnwz); } GenerateHelper.Unrf.tjFid = tj.G3E_FID.ToString(); var tjTables = DevEventHandler.GetDevTables(199, tj.G3E_FID); RefAttribute(objDev, tjTables, 199, flag); } else { var tjRes = DCadApi.AddAttribute(objDev, 199, values.Fid); GenerateHelper.Unrf.tjFid = tjRes.G3eFid; } } catch (NotExistException ex) { var tjRes = DCadApi.AddAttribute(objDev, 199, values.Fid); GenerateHelper.Unrf.tjFid = tjRes.G3eFid; } RefAttribute(objDev, values, 148, flag); } } //安装位置由台架变成非台架 else if (currentAzwz == null || !currentAzwz.ToString().Equals("台架")) { //以前是台架只需删除 if (oldAzwz.Equals("台架")) { //先删除台架数据 DBEntityErased.Instance.ErasedTjDBEntity(values.ComObj.G3E_FID, new List <DBEntity>()); //把变压器的GNWZ_SSTJ变成null GenerateHelper.Unrf.tjFid = null; //GenerateHelper.SetPropertyValue(objDev, "GNWZ_SSTJ", null); if (values.GnwzObj != null) { values.GnwzObj.GNWZ_SSTJ = null; } RefAttribute(objDev, values, 148, flag); } else { RefAttribute(objDev, values, 148, flag); } } } else { RefAttribute(objDev, values, values.Fno, flag); } UpdataShbAdnJlbValue(values.Fno, values.Fid); #endregion } catch (Exception ex) { LogManager.Instance.Error(ex); } finally { DCadApi.isModifySymbol = false; } }
private List <SyncRecord> SyncDataFrom(List <TzTableValue> tzValues, RequiredDevTables rdt) { List <SyncRecord> syncRecords = new List <SyncRecord>(); foreach (var field in tzValues) { if (string.IsNullOrEmpty(field.TableName)) { continue; } switch (field.TableName) { case "COMMON_N": { Common_n com = rdt.ComObj; if (com != null) { syncRecords.Add(new SyncRecord { TableName = field.TableName, Fields = SyncDataToModel(field, com) }); } } break; case "CONNECTIVITY_N": { var connectivity = rdt.ConnectObj; if (connectivity != null) { syncRecords.Add(new SyncRecord { TableName = field.TableName, Fields = SyncDataToModel(field, connectivity) });; } } break; case "GG_PD_GNWZMC_N": { var gnwz = rdt.GnwzObj; if (gnwz != null) { syncRecords.Add(new SyncRecord { TableName = field.TableName, Fields = SyncDataToModel(field, gnwz) }); } } break; default: { DBEntity self = rdt.SelfObj; if (self != null) { syncRecords.Add(new SyncRecord { TableName = field.TableName, Fields = SyncDataToModel(field, self) }); } } break; } } return(syncRecords); }
private void ShowSyncResultToListBox(int index, List <TzTableValue> tzValues, RequiredDevTables syncDataTables) { var res = SyncDataFrom(tzValues, syncDataTables); string rec = GetSyncFailedRecord(res, syncDataTables.Fno); var entity = DeviceAttributeConfig.Instance.Attributes.SingleOrDefault(o => o.Fno == syncDataTables.Fno); if (string.IsNullOrEmpty(rec)) { var str = string.Format("FID={0}的{1}同步成功.", syncDataTables.Fid, entity != null ? entity.LayerName : ""); recorDictionary.Add(index, new ItemOfData() { Fid = syncDataTables.Fid, Index = index, SyncResult = str, RDT = syncDataTables }); lbShowSyncData.Items.Add(str); } else { var str = string.Format("FID={0}的{1}中{2}同步失败.", syncDataTables.Fid, entity != null ? entity.LayerName : "", rec); recorDictionary.Add(index, new ItemOfData() { Fid = syncDataTables.Fid, Index = index, SyncResult = str, RDT = syncDataTables }); lbShowSyncData.Items.Add(str); } }