示例#1
0
        void _bgWorkerLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            // 取得就學生畢業異動資料
            _StudHasGraduateRecDict.Clear();
            List <SHUpdateRecordRecord> recList = SHUpdateRecord.SelectByStudentIDs(_StudentIDList);

            foreach (SHUpdateRecordRecord rec in recList)
            {
                // 不是畢業異動跳過
                if (rec.UpdateCode != "501")
                {
                    continue;
                }

                if (!_StudHasGraduateRecDict.ContainsKey(rec.StudentID))
                {
                    _StudHasGraduateRecDict.Add(rec.StudentID, rec);
                }
            }

            // 取得最後一筆異動
            _StudLastupdateRecDict.Clear();
            foreach (string sid in _StudentIDList)
            {
                List <SHUpdateRecordRecord> recL = (from data in recList where data.StudentID == sid && data.ADDate.Trim() != "" orderby DateTime.Parse(data.ADDate) descending, int.Parse(data.ID) descending select data).ToList();
                if (recL.Count > 0)
                {
                    SHUpdateRecordRecord r1 = recL[0];
                    if (!_StudLastupdateRecDict.ContainsKey(r1.StudentID))
                    {
                        _StudLastupdateRecDict.Add(r1.StudentID, r1);
                    }
                }
            }

            // 學生資料
            _StudentDict.Clear();
            foreach (SHStudentRecord rec in SHStudent.SelectByIDs(_StudentIDList))
            {
                _StudentDict.Add(rec.ID, rec);
            }

            // 畢業證書
            _LeaveInfoRecordDict.Clear();
            foreach (SHLeaveInfoRecord rec in SHLeaveInfo.SelectByStudentIDs(_StudentIDList))
            {
                if (!_LeaveInfoRecordDict.ContainsKey(rec.RefStudentID))
                {
                    _LeaveInfoRecordDict.Add(rec.RefStudentID, rec);
                }
            }

            // 班級
            _ClassRecDict.Clear();
            foreach (SHClassRecord rec in SHClass.SelectAll())
            {
                if (!_ClassRecDict.ContainsKey(rec.ID))
                {
                    _ClassRecDict.Add(rec.ID, rec);
                }
            }

            // 科別
            _DeptRecDict.Clear();
            foreach (SHDepartmentRecord rec in SHDepartment.SelectAll())
            {
                if (!_DeptRecDict.ContainsKey(rec.ID))
                {
                    _DeptRecDict.Add(rec.ID, rec);
                }
            }
        }
示例#2
0
        void _bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            Document document = new Document();

            Byte[] template = (custConfigs[current].Template != null) //單頁範本
                 ? custConfigs[current].Template.ToBinary()
                 : new Campus.Report.ReportTemplate(Properties.Resources.證明書範本, Campus.Report.TemplateType.Word).ToBinary();
            List <string> ids = K12.Presentation.NLDPanels.Student.SelectedSource;


            List <SHStudentRecord> srl = SHStudent.SelectByIDs(ids);
            //離校資訊
            Dictionary <string, SHLeaveInfoRecord> dshlir = SHLeaveInfo.SelectByStudentIDs(ids).ToDictionary(x => x.RefStudentID, x => x);
            //畢業異動
            Dictionary <string, SHUpdateRecordRecord> dshurr = new Dictionary <string, SHUpdateRecordRecord>();

            foreach (SHUpdateRecordRecord shurr in SHUpdateRecord.SelectByStudentIDs(ids))
            {
                if (shurr.UpdateCode == "501")
                {
                    if (dshurr.ContainsKey(shurr.StudentID))
                    {
                        if (dshurr[shurr.StudentID].UpdateDate.CompareTo(shurr.UpdateDate) == 1)
                        {
                            dshurr[shurr.StudentID] = shurr;
                        }
                    }
                    else
                    {
                        dshurr.Add(shurr.StudentID, shurr);
                    }
                }
            }
            //入學照片
            Dictionary <string, string> dphoto_p = K12.Data.Photo.SelectFreshmanPhoto(K12.Presentation.NLDPanels.Student.SelectedSource);
            Dictionary <string, string> dphoto_g = K12.Data.Photo.SelectGraduatePhoto(K12.Presentation.NLDPanels.Student.SelectedSource);
            //科別中英文對照表
            Dictionary <string, string> dic_dept_ch_en = new Dictionary <string, string>();
            XmlElement Data = SmartSchool.Customization.Data.SystemInformation.Configuration["科別中英文對照表"];

            foreach (XmlElement var in Data)
            {
                if (!dic_dept_ch_en.ContainsKey(var.GetAttribute("Chinese")))
                {
                    dic_dept_ch_en.Add(var.GetAttribute("Chinese"), var.GetAttribute("English"));
                }
            }
            Dictionary <string, object> mailmerge = new Dictionary <string, object>();
            string 校內字號 = textBoxX1.Text, 校內字號英文 = textBoxX2.Text, 校長姓名 = "", 校長姓名英文 = "";

            if (K12.Data.School.Configuration["學校資訊"] != null && K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName") != null)
            {
                校長姓名 = K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName").InnerText;
            }
            if (K12.Data.School.Configuration["學校資訊"] != null && K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName") != null)
            {
                校長姓名英文 = K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorEnglishName").InnerText;
            }
            Document each;

            foreach (SHStudentRecord sr in srl)
            {
                mailmerge.Clear();
                mailmerge.Add("學校全銜", School.ChineseName);
                mailmerge.Add("學校英文全銜", School.EnglishName);
                mailmerge.Add("目前學期", School.DefaultSemester);
                mailmerge.Add("目前學年度", School.DefaultSchoolYear);
                mailmerge.Add("校長姓名", 校長姓名);
                mailmerge.Add("校長姓名英文", 校長姓名英文);

                mailmerge.Add("民國年", DateTime.Today.Year - 1911);
                mailmerge.Add("英文年", DateTime.Today.Year);
                mailmerge.Add("月", DateTime.Today.Month);
                mailmerge.Add("英文月", DateTime.Today.ToString("MMMM", new System.Globalization.CultureInfo("en-US")));
                mailmerge.Add("英文月3", DateTime.Today.ToString("MMM", new System.Globalization.CultureInfo("en-US")));
                mailmerge.Add("日上標", daySuffix(DateTime.Today.Day.ToString()));
                mailmerge.Add("日", DateTime.Today.Day);

                mailmerge.Add("校內字號", 校內字號);
                mailmerge.Add("校內字號英文", 校內字號英文);

                #region 學生資料
                mailmerge.Add("學生姓名", sr.Name);
                mailmerge.Add("學生英文姓名", sr.EnglishName);
                mailmerge.Add("學生身分證號", sr.IDNumber);
                SHClassRecord tmpcr;
                if ((tmpcr = sr.Class) != null)
                {
                    mailmerge.Add("學生目前班級", tmpcr.Name);
                    mailmerge.Add("學生目前年級", tmpcr.GradeYear);
                    if (tmpcr.Department != null)
                    {
                        mailmerge.Add("學生目前科別", tmpcr.Department.Name);
                    }
                }
                mailmerge.Add("學生目前座號", sr.StudentNumber);
                if (sr.Birthday.HasValue)
                {
                    mailmerge.Add("學生生日民國年", sr.Birthday.Value.Year - 1911);
                    mailmerge.Add("學生生日英文年", sr.Birthday.Value.Year);
                    mailmerge.Add("學生生日月", sr.Birthday.Value.Month);
                    mailmerge.Add("學生生日英文月", sr.Birthday.Value.ToString("MMMM", new System.Globalization.CultureInfo("en-US")));
                    mailmerge.Add("學生生日英文月3", sr.Birthday.Value.ToString("MMM", new System.Globalization.CultureInfo("en-US")));
                    mailmerge.Add("學生生日上標", daySuffix(sr.Birthday.Value.Day.ToString()));
                    mailmerge.Add("學生生日日", sr.Birthday.Value.Day);
                }
                if (dphoto_p.ContainsKey(sr.ID))
                {
                    mailmerge.Add("入學照片1吋", dphoto_p[sr.ID]);
                    mailmerge.Add("入學照片2吋", dphoto_p[sr.ID]);
                }
                if (dphoto_g.ContainsKey(sr.ID))
                {
                    mailmerge.Add("畢業照片1吋", dphoto_g[sr.ID]);
                    mailmerge.Add("畢業照片2吋", dphoto_g[sr.ID]);
                }
                //畢業資訊
                if (dshlir.ContainsKey(sr.ID))
                {
                    mailmerge["畢業資訊西元年"]    = dshlir[sr.ID].SchoolYear + 1911;
                    mailmerge["畢業資訊學年度"]    = dshlir[sr.ID].SchoolYear;
                    mailmerge["畢業資訊證書字號"]   = dshlir[sr.ID].DiplomaNumber;
                    mailmerge["畢業資訊證書字號數字"] = getCertificateNumberNumber(dshlir[sr.ID].DiplomaNumber);
                    mailmerge["畢業資訊科別中文"]   = dshlir[sr.ID].DepartmentName;
                    string tmp_dept = dshlir[sr.ID].DepartmentName;
                    mailmerge["畢業資訊科別英文"] = (tmp_dept != null && dic_dept_ch_en.ContainsKey(tmp_dept)) ? dic_dept_ch_en[tmp_dept] : "";
                }
                //畢業異動
                if (dshurr.ContainsKey(sr.ID))
                {
                    //int ExpectGraduateSchoolYear;
                    //if (int.TryParse(dshurr[sr.ID].ExpectGraduateSchoolYear, out ExpectGraduateSchoolYear))
                    //    mailmerge["畢業異動西元年"] = ExpectGraduateSchoolYear + 1911;

                    if (!string.IsNullOrEmpty(dshurr[sr.ID].UpdateDate))
                    {
                        int ADYear;
                        int.TryParse(dshurr[sr.ID].UpdateDate.Split('/')[0], out ADYear);
                        mailmerge["畢業異動西元年"] = ADYear;
                        int republicYaer;
                        if (ADYear > 1911)
                        {
                            republicYaer         = ADYear - 1911;
                            mailmerge["畢業異動民國年"] = republicYaer;
                        }

                        int UpdateDateMonth;
                        int.TryParse(dshurr[sr.ID].UpdateDate.Split('/')[1], out UpdateDateMonth);
                        int UpdateDateDate;
                        int.TryParse(dshurr[sr.ID].UpdateDate.Split('/')[2], out UpdateDateDate);

                        mailmerge["畢業異動月"] = UpdateDateMonth;
                        mailmerge["畢業異動日"] = UpdateDateDate;
                    }


                    mailmerge["畢業異動學年度"]    = dshurr[sr.ID].ExpectGraduateSchoolYear;
                    mailmerge["畢業異動證書字號"]   = dshurr[sr.ID].GraduateCertificateNumber;
                    mailmerge["畢業異動證書字號數字"] = getCertificateNumberNumber(dshurr[sr.ID].GraduateCertificateNumber);
                    mailmerge["畢業異動科別中文"]   = dshurr[sr.ID].Department;
                    string tmp_dept = dshurr[sr.ID].Department;
                    mailmerge["畢業異動科別英文"] = (tmp_dept != null && dic_dept_ch_en.ContainsKey(tmp_dept)) ? dic_dept_ch_en[tmp_dept] : "";
                }
                #endregion

                each = new Document(new MemoryStream(template));

                //each.MailMerge.CleanupOptions = Aspose.Words.Reporting.MailMergeCleanupOptions.RemoveUnusedFields;
                each.MailMerge.FieldMergingCallback = new merge();
                each.MailMerge.Execute(mailmerge.Keys.ToArray(), mailmerge.Values.ToArray());
                each.MailMerge.DeleteFields();
                document.Sections.Add(document.ImportNode(each.FirstSection, true));
            }
            document.Sections.RemoveAt(0);
            e.Result = document;
        }