示例#1
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;
            }
        }
示例#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);


                _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;
            }
        }