Ejemplo n.º 1
0
        public bool InitTopoFromXml()
        {
            Log.InfoStart(LogTags.DbInit, "InitTopoFromXml");
            try
            {
                string initFile = InitPaths.GetInitInfo();

                if (!File.Exists(initFile))
                {
                    Log.Error("InitTopoFromXml找不到文件:" + initFile);
                    return(false);
                }
                InitInfo initInfo = XmlSerializeHelper.LoadFromFile <InitInfo>(initFile);
                if (initInfo == null)
                {
                    Log.Error("解析失败:" + XmlSerializeHelper.ExceptionText);
                }
                TopoInfo topoInfo = initInfo.TopoInfo;

                //if(!string.IsNullOrEmpty(parkName))
                //    for (int i = 0; i < topoInfo.Children.Count; i++)
                //    {
                //        var child = topoInfo.Children[i];
                //        if (child.Name != parkName)
                //        {
                //            topoInfo.Children.RemoveAt(i);
                //            i--;
                //        }
                //    }

                var nodes = topoInfo.GetAllTopos();
                foreach (TopoInfo node in nodes)
                {
                    if (node.Type != AreaTypes.园区)
                    {
                        if (node.BoundInfo != null)
                        {
                            if (node.BoundInfo.Points != null)
                            {
                                foreach (PointInfo point in node.BoundInfo.Points)
                                {
                                    LocationContext.Transform(point);//设置位置偏移
                                }
                            }
                        }
                    }
                }

                foreach (TopoInfo node in nodes)
                {
                    if (node.Type == AreaTypes.大楼)
                    {
                        if (node.IsCommon == true)
                        {
                            var floor1 = node.Children[0];
                            if (floor1.IsCommon == true)
                            {
                                List <TopoInfo> commonList = floor1.Children.FindAll(i => i.IsCommon);
                                for (int i = 1; i < node.Children.Count; i++)//拷贝第一层的柱子给下面所有层
                                {
                                    var floor = node.Children[i];
                                    IList <TopoInfo> cloneList = ConvertHelper.CloneObjectList(commonList);
                                    foreach (TopoInfo item in cloneList)
                                    {
                                        floor.Children.Add(item);
                                    }
                                }
                            }
                        }
                    }
                }

                InitTopo(topoInfo);
                Log.InfoEnd("InitTopoFromXml");
                return(true);
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.DbInit, "InitTopoFromXml:" + ex);
                Log.InfoEnd("InitTopoFromXml");
                return(false);
            }
        }