Esempio n. 1
0
        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("未知状态");
        }
Esempio n. 2
0
 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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        /// <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
                    });
                }
            }
        }
Esempio n. 8
0
        /// <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;
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
            }
        }