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); }
/// <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); }