internal SemesterHistoryRecordEditor(SemesterHistoryRecord info) { SemesterHistoryRecord = info; ClassName = info.ClassName; GradeYear = info.GradeYear; SchoolYear = info.SchoolYear; SeatNo = info.SeatNo; Semester = info.Semester; RefStudentID = info.RefStudentID; Teacher = info.Teacher; SchoolDayCount = info.SchoolDayCount; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { //取得所選社團 List <string> SelectCLUBIDList = ClubAdmin.Instance.SelectedSource; //取得參與學生的社團學期成績 List <ResultScoreRecord> ResultList = helper.Select <ResultScoreRecord>("ref_club_id in ('" + string.Join("','", SelectCLUBIDList) + "')"); List <string> StudentIDList = new List <string>(); foreach (ResultScoreRecord rsr in ResultList) { if (!StudentIDList.Contains(rsr.RefStudentID)) { StudentIDList.Add(rsr.RefStudentID); } } #region 取得學生基本資料 List <StudentRecord> StudentRecordList = Student.SelectByIDs(StudentIDList); Dictionary <string, StudentRecord> StudentDic = new Dictionary <string, StudentRecord>(); foreach (StudentRecord each in StudentRecordList) { if (each.Status == StudentRecord.StudentStatus.一般 || each.Status == StudentRecord.StudentStatus.延修) { if (!StudentDic.ContainsKey(each.ID)) { StudentDic.Add(each.ID, each); } } } #endregion #region 學期歷程 List <SemesterHistoryRecord> SemesterList = SemesterHistory.SelectByStudentIDs(StudentIDList); //學生ID : SemesterHistoryRecord Dictionary <string, SemesterHistoryRecord> SemesterDic = new Dictionary <string, SemesterHistoryRecord>(); foreach (SemesterHistoryRecord each in SemesterList) { if (!SemesterDic.ContainsKey(each.RefStudentID)) { SemesterDic.Add(each.RefStudentID, each); } } #endregion Workbook wb = new Workbook(); Worksheet ws = wb.Worksheets[0]; //建立標頭 TitleList = GetTitle(); int TitleIndex = 0; foreach (string each in TitleList) { ws.Cells[0, TitleIndex].PutValue(each); TitleIndex++; } int RowIndex = 1; int ColumnIndex = 0; foreach (ResultScoreRecord Result in ResultList) { if (StudentDic.ContainsKey(Result.RefStudentID)) { #region 每筆資料 StudentRecord sr = StudentDic[Result.RefStudentID]; ColumnIndex = 0; ws.Cells[RowIndex, ColumnIndex].PutValue(sr.ID); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(sr.StudentNumber); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(string.IsNullOrEmpty(sr.RefClassID) ? "" : sr.Class.Name); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(sr.SeatNo.HasValue ? sr.SeatNo.Value.ToString() : ""); ColumnIndex++; //ws.Cells[RowIndex, ColumnIndex].PutValue(""); //ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(sr.Name); ColumnIndex++; #region 其它 string 取得學分 = "是"; string 科目級別 = ""; string 成績年級 = ""; //if (Result.ResultScore.HasValue) //{ // if (Result.ResultScore.Value >= 60) // { // 取得學分 = "是"; // } //} if (SemesterDic.ContainsKey(Result.RefStudentID)) { SemesterHistoryRecord shr = SemesterDic[Result.RefStudentID]; foreach (SemesterHistoryItem each in shr.SemesterHistoryItems) { if (Result.SchoolYear == each.SchoolYear && Result.Semester == each.Semester) { 科目級別 = GetSchoolYearByGradeYear(each); 成績年級 = each.GradeYear.ToString(); } } } #endregion ws.Cells[RowIndex, ColumnIndex].PutValue("聯課活動"); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(科目級別); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("" + Result.SchoolYear); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("" + Result.Semester); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("0"); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("必修"); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("學業"); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(成績年級); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue("部訂"); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(Result.ResultScore.HasValue ? Result.ResultScore.Value.ToString() : ""); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(Result.ResultScore.HasValue ? Result.ResultScore.Value.ToString() : ""); ColumnIndex++; ws.Cells[RowIndex, ColumnIndex].PutValue(取得學分); ColumnIndex++; RowIndex++; #endregion } } e.Result = wb; }
//覆寫 public override void InitializeExport(SmartSchool.API.PlugIn.Export.ExportWizard wizard) { List <string> FieldList = new List <string>(); FieldList.Add("科目"); //聯課活動 FieldList.Add("科目級別"); FieldList.Add("學年度"); //目前欄位 FieldList.Add("學期"); //目前欄位 FieldList.Add("學分數"); FieldList.Add("必選修"); FieldList.Add("分項類別"); FieldList.Add("成績年級"); FieldList.Add("校部訂"); FieldList.Add("科目成績"); //目前欄位 FieldList.Add("原始成績"); //目前欄位 FieldList.Add("取得學分"); FieldList.Add("社團名稱"); //目前欄位 FieldList.Add("社團成績"); //目前欄位 FieldList.Add("幹部記錄"); //目前欄位 wizard.ExportableFields.AddRange(FieldList); wizard.ExportPackage += (sender, e) => { //取得學生清單 AccessHelper helper = new AccessHelper(); string strCondition = string.Empty; foreach (string ID in e.List) { strCondition += strCondition == string.Empty ? "'" + ID + "'" : ",'" + ID + "'"; } List <ResultScoreRecord> records = helper.Select <ResultScoreRecord>("ref_student_id in (" + strCondition + ")"); //取得學生學期歷程 List <SemesterHistoryRecord> SemesterList = SemesterHistory.SelectByStudentIDs(e.List); //學生ID : SemesterHistoryRecord Dictionary <string, SemesterHistoryRecord> SemesterDic = new Dictionary <string, SemesterHistoryRecord>(); foreach (SemesterHistoryRecord each in SemesterList) { if (!SemesterDic.ContainsKey(each.RefStudentID)) { SemesterDic.Add(each.RefStudentID, each); } } //records.Sort(); for (int i = 0; i < records.Count; i++) { RowData row = new RowData(); row.ID = records[i].RefStudentID; foreach (string field in e.ExportFields) { if (wizard.ExportableFields.Contains(field)) { string 取得學分 = "否"; string 科目級別 = ""; string 成績年級 = ""; if (records[i].ResultScore.HasValue) { if (records[i].ResultScore.Value >= 60) { 取得學分 = "是"; } } if (SemesterDic.ContainsKey(records[i].RefStudentID)) { SemesterHistoryRecord shr = SemesterDic[records[i].RefStudentID]; foreach (SemesterHistoryItem each in shr.SemesterHistoryItems) { if (records[i].SchoolYear == each.SchoolYear && records[i].Semester == each.Semester) { 科目級別 = GetSchoolYearByGradeYear(each); 成績年級 = each.GradeYear.ToString(); } } } switch (field) { case "科目": row.Add(field, "聯課活動"); break; //需要依據學期歷程進行判斷 case "科目級別": row.Add(field, 科目級別); break; case "學年度": row.Add(field, "" + records[i].SchoolYear); break; case "學期": row.Add(field, "" + records[i].Semester); break; case "學分數": row.Add(field, "0"); break; case "必選修": row.Add(field, "必修"); break; case "分項類別": row.Add(field, "學業"); break; case "成績年級": row.Add(field, 成績年級); break; case "校部訂": row.Add(field, "部訂"); break; case "科目成績": row.Add(field, records[i].ResultScore.HasValue ? records[i].ResultScore.Value.ToString() : ""); break; case "原始成績": row.Add(field, records[i].ResultScore.HasValue ? records[i].ResultScore.Value.ToString() : ""); break; case "取得學分": row.Add(field, 取得學分); break; case "社團名稱": row.Add(field, records[i].ClubName); break; case "社團成績": row.Add(field, records[i].ResultScore.HasValue ? records[i].ResultScore.Value.ToString() : ""); break; case "幹部記錄": row.Add(field, records[i].CadreName); break; } } } e.Items.Add(row); } }; }
public static SemesterHistoryRecordEditor GetEditor(this SemesterHistoryRecord semesterHistoryRecord) { return(new SemesterHistoryRecordEditor(semesterHistoryRecord)); }