public static Location.TModel.Location.AreaAndDev.PhysicalTopology ToTModel(
            this DbModel.Location.AreaAndDev.Area item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new Location.TModel.Location.AreaAndDev.PhysicalTopology();

            item2.Id       = item1.Id;
            item2.Name     = item1.Name;
            item2.ParentId = item1.ParentId;
            //item2.Parent = item1.Parent;
            item2.Number   = item1.Number;
            item2.Type     = item1.Type;
            item2.Describe = item1.Describe;
            //item2.Tag = item1.Tag;
            item2.Children  = item1.Children.ToTModel();
            item2.LeafNodes = item1.LeafNodes.ToTModel();
            item2.KKS       = item1.KKS;

            item2.TransfromId = item1.Id;
            item2.Transfrom   = item1.GetTransformM().ToTModel();

            item2.InitBoundId = item1.InitBoundId;
            item2.InitBound   = item1.InitBound.ToTModel();
            item2.EditBoundId = item1.EditBoundId;
            //item2.EditBound = item1.EditBound.ToTModel();//这个没用 不用传递

            item2.IsRelative         = item1.IsRelative;
            item2.IsCreateAreaByData = item1.IsCreateAreaByData;
            item2.IsOnAlarmArea      = item1.IsOnAlarmArea;
            item2.IsOnLocationArea   = item1.IsOnLocationArea;
            return(item2);
        }
Exemple #2
0
        public IList<AEntity> GetAreaTreeByRole(string role)
        {
            int roleId = role.ToInt();
            IList<AEntity> list = new List<AEntity>();

            var query = from t1 in db.AreaAuthorizationRecords.DbSet
                        join t2 in db.Areas.DbSet on t1.AreaId equals t2.Id
                        where t1.CardRoleId == roleId
                        select t2;

            List<AEntity> alist = query.ToList();
            List<AEntity> alist2 = query.ToList();
            List<AEntity> ResultList = new List<AEntity>();

            foreach (AEntity item in alist)
            {
                AEntity item2 = alist2.Find(p=>p.Id == item.ParentId);
                if (item2 == null)
                {
                    ResultList.Add(item.Clone());
                }
            }

            CreateAreaTree(ref alist2, ref ResultList);
            
            foreach (AEntity item in ResultList)
            {
                list.Add(item);
            }

            return list;
        }
Exemple #3
0
        public static DbModel.Location.AreaAndDev.Area ToDbModel(
            this Location.TModel.Location.AreaAndDev.PhysicalTopology item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new DbModel.Location.AreaAndDev.Area();

            item2.Id = item1.Id;
            //item2.Abutment_Id = item1.Abutment_Id;
            item2.Name     = item1.Name;
            item2.KKS      = item1.KKS;
            item2.ParentId = item1.ParentId;
            //item2.Abutment_ParentId = item1.Abutment_ParentId;
            //item2.X = item1.X;
            //item2.Y = item1.Y;
            //item2.Z = item1.Z;
            //item2.RX = item1.RX;
            //item2.RY = item1.RY;
            //item2.RZ = item1.RZ;
            //item2.SX = item1.SX;
            //item2.SY = item1.SY;
            //item2.SZ = item1.SZ;
            //item2.IsRelative = item1.IsRelative;
            //item2.IsOnNormalArea = item1.IsOnNormalArea;
            //item2.IsOnAlarmArea = item1.IsOnAlarmArea;
            //item2.IsOnLocationArea = item1.IsOnLocationArea;
            item2.SetTransform(item1.Transfrom.ToDbModel());
            item2.Number      = item1.Number;
            item2.Type        = item1.Type;
            item2.Describe    = item1.Describe;
            item2.Children    = item1.Children.ToDbModel();
            item2.LeafNodes   = item1.LeafNodes.ToDbModel();
            item2.InitBoundId = item1.InitBoundId;
            item2.InitBound   = item1.InitBound.ToDbModel();
            item2.EditBoundId = item1.EditBoundId;
            item2.EditBound   = item1.EditBound.ToDbModel();

            item2.IsRelative         = item1.IsRelative;
            item2.IsCreateAreaByData = item1.IsCreateAreaByData;
            item2.IsOnAlarmArea      = item1.IsOnAlarmArea;
            item2.IsOnLocationArea   = item1.IsOnLocationArea;
            item2.IsDynamicArea      = item1.IsDynamicArea;
            item2.ModelName          = item1.ModelName;
            return(item2);
        }
        public static AreaNode ToTModelS(
            this DbModel.Location.AreaAndDev.Area item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new AreaNode();

            item2.Id       = item1.Id;
            item2.Name     = item1.Name;
            item2.ParentId = item1.ParentId;
            //item2.Parent = item1.Parent;
            item2.Type      = item1.Type;
            item2.Children  = item1.Children.ToTModelS();
            item2.LeafNodes = item1.LeafNodes.ToTModelS();
            item2.KKS       = item1.KKS;

            return(item2);
        }
        public void SendPositionMsg(List <DbModel.LocationHistory.Data.Position> Info)
        {
            string strSendInfo = "";

            foreach (DbModel.LocationHistory.Data.Position item in Info)
            {
                position SendInfo = new position();

                if (item.Code == "" || item.AreaId == null)
                {
                    continue;
                }

                SendInfo.deviceCode = item.Code;
                SendInfo.t          = item.DateTimeStamp;
                SendInfo.x          = item.X;
                SendInfo.y          = item.Z;
                SendInfo.z          = item.Y;
                SendInfo.staffCode  = null;

                if (item.PersonnelID != null)
                {
                    DbModel.Location.Person.Personnel ps = bll.Personnels.DbSet.Where(p => p.Id == item.PersonnelID).FirstOrDefault();
                    SendInfo.staffCode = Convert.ToString(ps.WorkNumber);
                }

                DbModel.Location.AreaAndDev.Area ae = bll.Areas.DbSet.Where(p => p.Id == item.AreaId).FirstOrDefault();
                SendInfo.zoneKksCode = ae.KKS;


                string strJson = JsonConvert.SerializeObject(SendInfo);
                producer.Publish("position", strJson);
                //producer.Publish("http://127.0.0.1:4151/pub?topic=position", strJson);
                strSendInfo = "";
            }
            return;
        }
        public bool EditArchor(Archor Archor, int ParentId)
        {
            bool bReturn = false;

            DbModel.Location.AreaAndDev.Archor Archor2;
            Archor2 = db.Archors.FirstOrDefault(p => p.Code == Archor.Code);
            if (Archor2 == null)
            {
                Archor2 = db.Archors.FirstOrDefault(p => p.DevInfoId == Archor.DevInfoId);
            }
            if (Archor2 == null)
            {
                LocationService service = new LocationService();
                DbModel.Location.AreaAndDev.Area area = service.GetAreaById(ParentId);
                Archor2 = Archor.ToDbModel();

                DbModel.Location.AreaAndDev.DevInfo dev = new DbModel.Location.AreaAndDev.DevInfo();
                dev.Local_DevID = Guid.NewGuid().ToString();
                dev.IP          = "";
                dev.KKS         = "";
                dev.Name        = Archor2.Name;
                if (area != null)
                {
                    dev.ModelName = area.Name == DepNames.FactoryName ? TypeNames.ArchorOutdoor : TypeNames.Archor;//室外基站||室内基站
                }
                else
                {
                    dev.ModelName = TypeNames.Archor;
                }
                dev.Status         = 0;
                dev.ParentId       = ParentId;
                dev.Local_TypeCode = TypeCodes.Archor;
                dev.UserName       = "******";
                Archor2.DevInfo    = dev;
                Archor2.ParentId   = ParentId;

                bReturn = db.Archors.Add(Archor2);
            }
            else
            {
                Archor2.Name       = Archor.Name;
                Archor2.X          = Archor.X;
                Archor2.Y          = Archor.Y;
                Archor2.Z          = Archor.Z;
                Archor2.Type       = Archor.Type;
                Archor2.IsAutoIp   = Archor.IsAutoIp;
                Archor2.Ip         = Archor.Ip;
                Archor2.ServerIp   = Archor.ServerIp;
                Archor2.ServerPort = Archor.ServerPort;
                Archor2.Power      = Archor.Power;
                Archor2.AliveTime  = Archor.AliveTime;
                Archor2.Enable     = Archor.Enable;
                if (!string.IsNullOrEmpty(Archor.Code))
                {
                    Archor2.Code = Archor.Code;
                }
                bReturn = db.Archors.Edit(Archor2);
            }
            EditBusAnchor(Archor, ParentId);
            return(bReturn);
        }
        public List <NearbyDev> GetNearbyDev_Currency(int id, float fDis, int nFlag)
        {
            List <NearbyDev> lst  = new List <NearbyDev>();
            List <NearbyDev> lst2 = new List <NearbyDev>();

            DbModel.Location.Data.LocationCardPosition lcp = db.LocationCardPositions.DbSet.Where(p => p.PersonId == id).FirstOrDefault();
            if (lcp == null || lcp.AreaId == null)
            {
                return(lst);
            }

            int?AreadId = lcp.AreaId;

            float PosX = lcp.X;
            float PosY = lcp.Y;
            float PosZ = lcp.Z;

            float PosX2 = 0;
            float PosY2 = 0;
            float PosZ2 = 0;

            float sqrtDistance = 0;
            float Distance     = 0;

            //根据区域ID和标志位获取摄像头
            GetCameraDevByAreaId(AreadId, nFlag, lst2);
            if (lst2.Count <= 0)
            {
                DbModel.Location.AreaAndDev.Area area = db.Areas.Find(p => p.Id == AreadId);
                GetCameraDevByAreaId(area.ParentId, nFlag, lst2);
            }

            //var query = from t1 in db.DevInfos.DbSet
            //            join t2 in db.DevTypes.DbSet on t1.Local_TypeCode equals t2.TypeCode
            //            join t3 in db.Areas.DbSet on t1.ParentId equals t3.Id
            //            where t1.ParentId == AreadId && (nFlag == 0 ? true : (t1.Local_TypeCode == 3000201 || t1.Local_TypeCode == 14 || t1.Local_TypeCode == 3000610 || t1.Local_TypeCode == 1000102))
            //            select new NearbyDev { id = t1.Id, Name = t1.Name, TypeCode = t1.Local_TypeCode, TypeName = t2.TypeName, Area = t3.Name, X = t1.PosX, Y = t1.PosY, Z = t1.PosZ };

            //if (query != null)
            //{
            //    lst2 = query.ToList();
            //}

            var areas  = db.Areas.ToDictionary();
            var bounds = db.Bounds.ToDictionary();

            foreach (var item in areas)
            {
                var area = item.Value;
                if (area.InitBoundId != null)
                {
                    area.InitBound = bounds[(int)area.InitBoundId];
                }
            }

            foreach (NearbyDev item in lst2)
            {
                float x = item.X;
                float y = item.Y;
                float z = item.Z;

                if (areas.ContainsKey(item.AreaId))
                {
                    var area = areas[item.AreaId];//所在区域


                    if (area.Type == AreaTypes.机房)
                    {
                        var floor    = areas[(int)area.ParentId];
                        var building = areas[(int)floor.ParentId];//
                        var minX     = area.InitBound.GetZeroX() + floor.InitBound.GetZeroX() + building.InitBound.GetZeroX();
                        var minY     = area.InitBound.GetZeroY() + floor.InitBound.GetZeroY() + building.InitBound.GetZeroY();
                        x += minX;
                        z += minY;
                    }
                    else if (area.Type == AreaTypes.楼层)
                    {
                        var floor    = area;
                        var building = areas[(int)floor.ParentId];//
                        var minX     = floor.InitBound.GetZeroX() + building.InitBound.GetZeroX();
                        var minY     = floor.InitBound.GetZeroY() + building.InitBound.GetZeroY();
                        x += minX;
                        z += minY;
                    }
                }

                PosX2 = x - PosX;
                PosY2 = y - PosY;
                PosZ2 = z - PosZ;

                sqrtDistance  = PosX2 * PosX2 + PosY2 * PosY2 + PosZ2 * PosZ2;
                Distance      = (float)System.Math.Sqrt(sqrtDistance);
                item.Distance = Distance;
                if (Distance <= fDis)
                {
                    NearbyDev item2 = item.Clone();
                    if (item2 != null)
                    {
                        item2.X = PosX2;
                        item2.Y = PosY2;
                        item2.Z = PosZ2;
                        lst.Add(item2);
                    }
                }

                PosX2        = 0;
                PosY2        = 0;
                PosZ2        = 0;
                sqrtDistance = 0;
                Distance     = 0;
            }

            lst.Sort(new DevDistanceCompare());

            if (lst.Count == 0)
            {
                lst = null;
            }

            return(lst);
        }