/* * //读取上次已选择的教室信息 * public void ReadSelectClassroomsConfig() * { * IEnumerable<int> classroomIds = systemConfig.GetArrayConfig<int>("MonitorClassrooms"); * if (null == classroomIds) return; * treeViewModel.MarkSelectedClassrooms(classroomIds); * QueryTerminalInfos(TreeViewModel.SelectedClassrooms); * sortTerminalInfos(); * } * //保存已选择的教室信息 * public void WriteSelectClassroomsConfig() * { * systemConfig.SetArrayConfig<int>("MonitorClassrooms", TreeViewModel.SelectedClassrooms.Select(p => p.Id).ToList()); * systemConfig.WriteConfig(); * } */ private void sortTerminalInfos() { /* * ObservableExtensions.Sort<TerminalInfo>(TerminalInfos, (a, b) => { * ClassRoom aClassroom = treeViewModel.SelectedClassrooms.Where(p => p.TerminalId.Equals(a.TerminalId)).FirstOrDefault(); * ClassRoom bClassroom = treeViewModel.SelectedClassrooms.Where(p => p.TerminalId.Equals(b.TerminalId)).FirstOrDefault(); * if (null != aClassroom && null != bClassroom) * { * if (aClassroom.ClassroomBuilding.Ord.Equals(bClassroom.ClassroomBuilding.Ord)) * { * return aClassroom.RoomNum.CompareTo(bClassroom.RoomNum); * } * else * { * return aClassroom.ClassroomBuilding.Ord.CompareTo(bClassroom.ClassroomBuilding.Ord); * } * } * else if (null == aClassroom) * { * return -1; * } * else * { * return 1; * } * }); */ ICollection <TerminalInfo> sortTerminalInfos = TerminalInfos.OrderBy(p => treeViewModel.SelectedClassrooms.Where(o => o.TerminalId.Equals(p.TerminalId)).Select(o => o.ClassroomBuilding).FirstOrDefault().Ord) .ThenBy(p => treeViewModel.SelectedClassrooms.Where(o => o.TerminalId.Equals(p.TerminalId)).Select(o => o.RoomNum).FirstOrDefault()).ToList(); for (int i = 0; i < sortTerminalInfos.Count; i++) { TerminalInfos.Move(TerminalInfos.IndexOf(sortTerminalInfos.ElementAt(i)), i); } }
//更新设备状态信息 private void QueryTerminalInfos(ICollection <ClassRoom> classrooms) { ICollection <ClassroomBuilding> classroomBuildings = new List <ClassroomBuilding>(); foreach (var classroom in classrooms) { classroomBuildings.Add(classroom.ClassroomBuilding); classroom.ClassroomBuilding = null; } //JsonSerializerSettings settings = new JsonSerializerSettings(); //settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //settings.MissingMemberHandling = MissingMemberHandling.Ignore; //string jClassrooms = JsonConvert.SerializeObject(classrooms, settings); //JArray j = JArray.Parse(jClassrooms); //object cls = j.ToObject<ICollection<ClassRoom>>(); JObject jo = restConnection.Post("api/TerminalInfo/QueryLastTerminalInfos", classrooms); foreach (var classroom in classrooms) { classroom.ClassroomBuilding = classroomBuildings.ElementAt(classrooms.ToList().IndexOf(classroom)); } if (jo.Value <bool>("success")) { JArray ja = jo.Value <JArray>("data"); if (null != ja) { Collection <TerminalInfo> terminalInfos = ja.ToObject <Collection <TerminalInfo> >(); foreach (var terminalInfo in terminalInfos) { ClassRoom classroom = classrooms.Where(p => p.TerminalId.Equals(terminalInfo.TerminalId)).FirstOrDefault(); if (null != classroom) { terminalInfo.Name = classroom.ClassroomBuilding.BuildingName + "_" + classroom.RoomNum; } } //删除未选择的教室 ICollection <TerminalInfo> removeItems = TerminalInfos.Where(p => !terminalInfos.Select(o => o.TerminalId).Contains(p.TerminalId)).ToList(); foreach (var item in removeItems) { TerminalInfos.Remove(item); } //更新原选择教室的信息 PropertyInfo[] properties = typeof(TerminalInfo).GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance); foreach (var item in TerminalInfos) { TerminalInfo terminalInfo = terminalInfos.Where(p => p.TerminalId == item.TerminalId).FirstOrDefault(); if (null != terminalInfo) { foreach (PropertyInfo property in properties) { property.SetValue(item, property.GetValue(terminalInfo, null), null); } } } //增加新选择的教室 ICollection <TerminalInfo> addItems = terminalInfos.Where(p => !TerminalInfos.Select(o => o.TerminalId).Contains(p.TerminalId)).ToList(); foreach (var item in addItems) { TerminalInfos.Add(item); } } } }