Exemplo n.º 1
0
        /// <summary>
        /// 學生資料整理
        /// </summary>
        private Dictionary <string, StudentRSRecord> GetRSR(List <StudentRecord> StudentList, List <string> StudentIDList)
        {
            Dictionary <string, StudentRSRecord> dic = new Dictionary <string, StudentRSRecord>();

            List <ResultScoreRecord> RSList = tool._A.Select <ResultScoreRecord>(string.Format("ref_student_id in ('{0}')", string.Join("','", StudentIDList)));

            //整理學生基本資料記錄
            foreach (StudentRecord stud in StudentList)
            {
                StudentRSRecord rsr = new StudentRSRecord(stud);
                if (!dic.ContainsKey(stud.ID))
                {
                    dic.Add(stud.ID, rsr);
                }
            }

            //整理學生社團記錄
            foreach (ResultScoreRecord rsr in RSList)
            {
                if (dic.ContainsKey(rsr.RefStudentID))
                {
                    dic[rsr.RefStudentID].SetRSR(rsr);
                }
            }

            // 入學照片
            Dictionary <string, string> _PhotoPDict = new Dictionary <string, string>();

            // 畢業照片
            Dictionary <string, string> _PhotoGDict = new Dictionary <string, string>();

            if (StudentList.Count != 0)
            {
                // 入學照片
                _PhotoPDict = K12.Data.Photo.SelectFreshmanPhoto(StudentIDList);

                // 畢業照片
                _PhotoGDict = K12.Data.Photo.SelectGraduatePhoto(StudentIDList);
            }

            //處理照片
            foreach (string studnetID in dic.Keys)
            {
                if (_PhotoPDict.ContainsKey(studnetID))
                {
                    dic[studnetID].學生入學照片 = _PhotoPDict[studnetID];
                }

                if (_PhotoGDict.ContainsKey(studnetID))
                {
                    dic[studnetID].學生畢業照片 = _PhotoGDict[studnetID];
                }
            }

            return(dic);
        }
Exemplo n.º 2
0
        void BGW_DoWork(object sender, DoWorkEventArgs e)
        {
            #region 範本

            //整理取得報表範本
            Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(CadreConfig);
            Aspose.Words.Document             Template;

            if (ConfigurationInCadre.Template == null)
            {
                //如果範本為空,則建立一個預設範本
                Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(CadreConfig);
                ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團參與證明單_英文_範本, Campus.Report.TemplateType.Word);

                Template = new Document(ConfigurationInCadre_1.Template.GetStream());
            }
            else
            {
                //如果已有範本,則取得樣板
                Template = new Document(ConfigurationInCadre.Template.GetStream());
            }

            #endregion

            //取得社團中英文對照表
            Dictionary <string, string> EngDic = tool.GetEngList();



            List <StudentRecord> StudentList = K12.Data.Student.SelectByIDs(K12.Presentation.NLDPanels.Student.SelectedSource);

            //取得資料
            List <string> StudentIDList = new List <string>();
            foreach (StudentRecord stud in StudentList)
            {
                StudentIDList.Add(stud.ID);
            }

            Dictionary <string, StudentRSRecord> AllSRSRDic = GetRSR(StudentList, StudentIDList);

            //填資料部份
            DataTable table = new DataTable();

            table.Columns.Add("學校名稱");
            table.Columns.Add("學校英文名稱");
            table.Columns.Add("列印日期");
            table.Columns.Add("校長");
            table.Columns.Add("校長英文名稱");

            table.Columns.Add("班級");
            table.Columns.Add("座號");
            table.Columns.Add("學號");
            table.Columns.Add("姓名");
            table.Columns.Add("英文姓名");

            table.Columns.Add("新生照片1");
            table.Columns.Add("新生照片2");
            table.Columns.Add("畢業照片1");
            table.Columns.Add("畢業照片2");

            for (int x = 1; x <= 記錄多少筆; x++)
            {
                table.Columns.Add(string.Format("學年度_{0}", x));
            }

            for (int x = 1; x <= 記錄多少筆; x++)
            {
                table.Columns.Add(string.Format("學期_{0}", x));
            }

            for (int x = 1; x <= 記錄多少筆; x++)
            {
                table.Columns.Add(string.Format("社團_{0}", x));
            }

            for (int x = 1; x <= 記錄多少筆; x++)
            {
                table.Columns.Add(string.Format("英文社團名稱_{0}", x));
            }

            foreach (string studentID in AllSRSRDic.Keys)
            {
                StudentRSRecord student = AllSRSRDic[studentID];

                DataRow row = table.NewRow();
                row["學校名稱"]   = K12.Data.School.ChineseName;
                row["學校英文名稱"] = K12.Data.School.EnglishName;

                string PrintDay = string.Format("{0} {1},{2}", tool.GetMonth(DateTime.Today.Month), tool.GetDay(DateTime.Today.Day), DateTime.Today.Year.ToString());
                row["列印日期"] = PrintDay;

                XmlElement xml = K12.Data.School.Configuration["學校資訊"].PreviousData;

                if (xml.SelectSingleNode("ChancellorEnglishName") != null)
                {
                    row["校長英文名稱"] = xml.SelectSingleNode("ChancellorEnglishName").InnerText;
                    row["校長"]     = xml.SelectSingleNode("ChancellorChineseName").InnerText;
                }
                else
                {
                    row["校長英文名稱"] = "";
                    row["校長"]     = "";
                }

                row["班級"]   = student._student.Class != null ? student._student.Class.Name : "";
                row["座號"]   = student._student.SeatNo.HasValue ? student._student.SeatNo.Value.ToString() : "";
                row["學號"]   = student._student.StudentNumber;
                row["姓名"]   = student._student.Name;
                row["英文姓名"] = student._student.EnglishName;

                row["新生照片1"] = student.學生入學照片;
                row["新生照片2"] = student.學生入學照片;
                row["畢業照片1"] = student.學生畢業照片;
                row["畢業照片2"] = student.學生畢業照片;

                student._ResultList.Sort(SortResultScore);

                int y = 1;
                foreach (ResultScoreRecord ResultRecord in student._ResultList)
                {
                    if (y <= 記錄多少筆)
                    {
                        row[string.Format("學年度_{0}", y)] = ResultRecord.SchoolYear.ToString();
                        row[string.Format("學期_{0}", y)]  = ResultRecord.Semester.ToString();
                        row[string.Format("社團_{0}", y)]  = ResultRecord.ClubName;
                        if (EngDic.ContainsKey(ResultRecord.ClubName))
                        {
                            row[string.Format("英文社團名稱_{0}", y)] = EngDic[ResultRecord.ClubName];
                        }
                        else
                        {
                            row[string.Format("英文社團名稱_{0}", y)] = ResultRecord.ClubName;
                        }
                        y++;
                    }
                }

                table.Rows.Add(row);
            }

            Document PageOne = (Document)Template.Clone(true);
            //PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField);
            PageOne.MailMerge.FieldMergingCallback = new MailMerge_MergeField();
            PageOne.MailMerge.Execute(table);
            e.Result = PageOne;
        }