/// <summary> /// 添加违规记录 /// </summary> /// <param name="eol">进出记录</param> /// <param name="type">违规类型</param> /// <param name="note">提示信息</param> private void AddViolationRecordByEnterOutLog(EnterOutLogInfo eol, ViolationRecordsType type, string note, ReadingRoomSetting roomSetting, DateTime nowDateTime) { try { if (roomSetting.BlackListSetting.Used && !roomSetting.BlackListSetting.ViolateRoule[type]) { return; } if (!regulationRulesSetting.BlacklistSet.Used || !regulationRulesSetting.BlacklistSet.ViolateRoule[type]) { return; } ViolationRecordsLogInfo vrli = new ViolationRecordsLogInfo(); vrli.CardNo = eol.CardNo; vrli.SeatID = eol.SeatNo; if (vrli.SeatID.Length > roomSetting.SeatNumAmount) { vrli.SeatID = vrli.SeatID.Substring(vrli.SeatID.Length - roomSetting.SeatNumAmount); } vrli.ReadingRoomID = eol.ReadingRoomNo; vrli.EnterOutTime = nowDateTime.ToString(); vrli.EnterFlag = type; vrli.Remark = note; seatManageService.AddViolationRecordsLog(vrli); WriteLog.Write(string.Format("监控服务:读者{0},{1},记录违规", vrli.CardNo, vrli.Remark)); } catch (Exception ex) { WriteLog.Write(string.Format("监控服务:添加违规记录发生错误:" + ex.Message)); } }
/// <summary> /// 暂离超时操作 /// </summary> /// <param name="enterOutlog">进出记录</param> /// <param name="roomset">阅览室设置</param> private void ShortLeaveOverTimeOperator(EnterOutLogInfo enterOutlog, ReadingRoomSetting readingRoomSetting, DateTime nowDateTime) { try { string vrremark = ""; ViolationRecordsType vrtypt = ViolationRecordsType.ShortLeaveOutTime; enterOutlog.EnterOutTime = nowDateTime; enterOutlog.EnterOutState = EnterOutLogType.Leave; switch (enterOutlog.Flag) {//TODO:记录管理员信息 case Operation.Admin: enterOutlog.Remark = string.Format("在{0},{1}号座位,被管理员设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,被管理员设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveByAdminOutTime; break; case Operation.OtherReader: enterOutlog.Remark = string.Format("在{0},{1}号座位,被其他读者设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,被其他读者设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveByReaderOutTime; break; case Operation.Reader: enterOutlog.Remark = string.Format("在{0},{1}号座位,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveOutTime; break; case Operation.Service: enterOutlog.Remark = string.Format("在{0},{1}号座位,在座超时,监控服务设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,在座超时,监控服务设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.SeatOutTime; break; default: enterOutlog.Remark = string.Format("在{0},{1}号座位,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveOutTime; break; } enterOutlog.Flag = Operation.Service; int logid = 0; seatManageService.AddEnterOutLogInfo(enterOutlog, ref logid); WriteLog.Write(string.Format("读者{0},{1}", enterOutlog.CardNo, enterOutlog.Remark)); if (readingRoomSetting.IsRecordViolate) { AddViolationRecordByEnterOutLog(enterOutlog, vrtypt, vrremark, readingRoomSetting, nowDateTime); } } catch (Exception ex) { WriteLog.Write(string.Format("监控服务:处理读者暂离超时发生错误:" + ex.Message)); } }
public JsonResult SaveNewViolate() { JsonResult result = null; SeatManage.ClassModel.RegulationRulesSetting regulationRulesSetting = T_SM_SystemSet.GetRegulationRulesSetting(); string CardNo = Request.Params["txtNum"].Trim(); string SeatNo = Request.Params["txtSeat"].Trim(); string seatnoremark = ""; if (!string.IsNullOrEmpty(SeatNo)) { seatnoremark = SeatNo + "号座位,"; } string Remark = Request.Params["txtRemark"].Trim(); // txtRemark.Text; ViolationRecordsType Type = (ViolationRecordsType)int.Parse(Request.Params["selectVrType"].Trim()); string ReadingRoomNo = Request.Params["selectRooms"].Trim(); //ddlroom.SelectedValue; ReadingRoomInfo room = SeatManage.Bll.T_SM_ReadingRoom.GetSingleRoomInfo(ReadingRoomNo); if (room.Setting.IsRecordViolate) { ViolationRecordsLogInfo vrli = new ViolationRecordsLogInfo(); vrli.CardNo = CardNo; vrli.SeatID = SeatNo; vrli.ReadingRoomID = ReadingRoomNo; vrli.EnterOutTime = ServiceDateTime.Now.ToString(); vrli.EnterFlag = Type; vrli.Remark = string.Format("在{0},{1}被管理员{2},手动记录违规,备注{3}", room.Name, seatnoremark, this.LoginId, Remark); if (T_SM_ViolateDiscipline.AddViolationRecords(vrli)) { result = Json(new { status = "yes", message = "添加成功" }, JsonRequestBehavior.AllowGet); } else { result = Json(new { status = "no", message = "添加失败" }, JsonRequestBehavior.AllowGet); // FineUI.Alert.Show("添加失败!"); } } return(result); }
/// <summary> /// 保存设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSubmit_Click(object sender, EventArgs e) { SeatManage.ClassModel.RegulationRulesSetting regulationRulesSetting = T_SM_SystemSet.GetRegulationRulesSetting(); string CardNo = txtCardno.Text; string SeatNo = txtseatno.Text; string seatnoremark = ""; if (!string.IsNullOrEmpty(SeatNo)) { seatnoremark = SeatNo + "号座位,"; } string Remark = txtRemark.Text; ViolationRecordsType Type = (ViolationRecordsType)int.Parse(ddltype.SelectedValue); string ReadingRoomNo = ddlroom.SelectedValue; ReadingRoomInfo room = SeatManage.Bll.T_SM_ReadingRoom.GetSingleRoomInfo(ReadingRoomNo); if (room.Setting.IsRecordViolate) { ViolationRecordsLogInfo vrli = new ViolationRecordsLogInfo(); vrli.CardNo = CardNo; vrli.SeatID = SeatNo; vrli.ReadingRoomID = ReadingRoomNo; vrli.EnterOutTime = ServiceDateTime.Now.ToString(); vrli.EnterFlag = Type; vrli.Remark = string.Format("在{0},{1}被管理员{2},手动记录违规,备注{3}", room.Name, seatnoremark, this.LoginId, Remark); if (T_SM_ViolateDiscipline.AddViolationRecords(vrli)) { PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); FineUI.Alert.Show("添加成功!"); } else { FineUI.Alert.Show("添加失败!"); } } }
/// <summary> /// 根据条件、学号模糊查询违规记录 /// </summary> /// <param name="cardNo"></param> /// <param name="roonNum"></param> /// <param name="beginDate"></param> /// <param name="endDate"></param> /// <returns></returns> public List <ViolationRecordsLogInfo> GetViolationRecordsLogsByType_ByFuzzySearch(string cardNo, string roomNums, string beginDate, string endDate, LogStatus logstatus, LogStatus blackliststatus, ViolationRecordsType vrtype) { StringBuilder strWhere = new StringBuilder(); if (((int)logstatus) > -1) { strWhere.Append(string.Format(" Flag = '{0}'", (int)logstatus)); } if (((int)blackliststatus) > -1) { if (blackliststatus == LogStatus.Valid) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(" BlacklistID > -1"); } else { strWhere.Append(" and BlacklistID > -1"); } } else if (blackliststatus == LogStatus.Fail) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(" BlacklistID = -1"); } else { strWhere.Append(" and BlacklistID = -1"); } } } if (!string.IsNullOrEmpty(cardNo)) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" CardNo like '%{0}%'", cardNo)); } else { strWhere.Append(string.Format(" and CardNo like '%{0}%'", cardNo)); } } if (!string.IsNullOrEmpty(roomNums)) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" ReadingRoomNo = '{0}'", roomNums)); } else { strWhere.Append(string.Format(" and ReadingRoomNo = '{0}'", roomNums)); } } if (!string.IsNullOrEmpty(beginDate)) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" EnterOutTime >= '{0}'", beginDate)); } else { strWhere.Append(string.Format(" and EnterOutTime >= '{0}'", beginDate)); } } if (!string.IsNullOrEmpty(endDate)) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" EnterOutTime <= '{0}'", endDate)); } else { strWhere.Append(string.Format(" and EnterOutTime <= '{0}'", endDate)); } } if (vrtype != SeatManage.EnumType.ViolationRecordsType.None) { if (string.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" EnterFlag = '{0}'", (int)vrtype)); } else { strWhere.Append(string.Format(" and EnterFlag = '{0}'", (int)vrtype)); } } DataSet ds = violateDiscipline.GetList(strWhere.ToString(), null); List <ViolationRecordsLogInfo> vrloglist = new List <ViolationRecordsLogInfo>(); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { vrloglist.Add(DataRowToViolationRecordsLogInfo(ds.Tables[0].Rows[i])); } } return(vrloglist); }
/// <summary> /// 通过学号模糊查询,获取违规记录 /// </summary> /// <returns></returns> public static List <ViolationRecordsLogInfo> GetViolationRecords_ByFuzzySearch(string cardNo, string roomNums, string beginDate, string endDate, LogStatus logstatus, LogStatus blackliststatus, ViolationRecordsType vrtype) { IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService(); bool error = false; try { return(seatService.GetViolationRecordsLogsByType_ByFuzzySearch(cardNo, roomNums, beginDate, endDate, logstatus, blackliststatus, vrtype)); } catch (Exception ex) { error = true; SeatManageComm.WriteLog.Write("获取违规记录失败:" + ex.Message); return(new List <ViolationRecordsLogInfo>()); } finally { ICommunicationObject ICommObjectService = seatService as ICommunicationObject; try { if (ICommObjectService.State == CommunicationState.Faulted) { ICommObjectService.Abort(); } else { ICommObjectService.Close(); } } catch { ICommObjectService.Abort(); } } }
/// <summary> /// 暂离超时操作 /// </summary> /// <param name="enterOutlog">进出记录</param> /// <param name="roomset">阅览室设置</param> private static void ShortLeaveOverTimeOperator(EnterOutLogInfo enterOutlog, ReadingRoomSetting readingRoomSetting, DateTime nowDateTime) { try { string vrremark = ""; ViolationRecordsType vrtypt = ViolationRecordsType.ShortLeaveOutTime; enterOutlog.EnterOutTime = nowDateTime; enterOutlog.EnterOutState = EnterOutLogType.Leave; switch (enterOutlog.Flag) {//TODO:记录管理员信息 case Operation.Admin: enterOutlog.Remark = string.Format("在{0},{1}号座位,被管理员设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,被管理员设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveByAdminOutTime; break; case Operation.OtherReader: enterOutlog.Remark = string.Format("在{0},{1}号座位,被其他读者设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,被其他读者设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveByReaderOutTime; break; case Operation.Reader: enterOutlog.Remark = string.Format("在{0},{1}号座位,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveOutTime; break; case Operation.Service: enterOutlog.Remark = string.Format("在{0},{1}号座位,在座超时,监控服务设置暂离,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,在座超时,监控服务设置暂离,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.SeatOutTime; break; default: enterOutlog.Remark = string.Format("在{0},{1}号座位,暂离超时,被监控服务释放座位", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrremark = string.Format("读者在{0},{1}号座位,暂离超时", enterOutlog.ReadingRoomName, enterOutlog.SeatNo.Substring(enterOutlog.SeatNo.Length - readingRoomSetting.SeatNumAmount)); vrtypt = ViolationRecordsType.ShortLeaveOutTime; break; } //ReaderNoticeInfo notice = new ReaderNoticeInfo(); //notice.CardNo = enterOutlog.CardNo; //if (enterOutlog.Flag == Operation.Service)//暂离记录为监控服务操作。 //{ // notice.Type = NoticeType.SeatUsedTimeEnd; // notice.Note = "在座超时,座位已经被释放,如果还需继续使用座位,请重新选座"; //} //else //{ // notice.Type = NoticeType.SeatUsedTimeEnd; // notice.Note = "暂离超时,座位已经被释放,如果还需继续使用座位,请重新选座"; //} //T_SM_ReaderNotice.AddReaderNotice(notice); //PushMsgInfo msg = new PushMsgInfo(); //msg.Title = "您好,您的座位已被释放"; //msg.MsgType = MsgPushType.TimeOut; //msg.StudentNum = enterOutlog.CardNo; //msg.Message = enterOutlog.Remark; //SeatManage.Bll.T_SM_ReaderNotice.SendPushMsg(msg); enterOutlog.Flag = Operation.Service; int logid = 0; EnterOutOperate.AddEnterOutLog(enterOutlog, ref logid); WriteLog.Write(string.Format("读者{0},{1}", enterOutlog.CardNo, enterOutlog.Remark)); if (readingRoomSetting.IsRecordViolate) { AddViolationRecordByEnterOutLog(enterOutlog, vrtypt, vrremark, readingRoomSetting, nowDateTime); } } catch (Exception ex) { WriteLog.Write(string.Format("监控服务:处理读者暂离超时发生错误:" + ex.Message)); } }
/// <summary> /// 通过学号模糊查询,获取违规记录 /// </summary> /// <returns></returns> public static List <ViolationRecordsLogInfo> GetViolationRecords_ByFuzzySearch(string cardNo, string roomNums, string beginDate, string endDate, LogStatus logstatus, LogStatus blackliststatus, ViolationRecordsType vrtype) { IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService(); bool error = false; try { return(seatService.GetViolationRecordsLogsByType_ByFuzzySearch(cardNo, roomNums, beginDate, endDate, logstatus, blackliststatus, vrtype)); } catch (Exception ex) { error = true; SeatManageComm.WriteLog.Write("获取违规记录失败:" + ex.Message); return(new List <ViolationRecordsLogInfo>()); } }