예제 #1
0
        /// <summary>
        /// 开关门 信息显示 和记录
        /// </summary>
        private void OnOffDoorInfoRecord(WgDoorType doorOrBox, string strDoorName, DoorsState state, string strOpenType, string strGroup, string strUser, DateTime timeOpen, string strArea)
        {
            EventType eventType = EventType.门禁;

            if (doorOrBox == WgDoorType.门禁)
            {
                if (state == DoorsState.开门)
                {
                    commonCls.NewDoorInOut(state, strOpenType, strDoorName, strGroup, strUser, "");
                }
                else if (state == DoorsState.关门)
                {
                    TimeSpan timeSpan = DateTime.Now - timeOpen;//listWg[iIndex].listDoor[iIndexDoor].TimeOpenDoor;
                    string   strSpan  = clsCommon.CalculateTime(timeSpan);
                    commonCls.NewDoorInOut(state, "", "", "", "", strSpan);
                }
            }
            else if (doorOrBox == WgDoorType.工具柜)
            {
                eventType = EventType.工具柜;
                commonCls.BoxOnOffRecord(strArea, strDoorName, state, strOpenType, strGroup, strUser);
            }
            if (NewEventShowEvent != null)
            {
                NewEventShowEvent(new NewEventEventArgs(eventType, strDoorName, state.ToString(), strUser, strOpenType, DateTime.Now));
            }
        }
예제 #2
0
        /// <summary>
        /// 工具柜 开关门 时间
        /// </summary>
        public void BoxOnOffRecord(string strArea, string strName, DoorsState doorState, string strOpenType, string strGroupName, string strOpenDoorPeople)
        {
            string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string str     = "insert into tb_RecordBoxDoor (BoxArea,BoxName,OpenOrClose,Time,OpenType,GroupName,UserName) values ('" + strArea + "'," +
                             "'" + strName + "','" + doorState.ToString() + "','" + strTime + "','" + strOpenType + "','" + strGroupName + "','" + strOpenDoorPeople + "')";

            datalogic.SqlComNonQuery(str);
        }
예제 #3
0
        /// <summary>
        /// 工具柜 状态及 记录
        /// </summary>
        /// <param name="iIndex"></param>
        /// <param name="doorState"></param>
        private void DoorStateRecord(int iIndex)
        {
            DoorsState doorState = doorState = listWg[iIndex].GetDoorState(1);

            if (doorState == DoorsState.开门 || doorState == DoorsState.关门)
            {
                string   strArea           = listWg[iIndex].StrArea;
                string   strName           = listWg[iIndex].StrBoxName;
                string   strOpenType       = "";
                string   strTime           = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                string   strOpenDoorPeople = "";
                string   strGroupName      = "";
                DateTime timeOpen          = DateTime.Now;

                if (listWg[iIndex].BoxDoorState != doorState)
                {
                    lock (listWg)
                    {
                        listWg[iIndex].BoxDoorState = doorState;
                    }

                    if (doorState == DoorsState.开门)
                    {
                        //开门类型
                        strOpenType = listWg[iIndex].StrOpenTypeDoor;
                        if (strOpenType == OpenDoorType.刷卡.ToString())
                        {
                            strGroupName      = listWg[iIndex].StrOpenGroup;
                            strOpenDoorPeople = listWg[iIndex].StrOpenName;
                        }

                        #region

                        //#region 关闭RFID扫描

                        //string strHasRfid = listWg[iIndex].StrHasRfid;
                        //if (strHasRfid == DeviceUsing.启用.ToString())
                        //{
                        //    string strMain = listWg[iIndex].StrRfidMain;
                        //    string StrChildId = listWg[iIndex].StrChildId;
                        //    for (int iIndexRfid = 0; iIndexRfid < MainControl.listBoxRfid.Count; iIndexRfid++)
                        //    {

                        //        if (strMain == BoxRfidMain.主机.ToString())
                        //        {
                        //            if (MainControl.listBoxRfid[iIndexRfid].StrChildIdMain == StrChildId)
                        //            {
                        //                if (MainControl.listBoxRfid[iIndexRfid].StateMainRead != BoxRfidState.不读)
                        //                {
                        //                    lock (MainControl.listBoxRfid)
                        //                    {
                        //                        MainControl.listBoxRfid[iIndexRfid].StateMainRead = BoxRfidState.不读;
                        //                    }
                        //                }
                        //                break;
                        //            }
                        //        }
                        //        else if (strMain == BoxRfidMain.从机.ToString())
                        //        {
                        //            if (MainControl.listBoxRfid[iIndexRfid].StrChildIdSlave == StrChildId)
                        //            {
                        //                if (MainControl.listBoxRfid[iIndexRfid].StateSlaveRead != BoxRfidState.不读)
                        //                {
                        //                    lock (MainControl.listBoxRfid)
                        //                    {
                        //                        MainControl.listBoxRfid[iIndexRfid].StateSlaveRead = BoxRfidState.不读;
                        //                    }
                        //                }
                        //                break;
                        //            }
                        //        }
                        //    }
                        //}

                        //#endregion

                        #endregion
                    }
                    else if (doorState == DoorsState.关门)
                    {
                        lock (listWg)
                        {
                            listWg[iIndex].StrOpenTypeDoor = "";
                            listWg[iIndex].StrOpenGroup    = "";
                            listWg[iIndex].StrOpenName     = "";
                        }

                        #region

                        #region

                        //#region RFID扫描

                        //string strHasRfid = listWg[iIndex].StrHasRfid;
                        //if (strHasRfid == DeviceUsing.启用.ToString())
                        //{
                        //    string strMain = listWg[iIndex].StrRfidMain;
                        //    string StrChildId = listWg[iIndex].StrChildId;
                        //    for (int iIndexRfid = 0; iIndexRfid < MainControl.listBoxRfid.Count; iIndexRfid++)
                        //    {
                        //        if (strMain == BoxRfidMain.主机.ToString())
                        //        {
                        //            if (MainControl.listBoxRfid[iIndexRfid].StrChildIdMain == StrChildId)
                        //            {
                        //                //从机 有没读标签
                        //                if (MainControl.listBoxRfid[iIndexRfid].StateSlaveRead == BoxRfidState.不读)
                        //                {
                        //                    lock (MainControl.listBoxRfid)
                        //                    {
                        //                        MainControl.listBoxRfid[iIndexRfid].StateMainRead = BoxRfidState.读标签;
                        //                        MainControl.listBoxRfid[iIndexRfid].TimeMainStart = DateTime.Now;
                        //                    }
                        //                }
                        //                else
                        //                {
                        //                    if (MainControl.listBoxRfid[iIndexRfid].StateMainRead != BoxRfidState.等待读)
                        //                    {
                        //                        lock (MainControl.listBoxRfid)
                        //                        {
                        //                            MainControl.listBoxRfid[iIndexRfid].StateMainRead = BoxRfidState.等待读;
                        //                        }
                        //                    }
                        //                }
                        //                if (MainControl.listBoxRfid[iIndexRfid].timerRfidFast.State != TimerState.Running)
                        //                    MainControl.listBoxRfid[iIndexRfid].StatrRead();

                        //                break;
                        //            }
                        //        }
                        //        else if (strMain == BoxRfidMain.从机.ToString())
                        //        {
                        //            if (MainControl.listBoxRfid[iIndexRfid].StrChildIdSlave == StrChildId)
                        //            {
                        //                //主机 有没读标签
                        //                if (MainControl.listBoxRfid[iIndexRfid].StateMainRead == BoxRfidState.不读)
                        //                {
                        //                    lock (MainControl.listBoxRfid)
                        //                    {
                        //                        MainControl.listBoxRfid[iIndexRfid].StateSlaveRead = BoxRfidState.读标签;
                        //                        MainControl.listBoxRfid[iIndexRfid].TimeSlaveStart = DateTime.Now;
                        //                    }
                        //                }
                        //                else
                        //                {
                        //                    if (MainControl.listBoxRfid[iIndexRfid].StateSlaveRead != BoxRfidState.等待读)
                        //                    {
                        //                        lock (MainControl.listBoxRfid)
                        //                        {
                        //                            MainControl.listBoxRfid[iIndexRfid].StateSlaveRead = BoxRfidState.等待读;
                        //                        }
                        //                    }
                        //                }
                        //                if (MainControl.listBoxRfid[iIndexRfid].timerRfidFast.State != TimerState.Running)
                        //                    MainControl.listBoxRfid[iIndexRfid].StatrRead();
                        //                break;
                        //            }
                        //        }


                        //        //if (strMain == BoxRfidMain.主机.ToString())
                        //        //{
                        //        //    if (MainControl.listBoxRfid[iIndexRfid].StrChildIdMain == StrChildId)
                        //        //    {
                        //        //        if (MainControl.listBoxRfid[iIndexRfid].BlMainRead == false)
                        //        //        {
                        //        //            lock (MainControl.listBoxRfid)
                        //        //            {
                        //        //                MainControl.listBoxRfid[iIndexRfid].BlMainRead = true;
                        //        //            }
                        //        //        }
                        //        //        if (MainControl.listBoxRfid[iIndexRfid].timerRfidFast.State != TimerState.Running)
                        //        //            MainControl.listBoxRfid[iIndexRfid].StatrRead();
                        //        //        break;
                        //        //    }
                        //        //}
                        //        //else if (strMain == BoxRfidMain.从机.ToString())
                        //        //{
                        //        //    if (MainControl.listBoxRfid[iIndexRfid].StrChildIdSlave == StrChildId)
                        //        //    {
                        //        //        if (MainControl.listBoxRfid[iIndexRfid].BlSlaveRead == false)
                        //        //        {
                        //        //            lock (MainControl.listBoxRfid)
                        //        //            {
                        //        //                MainControl.listBoxRfid[iIndexRfid].BlSlaveRead = true;
                        //        //            }
                        //        //        }
                        //        //        if (MainControl.listBoxRfid[iIndexRfid].timerRfidFast.State != TimerState.Running)
                        //        //            MainControl.listBoxRfid[iIndexRfid].StatrRead();
                        //        //        break;
                        //        //    }
                        //        //}
                        //    }
                        //}

                        //#endregion

                        #endregion

                        #endregion
                    }


                    lock (MainControl.dtNewEvent)//Type ToolID Content People Time No IsClick
                    {
                        DataRow dr = MainControl.dtNewEvent.NewRow();
                        dr["Type"]  = EventType.工具柜.ToString();
                        dr["Point"] = strName;
                        if (strOpenType == OpenDoorType.超级密码开门.ToString())
                        {
                            dr["Content"] = OpenDoorType.密码.ToString();
                            strOpenType   = OpenDoorType.密码.ToString();
                        }
                        else
                        {
                            dr["Content"] = doorState.ToString();
                        }
                        dr["People"] = strOpenDoorPeople;
                        dr["Time"]   = strTime;
                        MainControl.dtNewEvent.Rows.Add(dr);
                    }
                    string str = "insert into tb_RecordBoxDoor (BoxArea,BoxName,OpenOrClose,Time,OpenType,GroupName,UserName) values ('" + strArea + "'," +
                                 "'" + strName + "','" + doorState.ToString() + "','" + strTime + "','" + strOpenType + "','" + strGroupName + "','" + strOpenDoorPeople + "')";
                    datalogic.SqlComNonQuery(str);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// 大门 状态及 记录
        /// </summary>
        /// <param name="iIndex"></param>
        /// <param name="doorState"></param>
        private void BigDoorStateRecord(int iIndex, DoorNo doorNo)
        {
            DoorsState doorState = DoorsState.初值;

            if (doorNo == DoorNo.门1)
            {
                doorState = listWg[iIndex].GetDoorState(1);
            }
            else if (doorNo == DoorNo.门2)
            {
                doorState = listWg[iIndex].GetDoorState(2);
            }
            if (doorState == DoorsState.开门 || doorState == DoorsState.关门)
            {
                bool     blRecord          = false;
                string   strPoint          = "";
                string   strOpenType       = "";
                string   strTime           = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                string   strOpenDoorPeople = "";
                string   strGroupName      = "";
                DateTime timeOpen          = DateTime.Now;

                #region 门 状态

                if (doorNo == DoorNo.门1)
                {
                    if (listWg[iIndex].DoorState1 != doorState)
                    {
                        blRecord = true;
                    }
                    if (blRecord)
                    {
                        lock (listWg)
                        {
                            listWg[iIndex].DoorState1 = doorState;
                        }

                        if (doorState == DoorsState.开门)
                        {
                            //开门类型
                            strOpenType = listWg[iIndex].StrOpenTypeDoor1;
                            if (listWg[iIndex].WgDoorCount == DoorCount.双门)
                            {
                                strPoint = listWg[iIndex].StrNameDoor1;
                            }
                            else
                            {
                                strPoint = "";
                            }
                            if (strOpenType == OpenDoorType.刷卡.ToString())
                            {
                                strGroupName      = listWg[iIndex].StrOpenGroup1;
                                strOpenDoorPeople = listWg[iIndex].StrOpenName1;
                            }

                            lock (listWg)
                            {
                                listWg[iIndex].TimeOpenDoor1 = DateTime.Now;
                            }
                        }
                        else if (doorState == DoorsState.关门)
                        {
                            lock (listWg)
                            {
                                timeOpen = listWg[iIndex].TimeOpenDoor1;
                                listWg[iIndex].StrOpenTypeDoor1 = "";
                                listWg[iIndex].StrOpenGroup1    = "";
                                listWg[iIndex].StrOpenName1     = "";
                            }
                        }
                    }
                }
                else if (doorNo == DoorNo.门2)
                {
                    if (listWg[iIndex].DoorState2 != doorState)
                    {
                        blRecord = true;
                    }
                    if (blRecord)
                    {
                        lock (listWg)
                        {
                            listWg[iIndex].DoorState2 = doorState;
                        }
                        if (doorState == DoorsState.开门)
                        {
                            strOpenType = listWg[iIndex].StrOpenTypeDoor2;
                            strPoint    = listWg[iIndex].StrNameDoor2;
                            if (strOpenType == OpenDoorType.刷卡.ToString())
                            {
                                strGroupName      = listWg[iIndex].StrOpenGroup2;
                                strOpenDoorPeople = listWg[iIndex].StrOpenName2;
                            }
                            lock (listWg)
                            {
                                listWg[iIndex].TimeOpenDoor2 = DateTime.Now;
                            }
                        }
                        else if (doorState == DoorsState.关门)
                        {
                            lock (listWg)
                            {
                                timeOpen = listWg[iIndex].TimeOpenDoor2;
                                listWg[iIndex].StrOpenTypeDoor2 = "";
                                listWg[iIndex].StrOpenGroup2    = "";
                                listWg[iIndex].StrOpenName2     = "";
                            }
                        }
                    }
                }

                #endregion

                #region 产生记录

                if (blRecord)
                {
                    lock (MainControl.dtNewEvent)//Type ToolID Content People Time No IsClick
                    {
                        DataRow dr = MainControl.dtNewEvent.NewRow();
                        dr["Type"]  = EventType.门禁.ToString();
                        dr["Point"] = strPoint;
                        if (strOpenType == OpenDoorType.超级密码开门.ToString())
                        {
                            dr["Content"] = OpenDoorType.密码.ToString();
                            strOpenType   = OpenDoorType.密码.ToString();
                        }
                        else
                        {
                            dr["Content"] = doorState.ToString();
                        }

                        dr["People"] = strOpenDoorPeople;
                        dr["Time"]   = strTime;
                        MainControl.dtNewEvent.Rows.Add(dr);
                    }

                    if (doorState == DoorsState.开门)
                    {
                        MainControl.blVoiceOpenDoor = true;
                        MainControl.timeLastVoice   = DateTime.Now;

                        string str = "insert into tb_RecordDoorInOut (OpenType,Point,GroupName,UserName,OpenTime,CloseTime,DurationTime)" +
                                     "values ('" + strOpenType + "','" + strPoint + "','" + strGroupName + "','" + strOpenDoorPeople + "','" + strTime + "','','')";
                        datalogic.SqlComNonQuery(str);
                    }
                    else if (doorState == DoorsState.关门)
                    {
                        TimeSpan timeSpan    = DateTime.Now - timeOpen;
                        string   strDuration = clsCommon.CalculateTime(timeSpan);
                        string   strSql      = "update tb_RecordDoorInOut set CloseTime='" + strTime + "',DurationTime='" + strDuration + "' where " +
                                               "CloseTime='' and DurationTime='' and Point='" + strPoint + "'";
                        datalogic.SqlComNonQuery(strSql);
                    }
                }

                #endregion
            }
        }
예제 #5
0
        private void timer_Execute()
        {
            try
            {
                for (int iIndex = 0; iIndex < listZk.Count; iIndex++)
                {
                    if (listZk[iIndex].BlConnoct == false)
                    {
                        TimeSpan span = DateTime.Now - listZk[iIndex].TimeConnectLast;
                        if (span.TotalMinutes > 2)
                        {
                            bool blRet = ConnectZk(iIndex);
                            if (blRet)
                            {
                                if (listZk[iIndex].StateOfNet != CommuniState.已连接)
                                {
                                    lock (listZk)
                                    {
                                        listZk[iIndex].StateOfNet = CommuniState.已连接;
                                    }
                                    //异常事件
                                    NetErrInfoAndRecord(iIndex, ErrorContent.通信恢复正常.ToString());
                                }
                            }
                            lock (listZk)
                            {
                                listZk[iIndex].TimeConnectLast = DateTime.Now;
                            }
                        }
                    }
                    else
                    {
                        DoorsState state = DoorsState.初值;
                        bool       blRet = listZk[iIndex].GetDoorState(ref state);
                        if (blRet)
                        {
                            if (state != listZk[iIndex].doorInfo.StateOfDoor)
                            {
                                listZk[iIndex].doorInfo.StateOfDoor = state;

                                if (state == DoorsState.关门)
                                {
                                    listZk[iIndex].doorInfo.StrOpenType = "";
                                    listZk[iIndex].doorInfo.StrGroup    = "";
                                    listZk[iIndex].doorInfo.StrUser     = "";
                                }
                                if (listZk[iIndex].doorInfo.IsOfRfid == DeviceUsing.启用)
                                {//確定是哪个门禁关联RFID
                                    if (state == DoorsState.关门)
                                    {
                                        clsRfidRead.strOpenUser = "";
                                    }
                                    else if (state == DoorsState.开门)
                                    {
                                        clsRfidRead.strOpenUser = listZk[iIndex].doorInfo.StrUser;
                                    }
                                }

                                //if (state == DoorsState.关门)
                                //{
                                //    listZk[iIndex].doorInfo.StrOpenType = "";
                                //    listZk[iIndex].doorInfo.StrGroup = "";
                                //    listZk[iIndex].doorInfo.StrUser = "";
                                //    if (listZk[iIndex].doorInfo.IsOfRfid == DeviceUsing.启用)
                                //    {
                                //        clsRfidRead.strOpenUser = "";
                                //    }
                                //}
                                //else if (state == DoorsState.开门 )
                                //{
                                //    if (listZk[iIndex].doorInfo.IsOfRfid == DeviceUsing.启用)
                                //    {
                                //        clsRfidRead.strOpenUser  = listZk[iIndex].doorInfo.StrUser;
                                //    }
                                //}
                                //开关门事件
                                if (NewEventShowEvent != null)
                                {
                                    string strPoint = listZk[iIndex].doorInfo.StrDoorName;
                                    string strType  = "非法开门";
                                    if (!String.IsNullOrEmpty(listZk[iIndex].doorInfo.StrOpenType))
                                    {
                                        strType = listZk[iIndex].doorInfo.StrOpenType;
                                    }
                                    else
                                    {
                                        strType = state.ToString();
                                    }
                                    string strUser  = listZk[iIndex].doorInfo.StrUser;
                                    string StrGroup = listZk[iIndex].doorInfo.StrGroup;
                                    NewEventShowEvent(new NewEventEventArgs(EventType.门禁, strPoint, state.ToString(), strUser, strType, DateTime.Now));
                                    commonCls.NewDoorInOut(state, strType, strPoint, StrGroup, strUser, "");
                                }
                            }
                        }
                        else
                        {
                            if (listZk[iIndex].BlConnoct)
                            {
                                DisConnectZkAndClearEvent(iIndex);
                                if (listZk[iIndex].StateOfNet != CommuniState.已断开)
                                {
                                    lock (listZk)
                                    {
                                        listZk[iIndex].StateOfNet = CommuniState.已断开;
                                    }
                                    //异常事件
                                    NetErrInfoAndRecord(iIndex, ErrorContent.通信异常.ToString());
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (frmMain.blDebug)
                {
                    MessageUtil.ShowTips(ex.Message);
                }
            }
        }