public StudentMoralProcessor(DocumentBuilder builder, SemesterMap map) { _builder = builder; _map = map; _types = new Dictionary <string, List <string> >(); _run = WordHelper.CreateRun(_builder); #region 取得假別設定 ConfigData cd = K12.Data.School.Configuration["學籍表"]; if (cd.Contains("假別設定")) { XmlElement config = Framework.XmlHelper.LoadXml(cd["假別設定"]); foreach (XmlElement type in config.SelectNodes("Type")) { string typeName = type.GetAttribute("Text"); if (!_types.ContainsKey(typeName)) { _types.Add(typeName, new List <string>()); } foreach (XmlElement absence in type.SelectNodes("Absence")) { string absenceName = absence.GetAttribute("Text"); if (!_types[typeName].Contains(absenceName)) { _types[typeName].Add(absenceName); } } } } #endregion #region 取得社團成績 _assnScoreCache = new Dictionary <string, List <AssnScore> >(); FISCA.UDT.AccessHelper ah = new FISCA.UDT.AccessHelper(); // string condition = string.Format("SchoolYear='{0}' and Semester='{1}'", options.SchoolYear, options.Semester); // List<AssnCode> list = ah.Select<AssnCode>(condition); if (AssociationUDTCache == null) { AssociationUDTCache = ah.Select <AssnCode>(); } List <AssnCode> list = AssociationUDTCache; foreach (AssnCode record in list) { //if (!_assnScoreCache.ContainsKey(record.StudentID)) //{ XmlElement scores = K12.Data.XmlHelper.LoadXml(record.Scores); XmlElement itemElement = (XmlElement)scores.SelectSingleNode("Item"); if (itemElement != null) { AssnScore assnScore = new AssnScore() { Score = itemElement.GetAttribute("Score"), Effort = itemElement.GetAttribute("Effort"), Text = itemElement.GetAttribute("Text"), SchoolYear = record.SchoolYear, Semester = record.Semester }; if (_assnScoreCache.ContainsKey(record.StudentID)) { _assnScoreCache[record.StudentID].Add(assnScore); } else { List <AssnScore> lis = new List <AssnScore>(); lis.Add(assnScore); _assnScoreCache.Add(record.StudentID, lis); } } //} } //<Content> //<Item AssociationName="籃球社" Score="" Effort="" Text=""></Item> //</Content> #endregion }
public DataCache(Options options) { var student_ids = from student in options.Students select student.ID; #region 取得 AutoSummary _autoSummaryCache = new Dictionary <string, AutoSummaryRecord>(); foreach (AutoSummaryRecord record in AutoSummary.Select(student_ids.ToList <string>(), null)) { if (record.SchoolYear == options.SchoolYear && record.Semester == options.Semester) { if (!_autoSummaryCache.ContainsKey(record.RefStudentID)) { _autoSummaryCache.Add(record.RefStudentID, record); } } } #endregion #region 取得 SemesterScore _semesterScoreCache = new Dictionary <string, JHSemesterScoreRecord>(); foreach (var record in JHSemesterScore.SelectByStudentIDs(student_ids.ToList <string>())) { if (record.SchoolYear == options.SchoolYear && record.Semester == options.Semester) { if (!_semesterScoreCache.ContainsKey(record.RefStudentID)) { _semesterScoreCache.Add(record.RefStudentID, record); } } } #endregion #region 取得 SemesterHistoryItem _historyItemCache = new Dictionary <string, K12.Data.SemesterHistoryItem>(); foreach (var record in JHSemesterHistory.SelectByStudentIDs(student_ids)) { foreach (var item in record.SemesterHistoryItems) { if (item.SchoolYear == options.SchoolYear && item.Semester == options.Semester) { if (!_historyItemCache.ContainsKey(item.RefStudentID)) { _historyItemCache.Add(item.RefStudentID, item); } } } } #endregion if (Global.Params["Mode"] == "KaoHsiung") { #region 取得社團成績 _assnScoreCache = new Dictionary <string, AssnScore>(); FISCA.UDT.AccessHelper ah = new FISCA.UDT.AccessHelper(); string condition = string.Format("SchoolYear='{0}' and Semester='{1}'", options.SchoolYear, options.Semester); List <AssnCode> list = ah.Select <AssnCode>(condition); foreach (AssnCode record in list) { if (!_assnScoreCache.ContainsKey(record.StudentID)) { XmlElement scores = K12.Data.XmlHelper.LoadXml(record.Scores); XmlElement itemElement = (XmlElement)scores.SelectSingleNode("Item"); if (itemElement != null) { AssnScore assnScore = new AssnScore() { Score = itemElement.GetAttribute("Score"), Effort = itemElement.GetAttribute("Effort"), Text = itemElement.GetAttribute("Text") }; _assnScoreCache.Add(record.StudentID, assnScore); } } } //<Content> //<Item AssociationName="籃球社" Score="" Effort="" Text=""></Item> //</Content> #endregion } }