public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetYearSubject")); try { Utility.StartTime("GetYearSubject"); progress.ReportMessage("取得學年科目成績資料…"); List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize); int offset = 1; foreach (List <string> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlHelper response = QueryScore.GetSchoolYearSubjectScore(true, Parameters.SchoolYear, eachPackage.ToArray()); foreach (XmlElement eachStudent in response.GetElements("SchoolYearSubjectScore")) { DSXmlHelper hlpScore = new DSXmlHelper(eachStudent); string studentId = hlpScore.GetText("RefStudentId"); string scoreId = hlpScore.GetText("@ID"); if (Students.ContainsKey(studentId)) { Student student = Students[studentId]; student.YearSubjects.ScoreRecordIdentity = scoreId; string scoresPath = "ScoreInfo/SchoolYearSubjectScore/Subject"; foreach (XmlElement eachScore in eachStudent.SelectNodes(scoresPath)) { YearSubjectScore objScore = new YearSubjectScore(eachScore); if (!student.YearSubjects.AddSubject(objScore)) { LogDuplicateSubject(progress, student, objScore); } } } } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetYearSubject"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
public void CreateRatingItem(YearSubjectScore eachScore, ResultPlace eachPlace) { if (_has_data == false) { _data.CreateStartElement("Rating"); _data.CreateAttribute("範圍人數", eachPlace.RatingBase.ToString()); } _has_data = true; _data.CreateStartElement("Item"); _data.CreateAttribute("科目", eachScore.SubjectName); _data.CreateAttribute("成績", eachScore.Score.ToString()); _data.CreateAttribute("排名", eachPlace.Place.ToString()); _data.CreateAttribute("成績人數", eachPlace.ActualBase.ToString()); _data.CreateEndElement(); }
private static void LogDuplicateSubject(IProgressUI progressUI, Student student, YearSubjectScore objScore) { string msg = "學生「{0}(編號:{1})」的科目成績「{2}」重覆 (學年)。"; //progressUI.LogMessage(string.Format(msg, student.Name, student.Identity, objScore.ScoreName)); }