Exemple #1
0
        /// <summary>
        /// 畢業異動
        /// </summary>
        public UpdateRecordInfo04(SHUpdateRecordRecord UpdateRec, PermRecLogProcess prlp, List <XElement> UpdateCodeElms, bool isInsert)
        {
            InitializeComponent();
            cbxGender.Items.Add("男");
            cbxGender.Items.Add("女");
            cbxClass.DropDownWidth = 300;
            _UpdateRec             = UpdateRec;
            _UpdateCodeElms        = UpdateCodeElms;
            _prlp = prlp;

            _UpdateCoodeList = (from x in _UpdateCodeElms select x.Element("代號").Value + " " + x.Element("原因及事項").Value).ToList();
            _DeptList        = SHDepartment.SelectAll();
            _faldn           = new UpdateRecordModule_KHSH_D.Utility.FormAndLogDataManager(_prlp);
            _epUpdateCode    = new ErrorProvider();
            _UCodeDict       = Utility.UITool.ConvertUpdateCodeDescDict(_UpdateCodeElms);

            if (isInsert)
            {
                //當畢業證書字號沒有值取得SHLeaveInfoRecord畢業證書字號
                if (string.IsNullOrEmpty(_UpdateRec.GraduateCertificateNumber))
                {
                    SHLeaveInfoRecord lvr = SHLeaveInfo.SelectByStudentID(_UpdateRec.StudentID);
                    _UpdateRec.GraduateCertificateNumber = lvr.DiplomaNumber;
                }

                if (string.IsNullOrEmpty(_UpdateRec.ExpectGraduateSchoolYear))
                {
                    SHLeaveInfoRecord shl = SHLeaveInfo.SelectByStudentID(_UpdateRec.StudentID);
                    if (shl.SchoolYear.HasValue)
                    {
                        _UpdateRec.ExpectGraduateSchoolYear = shl.SchoolYear.Value.ToString();
                    }
                }
            }

            // 載入資料
            cbxUpdateCode     = _faldn.SetFormData(_UpdateRec.UpdateCode, cbxUpdateCode, "異動代碼");
            txtDesc           = _faldn.SetFormData(_UpdateRec.UpdateDescription, txtDesc, "原因及事項");
            dtUpdateDate      = _faldn.SetFormData(_UpdateRec.UpdateDate, dtUpdateDate, "異動日期");
            txtMemo           = _faldn.SetFormData(_UpdateRec.Comment, txtMemo, "備註");
            cbxDept           = _faldn.SetFormData(_UpdateRec.Department, cbxDept, "科別");
            cbxClass          = _faldn.SetFormData(_UpdateRec.ClassType, cbxClass, "班別");
            txtName           = _faldn.SetFormData(_UpdateRec.StudentName, txtName, "姓名");
            txtStudentNumber  = _faldn.SetFormData(_UpdateRec.StudentNumber, txtStudentNumber, "學號");
            txtIDNumber       = _faldn.SetFormData(_UpdateRec.IDNumber, txtIDNumber, "身分證字號");
            dtBirthday        = _faldn.SetFormData(_UpdateRec.Birthdate, dtBirthday, "生日");
            txtIDNumber1      = _faldn.SetFormData(_UpdateRec.IDNumberComment, txtIDNumber1, "註1");
            cbxGender         = _faldn.SetFormData(_UpdateRec.Gender, cbxGender, "性別");
            dtLastUpdateDate  = _faldn.SetFormData(_UpdateRec.LastADDate, dtLastUpdateDate, "備查日期");
            txtLastDocNo      = _faldn.SetFormData(_UpdateRec.LastADNumber, txtLastDocNo, "備查文號");
            txtLastUpdateCode = _faldn.SetFormData(_UpdateRec.LastUpdateCode, txtLastUpdateCode, "最後異動代號");
            txtGradeDocNo     = _faldn.SetFormData(_UpdateRec.GraduateCertificateNumber, txtGradeDocNo, "畢業證書字號");
            dtADDate          = _faldn.SetFormData(_UpdateRec.ADDate, dtADDate, "核准日期");
            txtADDocNo        = _faldn.SetFormData(_UpdateRec.ADNumber, txtADDocNo, "核准文號");
            txtSpecial        = _faldn.SetFormData(_UpdateRec.SpecialStatus, txtSpecial, "特殊身分代碼");
            txtSHSchoolYear   = _faldn.SetFormData(_UpdateRec.ExpectGraduateSchoolYear, txtSHSchoolYear, "應畢業學年度");
        }
Exemple #2
0
        void _bgWorkerRun_DoWork(object sender, DoWorkEventArgs e)
        {
            // 處理資料
            try
            {
                _bgWorkerRun.ReportProgress(1);
                // 刪除舊資料
                List <SHUpdateRecordRecord> _oldDataList = _StudHasGraduateRecDict.Values.ToList();
                SHUpdateRecord.Delete(_oldDataList);

                int SchoolYear = int.Parse(K12.Data.School.DefaultSchoolYear);
                int Semester   = int.Parse(K12.Data.School.DefaultSemester);


                // 學籍身分對照表
                Dictionary <string, List <string> > StudPermCodeMappingDict = utility.GetPermCodeMappingDict();

                // 取得學生類別對照
                Dictionary <string, List <string> > StudentTagDict = utility.GetStudentFullNameDictByStudentIDs(_StudentIDList);

                _bgWorkerRun.ReportProgress(10);
                foreach (string sid in _StudentIDList)
                {
                    if (!_StudentDict.ContainsKey(sid))
                    {
                        continue;
                    }

                    SHUpdateRecordRecord rec = new SHUpdateRecordRecord();
                    // 學年度
                    rec.SchoolYear = SchoolYear;
                    // 學期
                    rec.Semester = Semester;

                    rec.StudentID = sid;

                    string ClassName = "";
                    string DeptName  = "";

                    // 年級
                    if (_ClassRecDict.ContainsKey(_StudentDict[sid].RefClassID))
                    {
                        if (_ClassRecDict[_StudentDict[sid].RefClassID].GradeYear.HasValue)
                        {
                            rec.GradeYear = _ClassRecDict[_StudentDict[sid].RefClassID].GradeYear.Value.ToString();

                            // 班級名稱
                            ClassName = _ClassRecDict[_StudentDict[sid].RefClassID].Name;
                        }
                        else
                        {
                            rec.GradeYear = "";
                        }
                    }
                    string depID = _StudentDict[sid].DepartmentID;
                    // 科別名稱
                    if (_DeptRecDict.ContainsKey(depID))
                    {
                        DeptName = _DeptRecDict[depID].FullName;
                    }

                    //// 科別名稱
                    //if (_DeptRecDict.ContainsKey(_ClassRecDict[_StudentDict[sid].RefClassID].RefDepartmentID))
                    //    DeptName = _DeptRecDict[_ClassRecDict[_StudentDict[sid].RefClassID].RefDepartmentID].FullName;

                    // 畢業代碼
                    rec.UpdateCode = "501";

                    // 原因及事項
                    rec.UpdateDescription = "畢業";

                    // 異動日期
                    rec.UpdateDate = _UpdateDate.ToShortDateString();

                    // 姓名
                    rec.StudentName = _StudentDict[sid].Name;

                    // 學號
                    rec.StudentNumber = _StudentDict[sid].StudentNumber;

                    // 身分證字號
                    rec.IDNumber = _StudentDict[sid].IDNumber;

                    // 生日
                    if (_StudentDict[sid].Birthday.HasValue)
                    {
                        rec.Birthdate = _StudentDict[sid].Birthday.Value.ToShortDateString();
                    }

                    // 性別
                    rec.Gender = _StudentDict[sid].Gender;

                    if (_StudLastupdateRecDict.ContainsKey(sid))
                    {
                        // 備查日期
                        rec.LastADDate = _StudLastupdateRecDict[sid].ADDate;

                        // 備查文號
                        rec.LastADNumber = _StudLastupdateRecDict[sid].ADNumber;

                        // 最後異動代碼
                        rec.LastUpdateCode = _StudLastupdateRecDict[sid].UpdateCode;
                    }
                    // 畢業證書字號
                    if (_LeaveInfoRecordDict.ContainsKey(sid))
                    {
                        rec.GraduateCertificateNumber = _LeaveInfoRecordDict[sid].DiplomaNumber;
                        rec.Department = DeptName;
                        rec.ExpectGraduateSchoolYear             = SchoolYear.ToString();
                        _LeaveInfoRecordDict[sid].SchoolYear     = SchoolYear;
                        _LeaveInfoRecordDict[sid].ClassName      = ClassName;
                        _LeaveInfoRecordDict[sid].DepartmentName = DeptName;
                    }

                    // 學生特殊身分代碼
                    if (StudentTagDict.ContainsKey(sid))
                    {
                        List <string> codeList = new List <string>();
                        foreach (string fullName in StudentTagDict[sid])
                        {
                            if (StudPermCodeMappingDict.ContainsKey(fullName))
                            {
                                foreach (string code in StudPermCodeMappingDict[fullName])
                                {
                                    if (!codeList.Contains(code))
                                    {
                                        codeList.Add(code);
                                    }
                                }
                            }
                        }

                        if (codeList.Count > 0)
                        {
                            codeList.Sort();
                            rec.SpecialStatus = string.Join(",", codeList.ToArray());
                        }
                    }

                    _InsertDataList.Add(rec);
                }
                _bgWorkerRun.ReportProgress(70);
                // 新增資料
                if (_InsertDataList.Count > 0)
                {
                    SHUpdateRecord.Insert(_InsertDataList);
                }

                // 更新畢業離校資訊 離校學年度、離校科別、離校班級
                SHLeaveInfo.Update(_LeaveInfoRecordDict.Values.ToList());

                _bgWorkerRun.ReportProgress(99);
            }
            catch (Exception ex)
            {
                e.Result = ex;
                e.Cancel = true;
            }
        }
Exemple #3
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);
                }
            }
        }
        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;
        }
Exemple #5
0
        void _bgWorkerRun_DoWork(object sender, DoWorkEventArgs e)
        {
            // 處理資料
            try
            {
                _bgWorkerRun.ReportProgress(1);
                // 刪除舊資料
                List <SHUpdateRecordRecord> _oldDataList = _StudHasGraduateRecDict.Values.ToList();
                SHUpdateRecord.Delete(_oldDataList);

                int SchoolYear = int.Parse(K12.Data.School.DefaultSchoolYear);
                int Semester   = int.Parse(K12.Data.School.DefaultSemester);


                _bgWorkerRun.ReportProgress(10);
                foreach (string sid in _StudentIDList)
                {
                    if (!_StudentDict.ContainsKey(sid))
                    {
                        continue;
                    }

                    SHUpdateRecordRecord rec = new SHUpdateRecordRecord();
                    // 學年度
                    rec.SchoolYear = SchoolYear;
                    // 學期
                    rec.Semester = Semester;

                    rec.StudentID = sid;
                    string ClassName = "";
                    string DeptName  = "";

                    // 年級
                    if (_ClassRecDict.ContainsKey(_StudentDict[sid].RefClassID))
                    {
                        if (_ClassRecDict[_StudentDict[sid].RefClassID].GradeYear.HasValue)
                        {
                            rec.GradeYear = _ClassRecDict[_StudentDict[sid].RefClassID].GradeYear.Value.ToString();

                            // 班級名稱
                            ClassName = _ClassRecDict[_StudentDict[sid].RefClassID].Name;

                            // 科別名稱
                            if (_DeptRecDict.ContainsKey(_ClassRecDict[_StudentDict[sid].RefClassID].RefDepartmentID))
                            {
                                DeptName = _DeptRecDict[_ClassRecDict[_StudentDict[sid].RefClassID].RefDepartmentID].FullName;
                            }
                        }
                        else
                        {
                            rec.GradeYear = "";
                        }
                    }

                    // 畢業代碼
                    rec.UpdateCode = "501";

                    // 原因及事項
                    rec.UpdateDescription = "畢業";

                    // 異動日期
                    rec.UpdateDate = _UpdateDate.ToShortDateString();

                    // 姓名
                    rec.StudentName = _StudentDict[sid].Name;

                    // 學號
                    rec.StudentNumber = _StudentDict[sid].StudentNumber;

                    // 身分證字號
                    rec.IDNumber = _StudentDict[sid].IDNumber;

                    // 生日
                    if (_StudentDict[sid].Birthday.HasValue)
                    {
                        rec.Birthdate = _StudentDict[sid].Birthday.Value.ToShortDateString();
                    }

                    // 性別
                    rec.Gender = _StudentDict[sid].Gender;

                    if (_StudLastupdateRecDict.ContainsKey(sid))
                    {
                        // 備查日期
                        rec.LastADDate = _StudLastupdateRecDict[sid].ADDate;

                        // 備查文號
                        rec.LastADNumber = _StudLastupdateRecDict[sid].ADNumber;

                        // 最後異動代碼
                        rec.LastUpdateCode = _StudLastupdateRecDict[sid].UpdateCode;
                    }
                    // 畢業證書字號
                    if (_LeaveInfoRecordDict.ContainsKey(sid))
                    {
                        rec.GraduateCertificateNumber = _LeaveInfoRecordDict[sid].DiplomaNumber;
                        rec.Department = DeptName;
                        rec.ExpectGraduateSchoolYear             = SchoolYear.ToString();
                        _LeaveInfoRecordDict[sid].SchoolYear     = SchoolYear;
                        _LeaveInfoRecordDict[sid].ClassName      = ClassName;
                        _LeaveInfoRecordDict[sid].DepartmentName = DeptName;
                    }
                    _InsertDataList.Add(rec);
                }
                _bgWorkerRun.ReportProgress(70);
                // 新增資料
                if (_InsertDataList.Count > 0)
                {
                    SHUpdateRecord.Insert(_InsertDataList);
                }

                // 更新畢業離校資訊 離校學年度、離校科別、離校班級
                SHLeaveInfo.Update(_LeaveInfoRecordDict.Values.ToList());

                _bgWorkerRun.ReportProgress(99);
            }
            catch (Exception ex)
            {
                e.Result = ex;
                e.Cancel = true;
            }
        }
        /// <summary>
        /// 學籍異動
        /// </summary>
        public UpdateRecordInfo01(SHUpdateRecordRecord UpdateRec, PermRecLogProcess prlp, List <XElement> UpdateCodeElms)
        {
            SHUpdateRecordRecord rec = new SHUpdateRecordRecord();

            InitializeComponent();
            cbxGender.Items.Add("男");
            cbxGender.Items.Add("女");

            cbxClass.DropDownWidth = 300;

            _UpdateRec      = UpdateRec;
            _prlp           = prlp;
            _UpdateCodeElms = UpdateCodeElms;
            _epUpdateCode   = new ErrorProvider();

            _UpdateCoodeList = (from x in _UpdateCodeElms select x.Element("代號").Value + " " + x.Element("原因及事項").Value).ToList();
            _DeptList        = SHDepartment.SelectAll();

            // 更正學籍顯示對照用
            _updateCodeDict4 = new Dictionary <string, string>();


            // 日進校不同,所以需要檢查:
            // 日校
            _updateCodeDict4.Add("401", "新學號");
            _updateCodeDict4.Add("402", "新姓名");
            _updateCodeDict4.Add("403", "新性別");
            _updateCodeDict4.Add("404", "新籍貫");
            _updateCodeDict4.Add("405", "新生日");
            _updateCodeDict4.Add("406", "新科別");
            _updateCodeDict4.Add("407", "新身分證號");
            _updateCodeDict4.Add("408", "入學資格學校名稱");
            _updateCodeDict4.Add("409", "特殊身分");
            _updateCodeDict4.Add("499", "其他學籍事項");

            if (string.IsNullOrEmpty(_UpdateRec.ExpectGraduateSchoolYear))
            {
                SHLeaveInfoRecord shl = SHLeaveInfo.SelectByStudentID(_UpdateRec.StudentID);
                if (shl.SchoolYear.HasValue)
                {
                    _UpdateRec.ExpectGraduateSchoolYear = shl.SchoolYear.Value.ToString();
                }
            }

            _UCodeDict = Utility.UITool.ConvertUpdateCodeDescDict(_UpdateCodeElms);

            _faldn = new UpdateRecordModule_SH_D.Utility.FormAndLogDataManager(_prlp);

            if (!string.IsNullOrEmpty(_UpdateRec.NewStudentNumber))
            {
                int i;
                if (int.TryParse(_UpdateRec.NewStudentNumber.Trim(), out i))
                {
                    _UpdateRec.NewData          = i.ToString();
                    _UpdateRec.NewStudentNumber = i.ToString();
                }
                else
                {
                    _UpdateRec.NewStudentNumber = "";
                }
            }


            // 載入資料
            cbxUpdateCode    = _faldn.SetFormData(_UpdateRec.UpdateCode, cbxUpdateCode, "異動代碼");
            txtDesc          = _faldn.SetFormData(_UpdateRec.UpdateDescription, txtDesc, "原因及事項");
            dtUpdateDate     = _faldn.SetFormData(_UpdateRec.UpdateDate, dtUpdateDate, "異動日期");
            txtMemo          = _faldn.SetFormData(_UpdateRec.Comment, txtMemo, "備註");
            cbxDept          = _faldn.SetFormData(_UpdateRec.Department, cbxDept, "科別");
            cbxClass         = _faldn.SetFormData(_UpdateRec.ClassType, cbxClass, "班別");
            txtSpecial       = _faldn.SetFormData(_UpdateRec.SpecialStatus, txtSpecial, "特殊身分代碼");
            txtName          = _faldn.SetFormData(_UpdateRec.StudentName, txtName, "姓名");
            txtStudentNumber = _faldn.SetFormData(_UpdateRec.StudentNumber, txtStudentNumber, "學號");
            txtIDNumber      = _faldn.SetFormData(_UpdateRec.IDNumber, txtIDNumber, "身分證字號");
            txtNewData       = _faldn.SetFormData(_UpdateRec.NewData, txtNewData, "新資料");
            txtIDNumber1     = _faldn.SetFormData(_UpdateRec.IDNumberComment, txtIDNumber1, "註1");
            txtIDNumber2     = _faldn.SetFormData(_UpdateRec.Comment2, txtIDNumber2, "註2");
            dtLastUpdateDate = _faldn.SetFormData(_UpdateRec.LastADDate, dtLastUpdateDate, "備查日期");
            txtLastDocNo     = _faldn.SetFormData(_UpdateRec.LastADNumber, txtLastDocNo, "備查文號");
            dtADDate         = _faldn.SetFormData(_UpdateRec.ADDate, dtADDate, "核准日期");
            txtADDocNo       = _faldn.SetFormData(_UpdateRec.ADNumber, txtADDocNo, "核准文號");
            cbxGender        = _faldn.SetFormData(_UpdateRec.Gender, cbxGender, "性別");
            dtBirthday       = _faldn.SetFormData(_UpdateRec.Birthdate, dtBirthday, "生日");
            txtSHSchoolYear  = _faldn.SetFormData(_UpdateRec.ExpectGraduateSchoolYear, txtSHSchoolYear, "應畢業學年度");
            txtC7SchoolCode  = _faldn.SetFormData(_UpdateRec.Code7SchoolCode, txtC7SchoolCode, "借讀學校代碼");
            txtC7DeptCode    = _faldn.SetFormData(_UpdateRec.Code7DeptCode, txtC7DeptCode, "借讀科別代碼");
            dtC71BeginDate   = _faldn.SetFormData(_UpdateRec.Code71BeginDate, dtC71BeginDate, "申請開始日期");
            dtC71EndDate     = _faldn.SetFormData(_UpdateRec.Code71EndDate, dtC71EndDate, "申請結束日期");
            dtC72BeginDate   = _faldn.SetFormData(_UpdateRec.Code72BeginDate, dtC72BeginDate, "實際開始日期");
            dtC72EndDate     = _faldn.SetFormData(_UpdateRec.Code72EndDate, dtC72EndDate, "實際結束日期");

            txtReplicatedSchoolRollNumber = _faldn.SetFormData(_UpdateRec.ReplicatedSchoolRollNumber, txtReplicatedSchoolRollNumber, "雙重學籍編號");
        }