protected void Page_Load(object sender, EventArgs e) { if (LoginUserInfo == null) { Response.Redirect(LoginUrl()); } seatNo = Request.QueryString["seatNo"]; seatShortNo = Request.QueryString["seatShortNo"]; roomNo = Request.QueryString["roomNo"]; timeSpan = Request.QueryString["timeSpan"]; if (!IsPostBack) { BindUIElement(seatNo, seatShortNo, DateTime.Parse(date), timeSpan); } string cmd = Request.Form["subCmd"]; switch (cmd) { case "select": BindUIElement(seatNo, seatShortNo, DateTime.Parse(date), timeSpan); break; case "query": BespeakLogInfo bespeakModel = new BespeakLogInfo(); bespeakModel.BsepeakState = BookingStatus.Waiting; DateTime bespeatDate = DateTime.Parse(string.Format("{0} {1}", DateTime.Parse(date).ToShortDateString(), lblBookTime.InnerText)); bespeakModel.BsepeakTime = bespeatDate; bespeakModel.CardNo = LoginUserInfo.CardNo; bespeakModel.ReadingRoomNo = roomNo; bespeakModel.Remark = "读者通过手机预约网站预约座位"; bespeakModel.SeatNo = seatNo; bespeakModel.SubmitTime = bookMode.SelectedIndex == 0 ? bespeakModel.BsepeakTime : bespeakModel.SubmitTime = DateTime.Now; try { string resultValue = handler.SubmitNowDayBespeakInfo(bespeakModel); //bookSeatMessageBll.AddBespeakLogInfo(bespeakModel, Session["SchoolConnectionString"].ToString()); if (!string.IsNullOrEmpty(resultValue)) { page1.Style.Add("display", "none"); page2.Style.Add("display", "none"); page3.Style.Add("display", "block"); MessageTip.InnerText = resultValue; } else { page1.Style.Add("display", "none"); page2.Style.Add("display", "none"); page3.Style.Add("display", "block"); MessageTip.InnerText = "未知错误"; } } catch (Exception ex) { page1.Style.Add("display", "none"); page2.Style.Add("display", "none"); page3.Style.Add("display", "block"); MessageTip.InnerText = ex.Message; } break; } }
public static HandleResult AddBespeakLogInfo(BespeakLogInfo model) { IWCFService.ISeatManageService seatService = WcfAccessProxy.ServiceProxy.CreateChannelSeatManageService(); bool error = false; try { return(seatService.AddBespeakLogInfo(model)); } catch (Exception ex) { error = true; SeatManageComm.WriteLog.Write("添加预约记录失败:" + ex.Message); throw ex; } finally { ICommunicationObject ICommObjectService = seatService as ICommunicationObject; try { if (ICommObjectService.State == CommunicationState.Faulted) { ICommObjectService.Abort(); } else { ICommObjectService.Close(); } } catch { ICommObjectService.Abort(); } } }
/// <summary> /// 获取单条有效的预约记录 /// </summary> /// <param name="cardNo"></param> /// <returns></returns> public BespeakLogInfo GetSingleBespeakLogForWait(string cardNo) { BespeakLogInfo bespeatlogs = null; StringBuilder strWhere = new StringBuilder(); if (string.IsNullOrEmpty(cardNo)) { return(bespeatlogs); } strWhere.Append(" cardNo=@cardNo "); strWhere.Append(" and [BespeakState]=@bookState order by BespeakTime asc"); SqlParameter[] parameters = { new SqlParameter("@cardNo", SqlDbType.NVarChar), new SqlParameter("@bookState", SqlDbType.Int), }; parameters[0].Value = cardNo; parameters[1].Value = (int)BookingStatus.Waiting; try { DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { bespeatlogs = DataRowToBespeakLogInfo(ds.Tables[0].Rows[0]); } } catch { } return(bespeatlogs); }
/// <summary> /// 获取所有的预约记录信息 /// </summary> /// <param name="cardNo">学号</param> /// <param name="roomNum">阅览室号,为空则查询所有</param> /// <returns></returns> public List <BespeakLogInfo> GetBespeakLogInfos(string cardNo, string roomNum) { List <BespeakLogInfo> bespeaklog = new List <BespeakLogInfo>(); if (string.IsNullOrEmpty(cardNo)) { return(bespeaklog); } string strWhere = " [ReadingRoomNo]=@readingRoomNo "; SqlParameter[] parameters = { new SqlParameter("@readingRoomNo", roomNum) }; List <BespeakLogInfo> bookLogInfoList = new List <BespeakLogInfo>(); DataSet ds = seatBespeakDal.GetList(strWhere, parameters); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { bookLogInfoList.Add(log); } } return(bookLogInfoList); }
/// <summary> /// 根据预约记录添加违规记录 /// </summary> /// <param name="blilog">预约记录</param> /// <param name="type">违规类型</param> /// <param name="note">提示信息</param> /// <param name="blacklistset"></param> private void AddViolationRecordByBookLog(BespeakLogInfo blilog, 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 = blilog.CardNo; vrli.SeatID = blilog.SeatNo; if (vrli.SeatID.Length > roomSetting.SeatNumAmount) { vrli.SeatID = vrli.SeatID.Substring(vrli.SeatID.Length - roomSetting.SeatNumAmount); } vrli.ReadingRoomID = blilog.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="seatNo"></param> /// <param name="date"></param> /// <returns></returns> public List <BespeakLogInfo> GetBespeakLogInfoBySeatNoNotCheck(string seatNo, DateTime date) { List <BespeakLogInfo> list = new List <BespeakLogInfo>(); StringBuilder strWhere = new StringBuilder(); strWhere.Append(" SeatNo=@SeatNo"); strWhere.Append(" and BespeakTime>='" + date.Date + "' and BespeakTime<'" + date.AddDays(1).Date + "' and BespeakState=@BespeakState"); SqlParameter[] parameters = { new SqlParameter("@SeatNo", SqlDbType.NVarChar), new SqlParameter("@BespeakState", SqlDbType.Int), }; parameters[0].Value = seatNo; parameters[1].Value = (int)BookingStatus.Waiting; try { DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), parameters); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfoNotCheck(ds.Tables[0].Rows[i]); if (log != null) { list.Add(log); } } } catch { throw; } return(list); }
/// <summary> /// MD5 32位加密 小写 /// </summary> /// <param name="pwd">明文</param> /// <returns>pwdMD5密文</returns> private static string GetBespeakMD5Key(BespeakLogInfo bespeakInfo) { List <string> keylist = new List <string>(); keylist.Add(bespeakInfo.BsepeakTime.ToString()); keylist.Add(bespeakInfo.SubmitTime.ToString()); keylist.Add(bespeakInfo.SeatNo); keylist.Add(bespeakInfo.CardNo); keylist.Add("Bespeak"); return(SeatManage.SeatManageComm.MD5Algorithm.GetMD5Str32WithListKey(keylist)); }
/// <summary> /// 添加预约记录 /// </summary> /// <param name="model"></param> /// <returns></returns> public HandleResult AddBespeakLogInfo(BespeakLogInfo model) { try { model.FlagKey = GetBespeakMD5Key(model); List <BespeakLogInfo> list = GetBespeakLogInfoBySeatNoNotCheck(model.SeatNo, model.BsepeakTime); if (list.Count > 0) { foreach (BespeakLogInfo bespeaklog in list) { if (GetBespeakMD5Key(bespeaklog) != bespeaklog.FlagKey) { bespeaklog.BsepeakState = BookingStatus.Cencaled; bespeaklog.CancelPerson = Operation.Service; bespeaklog.Remark = "预约记录校验失败,系统取消此次预约"; bespeaklog.FlagKey = GetBespeakMD5Key(bespeaklog); UpdateBespeakLogInfo(bespeaklog); } } } int resultValue = seatBespeakDal.Add(model); if (resultValue == 0) { List <ReadingRoomInfo> rri = GetReadingRoomInfo(new List <string>() { model.ReadingRoomNo }); if (rri == null || rri.Count == 0) { return(HandleResult.Successed); } PushMsgInfo msg = new PushMsgInfo(); msg.Title = "您好,您已预约成功"; msg.MsgType = MsgPushType.UserOperation; msg.StudentNum = model.CardNo; msg.Message = model.Remark; msg.RoomName = rri[0].Name; msg.SeatNum = SeatManage.SeatManageComm.SeatComm.SeatNoToShortSeatNo(rri[0].Setting.SeatNumAmount, model.SeatNo); SendMsg(msg); return(HandleResult.Successed); } else { return(HandleResult.Failed); } } catch { throw; } }
/// <summary> /// 分页查询预约记录,用于android客户端上拉刷新 /// </summary> /// <param name="cardNo"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public List <BespeakLogInfo> GetBespeakLogsByPage(string cardNo, int pageIndex, int pageSize) { List <BespeakLogInfo> bespeatlogs = new List <BespeakLogInfo>(); DataSet ds = seatBespeakDal.GetList(cardNo, pageSize, pageIndex); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { bespeatlogs.Add(log); } } return(bespeatlogs); }
public string SubmitBespeakInfo(BespeakLogInfo bespeakInfo) { try { lock (this.client) { client.Connect(); request = new SocketRequest(); request.MethodName = "SubmitBespeakInfo"; request.Parameters.Add(bespeakInfo); request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak; request.Target = schoolNum; request.MsgType = TcpMsgDataType.Relay; if (request != null) { client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request)); Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName); } autoConnectEvent.WaitOne(20000); if (response == null) { throw new Exception("连接超时。"); } else if (!isError && response.MethodName.Equals("SubmitBespeakInfo") && string.IsNullOrEmpty(response.ErrorMsg)) { return(response.Result as string); } else if (!string.IsNullOrEmpty(response.ErrorMsg)) { throw new Exception(response.ErrorMsg); } else { return(null); } } } catch (Exception ex) { throw ex; } finally { client.Disconnect(); request = null; response = null; } }
/// <summary> /// 更改预约记录 /// </summary> /// <param name="model">预约记录</param> /// <returns></returns> public static int UpdateBespeakList(BespeakLogInfo model) { IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService(); bool error = false; try { return(seatService.UpdateBespeakLogInfo(model)); } catch (Exception ex) { error = true; SeatManageComm.WriteLog.Write("更新预约记录失败:" + ex.Message); return(-1); } }
public static HandleResult AddBespeakLogInfo(BespeakLogInfo model) { IWCFService.ISeatManageService seatService = new WcfServiceForSeatManage.SeatManageDateService(); bool error = false; try { return(seatService.AddBespeakLogInfo(model)); } catch (Exception ex) { error = true; SeatManageComm.WriteLog.Write("添加预约记录失败:" + ex.Message); throw ex; } }
/// <summary> /// 更新一条数据 /// </summary> public int Update(BespeakLogInfo model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update T_SM_SeatBespeak set "); strSql.Append("CardNo=@CardNo,"); strSql.Append("ReadingRoomNo=@ReadingRoomNo,"); strSql.Append("SeatNo=@SeatNo,"); strSql.Append("BespeakTime=@BespeakTime,"); strSql.Append("BespeakState=@BespeakState,"); strSql.Append("SubmitTime=@SubmitTime,"); strSql.Append("CancelTime=@CancelTime,"); strSql.Append("BespeakCancelPerson=@BespeakCancelPerson,"); strSql.Append("Remark=@Remark,"); strSql.Append("BespeakFlag=@BespeakFlag"); strSql.Append(" where BespeakID=@BespeakID "); SqlParameter[] parameters = { new SqlParameter("@CardNo", SqlDbType.NVarChar, 50), new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar, 50), new SqlParameter("@SeatNo", SqlDbType.NVarChar, 100), new SqlParameter("@BespeakTime", SqlDbType.DateTime), new SqlParameter("@BespeakState", SqlDbType.Int, 4), new SqlParameter("@SubmitTime", SqlDbType.DateTime), new SqlParameter("@CancelTime", SqlDbType.DateTime), new SqlParameter("@BespeakCancelPerson", SqlDbType.Int, 4), new SqlParameter("@Remark", SqlDbType.Text), new SqlParameter("@BespeakFlag", SqlDbType.NVarChar), new SqlParameter("@BespeakID", SqlDbType.Int, 4) }; parameters[0].Value = model.CardNo; parameters[1].Value = model.ReadingRoomNo; parameters[2].Value = model.SeatNo; parameters[3].Value = model.BsepeakTime; parameters[4].Value = (int)model.BsepeakState; parameters[5].Value = model.SubmitTime; parameters[6].Value = model.CancelTime; parameters[7].Value = (int)model.CancelPerson; parameters[8].Value = model.Remark; parameters[9].Value = model.FlagKey; parameters[10].Value = model.BsepeaklogID; int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); return(rows); }
protected void Page_Load(object sender, EventArgs e) { if (LoginUserInfo == null || UserSchoolInfo == null) { Response.Redirect(LoginUrl()); } seatNo = Request.QueryString["seatNo"]; date = Request.QueryString["bookDate"]; roomNo = Request.QueryString["roomNo"]; if (!IsPostBack) { BindUIElement(seatNo, roomNo, date); } string cmd = Request.Form["subCmd"]; switch (cmd) { case "select": BindUIElement(seatNo, seatShortNo, date); break; case "query": BespeakLogInfo bespeakModel = new BespeakLogInfo(); DateTime bespeakTime = DateTime.Parse(string.Format("{0} {1}", DateTime.Parse(date).ToShortDateString(), lblBookTime.InnerText)); bool isNowDay = bespeakTime.Date == DateTime.Now.Date; try { string resultValue = weiXinService.SubmitBesapeskSeat(seatNo, roomNo, LoginUserInfo.StudentNo, bespeakTime.ToString("yyyy-MM-dd HH:mm:ss"), isNowDay, UserSchoolInfo.SchoolNo); page1.Style.Add("display", "none"); page2.Style.Add("display", "none"); page3.Style.Add("display", "block"); MessageTip.InnerText = resultValue; } catch (Exception ex) { page1.Style.Add("display", "none"); page2.Style.Add("display", "none"); page3.Style.Add("display", "block"); MessageTip.InnerText = ex.Message; } break; } }
private void btnSure_Click(object sender, EventArgs e) { try { BespeakLogInfo bespeaklog = clientObject.EnterOutLogData.Student.BespeakLog[0]; bespeaklog.BsepeakState = BookingStatus.Cencaled; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = ServiceDateTime.Now; bespeaklog.Remark = string.Format("在终端{0}刷卡取消{1},{2}号座位的预约。", clientObject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); int i = T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); if (i > 0) { this.btnSure.Visible = false; this.panel1.Visible = false; this.lblCancelMessage.Text = " 您已经取消预约的座位,请重新刷卡选选座。"; } } catch { } }
/// <summary> /// 根据Id获取进出记录 /// </summary> /// <param name="id"></param> /// <returns></returns> public BespeakLogInfo GetBespeaklogById(int id) { string strWhere = " [BespeakID]=@BespeakID "; SqlParameter[] parameters = { new SqlParameter("@BespeakID", id) }; DataSet ds = seatBespeakDal.GetList(strWhere, parameters); if (ds.Tables[0].Rows.Count > 0) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[0]); return(log); } else { return(null); } }
public int UpdateBespeakLogInfo(BespeakLogInfo bespeakLog) { try { bespeakLog.FlagKey = GetBespeakMD5Key(bespeakLog); int i = seatBespeakDal.Update(bespeakLog); if (i > 0) { if (bespeakLog.BsepeakState == BookingStatus.Cencaled) { PushMsgInfo msg = new PushMsgInfo(); msg.Title = "您好,您的预约已取消"; switch (bespeakLog.CancelPerson) { case Operation.Admin: msg.Title = string.Format(msg.Title, "您好,您的预约已被管理员取消"); break; case Operation.Service: msg.Title = string.Format(msg.Title, "您好,您的预约已超时"); break; } msg.MsgType = MsgPushType.UserOperation; msg.StudentNum = bespeakLog.CardNo; msg.Message = bespeakLog.Remark; msg.RoomName = bespeakLog.ReadingRoomName; msg.SeatNum = bespeakLog.ShortSeatNum; SendMsg(msg); } } return(i); } catch { throw; } }
/// <summary> /// 获取预约记录信息 /// </summary> /// <param name="cardNo"></param> /// <param name="shortDate"></param> /// <returns></returns> public List <BespeakLogInfo> GetBespeakLogInfo(string cardNo, DateTime shortDate) { List <BespeakLogInfo> bespeatlogs = new List <BespeakLogInfo>(); StringBuilder strWhere = new StringBuilder(); if (string.IsNullOrEmpty(cardNo)) { return(bespeatlogs); } strWhere.Append(" cardNo=@cardNo "); strWhere.Append(" and BespeakTime>='" + shortDate.Date + "' and BespeakTime<'" + shortDate.AddDays(1).Date + "' "); strWhere.Append(" and [BespeakState]=@bookState"); SqlParameter[] parameters = { new SqlParameter("@cardNo", SqlDbType.NVarChar), new SqlParameter("@bookState", SqlDbType.Int), }; parameters[0].Value = cardNo; parameters[1].Value = (int)BookingStatus.Waiting; try { DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), parameters); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { bespeatlogs.Add(log); } } } catch { } return(bespeatlogs); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(BespeakLogInfo model) { SqlParameter[] parameters = { new SqlParameter("@ExcResult", SqlDbType.Int, 4), new SqlParameter("@CardNo", SqlDbType.NVarChar), new SqlParameter("@ReadingRoomNo", SqlDbType.NVarChar), new SqlParameter("@SeatNo", SqlDbType.NVarChar), new SqlParameter("@BespeakTime", SqlDbType.DateTime), new SqlParameter("@BespeakState", SqlDbType.Int), new SqlParameter("@Remark", SqlDbType.Text), new SqlParameter("@SubmitTime", SqlDbType.DateTime), new SqlParameter("@BespeakFlag", SqlDbType.NVarChar) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Value = model.CardNo; parameters[2].Value = model.ReadingRoomNo; parameters[3].Value = model.SeatNo; parameters[4].Value = model.BsepeakTime; parameters[5].Value = (int)model.BsepeakState; parameters[6].Value = model.Remark; parameters[7].Value = model.SubmitTime; parameters[8].Value = model.FlagKey; try { DbHelperSQL.Execute_Proc("Proc_AddNewBookLog", parameters); int result = (int)parameters[0].Value; return(result); } catch { throw; } }
/// <summary> /// 获取 /// </summary> /// <param name="bespeakInfo"></param> /// <returns></returns> public string SubmitNowDayBespeakInfo(BespeakLogInfo bespeakInfo) { string returnValue = ""; List <BespeakLogInfo> seatbespeak = seatManage.GetBespeakLogInfoBySeatNo(bespeakInfo.SeatNo, bespeakInfo.BsepeakTime); List <ReadingRoomInfo> rooms = seatManage.GetReadingRooms(new List <string>() { bespeakInfo.ReadingRoomNo }, null, null); if (rooms.Count == 0) { throw new SeatBespeakException.BespeakSeatFailed("获取阅览室信息失败。"); } List <BespeakLogInfo> bespeak = seatManage.GetBespeakLogs(bespeakInfo.CardNo, null, bespeakInfo.BsepeakTime, 0, new List <SeatManage.EnumType.BookingStatus> { SeatManage.EnumType.BookingStatus.Confinmed, SeatManage.EnumType.BookingStatus.Waiting }); //.GetBespeakList(this.LoginId, null, date, 0, bespeakStatus); if (bespeak.Count >= rooms[0].Setting.SeatBespeak.BespeakSeatCount) { throw new SeatBespeakException.BespeakSeatFailed("对不起,您一天最多预约" + rooms[0].Setting.SeatBespeak.BespeakSeatCount + "个座位。"); } //判断读者是否有座位 if (!rooms[0].Setting.SeatBespeak.BespeatWithOnSeat) { SeatManage.ClassModel.EnterOutLogInfo eol = seatManage.GetEnterOutLogInfoByCardNo(bespeakInfo.CardNo); if (eol != null && eol.EnterOutState != SeatManage.EnumType.EnterOutLogType.Leave) { throw new SeatBespeakException.BespeakSeatFailed("您已有座位,不能再预约座位"); } } if (rooms[0].Setting.SeatBespeak.CanBookMultiSpan && rooms[0].Setting.SeatBespeak.SpecifiedTime) { foreach (BespeakLogInfo b in seatbespeak) { if (b.BsepeakTime == bespeakInfo.BsepeakTime) { throw new SeatBespeakException.BespeakSeatFailed("对不起,此时间段已被预约。"); } } foreach (BespeakLogInfo b in bespeak) { if (b.BsepeakTime == bespeakInfo.BsepeakTime && b.BsepeakState == BookingStatus.Waiting) { throw new SeatBespeakException.BespeakSeatFailed("对不起,同一时间段只能预约一个座位。"); } } if (bespeakInfo.SubmitTime == bespeakInfo.BsepeakTime) { foreach (BespeakLogInfo b in bespeak) { if (b.BsepeakTime == b.SubmitTime && b.BsepeakState == BookingStatus.Waiting) { throw new SeatBespeakException.BespeakSeatFailed("对不起,只能同时进行一次及时预约。"); } } } } else { foreach (BespeakLogInfo b in bespeak) { if (b.BsepeakState == BookingStatus.Waiting) { throw new SeatBespeakException.BespeakSeatFailed("对不起,您已有等待签到的座位。"); } } foreach (BespeakLogInfo b in seatbespeak) { if (b.BsepeakState == EnumType.BookingStatus.Waiting) { throw new Exception("所选座位已经被预约。"); } } } List <BlackListInfo> blackLog = seatManage.GetBlacklistInfo(bespeakInfo.CardNo); if (blackLog.Count > 0) { throw new SeatBespeakException.BespeakSeatFailed("你已被记录黑名单,无法预约座位。"); } if (rooms.Count > 0) { ReadingRoomInfo r = rooms[0]; EnumType.HandleResult result = seatManage.AddBespeakLogInfo(bespeakInfo); if (result == EnumType.HandleResult.Successed) { string beginTime; string endTime; if (bespeakInfo.SubmitTime == bespeakInfo.BsepeakTime) { beginTime = bespeakInfo.BsepeakTime.ToShortTimeString(); endTime = bespeakInfo.BsepeakTime.AddMinutes(r.Setting.SeatBespeak.SeatKeepTime).ToShortTimeString(); } else { beginTime = bespeakInfo.BsepeakTime.AddMinutes(-double.Parse(r.Setting.SeatBespeak.ConfirmTime.BeginTime)).ToShortTimeString(); endTime = bespeakInfo.BsepeakTime.AddMinutes(double.Parse(r.Setting.SeatBespeak.ConfirmTime.EndTime)).ToShortTimeString(); } returnValue = string.Format("座位预约成功,请在{0}至{1}到图书馆刷卡确认", beginTime, endTime); } else { throw new SeatBespeakException.BespeakSeatFailed("所选座位已经被预约。"); } } return(returnValue); }
/// <summary> /// 预约等待 /// </summary> public void BespeakSeatWait() { DateTime nowDate = ServiceDateTime.Now; if (clientobject.EnterOutLogData.Student.BespeakLog.Count > 0) { BespeakLogInfo bespeaklog = clientobject.EnterOutLogData.Student.BespeakLog[0]; //if (!SelectSeatProven.CheckReadingRoomInThisClient(bespeaklog.ReadingRoomNo, clientobject.ClientSetting.DeviceSetting)) //{ //验证房间号是否属于本触摸屏所管理的阅览室 // Tip_Framework uc = new Tip_Framework(TipType.BeapeatRoomNotExists, 9); //} ReadingRoomSetting set = clientobject.EnterOutLogData.Student.AtReadingRoom.Setting; DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)); DateTime dtEnd = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)); if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime)) { //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作 //TODO:预约确认时,判断当前座位上是否有人。 EnterOutLogInfo seatUsedInfo = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(bespeaklog.SeatNo); if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave) { //条件满足,说明座位正在使用。 seatUsedInfo.EnterOutState = EnterOutLogType.Leave; seatUsedInfo.EnterOutType = LogStatus.Valid; seatUsedInfo.Remark = string.Format("预约该座位的读者在离开终端刷卡确认入座,设置在座读者离开"); seatUsedInfo.Flag = Operation.OtherReader; int newId = -1; EnterOutOperate.AddEnterOutLog(seatUsedInfo, ref newId); } EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造 newEnterOutLog.CardNo = bespeaklog.CardNo; newEnterOutLog.EnterOutLogNo = SeatComm.RndNum(); newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation; newEnterOutLog.EnterOutType = LogStatus.Valid; newEnterOutLog.Flag = Operation.Reader; newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo; newEnterOutLog.ReadingRoomName = bespeaklog.ReadingRoomName; newEnterOutLog.ShortSeatNo = bespeaklog.ShortSeatNum; newEnterOutLog.SeatNo = bespeaklog.SeatNo; newEnterOutLog.Remark = string.Format("在离开终端刷卡,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); clientobject.EnterOutLogData.EnterOutlog = newEnterOutLog; int logid = -1; HandleResult result = EnterOutOperate.AddEnterOutLog(newEnterOutLog, ref logid); //添加入座记录 if (result == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Confinmed; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = nowDate; bespeaklog.Remark = string.Format("在离开终端刷卡,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); } if (popMessage != null) { popMessage(this, new PopMessage(TipType.BespeatSeatConfirmSuccess, "预约签到成功")); } } else if (nowDate.CompareTo(dtBegin) < 0) { if (popMessage != null) { popMessage(this, new PopMessage(TipType.BookConfirmWarn, "没到签到时间")); } } else if (nowDate.CompareTo(dtEnd) < 0) { //TODO:最迟确认时间为:dtEnd。 } else { //TODO:未知原因,预约确认失败。 } } }
/// <summary> /// 根据学号模糊查询获取全部的记录,为空就是不设条件查询 /// </summary> /// <param name="cardNo">学号</param> /// <param name="roomNum">阅览室编号</param> /// <param name="date">查询当前日期的记录</param> /// /// <param name="status">预约状态</param> /// <returns></returns> public List <BespeakLogInfo> GetBespeakLogs_ByFuzzySearch(string cardNo, string roomNum, DateTime date, int spanDays, List <BookingStatus> status) { List <BespeakLogInfo> bespeatlogs = new List <BespeakLogInfo>(); StringBuilder strWhere = new StringBuilder(); 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(roomNum)) { if (String.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" readingRoomNo='{0}'", roomNum)); } else { strWhere.Append(string.Format(" and readingRoomNo='{0}'", roomNum)); } } if (status != null) { for (int i = 0; i < status.Count; i++) { if (i == 0) { if (String.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(string.Format(" BespeakState in ('{0}' ", (int)status[i])); } else { strWhere.Append(string.Format(" and BespeakState in ('{0}'", (int)status[i])); } } else if (i != status.Count - 1) { strWhere.Append(string.Format(",'{0}'", (int)status[i])); } if (i == status.Count - 1) { strWhere.Append(string.Format(" ,'{0}') ", (int)status[i])); } } } if (date.CompareTo(DateTime.Parse("1900-1-1")) != 0) { if (String.IsNullOrEmpty(strWhere.ToString())) { strWhere.Append(" BespeakTime>='" + date.Date + "' and BespeakTime<'" + date.AddDays(spanDays + 1).Date + "' "); } else { strWhere.Append(" and BespeakTime>='" + date.Date + "' and BespeakTime<'" + date.AddDays(spanDays + 1).Date + "' "); } } //SqlParameter[] parameters = { // new SqlParameter("@shortDate",SqlDbType.DateTime), // new SqlParameter("@spanDays",SqlDbType.Int) // }; //parameters[0].Value = date; //parameters[1].Value = spanDays; try { DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), null); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { bespeatlogs.Add(log); } } } catch { throw; } return(bespeatlogs); }
/// <summary> /// 预约超时 /// </summary> /// <param name="rri">阅览室信息</param> /// <param name="NowDateTime">时间</param> /// <param name="bli">预约记录</param> private static void BookingOverTime(ReadingRoomSetting roomSetting, DateTime NowDateTime, BespeakLogInfo bli) { try { bli.CancelTime = NowDateTime; bli.CancelPerson = Operation.Service; bli.BsepeakState = BookingStatus.Cencaled; bli.Remark = string.Format("在{0},{1}号座位,预约超时", bli.ReadingRoomName, bli.SeatNo.Substring(bli.SeatNo.Length - roomSetting.SeatNumAmount)); T_SM_SeatBespeak.UpdateBespeakList(bli); WriteLog.Write(string.Format("读者{0},{1}", bli.CardNo, bli.Remark)); if (roomSetting.IsRecordViolate) { AddViolationRecordByBookLog(bli, ViolationRecordsType.BookingTimeOut, string.Format("读者在{0},{1}号座位,预约超时", bli.ReadingRoomName, bli.SeatNo.Substring(bli.SeatNo.Length - roomSetting.SeatNumAmount)), roomSetting, NowDateTime); //ReaderNoticeInfo notice = new ReaderNoticeInfo(); //notice.CardNo = bli.CardNo; //notice.Type = NoticeType.BespeakExpiration; //notice.Note = "预约的座位因超时已被取消。"; //T_SM_ReaderNotice.AddReaderNotice(notice); } } catch (Exception ex) { WriteLog.Write(string.Format("监控服务:处理读者预约超时发生错误:" + ex.Message)); } }
/// <summary> /// 获取日期前未签到的座位 /// </summary> /// <param name="roomNum"></param> /// <param name="date"></param> /// <returns></returns> public List <BespeakLogInfo> GetNotCheckedBespeakLogInfo(List <string> roomNum, DateTime date) { List <BespeakLogInfo> list = new List <BespeakLogInfo>(); //StringBuilder strWhere = new StringBuilder(); //if (roomNum != null) //{ // for (int i = 0; i < roomNum.Count; i++) // { // if (i == 0) // { // strWhere.Append(string.Format(" ReadingRoomNo in ('{0}'", roomNum[i])); // } // else if (i != roomNum.Count - 1) // { // strWhere.Append(string.Format(",'{0}' ", roomNum[i])); // } // if (i == roomNum.Count - 1) // { // strWhere.Append(string.Format(" ,'{0}')", roomNum[i])); // } // } //} //if (string.IsNullOrEmpty(strWhere.ToString())) //{ // strWhere.Append(" datediff(day, BespeakTime,@shortDate)>=0 and BespeakState=@BespeakState"); //} //else //{ // strWhere.Append(" and datediff(day, BespeakTime,@shortDate)>=0 and BespeakState=@BespeakState"); //} //SqlParameter[] parameters = { // new SqlParameter("@shortDate",SqlDbType.DateTime), // new SqlParameter("@BespeakState",SqlDbType.Int), // }; //parameters[0].Value = date; //parameters[1].Value = (int)BookingStatus.Waiting; try { if (roomNum != null && roomNum.Count > 0) { for (int k = 0; k < roomNum.Count; k++) { StringBuilder strWhere = new StringBuilder(); strWhere.Append(string.Format(" ReadingRoomNo = '{0}'", roomNum[k])); strWhere.Append(" and BespeakTime>='" + date.Date + "' and BespeakTime<'" + date.AddDays(1).Date + "' and BespeakState='" + (int)BookingStatus.Waiting + "'"); DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), null); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { list.Add(log); } } } } else { StringBuilder strWhere = new StringBuilder(); strWhere.Append(" BespeakTime>='" + date.Date + "' and BespeakTime<'" + date.AddDays(1).Date + "' and BespeakState='" + (int)BookingStatus.Waiting + "'"); DataSet ds = seatBespeakDal.GetList(strWhere.ToString(), null); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { BespeakLogInfo log = DataRowToBespeakLogInfo(ds.Tables[0].Rows[i]); if (log != null) { list.Add(log); } } } } catch { throw; } return(list); }
/// <summary> /// 预约等待 /// </summary> public void BespeakSeatWait() { DateTime nowDate = ServiceDateTime.Now; if (clientobject.EnterOutLogData.Student.BespeakLog.Count > 0) { BespeakLogInfo bespeaklog = clientobject.EnterOutLogData.Student.BespeakLog[0]; //if (!SelectSeatProven.CheckReadingRoomInThisClient(bespeaklog.ReadingRoomNo, clientobject.ClientSetting.DeviceSetting)) //{ //验证房间号是否属于本触摸屏所管理的阅览室 // Tip_Framework uc = new Tip_Framework(TipType.BeapeatRoomNotExists, 9); //} ReadingRoomSetting set = clientobject.EnterOutLogData.Student.AtReadingRoom.Setting; DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)); DateTime dtEnd = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)); if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime)) { //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作 //TODO:预约确认时,判断当前座位上是否有人。 EnterOutLogInfo seatUsedInfo = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(bespeaklog.SeatNo); if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave) { //条件满足,说明座位正在使用。 seatUsedInfo.EnterOutState = EnterOutLogType.Leave; seatUsedInfo.EnterOutType = LogStatus.Valid; seatUsedInfo.TerminalNum = clientobject.ClientSetting.ClientNo; seatUsedInfo.Remark = string.Format("预约该座位的读者在终端{0}刷卡确认入座,设置在座读者离开", clientobject.ClientSetting.ClientNo); seatUsedInfo.Flag = Operation.OtherReader; int newId = -1; if (EnterOutOperate.AddEnterOutLog(seatUsedInfo, ref newId) == HandleResult.Successed) { List <WaitSeatLogInfo> waitInfoList = SeatManage.Bll.T_SM_SeatWaiting.GetWaitSeatList(null, seatUsedInfo.EnterOutLogID, null, null, null); if (waitInfoList.Count > 0) { this.clientobject.EnterOutLogData.WaitSeatLogModel = waitInfoList[0]; this.clientobject.EnterOutLogData.WaitSeatLogModel.OperateType = Operation.Reader; this.clientobject.EnterOutLogData.WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel; this.clientobject.EnterOutLogData.WaitSeatLogModel.NowState = LogStatus.Valid; if (!T_SM_SeatWaiting.UpdateWaitLog(this.clientobject.EnterOutLogData.WaitSeatLogModel)) { PopupWindow errorWindow = new PopupWindow(TipType.Exception); errorWindow.ShowDialog(); return; } } } else { PopupWindow errorWindow = new PopupWindow(TipType.Exception); errorWindow.ShowDialog(); return; } } EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造 newEnterOutLog.CardNo = bespeaklog.CardNo; newEnterOutLog.EnterOutLogNo = SeatComm.RndNum(); newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation; newEnterOutLog.EnterOutType = LogStatus.Valid; newEnterOutLog.Flag = Operation.Reader; newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo; newEnterOutLog.ReadingRoomName = bespeaklog.ReadingRoomName; newEnterOutLog.ShortSeatNo = bespeaklog.ShortSeatNum; newEnterOutLog.SeatNo = bespeaklog.SeatNo; newEnterOutLog.TerminalNum = clientobject.ClientSetting.ClientNo; newEnterOutLog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); clientobject.EnterOutLogData.EnterOutlog = newEnterOutLog; int logid = -1; HandleResult result = EnterOutOperate.AddEnterOutLog(newEnterOutLog, ref logid); //添加入座记录 if (result == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Confinmed; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = nowDate; bespeaklog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); PrintData data = new PrintData(); data.CardNo = bespeaklog.CardNo;; data.EnterTime = nowDate; data.ReaderName = clientobject.EnterOutLogData.Student.Name; data.ReadingRoomName = clientobject.EnterOutLogData.Student.AtReadingRoom.Name; data.SeatNo = SeatComm.SeatNoToShortSeatNo(set.SeatNumAmount, bespeaklog.SeatNo); if (clientobject.ClientSetting.DeviceSetting.UsingPrintSlip == PrintSlipMode.AutoPrint) { printer.ThreadPrint(PrintStatus.General, data, clientobject.ClientSetting.ClientNo); } if (clientobject.ClientSetting.DeviceSetting.UsingPrintSlip == PrintSlipMode.UserChoose) { PopupWindow printWindow = new PopupWindow(TipType.PrintConfIrm); printWindow.ShowDialog(); if (printWindow.viewModel.OperateResule == HandleResult.Successed) { printer.ThreadPrint(PrintStatus.General, data, clientobject.ClientSetting.ClientNo); } } } PopupWindow popWindow = new PopupWindow(TipType.BespeatSeatConfirmSuccess); popWindow.ShowDialog(); } else if (nowDate.CompareTo(dtBegin) < 0) { //TODO:预约时间过早,请在dtBegin 到dtEnd刷卡确认。 PopupWindow popWindow = new PopupWindow(TipType.BookConfirmWarn); popWindow.ShowDialog(); if (popWindow.viewModel.OperateResule == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Cencaled; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = ServiceDateTime.Now; bespeaklog.Remark = string.Format("在终端{0}刷卡取消{1},{2}号座位的预约。", clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); int i = T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); PopupWindow popWindowCancel = new PopupWindow(TipType.BookCancelSuccess); popWindowCancel.ShowDialog(); } } else if (nowDate.CompareTo(dtEnd) < 0) { //TODO:最迟确认时间为:dtEnd。 } else { //TODO:未知原因,预约确认失败。 } } }
/// <summary> /// 预约签到 /// </summary> /// <param name="bookNo"></param> /// <returns></returns> public string ConfigSeat(int bookNo) { try { DateTime nowDate = DateTime.Now; BespeakLogInfo bespeaklog = seatManage.GetBespeaklogById(bookNo); if (bespeaklog == null) { return("获取预约记录失败"); } if (bespeaklog.BsepeakState != BookingStatus.Waiting) { return("此条记录状态无效,请查询刷新页面"); } List <ReadingRoomInfo> rooms = seatManage.GetReadingRoomInfo(new List <string>() { bespeaklog.ReadingRoomNo }); if (rooms.Count < 1) { return("阅览室设置获取失败"); } ReadingRoomSetting set = rooms[0].Setting; DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)); DateTime dtEnd = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)); if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime)) { //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作 //TODO:预约确认时,判断当前座位上是否有人。 EnterOutLogInfo seatUsedInfo = seatManage.GetEnterOutLogInfoBySeatNum(bespeaklog.SeatNo); if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave) { //条件满足,说明座位正在使用。 seatUsedInfo.EnterOutState = EnterOutLogType.Leave; seatUsedInfo.EnterOutType = LogStatus.Valid; seatUsedInfo.Remark = string.Format("预约该座位的读者在手机网站签到入座,设置在座读者离开"); seatUsedInfo.Flag = Operation.OtherReader; int newId = -1; if (seatManage.AddEnterOutLogInfo(seatUsedInfo, ref newId) == HandleResult.Successed) { List <WaitSeatLogInfo> waitInfoList = seatManage.GetWaitLogList(null, seatUsedInfo.EnterOutLogID, null, null, null); if (waitInfoList.Count > 0) { WaitSeatLogInfo WaitSeatLogModel = waitInfoList[0]; WaitSeatLogModel.OperateType = Operation.Reader; WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel; WaitSeatLogModel.NowState = LogStatus.Valid; if (!seatManage.UpdateWaitLog(WaitSeatLogModel)) { return("取消等待此座位的读者状态失败"); } } } else { return("设置当前使用此座位的读者离开失败"); } } EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造 newEnterOutLog.CardNo = bespeaklog.CardNo; newEnterOutLog.EnterOutLogNo = SeatComm.RndNum(); newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation; newEnterOutLog.EnterOutType = LogStatus.Valid; newEnterOutLog.Flag = Operation.Reader; newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo; newEnterOutLog.ReadingRoomName = bespeaklog.ReadingRoomName; newEnterOutLog.ShortSeatNo = bespeaklog.ShortSeatNum; newEnterOutLog.SeatNo = bespeaklog.SeatNo; newEnterOutLog.Remark = string.Format("在手机预约网站预约签到,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); int logid = -1; HandleResult result = seatManage.AddEnterOutLogInfo(newEnterOutLog, ref logid); //添加入座记录 if (result == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Confinmed; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = nowDate; bespeaklog.Remark = string.Format("在手机预约网站预约签到,入座预约的{0} {1}号座位", bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); if (seatManage.UpdateBespeakLogInfo(bespeaklog) > 0) { return(""); } else { return("系统错误,签到失败"); } } else { return("系统错误,签到失败"); } } else if (nowDate.CompareTo(dtBegin) < 0) { //TODO:预约时间过早,请在dtBegin 到dtEnd刷卡确认。 return("对不起,您预约的座位尚未到达签到时间,请在" + dtBegin.ToShortTimeString() + "到" + dtEnd.ToShortTimeString() + "间进行签到"); } else if (nowDate.CompareTo(dtEnd) < 0) { return("对不起,您预约已超时"); } else { return("系统错误,签到失败"); } } catch (Exception ex) { SeatManageComm.WriteLog.Write(string.Format("预约签到失败:{0}", ex.Message)); return("系统错误,签到失败"); } }
/// <summary> /// 预约等待 /// </summary> public void BespeakSeatWait() { DateTime nowDate = ServiceDateTime.Now; if (clientobject.EnterOutLogData.Student.BespeakLog.Count > 0) { BespeakLogInfo bespeaklog = clientobject.EnterOutLogData.Student.BespeakLog[0]; //if (!SelectSeatProven.CheckReadingRoomInThisClient(bespeaklog.ReadingRoomNo, clientobject.ClientSetting.DeviceSetting)) //{ //验证房间号是否属于本触摸屏所管理的阅览室 // Tip_Framework uc = new Tip_Framework(TipType.BeapeatRoomNotExists, 9); //} ReadingRoomSetting set = clientobject.EnterOutLogData.Student.AtReadingRoom.Setting; DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)); DateTime dtEnd = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)); if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate)) { //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作 //TODO:预约确认时,判断当前座位上是否有人。 EnterOutLogInfo seatUsedInfo = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(bespeaklog.SeatNo); if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave) { //条件满足,说明座位正在使用。 seatUsedInfo.EnterOutState = EnterOutLogType.Leave; seatUsedInfo.EnterOutType = LogStatus.Valid; seatUsedInfo.TerminalNum = clientobject.ClientSetting.ClientNo; seatUsedInfo.Remark = string.Format("预约该座位的读者在终端{0}刷卡确认入座,设置在座读者离开", clientobject.ClientSetting.ClientNo); seatUsedInfo.Flag = Operation.OtherReader; int newId = -1; EnterOutOperate.AddEnterOutLog(seatUsedInfo, ref newId); } EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造 newEnterOutLog.CardNo = bespeaklog.CardNo; newEnterOutLog.EnterOutLogNo = SeatComm.RndNum(); newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation; newEnterOutLog.EnterOutType = LogStatus.Valid; newEnterOutLog.Flag = Operation.Reader; newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo; newEnterOutLog.SeatNo = bespeaklog.SeatNo; newEnterOutLog.TerminalNum = clientobject.ClientSetting.ClientNo; newEnterOutLog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); int logid = -1; HandleResult result = EnterOutOperate.AddEnterOutLog(newEnterOutLog, ref logid); //添加入座记录 if (result == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Confinmed; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = nowDate; bespeaklog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); PrintData data = new PrintData(); data.CardNo = bespeaklog.CardNo;; data.EnterTime = nowDate; data.ReaderName = clientobject.EnterOutLogData.Student.Name; data.ReadingRoomName = clientobject.EnterOutLogData.Student.AtReadingRoom.Name; data.SeatNo = SeatComm.SeatNoToShortSeatNo(set.SeatNumAmount, bespeaklog.SeatNo); if (clientobject.ClientSetting.DeviceSetting.UsingPrintSlip) { printer.Print(PrintStatus.Book, data, clientobject.ClientSetting.ClientNo);//打印 } } Tip_Framework tip = new Tip_Framework(TipType.BespeatSeatConfirmSuccess, 9); tip.ShowDialog(); } else if (nowDate.CompareTo(dtBegin) < 0) { //TODO:预约时间过早,请在dtBegin 到dtEnd刷卡确认。 BookConfirmWarn tipFrom = new BookConfirmWarn(); tipFrom.BeginTime = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)).ToString("HH:mm"); tipFrom.EndTime = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)).ToString("HH:mm"); tipFrom.ShowDialog(); } else if (nowDate.CompareTo(dtEnd) < 0) { //TODO:最迟确认时间为:dtEnd。 } else { //TODO:未知原因,预约确认失败。 } } }
private BespeakLogInfo DataRowToBespeakLogInfoNotCheck(DataRow dr) { try { BespeakLogInfo bookLogInfo = new BespeakLogInfo(); bookLogInfo.BsepeaklogID = dr["BespeakID"].ToString(); bookLogInfo.ReadingRoomNo = dr["ReadingRoomNo"].ToString(); bookLogInfo.SeatNo = dr["SeatNo"].ToString(); bookLogInfo.BsepeakState = (BookingStatus)int.Parse(dr["BespeakState"].ToString()); bookLogInfo.BsepeakTime = Convert.ToDateTime(dr["BespeakTime"]); bookLogInfo.CardNo = dr["CardNo"].ToString(); if (!string.IsNullOrEmpty(dr["CancelTime"].ToString())) { bookLogInfo.CancelTime = Convert.ToDateTime(dr["CancelTime"]); } bookLogInfo.SubmitTime = Convert.ToDateTime(dr["SubmitTime"]); if (!string.IsNullOrEmpty(dr["BespeakCancelPerson"].ToString())) { bookLogInfo.CancelPerson = (Operation)int.Parse(dr["BespeakCancelPerson"].ToString()); } ReadingRoomSetting roomSet = new ReadingRoomSetting(dr["ReadingSetting"].ToString()); bookLogInfo.ReadingRoomName = dr["ReadingRoomName"].ToString(); bookLogInfo.ReaderName = dr["ReaderName"].ToString(); if (dr["ReaderTypeName"] != null) { bookLogInfo.TypeName = dr["ReaderTypeName"].ToString(); } if (dr["ReaderDeptName"] != null) { bookLogInfo.DeptName = dr["ReaderDeptName"].ToString(); } if (dr["Sex"] != null) { bookLogInfo.Sex = dr["Sex"].ToString(); } bookLogInfo.FlagKey = dr["BespeakFlag"].ToString(); //if (bookLogInfo.BsepeakState == BookingStatus.Waiting) //{ // DateTime bespeakDate = bookLogInfo.BsepeakTime; // bookLogInfo.Remark = string.Format("请在{0}至{1}之间到图书馆刷卡确认。", bespeakDate.AddMinutes(-int.Parse(roomSet.SeatBespeak.ConfirmTime.BeginTime)).ToShortTimeString(), bespeakDate.AddMinutes(int.Parse(roomSet.SeatBespeak.ConfirmTime.EndTime)).ToShortTimeString()); //} //else //{ bookLogInfo.Remark = dr["remark"].ToString(); //} //if (GetBespeakMD5Key(bookLogInfo) != bookLogInfo.FlagKey) //{ // return null; //} bookLogInfo.ShortSeatNum = bookLogInfo.SeatNo.Substring(bookLogInfo.SeatNo.Length - roomSet.SeatNumAmount, roomSet.SeatNumAmount); return(bookLogInfo); } catch { return(null); } }
/// <summary> /// 预约等待 /// </summary> public void BespeakCheck() { if (Clientobject.EnterOutLogData.Student.BespeakLog.Count <= 0) { return; } BespeakLogInfo bespeaklog = Clientobject.EnterOutLogData.Student.BespeakLog[0]; ReadingRoomSetting set = Clientobject.EnterOutLogData.Student.AtReadingRoom.Setting; DateTime dtBegin = bespeaklog.BsepeakTime.AddMinutes(-double.Parse(set.SeatBespeak.ConfirmTime.BeginTime)); DateTime dtEnd = bespeaklog.BsepeakTime.AddMinutes(double.Parse(set.SeatBespeak.ConfirmTime.EndTime)); DateTime nowDate = ServiceDateTime.Now; if (DateTimeOperate.DateAccord(dtBegin, dtEnd, nowDate) || (set.SeatBespeak.NowDayBespeak && bespeaklog.SubmitTime == bespeaklog.BsepeakTime)) { //TODO:预约时间在开始时间和结束时间之间,执行预约确认操作 //TODO:预约确认时,判断当前座位上是否有人。 EnterOutLogInfo seatUsedInfo = T_SM_EnterOutLog.GetUsingEnterOutLogBySeatNo(bespeaklog.SeatNo); if (seatUsedInfo != null && seatUsedInfo.EnterOutState != EnterOutLogType.Leave) { //条件满足,说明座位正在使用。 seatUsedInfo.EnterOutState = EnterOutLogType.Leave; seatUsedInfo.EnterOutType = LogStatus.Valid; seatUsedInfo.TerminalNum = Clientobject.ClientSetting.ClientNo; seatUsedInfo.Remark = string.Format("预约该座位的读者在终端{0}刷卡确认入座,设置在座读者离开", Clientobject.ClientSetting.ClientNo); seatUsedInfo.Flag = Operation.OtherReader; int newId = -1; if (EnterOutOperate.AddEnterOutLog(seatUsedInfo, ref newId) == HandleResult.Successed) { List <WaitSeatLogInfo> waitInfoList = T_SM_SeatWaiting.GetWaitSeatList(null, seatUsedInfo.EnterOutLogID, null, null, null); if (waitInfoList.Count > 0) { Clientobject.EnterOutLogData.WaitSeatLogModel = waitInfoList[0]; Clientobject.EnterOutLogData.WaitSeatLogModel.OperateType = Operation.Reader; Clientobject.EnterOutLogData.WaitSeatLogModel.WaitingState = EnterOutLogType.WaitingCancel; Clientobject.EnterOutLogData.WaitSeatLogModel.NowState = LogStatus.Valid; if (!T_SM_SeatWaiting.UpdateWaitLog(Clientobject.EnterOutLogData.WaitSeatLogModel)) { PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception); return; } } } else { PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception); return; } } EnterOutLogInfo newEnterOutLog = new EnterOutLogInfo();//构造 newEnterOutLog.CardNo = bespeaklog.CardNo; newEnterOutLog.EnterOutLogNo = SeatComm.RndNum(); newEnterOutLog.EnterOutState = EnterOutLogType.BookingConfirmation; newEnterOutLog.EnterOutType = LogStatus.Valid; newEnterOutLog.Flag = Operation.Reader; newEnterOutLog.ReadingRoomNo = bespeaklog.ReadingRoomNo; newEnterOutLog.ReadingRoomName = bespeaklog.ReadingRoomName; newEnterOutLog.ShortSeatNo = bespeaklog.ShortSeatNum; newEnterOutLog.SeatNo = bespeaklog.SeatNo; newEnterOutLog.TerminalNum = Clientobject.ClientSetting.ClientNo; newEnterOutLog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", Clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); Clientobject.EnterOutLogData.EnterOutlog = newEnterOutLog; int logid = -1; HandleResult result = EnterOutOperate.AddEnterOutLog(newEnterOutLog, ref logid); //添加入座记录 if (result == HandleResult.Successed) { bespeaklog.BsepeakState = BookingStatus.Confinmed; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = nowDate; bespeaklog.Remark = string.Format("在终端{0}刷卡,入座预约的{1} {2}号座位", Clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); PrintData data = new PrintData(); data.CardNo = bespeaklog.CardNo; ; data.EnterTime = nowDate; data.ReaderName = Clientobject.EnterOutLogData.Student.Name; data.ReadingRoomName = Clientobject.EnterOutLogData.Student.AtReadingRoom.Name; data.SeatNo = SeatComm.SeatNoToShortSeatNo(set.SeatNumAmount, bespeaklog.SeatNo); switch (Clientobject.ClientSetting.DeviceSetting.UsingPrintSlip) { case PrintSlipMode.AutoPrint: printer.ThreadPrint(PrintStatus.General, data, Clientobject.ClientSetting.ClientNo); break; case PrintSlipMode.UserChoose: PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.PrintConfIrm); if (PopupWindowsObject.GetInstance().Window.ViewModel.OperateResule == HandleResult.Successed) { printer.ThreadPrint(PrintStatus.General, data, Clientobject.ClientSetting.ClientNo); } break; case PrintSlipMode.NotPrint: break; } PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.BespeatSeatConfirmSuccess); } else { PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.Exception); } } else if (nowDate.CompareTo(dtBegin) < 0) { //TODO:预约时间过早,请在dtBegin 到dtEnd刷卡确认。 PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.BookConfirmWarn); if (PopupWindowsObject.GetInstance().Window.ViewModel.OperateResule != HandleResult.Successed) { return; } bespeaklog.BsepeakState = BookingStatus.Cencaled; bespeaklog.CancelPerson = Operation.Reader; bespeaklog.CancelTime = ServiceDateTime.Now; bespeaklog.Remark = string.Format("在终端{0}刷卡取消{1},{2}号座位的预约。", Clientobject.ClientSetting.ClientNo, bespeaklog.ReadingRoomName, bespeaklog.ShortSeatNum); int i = T_SM_SeatBespeak.UpdateBespeakList(bespeaklog); PopupWindowsObject.GetInstance().Window.ShowMessage(TipType.BookCancelSuccess); } }