private void StartInportBtn_Click_1(object sender, RoutedEventArgs e) { string table = this.ExcelTable.Text.Trim(); string sql = string.Format("select * from [{0}]", table); SwitchTip.Text = "查询依赖信息"; //try //{ DataTable dt = SqlExcel.ExcuteSelect(this.ExcleFile.Text.Trim(), sql); int rowsCount = dt.Rows.Count; SwitchTip.Text = "共"+rowsCount+"条记录"; SwitchProgressBar.Value = 10; JszxDataManager jszxDataManager = new JszxDataManager(); //获取当前学期id SwitchTip.Text = "获取当前学期"; SwitchProgressBar.Value = 40; int termID = jszxDataManager.GetCurrentTerm().TermID; //获取实验室列表 SwitchTip.Text = "获取实验室列表"; SwitchProgressBar.Value = 70; List<labs_tb> labs = jszxDataManager.GetLabs_tbList(); #region 开始导入 SwitchProgressBar.Value = 100; SwitchTip.Text = "获取实验室列表"; SwitchProgressBar.Maximum = rowsCount; SwitchProgressBar.Value = 0; using (TransactionScope scope = new TransactionScope()) { for (int i = 0; i < rowsCount; i++) { SwitchTip.Text = "导入第" + (i + 1).ToString() + "条记录"; #region 保存课程信息 courses_tb course = new courses_tb(); //格式化第i行 DataRow dr = FormatDataRow(dt, i); course.CrsName = dr["课程名称"].ToString(); //crsTeacher 教师姓名 course.CrsTeacher = dr["任课教师"].ToString(); //crsClass 上课班级 course.CrsClasses = dr["班级"].ToString(); //crsHour上机学时 course.CrsHour = Convert.ToInt32(dr["上机学时"]); //crsTimes 上机次数 course.CrsTimes = Convert.ToInt32(dr["上机次数"]); //crsNum 上机人数 course.CrsNum = Convert.ToInt32(dr["人数"]); //crsConf 实验环境配置要求 course.CrsConf = dr["对软硬件环境的要求"].ToString(); //备注 course.CrsRemark = dr["备注"].ToString(); jszxDataManager.jszxEntity.courses_tb.Add(course); jszxDataManager.jszxEntity.SaveChanges(); int courseID = course.CrsID; #endregion #region 保存课程安排 #region 处理实验室 //获取该条记录对应的实验室,根据每条记录的上机地点是否包含该实验室关键字确定是否包含实验室 string lab = dr["上机地点"].ToString(); List<int> courseLabs = new List<int>(); foreach (var drlab in labs) { if (lab.Contains(drlab.LabKeyWord)) { courseLabs.Add(drlab.LabID); } } if (courseLabs.Count == 0) { //此条记录没有对应的实验室,继续循环下一条 continue; } #endregion #region 处理周次 string weekStr = dr["周"].ToString(); int isDouble = 0; if (weekStr.Contains("双")) { isDouble = 2; } else if (weekStr.Contains("单")) { isDouble = 1; } List<int> weeks = GetListOfStr(weekStr, isDouble); #endregion #region 处理工作日 string weekdayStr = dr["星期"].ToString(); List<int> weekdays = GetListOfStr(weekdayStr, 0); #endregion #region 处理节次 string classStr = dr["节"].ToString(); List<int> classes = GetListOfStr(classStr, 0); #endregion #region 循环导入 //schtb. foreach (int wk in weeks) { //周 foreach (int wkd in weekdays) { //工作日 foreach (int lb in courseLabs) { //实验室 foreach (int cls in classes) { schedule_tb schtb = new schedule_tb(); schtb.ScdCrs = courseID; schtb.ScdTerm = termID; schtb.ScdWeek = (sbyte)wk; schtb.ScdWeekDay = (sbyte)wkd; schtb.ScdLab = lb; //节次 schtb.ScdClass = cls; //保存至数据库 jszxDataManager.jszxEntity.schedule_tb.Add(schtb); jszxDataManager.jszxEntity.SaveChanges(); } } } } #endregion #endregion SwitchProgressBar.Value = i + 1; } scope.Complete(); } #endregion SwitchTip.Text = "导入完成,正在保存数据"; SwitchProgressBar.IsIndeterminate = true; //} //catch (Exception ex) //{ // MessageBox.Show("出现错误:\n"+ex.Message); //} }
/// <summary> /// 获取实验室列表 /// </summary> /// <returns>实验室列表</returns> public List<Lab> GetLabList() { List<Lab> labs = new List<Lab>(); using (JszxDataManager jszxDateManage = new JszxDataManager()) { List<labs_tb> lab_tbs = jszxDateManage.GetLabs_tbList(); foreach (labs_tb lb_tb in lab_tbs) { Lab lb = new Lab(); lb.LabAddr = lb_tb.LabAddr; lb.LabAdmin = lb_tb.LabAdmin; lb.LabID = lb_tb.LabID; lb.LabIP = lb_tb.LabIP; lb.LabKeyWord = lb_tb.LabKeyWord; lb.LabName = lb_tb.LabName; labs.Add(lb); } } return labs; }