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;
 }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        //覆寫
        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));
 }