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