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