void _bgWork_DoWork(object sender, DoWorkEventArgs e) { List <K12.Data.SemesterHistoryRecord> recs = K12.Data.SemesterHistory.SelectByStudentIDs(_StudentIDList); List <K12.Data.SemesterHistoryRecord> delRecs = new List <K12.Data.SemesterHistoryRecord>(); foreach (K12.Data.SemesterHistoryRecord shis in recs) { K12.Data.SemesterHistoryItem delItm = null; foreach (K12.Data.SemesterHistoryItem shi in shis.SemesterHistoryItems) { if (shi.SchoolYear == sc && shi.Semester == ss) { delItm = shi; } } if (delItm != null) { shis.SemesterHistoryItems.Remove(delItm); delRecs.Add(shis); } } if (delRecs.Count > 0) { K12.Data.SemesterHistory.Update(delRecs); } }
private void Add(K12.Data.SemesterHistoryItem item) { SemesterData semester = new SemesterData("" + item.SchoolYear, "" + item.Semester); if (!_semsMapping.ContainsKey(semester)) { int gradeYear = item.GradeYear; if (gradeYear > 6) { gradeYear -= 6; } int index = (gradeYear - 1) * 2 + item.Semester; _semsMapping.Add(semester, index - 1); } }
/// <summary> /// 檢查學生學期歷程 /// 改寫當學年度、學期、年級加入判斷 /// </summary> /// <param name="students"></param> /// <returns></returns> public List <StudentRecord> CheckSemesterHistories(IEnumerable <StudentRecord> students) { // 檢查是否新增學期歷程 bool chkInsertShi = false; // 取得目前學生班級年級 Dictionary <string, int> studGrYearDic = new Dictionary <string, int>(); foreach (JHStudentRecord stud in JHStudent.SelectByIDs(students.AsKeyList())) { if (stud.Class != null) { if (stud.Class.GradeYear.HasValue) { studGrYearDic.Add(stud.ID, stud.Class.GradeYear.Value); } } } // 取得學生學期歷程 Dictionary <string, JHSemesterHistoryRecord> studentSemesterHistoryRecordDict = new Dictionary <string, JHSemesterHistoryRecord>(); foreach (JHSemesterHistoryRecord record in JHSemesterHistory.SelectByStudentIDs(students.AsKeyList())) { chkInsertShi = true; K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem(); shi.SchoolYear = UIConfig._UserSetSHSchoolYear; shi.Semester = UIConfig._UserSetSHSemester; if (studGrYearDic.ContainsKey(record.RefStudentID)) { shi.GradeYear = studGrYearDic[record.RefStudentID]; } // 檢查是否已經有同學年度學期學期歷程 foreach (K12.Data.SemesterHistoryItem shiItem in record.SemesterHistoryItems) { if (shiItem.SchoolYear == UIConfig._UserSetSHSchoolYear && shiItem.Semester == UIConfig._UserSetSHSemester) { chkInsertShi = false; break; } } // 加入當學年度學期判斷用 if (chkInsertShi) { record.SemesterHistoryItems.Add(shi); } studentSemesterHistoryRecordDict.Add(record.RefStudentID, record); } List <StudentRecord> errorList = new List <StudentRecord>(); // 主要修改成檢查是否有學期歷程與不重複,不推測學期歷程是否合理 foreach (StudentRecord student in students) { // 當學生沒有學期歷程紀錄 if (!studentSemesterHistoryRecordDict.ContainsKey(student.ID)) { errorList.Add(student); continue; } List <string> checkSame = new List <string>(); // 有學期歷程 if (studentSemesterHistoryRecordDict.ContainsKey(student.ID)) { // 當學生有學期歷程,但是筆數是0 if (studentSemesterHistoryRecordDict[student.ID].SemesterHistoryItems.Count == 0) { errorList.Add(student); continue; } checkSame.Clear(); foreach (K12.Data.SemesterHistoryItem shi in studentSemesterHistoryRecordDict[student.ID].SemesterHistoryItems) { // 當資料有疑問 if (shi.SchoolYear < 1 || shi.Semester < 1 || shi.GradeYear < 1) { errorList.Add(student); continue; } // 檢查學期歷程是否有重複(學年度+學期+年級) string key = shi.SchoolYear.ToString() + shi.Semester.ToString() + shi.GradeYear; if (checkSame.Contains(key)) { errorList.Add(student); continue; } checkSame.Add(key); } } } return(errorList); }
void wizard_ImportPackage(object sender, SmartSchool.API.PlugIn.Import.ImportPackageEventArgs e) { //根據學生編號、學年度、學期組成主鍵 List <string> keyList = new List <string>(); Dictionary <string, int> schoolYearMapping = new Dictionary <string, int>(); Dictionary <string, int> semesterMapping = new Dictionary <string, int>(); Dictionary <string, string> studentIDMapping = new Dictionary <string, string>(); Dictionary <string, List <RowData> > rowsMapping = new Dictionary <string, List <RowData> >(); //一個學生只會有一筆學期歷程 Dictionary <string, JHSemesterHistoryRecord> studentSemesterHistory = new Dictionary <string, JHSemesterHistoryRecord>(); //掃描每行資料,定出資料的PrimaryKey,並且將PrimaryKey對應到的資料寫成Dictionary foreach (RowData Row in e.Items) { int schoolYear = int.Parse(Row["學年度"]); int semester = int.Parse(Row["學期"]); string studentID = Row.ID; string key = schoolYear + "^_^" + semester + "^_^" + studentID; if (!keyList.Contains(key)) { keyList.Add(key); schoolYearMapping.Add(key, schoolYear); semesterMapping.Add(key, semester); studentIDMapping.Add(key, studentID); rowsMapping.Add(key, new List <RowData>()); } rowsMapping[key].Add(Row); } //一次取得學生學期歷程 List <JHSemesterHistoryRecord> records = JHSemesterHistory.SelectByStudentIDs(studentIDMapping.Values.Distinct()); #region 將學生現有學期歷程做快取 foreach (JHSemesterHistoryRecord var in records) { studentSemesterHistory.Add(var.RefStudentID, var); } #endregion List <JHSemesterHistoryRecord> UpdateRecords = new List <JHSemesterHistoryRecord>(); foreach (string key in keyList) { JHSemesterHistoryRecord record = studentSemesterHistory[studentIDMapping[key]]; List <RowData> Rows = rowsMapping[key]; if (record != null) { for (int i = 0; i < Rows.Count; i++) { string StudentID = Rows[i].ID; string SchoolYear = Rows[i]["學年度"]; string Semester = Rows[i]["學期"]; string GradeYear = Rows[i]["年級"]; string ClassName = Rows[i].ContainsKey("當時班級")?Rows[i]["當時班級"]:string.Empty; string SeatNo = Rows[i].ContainsKey("當時座號")?Rows[i]["當時座號"]:string.Empty; string TeacherName = Rows[i].ContainsKey("當時班導師姓名")?Rows[i]["當時班導師姓名"]:string.Empty; string SchoolDayCount = Rows[i].ContainsKey("上課天數")?Rows[i]["上課天數"]:string.Empty; List <K12.Data.SemesterHistoryItem> Items = record.SemesterHistoryItems.Where(x => x.RefStudentID == StudentID && x.SchoolYear.ToString() == SchoolYear && x.Semester.ToString() == Semester).ToList(); if (Items.Count > 0) { Items[0].GradeYear = K12.Data.Int.Parse(GradeYear); if (Rows[i].ContainsKey("當時班級")) { Items[0].ClassName = ClassName; } if (Rows[i].ContainsKey("當時座號")) { Items[0].SeatNo = K12.Data.Int.ParseAllowNull(SeatNo); } if (Rows[i].ContainsKey("當時班導師姓名")) { Items[0].Teacher = TeacherName; } if (Rows[i].ContainsKey("上課天數")) { Items[0].SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount); } } else { K12.Data.SemesterHistoryItem Item = new K12.Data.SemesterHistoryItem(); Item.SchoolYear = K12.Data.Int.Parse(SchoolYear); Item.Semester = K12.Data.Int.Parse(Semester); Item.GradeYear = K12.Data.Int.Parse(GradeYear); Item.ClassName = ClassName; Item.SeatNo = K12.Data.Int.ParseAllowNull(SeatNo); Item.Teacher = TeacherName; Item.SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount); record.SemesterHistoryItems.Add(Item); } } UpdateRecords.Add(record); } else { JHSemesterHistoryRecord newrecord = new JHSemesterHistoryRecord(); newrecord.RefStudentID = Rows[0].ID; List <K12.Data.SemesterHistoryItem> Items = new List <K12.Data.SemesterHistoryItem>(); for (int i = 0; i < Rows.Count; i++) { string SchoolYear = Rows[i]["學年度"]; string Semester = Rows[i]["學期"]; string GradeYear = Rows[i].ContainsKey("年級") ? Rows[i]["年級"] : string.Empty; string ClassName = Rows[i].ContainsKey("當時班級") ? Rows[i]["當時班級"] : string.Empty; string SeatNo = Rows[i].ContainsKey("當時座號") ? Rows[i]["當時座號"] : string.Empty; string TeacherName = Rows[i].ContainsKey("當時班導師姓名") ? Rows[i]["當時班導師姓名"] : string.Empty; string SchoolDayCount = Rows[i].ContainsKey("上課天數") ? Rows[i]["上課天數"] : string.Empty; K12.Data.SemesterHistoryItem Item = new K12.Data.SemesterHistoryItem(); Item.SchoolYear = K12.Data.Int.Parse(SchoolYear); Item.Semester = K12.Data.Int.Parse(Semester); Item.GradeYear = K12.Data.Int.Parse(GradeYear); Item.ClassName = ClassName; Item.SeatNo = K12.Data.Int.ParseAllowNull(SeatNo); Item.Teacher = TeacherName; Item.SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount); Items.Add(Item); } newrecord.SemesterHistoryItems = Items; UpdateRecords.Add(newrecord); } } if (UpdateRecords.Count > 0) { JHSemesterHistory.Update(UpdateRecords); } }
// save private void SemesterHistoryDetail_SaveButtonClick(object sender, EventArgs e) { // 資料檢查 foreach (DataGridViewRow row in dataGridViewX1.Rows) { if (row.IsNewRow) { continue; } foreach (DataGridViewCell cell in row.Cells) { if (cell.ErrorText != "") { MsgBox.Show("資料有疑問無法儲存,請檢查標紅色儲存格.", "儲存失敗", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } } JHSchool.Data.JHSemesterHistoryRecord updateSemeHsitoryRec = new JHSchool.Data.JHSemesterHistoryRecord(); updateSemeHsitoryRec.RefStudentID = PrimaryKey; foreach (DataGridViewRow row in dataGridViewX1.Rows) { int SchoolYear = 0, Semester = 0, GradeYear = 0, SchoolDayCount = 0, SeatNo = 0; if (row.IsNewRow) { continue; } K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem(); if (row.Cells[colSchoolYear.Index] != null) { int.TryParse("" + row.Cells[colSchoolYear.Index].Value, out SchoolYear); } if (row.Cells[colSemester.Index] != null) { int.TryParse("" + row.Cells[colSemester.Index].Value, out Semester); } if (row.Cells[colGradeYear.Index] != null) { int.TryParse("" + row.Cells[colGradeYear.Index].Value, out GradeYear); } if (row.Cells[colSchoolDayCount.Index] != null) { int.TryParse("" + row.Cells[colSchoolDayCount.Index].Value, out SchoolDayCount); } if (row.Cells[colSeatNo.Index] != null) { int.TryParse("" + row.Cells[colSeatNo.Index].Value, out SeatNo); } shi.SchoolYear = SchoolYear; shi.Semester = Semester; shi.GradeYear = GradeYear; if (row.Cells[colClassName.Index] != null) { shi.ClassName = row.Cells[colClassName.Index].Value + ""; } if (SeatNo == 0) { shi.SeatNo = null; } else { shi.SeatNo = SeatNo; } if (row.Cells[colTeacherName.Index] != null) { shi.Teacher = row.Cells[colTeacherName.Index].Value + ""; } if (SchoolDayCount == 0) { shi.SchoolDayCount = null; } else { shi.SchoolDayCount = SchoolDayCount; } updateSemeHsitoryRec.SemesterHistoryItems.Add(shi); string logIdxStr = shi.SchoolYear + "" + shi.Semester + "_"; prlp.SetAfterSaveText(logIdxStr + "學年度", shi.SchoolYear + ""); prlp.SetAfterSaveText(logIdxStr + "學期", shi.Semester + ""); prlp.SetAfterSaveText(logIdxStr + "年級", shi.GradeYear + ""); prlp.SetAfterSaveText(logIdxStr + "班級", shi.ClassName); prlp.SetAfterSaveText(logIdxStr + "座號", SeatNo + ""); prlp.SetAfterSaveText(logIdxStr + "班導師", shi.Teacher); prlp.SetAfterSaveText(logIdxStr + "上課天數", SchoolDayCount + ""); } JHSchool.Data.JHSemesterHistory.Update(updateSemeHsitoryRec); prlp.SetActionBy("學籍", "學生學期對照表"); prlp.SetAction("修改學生學期對照表"); JHStudentRecord studRec = JHStudent.SelectByID(PrimaryKey); prlp.SetDescTitle("學生姓名:" + studRec.Name + ",學號:" + studRec.StudentNumber + ","); prlp.SaveLog("", "", "student", PrimaryKey); this.CancelButtonVisible = false; this.SaveButtonVisible = false; }
private void _historyWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { progressBar.Value = 100; if (e.Error != null) { MsgBox.Show("檢查學期歷程時發生錯誤。" + e.Error.Message); return; } if (_errorList.Count > 0) { btnExit.Enabled = true; JHSchool.Evaluation.Calculation_for_JHEvaluation.ScoreCalculation.ErrorViewer viewer = new JHSchool.Evaluation.Calculation_for_JHEvaluation.ScoreCalculation.ErrorViewer(); viewer.SetHeader("學生"); foreach (StudentRecord student in _errorList) { viewer.SetMessage(student, new List <string>(new string[] { "學期歷程不完整" })); } viewer.ShowDialog(); pic_loading.Visible = false; return; } else { // 加入這段主要在處理當學期還沒有產生學期歷程,資料可以判斷 UIConfig._StudentSHistoryRecDict.Clear(); Dictionary <string, int> studGradeYearDict = new Dictionary <string, int>(); // 取得學生ID List <string> studIDs = (from data in _students select data.ID).Distinct().ToList(); foreach (JHStudentRecord stud in JHStudent.SelectByIDs(studIDs)) { if (stud.Class != null) { if (stud.Class.GradeYear.HasValue) { if (!studGradeYearDict.ContainsKey(stud.ID)) { studGradeYearDict.Add(stud.ID, stud.Class.GradeYear.Value); } } } } bool checkInsShi = false; // 取得學生學期歷程,並加入學生學習歷程Cache foreach (JHSemesterHistoryRecord rec in JHSemesterHistory.SelectByStudentIDs(studIDs)) { checkInsShi = true; K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem(); shi.SchoolYear = UIConfig._UserSetSHSchoolYear; shi.Semester = UIConfig._UserSetSHSemester; if (studGradeYearDict.ContainsKey(rec.RefStudentID)) { shi.GradeYear = studGradeYearDict[rec.RefStudentID]; } foreach (K12.Data.SemesterHistoryItem shiItem in rec.SemesterHistoryItems) { if (shiItem.SchoolYear == shi.SchoolYear && shiItem.Semester == shi.Semester) { checkInsShi = false; } } if (checkInsShi) { rec.SemesterHistoryItems.Add(shi); } if (!UIConfig._StudentSHistoryRecDict.ContainsKey(rec.RefStudentID)) { UIConfig._StudentSHistoryRecDict.Add(rec.RefStudentID, rec); } } lblProgress.Text = "畢業資格審查中…"; FISCA.LogAgent.ApplicationLog.Log("成績系統.畢業資格審查", "畢業資格審查", "進行畢業資格審查"); _inspectWorker.RunWorkerAsync(); } }
/// <summary> /// 儲存學習歷程項目 /// </summary> /// <param name="SemesterHistoryItemEntityList"></param> public static void SetSemesterHistoryItemEntityList(List <SemesterHistoryItemEntity> SemesterHistoryItemEntityList, List <string> StudntIDList) { Dictionary <string, JHSemesterHistoryRecord> JHSemesterHistoryRecordDic = new Dictionary <string, JHSemesterHistoryRecord>(); foreach (JHSemesterHistoryRecord shr in JHSemesterHistory.SelectByStudentIDs(StudntIDList)) { JHSemesterHistoryRecordDic.Add(shr.RefStudentID, shr); } List <JHSemesterHistoryRecord> UpadteRecList = new List <JHSemesterHistoryRecord>(); foreach (SemesterHistoryItemEntity shie in SemesterHistoryItemEntityList) { K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem(); shi.ClassName = shie.ClassName; shi.GradeYear = shie.GradeYear; shi.SchoolDayCount = shie.SchoolDayCount; shi.SchoolYear = shie.Schoolyear; shi.SeatNo = shie.SeatNo; shi.Semester = shie.Semester; shi.Teacher = shie.TeacherName; if (JHSemesterHistoryRecordDic.ContainsKey(shie.StudentID)) { // 完全沒學習歷程 if (shie.HasSemsterHistoryRec == false && shie.EditMode == SemesterHistoryItemEntity._EditMode.Insert) { JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi); } // 有學習歷程 if (shie.HasSemsterHistoryRec) { K12.Data.SemesterHistoryItem rmItem = null; foreach (K12.Data.SemesterHistoryItem sh in JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems) { // 檢查當有同學年度學期移除 if (sh.SchoolYear == shi.SchoolYear && sh.Semester == shi.Semester) { rmItem = sh; } } // 先移除舊的 if (rmItem != null) { JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Remove(rmItem); } if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Insert) { JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi); } if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Update) { JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi); } if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Delete) { } } UpadteRecList.Add(JHSemesterHistoryRecordDic[shie.StudentID]); } } JHSemesterHistory.Update(UpadteRecList); }
private void History_worker_DoWork(object sender, DoWorkEventArgs e) { bool error = false; List <StudentRecord> students = _students; List <string> student_ids = new List <string>(); foreach (StudentRecord each in students) { student_ids.Add(each.ID); } int total = students.Count; int count = 0; #region 檢查學期歷程 _viewer.Clear(); _viewer.SetHeader("學生"); Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord> studentHistories = new Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord>(); foreach (JHSchool.Data.JHSemesterHistoryRecord record in JHSchool.Data.JHSemesterHistory.SelectByStudentIDs(student_ids)) { if (!studentHistories.ContainsKey(record.RefStudentID)) { studentHistories.Add(record.RefStudentID, record); } } _studentHistoryDict = new Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord>(); //SemesterHistory.Instance.SyncDataBackground(student_ids); //_studentHistoryEditors = new Dictionary<string, SemesterHistoryRecordEditor>(); _gradeYears = new Dictionary <string, int>(); foreach (StudentRecord each in students) { count++; bool hasSemesterHistory = false; foreach (K12.Data.SemesterHistoryItem item in studentHistories[each.ID].SemesterHistoryItems) { if (item.SchoolYear == intSchoolYear.Value && item.Semester == intSemester.Value) { if (!_gradeYears.ContainsKey(each.ID)) { _gradeYears.Add(each.ID, item.GradeYear); } if (_type.Equals("EduAdmin")) { item.ClassName = (each.Class != null) ? each.Class.Name : ""; int i; item.SeatNo = int.TryParse(each.SeatNo, out i) ? (int?)i : null; item.Teacher = (each.Class != null) ? ((each.Class.Teacher != null) ? each.Class.Teacher.Name : "") : ""; item.SchoolDayCount = (_schoolDayMapping.ContainsKey(item.GradeYear)) ? (int?)_schoolDayMapping[item.GradeYear] : null; if (!_studentHistoryDict.ContainsKey(each.ID)) { _studentHistoryDict.Add(each.ID, studentHistories[each.ID]); } } hasSemesterHistory = true; break; } } if (!hasSemesterHistory) { if (_type.Equals("EduAdmin")) { K12.Data.SemesterHistoryItem item = new K12.Data.SemesterHistoryItem(); item.SchoolYear = intSchoolYear.Value; item.Semester = intSemester.Value; item.GradeYear = intGradeYear.Value; item.ClassName = (each.Class != null) ? each.Class.Name : ""; int i; item.SeatNo = int.TryParse(each.SeatNo, out i) ? (int?)i : null; item.Teacher = (each.Class != null) ? ((each.Class.Teacher != null) ? each.Class.Teacher.Name : "") : ""; item.SchoolDayCount = (_schoolDayMapping.ContainsKey(item.GradeYear)) ? (int?)_schoolDayMapping[item.GradeYear] : null; studentHistories[each.ID].SemesterHistoryItems.Add(item); if (!_studentHistoryDict.ContainsKey(each.ID)) { _studentHistoryDict.Add(each.ID, studentHistories[each.ID]); } } error = true; _viewer.SetMessage(each, new List <string>(new string[] { "缺少學期歷程資訊" })); } _history_worker.ReportProgress((int)((double)count * 100 / (double)total), "檢查學期歷程中…"); } if (error) { e.Result = error; return; } #endregion e.Result = "OK"; }
private void btnSave_Click(object sender, EventArgs e) { SemesterHistoryRecord.SemesterHistoryItems.Clear(); List <string> checkData = new List <string>(); foreach (DataGridViewRow dr in dgSemestrHistory.Rows) { if (dr.IsNewRow) { continue; } if (dr.Cells["學年度"].Value == null || dr.Cells["學期"].Value == null || dr.Cells["年級"].Value == null) { MessageBox.Show("資料輸入不完整"); return; } string str = "" + dr.Cells["學年度"].Value + dr.Cells["學期"].Value + dr.Cells["年級"].Value; if (checkData.Contains(str)) { MessageBox.Show("學年度+學期+年級有重複"); return; } else { checkData.Add(str); } } foreach (DataGridViewRow dr in dgSemestrHistory.Rows) { if (dr.IsNewRow) { continue; } int tmpInt; K12.Data.SemesterHistoryItem sshe = new K12.Data.SemesterHistoryItem(); tmpInt = 0; int.TryParse(dr.Cells["學年度"].Value.ToString(), out tmpInt); sshe.SchoolYear = tmpInt; tmpInt = 0; int.TryParse(dr.Cells["學期"].Value.ToString(), out tmpInt); sshe.Semester = tmpInt; tmpInt = 0; int.TryParse(dr.Cells["年級"].Value.ToString(), out tmpInt); sshe.GradeYear = tmpInt; if (dr.Cells["班級"].Value != null) { sshe.ClassName = dr.Cells["班級"].Value.ToString(); } if (dr.Cells["班導師"].Value != null) { sshe.Teacher = dr.Cells["班導師"].Value.ToString(); } if (dr.Cells["座號"].Value != null) { int seatNo; if (int.TryParse(dr.Cells["座號"].Value.ToString(), out seatNo)) { sshe.SeatNo = seatNo; } } if (dr.Cells["上課天數"].Value != null) { int DayCount; if (int.TryParse(dr.Cells["上課天數"].Value.ToString(), out DayCount)) { sshe.SchoolDayCount = DayCount; } } SemesterHistoryRecord.SemesterHistoryItems.Add(sshe); } // 儲存學期歷程 JHSchool.Data.JHSemesterHistory.Update(SemesterHistoryRecord); // log JHSchool.PermRecLogProcess prlp = new JHSchool.PermRecLogProcess(); prlp.SaveLog("學生.轉入異動", "新增", "新增 學生:" + studRec.Name + " 學期歷程資料.."); this.Close(); }