예제 #1
0
        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);
        }
예제 #2
0
        /// <summary>
        /// 获取门禁卡操作历史
        /// </summary>
        /// <param name="id"></param>
        /// <param name="begin_date"></param>
        /// <param name="end_date"></param>
        /// <returns></returns>
        public BaseTran <cards_actions> GetSingleCardActionHistory(int id, string begin_date, string end_date)
        {
            BaseTran <cards_actions> recv = new BaseTran <cards_actions>();

            try
            {
                string path = "api/cards/" + Convert.ToString(id) + "/actions";
                string url  = BaseUri + path;
                if (begin_date != null)
                {
                    url += "?begin_date=" + begin_date;
                }
                else
                {
                    url += "?begin_date";
                }

                if (end_date != null)
                {
                    url += "&end_date=" + end_date;
                }
                else
                {
                    url += "&end_date";
                }

                recv = GetEntityList <cards_actions>(url);

                if (recv.data == null)
                {
                    recv.data = new List <cards_actions>();
                }

                EntranceGuardCard egc = bll.EntranceGuardCards.DbSet.FirstOrDefault(p => p.Abutment_Id == id);

                if (egc != null)
                {
                    foreach (cards_actions item in recv.data)
                    {
                        DevEntranceGuardCardAction degca = bll.DevEntranceGuardCardActions.DbSet.FirstOrDefault(p => p.Abutment_Id == item.id);
                        DevInfo devinfo = bll.DevInfos.DbSet.FirstOrDefault(p => p.Abutment_Id == item.device_id);
                        if (devinfo == null)
                        {
                            continue;
                        }

                        int nFlag = 0;
                        if (degca == null)
                        {
                            degca             = new DevEntranceGuardCardAction();
                            degca.OperateTime = null;
                            nFlag             = 1;
                        }

                        degca.Abutment_Id         = item.id;
                        degca.DevInfoId           = devinfo.Id;
                        degca.EntranceGuardCardId = egc.Id;
                        degca.code             = item.code;
                        degca.description      = item.description;
                        degca.OperateTimeStamp = item.t;
                        degca.nInOutState      = 0;

                        if (item.t != null)
                        {
                            long t = (long)item.t;
                            degca.OperateTime = TimeConvert.TimeStampToDateTime(t);
                        }

                        if (nFlag == 1)
                        {
                            bll.DevEntranceGuardCardActions.Add(degca);
                        }
                        else
                        {
                            bll.DevEntranceGuardCardActions.Edit(degca);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string messgae = ex.Message;
            }

            return(recv);
        }