/// <summary>
        /// 注入小区信息
        /// </summary>
        /// <param name="Sectors">扇区信息,扇区编号和天线构成</param>
        /// <param name="RefLteNode">新生成的,EDS中的基站信息</param>
        private static void BuildCellInfo(List <AircomCell> Sectors, ref LTENodeType RefLteNode)
        {
            List <LTECellType> _LteCells = new List <LTECellType>();

            foreach (var Sector in Sectors)
            {
                #region Cells
                LTECellType _LteCell = new LTECellType();
                List <AirComAntennaType> Antennas = Sector.Antenners as List <AirComAntennaType>;

                #region 生成扇区信息
                _LteCell.iid    = string.Format("{0}-{1}", RefLteNode.iid, Sector.CellID); //添加扇区界面中,用户输入的扇区名称
                _LteCell.Parent = new IDType()
                {
                    iid = RefLteNode.iid         //LteNode的IID一致 
                };
                _LteCell.Tac                = 0; //路由编码,采用默认值0
                _LteCell.TacSpecified       = true;
                _LteCell.LTECellIDSpecified = true;
                _LteCell.LTECellID          = Sector.CellID;
                #endregion

                #region 生成馈线信息
                if (Antennas != null && Antennas.Count > 0)
                {
                    foreach (var obj in Antennas)
                    {
                        double max = 31 + ((obj.Power - 0.21) / 3 + (obj.Power - 0.21) % 3 > 0 ? 1 : 0) * 3;
                        _LteCell.Carrier = new LTECellCarrierType()
                        {
                            CarrierID               = obj.CarrierId.ToString(),
                            MaxTxPower              = max, //最大功能,由用户从界面输入的RS功率换算;换算方法:稍后发邮;
                            MaxTaSpecified          = true,
                            NoiseFigure             = 6,   //采用默认值6
                            NoiseFigureSpecified    = true,
                            PhysicalCellID          = 0,   //采用默认值0
                            PhysicalCellIDSpecified = true
                        };
                    }
                }
                #endregion

                _LteCells.Add((_LteCell));
                #endregion
            }

            RefLteNode.Cells = _LteCells.ToArray();
        }
        /// <summary>
        /// 生成XML文件
        /// </summary>
        /// <param name="BaseInfo"></param>
        /// <param name="_LteNode"></param>
        private static bool CreateXMLFiles(AirComLTENodeBaseInfo BaseInfo, LTENodeType _LteNode, string Savedir, out XmlFilePackageInfo XmlFiles)
        {
            //try
            //{
            List <RootEntityType> Nodes     = new List <RootEntityType>();
            List <LTENodeType>    nodesList = new List <LTENodeType>();

            Nodes.Add(_LteNode);
            nodesList.Add(_LteNode);
            Savedir = GlobalInfo.Instance.ConfigParam.XmlFileSaveDir.Trim();
            if (!Directory.Exists(Savedir))
            {
                DirectoryInfo dirInfo = Directory.CreateDirectory(Savedir);
            }

            var Prjobj = GlobalInfo.Instance.ConfigParam.ProjectNames.FirstOrDefault(Fo => Fo.CityEName.Equals(BaseInfo.CityName));

            if (Prjobj == null)
            {
                JLog.Instance.AppInfo("没有找到相应的工程配置");
            }
            XmlFiles = new XmlFilePackageInfo();
            JLog.Instance.AppInfo("开始生成导入基站XML文件");
            BuildLteNodeXML(Nodes, Savedir, out XmlFiles.InputLTENodeFileFullName);
              JLog.Instance.AppInfo("开始生成删除基站XML文件");
              BuilLteNodeDeleteXML(Prjobj.ProjectName,  nodesList, Savedir, out XmlFiles.DeleteLTENodeFileFullName);
            JLog.Instance.AppInfo("开始生成导入位置信息XML文件");
            BuildLocationXML(BaseInfo, Savedir, out XmlFiles.InputLocationFileFullName);
            JLog.Instance.AppInfo("开始生成删除位置信息XML文件");
            BuildLocationDeleteXML(BaseInfo, Savedir, out XmlFiles.DeleteLocationFileFullName);
            return(true);
            //}
            //catch (Exception ex)
            //{
            //    JLog.Instance.Error(ex.Message, MethodBase.GetCurrentMethod().Name,
            //        MethodBase.GetCurrentMethod().Module.Name);
            //    XmlFiles = new XmlFilePackageInfo();
            //    return false;
            //}
        }
        /// <summary>
        /// 生成XML文件
        /// </summary>
        /// <param name="BaseInfo">站点基本信息</param>
        /// <param name="Sectors">扇区信息,每个扇区的天线信息</param>
        /// <param name="AllAntennas">所有天线的信息</param>
        /// <param name="Savedir">保存目录</param>
        /// <returns></returns>
        public static bool BuilLTEXMLFilesInterface(AirComLTENodeBaseInfo BaseInfo, List <AircomCell> Sectors, string Savedir, out XmlFilePackageInfo XmlFiles)
        {
            try
            {
                LTENodeType _LteNode = new LTENodeType();



                List <AirComAntennaType> AllAntennas = new List <AirComAntennaType>();
                List <AirComAntennaType> SubAntennas = new List <AirComAntennaType>();
                BuildCelliid(BaseInfo, Sectors);
                foreach (var Sector in Sectors)
                {
                    //Sectors.TryGetValue(key, out SubAntennas);
                    AllAntennas.AddRange(Sector.Antenners as List <AirComAntennaType>);
                }
                BuildStationInfo(BaseInfo, ref _LteNode);

                BuildCarrierInfo(Sectors, ref _LteNode);

                BuildAntennaInfo(AllAntennas, ref _LteNode);

                BuildCellInfo(Sectors, ref _LteNode);

                #region 生成XML
                //XmlFiles = new XmlFilePackageInfo();
                return(CreateXMLFiles(BaseInfo, _LteNode, Savedir, out XmlFiles));

                #endregion
            }

            catch (Exception ex)
            {
                JLog.Instance.Error(ex.Message, MethodBase.GetCurrentMethod().Name,
                                    MethodBase.GetCurrentMethod().Module.Name);
                XmlFiles = null;
                return(false);
            }
        }
        /// <summary>
        /// 注入载波信息至RefLteNode
        /// </summary>
        /// <param name="Sectors">用户输入的扇区信息,包括扇区编号,以及扇区天线信息</param>
        /// <param name="RefLteNode">新生成的,EDS中的基站信息</param>
        private static void BuildCarrierInfo(List <AircomCell> Sectors, ref LTENodeType RefLteNode)
        {
            List <LTENodeCarrierType> _LteNodeCarriers = new List <LTENodeCarrierType>();
            int cellid = 1;

            foreach (var Sector in Sectors)
            {
                Sector.CellID = cellid;//20160831郭琴 SAM商量确定,有邮件
                List <AirComAntennaType> myAntenna = new List <AirComAntennaType>();
                myAntenna = Sector.Antenners as List <AirComAntennaType>;
                if (myAntenna != null && myAntenna.Count > 0)
                {
                    foreach (var obj in myAntenna)
                    {
                        //var carrier =
                        //    GlobalInfo.Instance.ConfigParam.CarrierItems.Find(Fo => Fo.Alias.Equals(obj.CarrierAlias));//2016-04-03改为由浪潮提供
                        //if (carrier != null)
                        //{
                        #region  获取所有载波信息

                        //LTENodeCarrierType同小区的载波有何区别?
                        //一个小基站可能用几个载波,但是小区只能用其中一个或是多个;
                        LTENodeCarrierType _lteNodeCarrier = new LTENodeCarrierType();
                        _lteNodeCarrier.CarrierID = obj.CarrierId;    // carrier.ID; //这个值从里获取,是扇区编号?   2016-04-03改为由浪潮提供
                        if (_LteNodeCarriers.Find(Fo => Fo.CarrierID == obj.CarrierId) == null)
                        {
                            _LteNodeCarriers.Add(_lteNodeCarrier);
                        }

                        #endregion

                        //}
                    }
                }
                RefLteNode.Carriers = _LteNodeCarriers.ToArray();
                cellid++;
            }
        }
        /// <summary>
        /// 注入基础信息至RefLteNode
        /// </summary>
        /// <param name="BaseInfo">AirComLTENodeBaseInfo类型的用户输入的基站信息</param>
        /// <param name="RefLteNode">新生成的,EDS中的基站信息--LTENodeType类型</param>
        private static void BuildStationInfo(AirComLTENodeBaseInfo BaseInfo, ref LTENodeType RefLteNode)
        {
            #region 基本信息

            RefLteNode.iid      = BaseInfo.Stationiid;
            RefLteNode.Location = new IDType()
            {
                iid = BaseInfo.Stationiid//唯一识别,同_LteNode.iid一致  //基站ID
            };
            //RefLteNode.Comments = GlobalInfo.Instance.ConfigParam.ProjectNames[0].CityName; //地市--可有可无---毕工确认  @20150808  ---(wjj:根据登录用户获取地市及工程名称)
            RefLteNode.Comments = BaseInfo.CityName; //地市--可有可无---毕工确认  @20150808  ---(wjj:根据登录用户获取地市及工程名称)--由浪潮提供@2016-04-03。
            RefLteNode.PLMN     = new IDType()
            {
                //iid = GlobalInfo.Instance.ConfigParam.ProjectNames[0].ProjectName//工程同名---这个是必须的同---毕工确认  @20150808//
                //iid = "plan"//固定值plan---郭琴确认  @20151127//
                iid = "PLMN0"//固定值plan---郭琴确认  @20160622//
                      //工程名是定死的,用户可选择地市信息,系统根据地市信息获取工程名(可配置)
            };
            RefLteNode.Name2 = BaseInfo.PlanPrjID.ToString();//填基站的规划期数;规划期数由用户在界面上输入。
            //RefLteNode.NodeID = 0;//毕工确认  @20150808 //wjj20150930 可忽略的值不用输入,序列化时会忽略

            #endregion
        }
        /// <summary>
        /// 注入天线信息
        /// </summary>
        /// <param name="Antennas">天线信息</param>
        /// <param name="RefLteNode">新生成的,EDS中的基站信息</param>
        private static void BuildAntennaInfo(List <AirComAntennaType> Antennas, ref LTENodeType RefLteNode)
        {
            #region Antennas
            List <LTEAntennaType> _Antennas = new List <LTEAntennaType>();
            for (int index = 0; index < Antennas.Count; index++)
            {
                AirComAntennaType Item     = Antennas[index];
                LTEAntennaType    _Antenna = new LTEAntennaType();
                _Antenna.Index = index + 1; //可以采用序列的索引吗?可以
                #region AbsLocation         // 无异议

                _Antenna.AbsLocation = new LocationTypeType()
                {
                    Longitude          = Item.Lng,
                    LongitudeSpecified = true,
                    Latitude           = Item.Lat,
                    LatitudeSpecified  = true
                };
                #endregion

                _Antenna.Azimuth                        = Item.Azimuth;
                _Antenna.AzimuthSpecified               = true;
                _Antenna.ElectricalDownTilt_RO          = Item.ElectricalDownTilt;//界面输入的是物理的?还是电子的?//无用,填0 @20150825确认
                _Antenna.ElectricalDownTilt_ROSpecified = true;
                _Antenna.Height          = Item.Height;
                _Antenna.HeightSpecified = true;
                //_Antenna.iid = Item //示例XML中没有
                _Antenna.MechanicalDownTiltSpecified = true;
                _Antenna.MechanicalDownTilt          = Item.MechanicalDownTilt;

                #region AntennaPatternType
                //_Antenna.AntennaPatternType = new AntennaPatternType()
                //{
                //    iid = Antennas[index].AntennaTypeName   //就是天线型号  Default_D,Defaut_F

                //};  //这个值从哪里获取?


                _Antenna.AntennaPatternType = new IDType()
                {
                    iid = Antennas[index].AntennaTypeName
                };
                #endregion

                #region PrimaryModel,天线参数中体现
                _Antenna.PrimaryModel = new PredictionModelReferenceType()
                {
                    ModelType = new IDType()
                    {
                        iid = Antennas[index].ModelType                           //从哪里获取?传播模型由用户在下拉框中选择;配置文件中可配置选项;
                    },
                    RadiusKM                  = Antennas[index].RadiusKm,         //是覆盖半径吗?1,2,3,5,由用户下拉框中选择,默认为2;
                    RadiusKMSpecified         = true,
                    ResolutionMetres          = Antennas[index].ResolutionMetres, //计算精度,以米为单位,默认为10M;用户可选;扇区添加天线时,需选择计算精度5,10,20
                    ResolutionMetresSpecified = true
                };

                #endregion

                #region Feeders

                List <LTECellFeederType> _LteCellFeeders = new List <LTECellFeederType>();


                LTECellFeederType _fe = new LTECellFeederType();
                //以下参数坐哪里获取?
                _fe.FeederType = new IDType()
                {
                    iid = "Unknown"
                };
                //_fe.LTECellID = (index + 1).ToString();//基站iid-天线索引号(_Antenna.Index)
                //_fe.LTECellID =string.Format("{0}-{1}" ,RefLteNode.iid ,index+1);//扇区ID,20151126郭琴确认//20160829根据郭琴要求,修改两种对应关系,详见
                _fe.LTECellID        = Item.Celliid;
                _fe.Length           = 0;
                _fe.LengthSpecified  = true;
                _fe.DLGain           = 0;
                _fe.DLGainSpecified  = true;
                _fe.MHAGain          = 0;
                _fe.MHAGainSpecified = true;
                _fe.MHAType          = new IDType()
                {
                    iid = "Unknown"
                };
                _fe.ULGain               = 0;
                _fe.ULGainSpecified      = true;
                _fe.Noise                = 0;
                _fe.NoiseSpecified       = true;
                _fe.OtherLosses          = 0;
                _fe.OtherLossesSpecified = true;
                _LteCellFeeders.Add(_fe);
                _Antenna.Feeders = _LteCellFeeders.ToArray();

                #endregion
                _Antennas.Add(_Antenna);
            }
            RefLteNode.Antennas = _Antennas.ToArray();

            #endregion
        }
示例#7
0
        static void Main(string[] args)
        {
            try
            {
                LTECellType _lte     = new LTECellType();
                LTENodeType _lteNode = new LTENodeType();


                LTEAntennaType _nType = new LTEAntennaType();


                LTECellFeederType feeder = new LTECellFeederType();


                //_nType.Feeders

                #region 序列化示例 

                RootEntityType Root1 = new RootEntityType();



                Root1.iid      = "HL - D3900256154PT";
                Root1.bvid     = "LTE_HUNAN";
                Root1.Security = null;


                RootEntityType Root2 = new RootEntityType();

                Root2.iid  = "HL-D3900256155PT";
                Root2.bvid = "LTE_HUNAN";



                XmlSerializerNamespaces nsMgr = new XmlSerializerNamespaces();
                //XmlNamespaceManager nsMgr = new XmlNamespaceManager();//这一步实例化一个xml命名空间管理器

                nsMgr.Add("umts70", "http://www.aircominternational.com/Schemas/UMTS/2010/08");
                nsMgr.Add("gsm", "http://www.aircominternational.com/Schemas/GSM/2009/09");
                nsMgr.Add("eqp", "http://www.aircominternational.com/Schemas/Equipment/2009/09");
                nsMgr.Add("umts", "http://www.aircominternational.com/Schemas/UMTS/2010/07");
                nsMgr.Add("tra70", "http://www.aircominternational.com/Schemas/Connect/2010/08");
                nsMgr.Add("co", "http://www.aircominternational.com/Schemas/Common/2009/07");
                nsMgr.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                nsMgr.Add("co70", "http://www.aircominternational.com/Schemas/Common/2010/08");
                nsMgr.Add("gsm70", "http://www.aircominternational.com/Schemas/GSM/2010/08");
                nsMgr.Add("util", "http://www.aircominternational.com/contract/Util/2009/10");
                nsMgr.Add("config", "http://www.aircominternational.com/Schemas/Configuration/2010/08");
                nsMgr.Add("tra", "http://www.aircominternational.com/Schemas/Connect/2009/09");
                nsMgr.Add("ct", "http://www.aircominternational.com/Schemas/CommonTypes/2009/05");
                nsMgr.Add("lte", "http://www.aircominternational.com/Schemas/LTE/2010/08");
                nsMgr.Add("eqp70", "http://www.aircominternational.com/Schemas/Equipment/2010/08");
                nsMgr.Add("umts2", "http://www.aircominternational.com/Schemas/UMTS/2009/05");

                //LTECellType Root1 = new LTECellType();
                //Root1.iid = "HL - D3900256154PT";
                //Root1.bvid = "LTE_HUNAN";
                //LTECellType Root2 = new LTECellType();
                //Root2.iid = "HL-D3900256155PT";
                //Root2.bvid = "LTE_HUNAN";
                List <RootEntityType> tt = new List <RootEntityType>();
                tt.Add(Root1);
                tt.Add(Root2);

                //JLIB.CSharp.JFileExten.ToXML((RootEntityType)Lte, "d:\\TestLte.xml");
                //XmlRootAttribute rootAtrAttribute = new XmlRootAttribute("ArrayOfRootEntityType");

                XmlAttributeAttribute aa = new XmlAttributeAttribute("type", typeof(string));
                aa.Namespace     = "http://www.w3.org/2001/XMLSchema-instance";
                aa.AttributeName = typeof(LocationObjectv70Type).ToString();



                XmlSerializer     sr       = new XmlSerializer(typeof(List <RootEntityType>));
                XmlWriterSettings settings = new XmlWriterSettings()
                {
                    Indent            = true,
                    IndentChars       = ("\t\t"),
                    NamespaceHandling = NamespaceHandling.OmitDuplicates,
                    NewLineHandling   = NewLineHandling.Entitize
                                        //NewLineOnAttributes = true
                };


                // Simply dump dataset to xml file on disk...
                using (XmlWriter wr = XmlWriter.Create("d:\\TestLte.xml", settings))
                {
                    sr.Serialize(wr, tt, nsMgr);
                }
                #endregion

                #region 创建示例
                //EDSDemoProxy.EDSClient client = new SimpleEDSQuery.EDSDemoProxy.EDSClient("EDSWCFNetTCPEndPoint");
                //client.Open();

                //List<RootEntityType> datas = new List<RootEntityType>();

                //var Entity = new LTENodeType();
                //Entity.iid = "";
                //Entity.bvid = "";
                //Entity.PLMN = new IDType()
                //{
                //    iid = "LTE_HUNAN"
                //};
                ////Entity.Cells;
                ////Entity.Antennas
                ////Entity.Carriers;
                //datas.Add(Entity);


                //#region LTE CELL

                //LTECellType Cell = new LTECellType();


                //#endregion

                //CreateRequestType CreateParams = new CreateRequestType();
                //var CreateItems = new CreateItemType[]
                //{
                //    new CreateItemType()
                //    {
                //        itemID = new Guid(),
                //        objectType = QueryableTypes.LTENodeType,
                //        NewData = datas.ToArray()

                //    }
                //};
                //CreateParams.CreateItems = CreateItems;


                //CreateParams.CreateItems = CreateItems;


                //var Result = client.Create(CreateParams);


                #endregion

                #region wjj删除示例

                // var _DelItems = new List<DeleteItemType>();

                // #region 添加删除项
                // var _DelItem = new DeleteItemType();
                // _DelItem.objectType = QueryableTypes.LocationObjectv70Type;


                // #region 删除条件
                // var selType = new QrySelectType();
                // var objs  = new QrySimpleListType();
                // selType.Item = objs;
                // #region 删除对像集合
                // List<ListItemType> Itemss = new List<ListItemType>();

                //  var obj = new ListItemType()
                //  {
                //      bvid = "LTE_HUNAN",
                //      iid = "衡阳常宁市六联HL-D3900256154PT"
                //  };
                //  Itemss.Add(obj);
                //  var obj2 = new ListItemType()
                //  {
                //      bvid = "LTE_HUNAN",
                //      iid = "衡阳常宁市双湖HL-D3900256155PT"
                //  };
                //  Itemss.Add(obj2);


                // #endregion
                //objs.Items = Itemss.ToArray();


                // #endregion



                // _DelItem.Select = selType;


                // _DelItems.Add(_DelItem);
                // #endregion

                //  var _QrySel = new QrySelectType();
                //  DeleteRequestType DelParams = new DeleteRequestType();
                //  DelParams.DeleteItems = _DelItems.ToArray();
                //  EDSDemoProxy.EDSClient client = new SimpleEDSQuery.EDSDemoProxy.EDSClient("EDSWCFNetTCPEndPoint");
                //  client.Open();
                //  client.Delete(DelParams);

                #endregion

                #region 自带查询示例

                //EDSDemoProxy.EDSClient client = new SimpleEDSQuery.EDSDemoProxy.EDSClient("EDSWCFNetTCPEndPoint");
                //client.Open();



                //var QueryComm = new QrySelectType()
                //{
                //    #region QrySelectType
                //    Item = new QrySimpleTextType()
                //    {
                //        // 查询表达式 --生成任意多边形指令
                //        Query = string.Format("iid = \"{0}\" and bvid = \"{1}\"", "SF03003A_11", "West")
                //    }
                //    #endregion
                //};

                //var QueryItemsInfo = new QueryItemType[]
                //{
                //    new QueryItemType()
                //    {
                //        itemID = Guid.NewGuid(), // Inner request id for an item
                //        // data type to query against
                //        objectType = ty,
                //        Select = QueryComm
                //    }
                //};


                //QueryRequestType qry = new QueryRequestType()

                //{
                //    itemID = Guid.NewGuid(),    // Outer request id
                //    QueryItems = QueryItemsInfo
                //};

                //// sends query
                //QueryResponseType data = client.Query(qry);



                //SerializeResultToDisk(data, ty);

                #endregion
            }
            catch (Exception ex)
            {
                JLog.Instance.Error(ex.Message, MethodBase.GetCurrentMethod().Name,
                                    MethodBase.GetCurrentMethod().Module.Name);
            }
        }
示例#8
0
 void ILTEContracts.DeleteNode(LTENodeType Node)
 {
     throw new NotImplementedException();
 }
示例#9
0
 public BLLLTE()
 {
     LTENodeType node = new LTENodeType();
 }