Exemplo n.º 1
0
        /// <summary>
        /// 同步门禁数据
        /// </summary>
        /// <param name="output"></param>
        public void SyncDoorData(Action <string, eOutputType> output, AccessDapperDber doorDapperDber)
        {
            int res = 0;

            string sql = " select * from acc_monitor_log where time>#2018-08-08#";

            sql += " order by time";
            DataTable dtNum = doorDapperDber.ExecuteDataTable(sql);

            if (dtNum.Rows.Count > 0)
            {
                for (int i = 0; i < dtNum.Rows.Count; i++)
                {
                    string id       = dtNum.Rows[i]["id"].ToString();
                    string userId   = dtNum.Rows[i]["pin"].ToString();
                    string deviceId = dtNum.Rows[i]["device_id"].ToString();

                    string consumerName = GetConsumer(userId, doorDapperDber);
                    string doorName     = GetMachine(deviceId, doorDapperDber);

                    if (string.IsNullOrEmpty(consumerName))
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(doorName))
                    {
                        continue;
                    }

                    CmcsGuardInfo entity = Dbers.GetInstance().SelfDber.Entity <CmcsGuardInfo>("where NId=:NId", new { NId = id });
                    if (entity == null)
                    {
                        entity = new CmcsGuardInfo()
                        {
                            DataFrom       = "智能化",
                            F_ConsumerId   = userId,
                            F_ConsumerName = consumerName,
                            F_InOut        = "1",
                            F_ReaderId     = deviceId,
                            F_ReaderName   = doorName,
                            NId            = id,
                            F_ReadDate     = DateTime.Parse(dtNum.Rows[i]["time"].ToString())
                        };

                        res += Dbers.GetInstance().SelfDber.Insert(entity);
                    }
                }
            }
            output(string.Format("同步门禁数据{0}条", res), eOutputType.Normal);
        }
Exemplo n.º 2
0
        public void SyncDoorEventData(Action <string, eOutputType> output)
        {
            int res = 0;

            try
            {
                List <Dictionary <string, object> > acsEventList = new List <Dictionary <string, object> >();
                List <string> cameraNameList = new List <string>();

                DoorEventRequest doorEventRequest = new DoorEventRequest()
                {
                    startTime = DateTime.Now.AddDays(-10),
                    endTime   = DateTime.Now,
                    pageNo    = 1,
                    pageSize  = 1000
                };

                string uri  = "/artemis/api/acs/v1/door/events";
                string body = JsonHelper.SerializeObject(doorEventRequest);

                byte[] resultByte = HttpUtillib.HttpPost(uri, body, 20);
                string resultStr  = Encoding.UTF8.GetString(resultByte);

                Result result = JsonHelper.DeserializeJsonToObject <Result>(resultStr);

                if (result.Code.Equals("0"))
                {
                    ResultData resultData = JsonHelper.DeserializeJsonToObject <ResultData>(result.Data.ToString());

                    acsEventList = JsonHelper.DeserializeJsonToObject <List <Dictionary <string, object> > >(resultData.List.ToString());

                    foreach (Dictionary <string, object> doorEvents in acsEventList)
                    {
                        int    eventType  = Convert.ToInt32(doorEvents["eventType"]);
                        string personName = doorEvents["personName"].ToString();

                        //只处理成功的事件
                        if (dicEventType.ContainsKey(eventType) && !string.IsNullOrWhiteSpace(personName))
                        {
                            string   eventId       = doorEvents["eventId"].ToString();
                            DateTime eventTime     = DateTime.Parse(doorEvents["eventTime"].ToString());
                            string   personId      = doorEvents["personId"].ToString();
                            string   doorIndexCode = doorEvents["doorIndexCode"].ToString();
                            string   doorName      = doorEvents["doorName"].ToString();

                            CmcsGuardInfo entity = Dbers.GetInstance().SelfDber.Entity <CmcsGuardInfo>("where NId=:NId", new { NId = eventId });
                            if (entity == null)
                            {
                                entity = new CmcsGuardInfo()
                                {
                                    DataFrom       = "智能化",
                                    F_ConsumerId   = personId,
                                    F_ConsumerName = personName,
                                    F_InOut        = "1",
                                    F_ReaderId     = doorIndexCode,
                                    F_ReaderName   = doorName,
                                    NId            = eventId,
                                    F_ReadDate     = eventTime,
                                    Remark         = dicEventType[eventType]
                                };

                                res += Dbers.GetInstance().SelfDber.Insert(entity);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                output("同步门禁数据异常" + ex.Message, eOutputType.Error);
                return;
            }

            output(string.Format("同步门禁数据{0}条", res), eOutputType.Normal);
        }