public static DbModel.Location.Data.LocationCardPosition ToDbModel(
            this Location.TModel.Location.Data.TagPosition item1)
        {
            if (item1 == null)
            {
                return(null);
            }
            var item2 = new DbModel.Location.Data.LocationCardPosition();

            item2.Id            = item1.Tag;
            item2.X             = item1.X;
            item2.Y             = item1.Y;
            item2.Z             = item1.Z;
            item2.DateTime      = TimeConvert.ToDateTime(item1.Time);
            item2.DateTimeStamp = item1.Time;
            item2.Power         = item1.Power;
            item2.Number        = item1.Number;
            item2.Flag          = item1.Flag;
            item2.Archors       = item1.Archors;
            item2.AreaId        = item1.AreaId;
            item2.AreaState     = item1.AreaState;
            item2.PowerState    = item1.PowerState;
            item2.MoveState     = item1.MoveState;
            return(item2);
        }
Esempio n. 2
0
        public void SetTime()
        {
            DateTime now = DateTime.Now;

            DateTimeStamp = TimeConvert.ToStamp(now);
            DateTime now2 = TimeConvert.ToDateTime(DateTimeStamp);
        }
Esempio n. 3
0
        private static DevAlarm CreateDevAlarm(events recv, DevInfo di, long lTimeStamp, Abutment_DevAlarmLevel adLevel)
        {
            DevAlarm da = new DevAlarm();

            da.Abutment_Id    = recv.id;
            da.Title          = recv.title;
            da.Msg            = recv.msg;
            da.Level          = adLevel;
            da.Code           = recv.code;
            da.Src            = (Abutment_DevAlarmSrc)recv.src;
            da.DevInfoId      = di.Id;
            da.DevInfo        = di;//这个可能导致设备重复,奇怪
            da.Device_desc    = recv.device_desc;
            da.AlarmTime      = TimeConvert.ToDateTime(lTimeStamp);
            da.AlarmTimeStamp = lTimeStamp;
            return(da);
        }
Esempio n. 4
0
        public bool Parse(string info)
        {
            try
            {
                string[] parts  = info.Split(',');
                int      length = parts.Length;
                if (length <= 1)
                {
                    return(false);            //心跳包回拨
                }
                Code     = parts[0];
                X        = float.Parse(parts[1]); //平面位置
                Z        = float.Parse(parts[2]); //平面位置
                Y        = float.Parse(parts[3]); //高度位置,为了和Unity坐标信息一致,Y为高度轴
                Time     = long.Parse(parts[4]);
                DateTime = TimeConvert.ToDateTime(Time / 1000);

                if (length > 5)
                {
                    Power = int.Parse(parts[5]);
                }
                if (length > 6)
                {
                    Number = int.Parse(parts[6]);
                }
                if (length > 7)
                {
                    Flag = parts[7];
                }
                if (length > 8)
                {
                    Archors = parts[8].Split('@').ToList();
                }
                return(true);
            }
            catch (Exception ex)
            {
                LogEvent.Info(ex.ToString());
                return(false);
            }
        }
Esempio n. 5
0
        public bool Parse(string info)
        {
            try
            {
                string[] parts  = info.Split(',');
                int      length = parts.Length;
                if (length <= 1)
                {
                    return(false);            //心跳包回拨
                }
                Code          = parts[0];
                X             = double.Parse(parts[1]);
                Y             = double.Parse(parts[2]);
                Z             = double.Parse(parts[3]);
                DateTimeStamp = long.Parse(parts[4]);
                DateTime      = TimeConvert.ToDateTime(DateTimeStamp / 1000);

                if (length > 4)
                {
                    Power = int.Parse(parts[5]);
                }
                if (length > 5)
                {
                    Number = int.Parse(parts[6]);
                }
                if (length > 6)
                {
                    Flag = parts[7];
                }
                return(true);
            }
            catch (Exception ex)
            {
                LogEvent.Error(ex);
                return(false);
            }
        }
Esempio n. 6
0
        public string GetText(float offsetX, float offsetY, int timeMode)
        {
            DateTime now = DateTime.Now;
            long     t   = 0;

            if (timeMode == 0)//当前时间作为发送时间
            {
                t = TimeConvert.ToStamp(now);
            }
            else if (timeMode == 1)//当前日期作为发送时间
            {
                DateTime t1   = TimeConvert.ToDateTime(DateTimeStamp);
                DateTime tNew = new DateTime(now.Year, now.Month, now.Day, t1.Hour, t1.Minute,
                                             t1.Second, t1.Millisecond);
                t = TimeConvert.ToStamp(tNew);
            }

            double x = (X - offsetX) / AppSetting.PositionPower;
            double y = (Z - offsetY) / AppSetting.PositionPower;
            double z = Y / AppSetting.PositionPower;

            return(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", Code, x, y, z,
                                 t, Power, Number, Flag, ArchorsText));
        }
        public override bool TickFunction()
        {
            try
            {
                DateTime now = DateTime.Now;
                JsonSerializerSettings setting = new JsonSerializerSettings();
                setting.NullValueHandling = NullValueHandling.Ignore;
                Bll db = Bll.NewBllNoRelation();
                List <EntranceGuardCard> cardPersons = db.EntranceGuardCards.ToList();
                string     strsql         = string.Format(@"select Abutment_Id from deventranceguardcardactions where  OperateTime>'{0}' ", now.AddDays(-3));
                List <int> cardHisListInt = db.EntranceGuardCardHistorys.GetListIntBySql(strsql);
                foreach (EntranceGuardCard card in cardPersons)
                {
                    string cardId = card.Abutment_Id.ToString();

                    DateTime beginTime                        = now.AddDays(-20);
                    string   begin_date                       = beginTime.Year.ToString() + beginTime.Month.ToString() + beginTime.Day.ToString();
                    string   end_date                         = now.Year.ToString() + now.Month.ToString() + now.Day.ToString();
                    string   url                              = "http://" + Ip + ":" + Port + "/api/cards/" + cardId + "/actions";
                    string   result                           = WebApiHelper.GetString("http://120.25.195.214:18000/api/cards/" + cardId + "/actions?begin_date=" + begin_date + "&end_date=" + end_date);
                    Message <cards_actions> message           = JsonConvert.DeserializeObject <Message <cards_actions> >(result, setting);
                    List <cards_actions>    cards_actionsList = message.data;
                    if (cards_actionsList != null && cards_actionsList.Count > 0)
                    {
                        //保存到门禁历史记录里
                        List <DevEntranceGuardCardAction> AddcardHisList  = new List <DevEntranceGuardCardAction>();
                        List <DevEntranceGuardCardAction> EditcardHisList = new List <DevEntranceGuardCardAction>();
                        foreach (cards_actions cardAction in cards_actionsList)
                        {
                            DevEntranceGuardCardAction cardHis = new DevEntranceGuardCardAction();
                            cardHis.Abutment_Id          = cardAction.id;
                            cardHis.OperateTimeStamp     = cardAction.t;
                            cardHis.OperateTime          = TimeConvert.ToDateTime((long)cardAction.t * 1000);
                            cardHis.code                 = cardAction.code;
                            cardHis.description          = cardAction.description;
                            cardHis.device_id            = cardAction.device_id;
                            cardHis.card_code            = cardAction.card_code;
                            cardHis.EntranceGuardCardId  = card.Id;
                            cardHis.PersonnelAbutment_Id = card.PersonnelAbutment_Id;
                            if (cardHisListInt.Contains(cardAction.id))
                            {
                                //  EditcardHisList.Add(cardHis);
                                // bool result1=  db.DevEntranceGuardCardActions.Edit(cardHis);
                            }
                            else
                            {
                                AddcardHisList.Add(cardHis);
                                // bool result2 = db.DevEntranceGuardCardActions.Add(cardHis);
                            }
                        }

                        bool addResult = db.DevEntranceGuardCardActions.AddRange(AddcardHisList);
                        //  bool editResult = db.DevEntranceGuardCardActions.EditRange(EditcardHisList);
                        Log.Info(string.Format("CardsActionsThread:保存门禁历史记录结果,门禁卡号:{0},添加:{1}条,结果:{2}", cardId, AddcardHisList.Count, addResult));
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("CardsActionsThread:" + ex.ToString());
            }
            return(true);
        }
Esempio n. 8
0
        private bool ParseText(string info, float offsetX, float offsetY)
        {
            try
            {
                _info = info;
                string[] parts  = info.Split(new[] { ',' });
                int      length = parts.Length;
                if (length <= 1)
                {
                    return(false);            //心跳包回拨
                }
                Code = parts[0];
                //if (Code.StartsWith("1"))
                //{
                //    LogEvent.Info("RealPos,", "Code.StartsWith(1):" + info);
                //}
                if (parts[1] == "-1.#IND0")
                {
                    parts[1] = "-1.0";
                }
                if (parts[2] == "-1.#IND0")
                {
                    parts[2] = "-1.0";
                }
                float x = parts[1].ToFloat() * AppSetting.PositionPower;
                float y = parts[2].ToFloat() * AppSetting.PositionPower;
                if (x < offsetX)
                {
                    X = x + offsetX; //平面位置
                    Z = y + offsetY; //平面位置
                }
                else //模拟数据是可以没有偏移量的 看模拟程序的版本
                {
                    X = x;
                    Z = y;
                }

                Y             = parts[3].ToFloat() * AppSetting.PositionPower;//高度位置,为了和Unity坐标信息一致,Y为高度轴
                DateTimeStamp = parts[4].ToLong();
                DateTime      = TimeConvert.ToDateTime(DateTimeStamp);
                //TimeSpan time1 = DateTime.Now - DateTime;
                //long DateTimeStamp2 = TimeConvert.DateTimeToTimeStamp(DateTime);
                if (length > 5)
                {
                    Power = parts[5].ToInt();
                    if (Power >= AppSetting.LowPowerFlag)
                    {
                        PowerState = 0;
                    }
                    else
                    {
                        PowerState = 1;
                    }
                }

                if (length > 6)
                {
                    Number = parts[6].ToInt();
                }
                if (length > 7)
                {
                    Flag = parts[7];
                }
                if (length > 8)
                {
                    ArchorsText = parts[8];
                    Archors     = ArchorsText.Split(new[] { '@' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    if (Archors.Count > 1)
                    {
                        Console.Write("Archors.Count > 1");
                    }
                    IsSimulate = ArchorsText == "@0000" || string.IsNullOrEmpty(ArchorsText);
                }

                //if (Code == "092D" && (ArchorsText == null || Archors == null))
                //{
                //    int i = 0;
                //}

                if (length > 8)
                {
                }
                //else if(length == 8)
                //{

                //}

                else
                {
                    LogEvent.Info("位置信息数据可能被截断!!!!:" + info);
                    //return false;
                }
                return(true);
            }
            catch (Exception ex)
            {
                LogEvent.Info("定位数据解析失败:" + info + "\n" + ex.ToString());
                return(false);
            }
        }
        /// <summary>Handles a message.</summary>
        public void HandleMessage(IMessage message)
        {
            string msg  = Encoding.UTF8.GetString(message.Body);
            events recv = JsonConvert.DeserializeObject <events>(msg);

            if (recv == null || recv.raw_id == null || recv.raw_id == "" || recv.src != 1)
            {
                return;
            }

            DevInfo di = DevList.Find(p => p.Abutment_DevID == recv.raw_id);

            if (di == null)
            {
                return;
            }

            bool bFlag  = false;
            int  nLevel = (int)recv.level;
            Abutment_DevAlarmLevel adLevel = (Abutment_DevAlarmLevel)nLevel;

            long lTimeStamp = recv.t * 1000;

            if (nLevel == 0)
            {
                adLevel = Abutment_DevAlarmLevel.未定;
            }

            DevAlarm da = DaList.Find(p => p.DevInfoId == di.Id && p.AlarmTimeStamp == lTimeStamp);

            if (da == null)
            {
                if (recv.state == 0)
                {
                    da                = new DevAlarm();
                    da.Abutment_Id    = recv.id;
                    da.Title          = recv.title;
                    da.Msg            = recv.msg;
                    da.Level          = adLevel;
                    da.Code           = recv.code;
                    da.Src            = (Abutment_DevAlarmSrc)recv.src;
                    da.DevInfoId      = di.Id;
                    da.Device_desc    = recv.device_desc;
                    da.AlarmTime      = TimeConvert.ToDateTime(lTimeStamp);
                    da.AlarmTimeStamp = lTimeStamp;
                    bll.DevAlarms.Add(da);
                    DaList.Add(da);
                    bFlag = true;
                }
            }
            else
            {
                if (recv.state == 1 || recv.state == 2)
                {
                    DevAlarmHistory da_history = da.RemoveToHistory();
                    DaList.Remove(da);
                    bll.DevAlarms.DeleteById(da.Id);
                    bll.DevAlarmHistorys.Add(da_history);
                    da.Level = Abutment_DevAlarmLevel.无;
                    bFlag    = true;
                }
                else if (adLevel != da.Level)
                {
                    da.Level = adLevel;
                    da.Title = recv.title;
                    da.Msg   = recv.msg;
                    bll.DevAlarms.Edit(da);
                    bFlag = true;
                }
            }

            if (bFlag)
            {
                OnDevAlarmReceived(da);
            }

            return;
        }