public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { SmartSchool.API.PlugIn.VirtualCheckBox filterRepeat = new SmartSchool.API.PlugIn.VirtualCheckBox("自動略過重讀成績", true); wizard.Options.Add(filterRepeat); wizard.ExportableFields.AddRange("學年度", "成績年級", "科目", "學年成績", "結算成績", "補考成績", "重修成績"); AccessHelper _AccessHelper = new AccessHelper(); wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e) { List <StudentRecord> students = _AccessHelper.StudentHelper.GetStudents(e.List); _AccessHelper.StudentHelper.FillSchoolYearSubjectScore(filterRepeat.Checked, students); foreach (StudentRecord stu in students) { foreach (SchoolYearSubjectScoreInfo var in stu.SchoolYearSubjectScoreList) { RowData row = new RowData(); row.ID = stu.StudentID; foreach (string field in e.ExportFields) { if (wizard.ExportableFields.Contains(field)) { switch (field) { case "學年度": row.Add(field, "" + var.SchoolYear); break; case "成績年級": row.Add(field, "" + var.GradeYear); break; case "科目": row.Add(field, var.Subject); break; case "學年成績": row.Add(field, "" + var.Score); break; case "結算成績": row.Add(field, var.Detail.GetAttribute(field) == "" ? ("" + var.Score) : var.Detail.GetAttribute(field)); break; case "補考成績": row.Add(field, var.Detail.GetAttribute(field)); break; case "重修成績": row.Add(field, var.Detail.GetAttribute(field)); break; } } } e.Items.Add(row); } } }; }
public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { SmartSchool.API.PlugIn.VirtualCheckBox filterRepeat = new SmartSchool.API.PlugIn.VirtualCheckBox("自動略過重讀成績", true); wizard.Options.Add(filterRepeat); // 2022-01 Cynthia 移除"體育", "國防通識", "健康與護理", wizard.ExportableFields.AddRange("學年度", "成績年級", "學業", "實習科目", "專業科目", "德行"); AccessHelper _AccessHelper = new AccessHelper(); wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e) { List <StudentRecord> students = _AccessHelper.StudentHelper.GetStudents(e.List); _AccessHelper.StudentHelper.FillSchoolYearEntryScore(filterRepeat.Checked, students); foreach (StudentRecord stu in students) { Dictionary <int, List <SchoolYearEntryScoreInfo> > schoolYearEntryScoreList = new Dictionary <int, List <SchoolYearEntryScoreInfo> >(); foreach (SchoolYearEntryScoreInfo var in stu.SchoolYearEntryScoreList) { if (!schoolYearEntryScoreList.ContainsKey(var.SchoolYear)) { schoolYearEntryScoreList.Add(var.SchoolYear, new List <SchoolYearEntryScoreInfo>()); } schoolYearEntryScoreList[var.SchoolYear].Add(var); } foreach (int sy in schoolYearEntryScoreList.Keys) { RowData row = new RowData(); row.ID = stu.StudentID; row.Add("學年度", "" + sy); foreach (SchoolYearEntryScoreInfo var in schoolYearEntryScoreList[sy]) { if (!row.ContainsKey("成績年級")) { row.Add("成績年級", "" + var.GradeYear); } if (e.ExportFields.Contains(var.Entry)) { row.Add(var.Entry, "" + var.Score); } } e.Items.Add(row); } } }; }
public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { SmartSchool.API.PlugIn.VirtualCheckBox filterRepeat = new SmartSchool.API.PlugIn.VirtualCheckBox("自動略過重讀成績", true); wizard.Options.Add(filterRepeat); // 2018/8 穎驊註解,經過討論後, 先暫時將 ischool類別2 排名的概念拿掉,因為目前的結構 無法區隔類別1、類別2,待日後設計完整 //wizard.ExportableFields.AddRange("學年度", "學期", "成績年級", "學業", "體育", "國防通識", "健康與護理", "實習科目", "專業科目", "學業(原始)", "體育(原始)", "國防通識(原始)", "健康與護理(原始)", "實習科目(原始)", "專業科目(原始)", "德行", "學業成績班排名", "學業成績班排名母數", "學業成績科排名", "學業成績科排名母數", "學業成績校排名", "學業成績校排名母數", "學業成績排名類別1", "學業成績類1排名", "學業成績類1排名母數", "學業成績排名類別2", "學業成績類2排名", "學業成績類2排名母數"); wizard.ExportableFields.AddRange("學年度", "學期", "成績年級", "學業", "體育", "國防通識", "健康與護理", "實習科目", "專業科目", "學業(原始)", "體育(原始)", "國防通識(原始)", "健康與護理(原始)", "實習科目(原始)", "專業科目(原始)", "德行", "學業成績班排名", "學業成績班排名母數", "學業成績科排名", "學業成績科排名母數", "學業成績校排名", "學業成績校排名母數", "學業成績排名類別1", "學業成績類1排名", "學業成績類1排名母數"); AccessHelper _AccessHelper = new AccessHelper(); wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e) { List <StudentRecord> students = _AccessHelper.StudentHelper.GetStudents(e.List); Dictionary <string, List <StudSemsEntryRating> > StudSemsEntryRatingDict = new Dictionary <string, List <StudSemsEntryRating> >(); StudSemsEntryRatingDict = Utility.GetStudSemsEntryRatingByStudentID(e.List); _AccessHelper.StudentHelper.FillSemesterEntryScore(filterRepeat.Checked, students); foreach (StudentRecord stu in students) { Dictionary <int, Dictionary <int, List <SemesterEntryScoreInfo> > > semesterEntryScoreList = new Dictionary <int, Dictionary <int, List <SemesterEntryScoreInfo> > >(); foreach (SemesterEntryScoreInfo var in stu.SemesterEntryScoreList) { if (!semesterEntryScoreList.ContainsKey(var.SchoolYear)) { semesterEntryScoreList.Add(var.SchoolYear, new Dictionary <int, List <SemesterEntryScoreInfo> >()); } if (!semesterEntryScoreList[var.SchoolYear].ContainsKey(var.Semester)) { semesterEntryScoreList[var.SchoolYear].Add(var.Semester, new List <SemesterEntryScoreInfo>()); } semesterEntryScoreList[var.SchoolYear][var.Semester].Add(var); } foreach (int sy in semesterEntryScoreList.Keys) { foreach (int se in semesterEntryScoreList[sy].Keys) { RowData row = new RowData(); row.ID = stu.StudentID; row.Add("學年度", "" + sy); row.Add("學期", "" + se); foreach (SemesterEntryScoreInfo var in semesterEntryScoreList[sy][se]) { if (!row.ContainsKey("成績年級")) { row.Add("成績年級", "" + var.GradeYear); } if (e.ExportFields.Contains(var.Entry)) { row.Add(var.Entry, "" + var.Score); } } //處理學業成績排名資料 if (StudSemsEntryRatingDict.ContainsKey(stu.StudentID)) { foreach (var record in StudSemsEntryRatingDict[stu.StudentID]) { if (record.SchoolYear == "" + sy && record.Semester == "" + se) { row.Add("學業成績班排名", "" + record.ClassRank); row.Add("學業成績班排名母數", "" + record.ClassCount); row.Add("學業成績科排名", "" + record.DeptRank); row.Add("學業成績科排名母數", "" + record.DeptCount); row.Add("學業成績校排名", "" + record.YearRank); row.Add("學業成績校排名母數", "" + record.YearCount); row.Add("學業成績排名類別1", "" + record.Group1); row.Add("學業成績類1排名", "" + record.Group1Rank); row.Add("學業成績類1排名母數", "" + record.Group1Count); // 2018/8 穎驊註解,經過討論後, 先暫時將 ischool類別2 排名的概念拿掉,因為目前的結構 無法區隔類別1、類別2,待日後設計完整 //row.Add("學業成績排名類別2", "" + record.Group2); //row.Add("學業成績類2排名", "" + record.Group2Rank); //row.Add("學業成績類2排名母數", "" + record.Group2Count); } } } e.Items.Add(row); } } } }; }
public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { SmartSchool.API.PlugIn.VirtualCheckBox filterRepeat = new SmartSchool.API.PlugIn.VirtualCheckBox("自動略過重讀成績", true); wizard.Options.Add(filterRepeat); //2017/6/16 穎驊新增,因應[02-02][06] 計算學期科目成績新增清空原成績模式 項目, 新增 "刪除"欄位,使使用者能匯入 刪除成績資料 wizard.ExportableFields.AddRange("領域", "學年度", "學期", "權數", "節數", "成績", "原始成績", "補考成績", "努力程度", "文字描述", "註記", "刪除"); wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e) { #region ExportPackage List <JHStudentRecord> students = JHStudent.SelectByIDs(e.List); Dictionary <string, List <JHSemesterScoreRecord> > semsDict = new Dictionary <string, List <JHSemesterScoreRecord> >(); foreach (JHSemesterScoreRecord record in JHSemesterScore.SelectByStudentIDs(e.List)) { if (!semsDict.ContainsKey(record.RefStudentID)) { semsDict.Add(record.RefStudentID, new List <JHSemesterScoreRecord>()); } semsDict[record.RefStudentID].Add(record); } foreach (JHStudentRecord stu in students) { if (!semsDict.ContainsKey(stu.ID)) { continue; } foreach (JHSemesterScoreRecord record in semsDict[stu.ID]) { foreach (K12.Data.DomainScore domain in record.Domains.Values) { RowData row = new RowData(); row.ID = stu.ID; foreach (string field in e.ExportFields) { if (wizard.ExportableFields.Contains(field)) { switch (field) { case "領域": row.Add(field, "" + domain.Domain); break; case "學年度": row.Add(field, "" + record.SchoolYear); break; case "學期": row.Add(field, "" + record.Semester); break; case "權數": row.Add(field, "" + domain.Credit); break; case "節數": row.Add(field, "" + domain.Period); break; case "成績": row.Add(field, "" + domain.Score); break; case "原始成績": row.Add(field, "" + domain.ScoreOrigin); break; case "補考成績": row.Add(field, "" + domain.ScoreMakeup); break; case "努力程度": row.Add(field, "" + domain.Effort); break; case "文字描述": row.Add(field, domain.Text); break; case "註記": row.Add(field, domain.Comment); break; case "刪除": row.Add(field, ""); break; } } } e.Items.Add(row); } } } #endregion FISCA.LogAgent.ApplicationLog.Log("成績系統.匯入匯出", "匯出學期領域成績", "總共匯出" + e.Items.Count + "筆學期領域成績。"); }; }
public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { SmartSchool.API.PlugIn.VirtualCheckBox filterRepeat = new SmartSchool.API.PlugIn.VirtualCheckBox("自動略過重讀成績", true); wizard.Options.Add(filterRepeat); wizard.ExportableFields.AddRange( "科目" , "科目級別" , "學年度" , "學期" , "英文名稱" , "學分數" , "分項類別" , "成績年級" , "必選修" , "校部訂" , "科目成績" , "原始成績" , "補考成績" , "重修成績" , "手動調整成績" , "學年調整成績" , "取得學分" , "不計學分" , "不需評分" , "註記" , "畢業採計-學分數" , "畢業採計-分項類別" , "畢業採計-必選修" , "畢業採計-校部訂" , "畢業採計-不計學分" , "畢業採計-說明" , "是否補修成績" , "補修學年度" , "補修學期" , "重修學年度" , "重修學期" , "修課及格標準" , "修課補考標準" , "修課備註" , "修課直接指定總成績" , "免修" , "抵免" ); filterRepeat.CheckedChanged += delegate { if (filterRepeat.Checked) { foreach (var item in new string[] { "畢業採計-學分數" , "畢業採計-分項類別" , "畢業採計-必選修" , "畢業採計-校部訂" , "畢業採計-不計學分" , "畢業採計-說明" } ) { if (!wizard.ExportableFields.Contains(item)) { wizard.ExportableFields.Add(item); } } } else { foreach (var item in new string[] { "畢業採計-學分數" , "畢業採計-分項類別" , "畢業採計-必選修" , "畢業採計-校部訂" , "畢業採計-不計學分" , "畢業採計-說明" } ) { if (wizard.ExportableFields.Contains(item)) { wizard.ExportableFields.Remove(item); } } } }; AccessHelper _AccessHelper = new AccessHelper(); wizard.ExportPackage += delegate(object sender, SmartSchool.API.PlugIn.Export.ExportPackageEventArgs e) { List <StudentRecord> students = _AccessHelper.StudentHelper.GetStudents(e.List); if (filterRepeat.Checked) { var gCheck = false; foreach (var item in new string[] { "畢業採計-學分數" , "畢業採計-分項類別" , "畢業採計-必選修" , "畢業採計-校部訂" , "畢業採計-不計學分" , "畢業採計-說明" } ) { if (e.ExportFields.Contains(item)) { gCheck = true; break; } } if (gCheck) { new WearyDogComputer().FillStudentGradCheck(_AccessHelper, students); } //_AccessHelper.StudentHelper.FillSemesterSubjectScore(filterRepeat.Checked, students); else { _AccessHelper.StudentHelper.FillSemesterSubjectScore(filterRepeat.Checked, students); } } else { _AccessHelper.StudentHelper.FillSemesterSubjectScore(false, students); } //if (e.ExportFields.Contains("計算規則-及格標準")) // _AccessHelper.StudentHelper.FillField("及格標準", students); //if (e.ExportFields.Contains("計算規則-補考標準")) // _AccessHelper.StudentHelper.FillField("補考標準", students); //// 取得學生課程代碼相關對照 //CourseCodeTransfer cct = new CourseCodeTransfer(); //// 取得學生課程代碼 //Dictionary<string, StudentCourseCodeInfo> studCodeInfoDict = cct.GetStundetCourseCodeDict(e.List); string subjectCode = ""; foreach (StudentRecord stu in students) { foreach (SemesterSubjectScoreInfo var in stu.SemesterSubjectScoreList) { subjectCode = ""; //if (studCodeInfoDict.ContainsKey(stu.StudentID)) //{ // StudentCourseCodeInfo item = studCodeInfoDict[stu.StudentID]; // string req = var.Require ? "必修" : "選修"; // subjectCode = item.GetCourseCode(var.Subject, var.Detail.GetAttribute("修課校部訂"), req); //} RowData row = new RowData(); row.ID = stu.StudentID; foreach (string field in e.ExportFields) { if (wizard.ExportableFields.Contains(field)) { switch (field) { case "科目": row.Add(field, var.Subject); break; case "科目級別": row.Add(field, var.Level); break; case "學年度": row.Add(field, "" + var.SchoolYear); break; case "學期": row.Add(field, "" + var.Semester); break; case "英文名稱": row.Add(field, var.Detail.GetAttribute("英文名稱")); break; case "學分數": row.Add(field, "" + var.CreditDec()); break; case "分項類別": row.Add(field, var.Detail.GetAttribute("開課分項類別")); break; case "成績年級": row.Add(field, "" + var.GradeYear); break; case "必選修": row.Add(field, var.Require ? "必修" : "選修"); break; case "校部訂": row.Add(field, var.Detail.GetAttribute("修課校部訂")); break; case "科目成績": row.Add(field, "" + var.Score); break; case "原始成績": row.Add(field, var.Detail.GetAttribute("原始成績")); break; case "補考成績": row.Add(field, var.Detail.GetAttribute("補考成績")); break; case "重修成績": row.Add(field, var.Detail.GetAttribute("重修成績")); break; case "手動調整成績": row.Add(field, var.Detail.GetAttribute("擇優採計成績")); break; case "學年調整成績": row.Add(field, var.Detail.GetAttribute("學年調整成績")); break; case "取得學分": row.Add(field, var.Pass ? "是" : "否"); break; case "不計學分": row.Add(field, var.Detail.GetAttribute("不計學分") == "是" ? "是" : ""); break; case "不需評分": row.Add(field, var.Detail.GetAttribute("不需評分") == "是" ? "是" : ""); break; case "註記": row.Add(field, var.Detail.HasAttribute("註記") ? var.Detail.GetAttribute("註記") : ""); break; //case "計算規則-及格標準": // if (stu.Fields.ContainsKey("及格標準") && stu.Fields["及格標準"] is Dictionary<int, decimal>) // { // Dictionary<int, decimal> applyLimit = (Dictionary<int, decimal>)stu.Fields["及格標準"]; // if (applyLimit.ContainsKey(var.GradeYear)) // { // row.Add(field, "" + applyLimit[var.GradeYear]); // } // else // { // row.Add(field, "無法判斷"); // } // } // else // { // row.Add(field, "沒有成績計算規則"); // } // break; //case "計算規則-補考標準": // if (stu.Fields.ContainsKey("補考標準") && stu.Fields["補考標準"] is Dictionary<int, decimal>) // { // Dictionary<int, decimal> reexamLimit = (Dictionary<int, decimal>)stu.Fields["補考標準"]; // if (reexamLimit.ContainsKey(var.GradeYear)) // { // row.Add(field, "" + reexamLimit[var.GradeYear]); // } // else // { // row.Add(field, "無法判斷"); // } // } // else // { // row.Add(field, "沒有成績計算規則"); // } // break; case "畢業採計-學分數": case "畢業採計-分項類別": case "畢業採計-必選修": case "畢業採計-校部訂": case "畢業採計-不計學分": if (var.Detail.GetAttribute(field) == "") { row.Add(field, "--"); } else { row.Add(field, var.Detail.GetAttribute(field)); } break; case "畢業採計-說明": row.Add(field, var.Detail.GetAttribute(field)); break; case "是否補修成績": row.Add(field, var.Detail.GetAttribute("是否補修成績") == "是" ? "是" : ""); break; case "重修學年度": row.Add(field, var.Detail.GetAttribute("重修學年度")); break; case "重修學期": row.Add(field, var.Detail.GetAttribute("重修學期")); break; case "補修學年度": row.Add(field, var.Detail.GetAttribute("補修學年度")); break; case "補修學期": row.Add(field, var.Detail.GetAttribute("補修學期")); break; case "修課及格標準": row.Add(field, var.Detail.GetAttribute("修課及格標準")); break; case "修課補考標準": row.Add(field, var.Detail.GetAttribute("修課補考標準")); break; // case "修課科目代碼": row.Add(field, var.Detail.GetAttribute("修課科目代碼")); break; case "修課備註": row.Add(field, var.Detail.GetAttribute("修課備註")); break; case "修課直接指定總成績": row.Add(field, var.Detail.GetAttribute("修課直接指定總成績")); break; //case "應修學期": row.Add(field, var.Detail.GetAttribute("應修學期")); break; case "免修": row.Add(field, var.Detail.GetAttribute("免修") == "是" ? "是" : ""); break; case "抵免": row.Add(field, var.Detail.GetAttribute("抵免") == "是" ? "是" : ""); break; } } } e.Items.Add(row); } } }; }