private void handleNewItemFromRFID(RFIDContent newItem) { if (newItem.bookRfidList.Count() != 0) {//只有当当前在某个书架上的图书不为空的时候才继续处理 IBookInformationService bookInformationService = container.Resolve<IBookInformationService>(); IBookLocationService bookLocationService = this.container.Resolve<IBookLocationService>(); if(!String.IsNullOrEmpty(this.ShelfLocationString))// 书架位置信息不空,这时有必要继续执行 { //如果出现不在该架位的图书,则提示该书不属于当前书架 foreach (String bookrfid in newItem.bookRfidList) { String shelfRfid=bookLocationService.getShelfRfidbyBookRfid(bookrfid); if (shelfRfid != this.shelfRfid) { try { List<String> bookNameList = bookInformationService.getBookNameListByRfidList(new List<String>() { bookrfid }); String bookName = bookNameList[0]; String message = "图书名称:" + bookName + "图书扫描码:" + bookrfid + "不属于该书架"; MessageBox.Show(message); } catch (Exception) { String message = "查询数据库出错,图书扫描码为:" + bookrfid+",请检查是否登记该图书 !"; MessageBox.Show(message); } } } //图书的rfid是否有重复,删除掉重复的部分,并刷新UI,但ID编号可能不连续,重新更新ID编号 this.dispatcherService.Dispatch(() => { List<BookItemOfWrongLocation> tempList = new List<BookItemOfWrongLocation>(); //把原始的datagrid中的内容存入临时的列表中,并清空该列表 foreach (BookItemOfWrongLocation item in this.NotOnThisShelfBookList) { tempList.Add(item); } this.NotOnThisShelfBookList.Clear(); //查看临时列表中与新读入标签重复的地方 int index=0; while(true){ if (index >= tempList.Count()) { break; } BookItemOfWrongLocation item = tempList[index]; if (newItem.bookRfidList.Contains(item.BookRFIDCode)) { tempList.Remove(item); } index = index + 1; } //把临时标签的内容复制入datagrid,并重新计算ID,因为ID可能经过删除有不连续的现象 int count = 1; foreach (BookItemOfWrongLocation item in tempList) { item.ID = Convert.ToString(count); this.NotOnThisShelfBookList.Add(item); count = count + 1; } //刷新UI this.NotOnThisShelfBookList = this.NotOnThisShelfBookList; }); } } if (newItem.shelfRfidList.Count() != 0) //发现有新的书架信息 { //清除原有信息 this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList.Clear(); this.NotOnThisShelfBookList.Clear(); }); //在书架位置的文本框内显示数据的位置 IBookInformationService bookInformationService = container.Resolve<IBookInformationService>(); IBookLocationService bookLocationService = this.container.Resolve<IBookLocationService>(); this.shelfRfid = newItem.shelfRfidList[0]; this.ShelfLocationString = bookLocationService.getShelfNameByShelfRfid(newItem.shelfRfidList[0]); //查询数据库,在本书架应有图书中显示所有的图书 List<String> bookRfidList = bookLocationService.getBookRfidListOnShelfRfid(this.shelfRfid); List<String> bookNameList=bookInformationService.getBookNameListByRfidList(bookRfidList); List<String> bookAccessCodeList=bookInformationService.getBookAccessCodeListByRfidList(bookRfidList); if ((bookRfidList.Count() == bookNameList.Count()) && (bookNameList.Count() == bookAccessCodeList.Count())) {//查询到的图书名称和图书索取码必须与图书rfid字符串长度相等 for (int i = 0; i < bookRfidList.Count(); i++) { BookItemOfWrongLocation newBookItem = new BookItemOfWrongLocation() { ID=Convert.ToString(i+1), BookName=bookNameList[i], BookAccessCode=bookAccessCodeList[i], BookRFIDCode=bookRfidList[i] }; BookItemOfWrongLocation newBookItemInOtherGrid = (BookItemOfWrongLocation)newBookItem.Clone(); this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList.Add(newBookItem); this.notOnThisShelfBookList.Add(newBookItemInOtherGrid); }); } this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList = this.OnThisShelfAllBookList; this.NotOnThisShelfBookList = this.NotOnThisShelfBookList; }); } } }
private void handleNewItemFromRFID(RFIDContent newItem) { if (newItem.bookRfidList.Count() != 0) {//只有当当前在某个书架上的图书不为空的时候才继续处理 IBookInformationService bookInformationService = container.Resolve <IBookInformationService>(); IBookLocationService bookLocationService = this.container.Resolve <IBookLocationService>(); if (!String.IsNullOrEmpty(this.ShelfLocationString))// 书架位置信息不空,这时有必要继续执行 { //如果出现不在该架位的图书,则提示该书不属于当前书架 foreach (String bookrfid in newItem.bookRfidList) { String shelfRfid = bookLocationService.getShelfRfidbyBookRfid(bookrfid); if (shelfRfid != this.shelfRfid) { try { List <String> bookNameList = bookInformationService.getBookNameListByRfidList(new List <String>() { bookrfid }); String bookName = bookNameList[0]; String message = "图书名称:" + bookName + "图书扫描码:" + bookrfid + "不属于该书架"; MessageBox.Show(message); } catch (Exception) { String message = "查询数据库出错,图书扫描码为:" + bookrfid + ",请检查是否登记该图书 !"; MessageBox.Show(message); } } } //图书的rfid是否有重复,删除掉重复的部分,并刷新UI,但ID编号可能不连续,重新更新ID编号 this.dispatcherService.Dispatch(() => { List <BookItemOfWrongLocation> tempList = new List <BookItemOfWrongLocation>(); //把原始的datagrid中的内容存入临时的列表中,并清空该列表 foreach (BookItemOfWrongLocation item in this.NotOnThisShelfBookList) { tempList.Add(item); } this.NotOnThisShelfBookList.Clear(); //查看临时列表中与新读入标签重复的地方 int index = 0; while (true) { if (index >= tempList.Count()) { break; } BookItemOfWrongLocation item = tempList[index]; if (newItem.bookRfidList.Contains(item.BookRFIDCode)) { tempList.Remove(item); } index = index + 1; } //把临时标签的内容复制入datagrid,并重新计算ID,因为ID可能经过删除有不连续的现象 int count = 1; foreach (BookItemOfWrongLocation item in tempList) { item.ID = Convert.ToString(count); this.NotOnThisShelfBookList.Add(item); count = count + 1; } //刷新UI this.NotOnThisShelfBookList = this.NotOnThisShelfBookList; }); } } if (newItem.shelfRfidList.Count() != 0) //发现有新的书架信息 { //清除原有信息 this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList.Clear(); this.NotOnThisShelfBookList.Clear(); }); //在书架位置的文本框内显示数据的位置 IBookInformationService bookInformationService = container.Resolve <IBookInformationService>(); IBookLocationService bookLocationService = this.container.Resolve <IBookLocationService>(); this.shelfRfid = newItem.shelfRfidList[0]; this.ShelfLocationString = bookLocationService.getShelfNameByShelfRfid(newItem.shelfRfidList[0]); //查询数据库,在本书架应有图书中显示所有的图书 List <String> bookRfidList = bookLocationService.getBookRfidListOnShelfRfid(this.shelfRfid); List <String> bookNameList = bookInformationService.getBookNameListByRfidList(bookRfidList); List <String> bookAccessCodeList = bookInformationService.getBookAccessCodeListByRfidList(bookRfidList); if ((bookRfidList.Count() == bookNameList.Count()) && (bookNameList.Count() == bookAccessCodeList.Count())) {//查询到的图书名称和图书索取码必须与图书rfid字符串长度相等 for (int i = 0; i < bookRfidList.Count(); i++) { BookItemOfWrongLocation newBookItem = new BookItemOfWrongLocation() { ID = Convert.ToString(i + 1), BookName = bookNameList[i], BookAccessCode = bookAccessCodeList[i], BookRFIDCode = bookRfidList[i] }; BookItemOfWrongLocation newBookItemInOtherGrid = (BookItemOfWrongLocation)newBookItem.Clone(); this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList.Add(newBookItem); this.notOnThisShelfBookList.Add(newBookItemInOtherGrid); }); } this.dispatcherService.Dispatch(() => { this.OnThisShelfAllBookList = this.OnThisShelfAllBookList; this.NotOnThisShelfBookList = this.NotOnThisShelfBookList; }); } } }