public void ExecuteAutoCorrect(IEnumerable <string> EntityIDs) { List <JHUpdateRecordRecord> AutoCorrectRecords = K12.Data.Utility.Utility.IsNullOrEmpty(EntityIDs) ? CorrectableUpdateRecords : CorrectableUpdateRecords.Where(x => EntityIDs.Contains(x.StudentID)).ToList(); if (MsgBox.Show("自動修正將依照檢查結果建議值進行修正總共" + AutoCorrectRecords.Count + "筆,強烈建議您務必將檢查結果匯出備份,是否進行自動修正?", "您是否要進行自動修正?", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { try { StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("學號,狀態,學年度,學期,異動日期,入學年月,備註,入學資格-畢業國小名稱,異動班級,異動姓名,異動身分證號,異動地址,異動學號,異動性別,異動生日,核准日期,核准文號,原核准文號"); Dictionary <string, StudentRecord> StudentRecordsDic = StudentRecords.ToDictionary(x => x.ID); for (int i = 0; i < AutoCorrectRecords.Count; i++) { string StudentID = AutoCorrectRecords[i].StudentID; List <string> LogValues = new List <string>(); LogValues.Add(StudentRecordsDic[StudentID].StudentNumber); LogValues.Add(StudentRecordsDic[StudentID].StatusStr); LogValues.Add(AutoCorrectRecords[i].StudentNumber); LogValues.Add(K12.Data.Int.GetString(AutoCorrectRecords[i].SchoolYear)); LogValues.Add(K12.Data.Int.GetString(AutoCorrectRecords[i].Semester)); LogValues.Add(AutoCorrectRecords[i].UpdateDate); LogValues.Add(AutoCorrectRecords[i].EnrollmentSchoolYear); LogValues.Add(AutoCorrectRecords[i].Comment); LogValues.Add(AutoCorrectRecords[i].GraduateSchool); LogValues.Add(AutoCorrectRecords[i].OriginClassName); LogValues.Add(AutoCorrectRecords[i].StudentName); LogValues.Add(AutoCorrectRecords[i].IDNumber); LogValues.Add(AutoCorrectRecords[i].OriginAddress); LogValues.Add(AutoCorrectRecords[i].StudentNumber); LogValues.Add(AutoCorrectRecords[i].Gender); LogValues.Add(AutoCorrectRecords[i].Birthdate); LogValues.Add(AutoCorrectRecords[i].ADDate); LogValues.Add(AutoCorrectRecords[i].ADNumber); LogValues.Add(AutoCorrectRecords[i].ADNumber.Replace("字第", "")); strBuilder.AppendLine(string.Join(",", LogValues.ToArray())); } JHUpdateRecord.Update(AutoCorrectRecords); AutoCorrectRecords.ForEach(x => CorrectableUpdateRecords.Remove(x)); FISCA.LogAgent.ApplicationLog.Log("資料合理性檢查.學生新生異動核准文號缺少『字號』", "補上『字號』值並更新異動記錄", strBuilder.ToString()); MsgBox.Show("已自動修正完成!"); } catch (Exception e) { SmartSchool.ErrorReporting.ReportingService.ReportException(e); MsgBox.Show(e.Message); } } }
public DataRationalityMessage Execute() { CanAutoCorrectStudentIDs.Clear(); LogBuilder = new StringBuilder(); LogBuilder.AppendLine("學生系統編號,身分證號,學號,班級,座號,姓名,狀態,學年度,學期,異動類別,原因及事項,異動日期,轉出後學校"); DataRationalityMessage Message = new DataRationalityMessage(); List <JHStudentRecord> Students = JHStudent.SelectAll().Where(x => x.Status == K12.Data.StudentRecord.StudentStatus.一般).ToList(); List <JHUpdateRecordRecord> UpdateRecords = JHUpdateRecord.SelectByStudentIDs(Students.Select(x => x.ID)).Where(x => x.UpdateCode.Equals("4")).ToList(); StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("檢查學生筆數:" + Students.Count); strBuilder.AppendLine("問題學生筆數:" + UpdateRecords.Count); if (UpdateRecords.Count > 0) { strBuilder.AppendLine("建議修正方案:"); strBuilder.AppendLine("1.將學生加入至待處理,手動變更學生的狀態為『畢業或離校』或『刪除』。"); strBuilder.AppendLine("2.運用本合理性檢查自動修正功能,將學生的狀態批次變更為『刪除』。"); strBuilder.AppendLine("3.若您運用本合理性檢查自動修正功能,建議先單選1位學生進行嘗試,確認正確變更為『刪除』狀態再進行批次作業。"); } var StudentUpdateRecords = UpdateRecords.Join(Students, UpdateRecord => UpdateRecord.StudentID, Student => Student.ID, (UpdateRecord, Student) => new { 學生系統編號 = Student.ID, 身分證號 = Student.IDNumber, 學號 = Student.StudentNumber, 班級 = Student.Class != null ? Student.Class.Name : string.Empty, 座號 = K12.Data.Int.GetString(Student.SeatNo), 姓名 = Student.Name, 狀態 = Student.StatusStr, 學年度 = K12.Data.Int.GetString(UpdateRecord.SchoolYear), 學期 = K12.Data.Int.GetString(UpdateRecord.Semester), 異動類別 = "轉出", 原因及事項 = UpdateRecord.UpdateDescription, 異動日期 = UpdateRecord.UpdateDate, 轉出後學校 = UpdateRecord.ImportExportSchool, }); foreach (var r in StudentUpdateRecords) { LogBuilder.AppendLine(r.學生系統編號 + "," + r.身分證號 + "," + r.學號 + "," + r.班級 + "," + r.座號 + "," + r.姓名 + "," + r.狀態 + "," + r.學年度 + "," + r.學期 + "," + r.異動類別 + "," + r.原因及事項 + "," + r.異動日期 + "," + r.轉出後學校); } Message.Data = StudentUpdateRecords.ToList(); Message.Message = strBuilder.ToString(); CanAutoCorrectStudentIDs.AddRange(UpdateRecords.Select(x => x.StudentID).Distinct()); return(Message); }
private void Update(object item) { try { List <JHUpdateRecordRecord> UpdatePackage = (List <JHUpdateRecordRecord>)item; JHUpdateRecord.Update(UpdatePackage); } catch (Exception ex) {} }
public override void InitializeImport(SmartSchool.API.PlugIn.Import.ImportWizard wizard) { // 取得學生資料 Dictionary <string, JHStudentRecord> Students = new Dictionary <string, JHStudentRecord>(); // 取得異動資料 Dictionary <string, List <JHUpdateRecordRecord> > UpdateRecs = new Dictionary <string, List <JHUpdateRecordRecord> >(); wizard.PackageLimit = 3000; wizard.ImportableFields.AddRange("學年度", "學期", "異動學號", "異動姓名", "異動生日", "異動身分證號", "異動性別", "異動類別", "異動日期", "原因及事項", "轉入前學校", "轉出後學校", "學籍核准日期", "學籍核准文號", "核准日期", "核准文號", "備註", "新生日", "新身分證號", "新姓名", "新性別", "出生地", "異動年級", "異動地址", "異動班級", "異動座號"); wizard.RequiredFields.AddRange("異動類別", "異動日期", "學年度", "學期"); wizard.ValidateStart += delegate(object sender, SmartSchool.API.PlugIn.Import.ValidateStartEventArgs e) { Students.Clear(); UpdateRecs.Clear(); // 取得學生資料 foreach (JHStudentRecord studRec in JHStudent.SelectByIDs(e.List)) { if (!Students.ContainsKey(studRec.ID)) { Students.Add(studRec.ID, studRec); } } foreach (string str in Students.Keys) { List <JHUpdateRecordRecord> UpdRecList = new List <JHUpdateRecordRecord>(); UpdateRecs.Add(str, UpdRecList); } // 取得異動 MultiThreadWorker <string> loader1 = new MultiThreadWorker <string>(); loader1.MaxThreads = 3; loader1.PackageSize = 250; loader1.PackageWorker += delegate(object sender1, PackageWorkEventArgs <string> e1) { foreach (JHUpdateRecordRecord UpdRec in JHUpdateRecord.SelectByStudentIDs(e.List)) { // 非新生或畢業濾除 if (UpdRec.UpdateCode == "1" || UpdRec.UpdateCode == "2") { continue; } if (UpdateRecs.ContainsKey(UpdRec.StudentID)) { UpdateRecs[UpdRec.StudentID].Add(UpdRec); } } }; loader1.Run(e.List); }; wizard.ValidateRow += delegate(object sender, SmartSchool.API.PlugIn.Import.ValidateRowEventArgs e) { int i = 0; DateTime dt; // 檢查學生是否存在 JHStudentRecord studRec = null; if (Students.ContainsKey(e.Data.ID)) { studRec = Students[e.Data.ID]; } else { e.ErrorMessage = "沒有這位學生" + e.Data.ID; return; } // 驗證格式資料 bool InputFormatPass = true; foreach (string field in e.SelectFields) { string value = e.Data[field].Trim(); //// 驗證$無法匯入 //if (value.IndexOf('$') > -1) //{ // e.ErrorFields.Add(field, "儲存格有$無法匯入."); // break; //} switch (field) { default: break; case "異動類別": // 對應不到時 if (DAL.DALTransfer2.GetUpdateRecCodeByString39(value) == "") { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入正確異動類別"); } break; case "學年度": int.TryParse(value, out i); if (string.IsNullOrEmpty(value) || i < 1) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入整數"); } break; case "學期": int.TryParse(value, out i); if (string.IsNullOrEmpty(value) || i < 1) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入整數"); } if (i > 2) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入整數,1或2"); } break; case "異動年級": int.TryParse(value, out i); if (string.IsNullOrEmpty(value) || i < 1) { InputFormatPass &= false; e.WarningFields.Add(field, "請填入整數"); } break; case "異動座號": int.TryParse(value, out i); if (string.IsNullOrEmpty(value) || i < 1) { e.WarningFields.Add(field, "請填入整數"); } break; case "異動日期": if (string.IsNullOrEmpty(value) || DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } break; case "異動生日": if (!string.IsNullOrEmpty(value)) { if (DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } } break; case "學籍核准日期": if (!string.IsNullOrEmpty(value)) { if (DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } } break; case "核准日期": if (!string.IsNullOrEmpty(value)) { if (DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } } break; case "異動新生日": if (!string.IsNullOrEmpty(value)) { if (DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } } break; case "異動新性別": if (value == "男" || value == "女" || value == "") { } else { e.WarningFields.Add(field, "請填入男或女"); } break; case "異動性別": if (value == "男" || value == "女" || value == "") { } else { e.WarningFields.Add(field, "請填入男或女"); } break; case "新生日": if (!string.IsNullOrEmpty(value)) { if (DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } } break; case "新性別": if (value == "男" || value == "女" || value == "") { } else { e.WarningFields.Add(field, "請填入男或女"); } break; } } }; wizard.ImportPackage += delegate(object sender, SmartSchool.API.PlugIn.Import.ImportPackageEventArgs e) { Dictionary <string, List <RowData> > id_Rows = new Dictionary <string, List <RowData> >(); foreach (RowData data in e.Items) { if (!id_Rows.ContainsKey(data.ID)) { id_Rows.Add(data.ID, new List <RowData>()); } id_Rows[data.ID].Add(data); } List <JHUpdateRecordRecord> InsertList = new List <JHUpdateRecordRecord>(); List <JHUpdateRecordRecord> UpdateList = new List <JHUpdateRecordRecord>(); foreach (string id in id_Rows.Keys) { int schoolYear, Semester; string GrYear = ""; DateTime dt; foreach (RowData data in id_Rows[id]) { if (!UpdateRecs.ContainsKey(id)) { continue; } int.TryParse(data["學年度"], out schoolYear); int.TryParse(data["學期"], out Semester); DateTime.TryParse(data["異動日期"], out dt); if (data.ContainsKey("異動年級")) { GrYear = data["異動年級"]; } // 異動類別 string UpdateType = string.Empty; if (data.ContainsKey("異動類別")) { UpdateType = data["異動類別"]; } // 取得原因及事項 string UpdateDesc = string.Empty; if (data.ContainsKey("原因及事項")) { UpdateDesc = data["原因及事項"]; } //// 檢查更正學籍 //string checkUpdateCode09Str=string.Empty; //if (data.ContainsKey("新生日")) // checkUpdateCode09Str += data["新生日"].Trim(); //if (data.ContainsKey("新身分證號")) // checkUpdateCode09Str += data["新身分證號"].Trim(); //if (data.ContainsKey("新姓名")) // checkUpdateCode09Str += data["新姓名"].Trim(); //if (data.ContainsKey("新性別")) // checkUpdateCode09Str += data["新性別"].Trim(); JHUpdateRecordRecord updateRec = null; // 判斷學年度+學期+異動日期+異動類別 (如果相同有當更新,不同就新增) foreach (JHUpdateRecordRecord urr in UpdateRecs[id]) { string UpdateStr = DAL.DALTransfer2.GetUpdateRecCodeString(urr.UpdateCode); if (urr.SchoolYear == schoolYear && urr.Semester == Semester && UpdateType == UpdateStr) { DateTime dt1; DateTime.TryParse(urr.UpdateDate, out dt1); if (dt == dt1) { // 使用原因及事項當作Key if (UpdateDesc == urr.UpdateDescription) { updateRec = urr; } ////判斷當異動類別是更正學籍,加入(新生日、新身分證號、新姓名、新性別)判斷,四項內容只要有一個不同就當作新的一筆可匯入。 //if (urr.UpdateCode == "9") //{ // string strKey = urr.NewBirthday.Trim() + urr.NewIDNumber.Trim() + urr.NewName.Trim() + urr.NewGender.Trim (); // if (checkUpdateCode09Str == strKey) // updateRec = urr; //} //else // updateRec = urr; } } } bool isInsert = true; if (updateRec == null) { updateRec = new JHUpdateRecordRecord(); updateRec.StudentID = id; } else { isInsert = false; } bool checkData = false; string Ur03School = "", Ur04School = ""; foreach (string field in e.ImportFields) { string value = data[field].Trim(); switch (field) { case "異動類別": string UrCode = DAL.DALTransfer2.GetUpdateRecCodeByString39(value); if (UrCode != "") { updateRec.UpdateCode = UrCode; } break; case "學年度": int scYear; if (int.TryParse(value, out scYear)) { updateRec.SchoolYear = scYear; checkData = true; } break; case "學期": int Sems; if (int.TryParse(value, out Sems)) { updateRec.Semester = Sems; checkData = true; } break; case "異動年級": updateRec.GradeYear = GrYear; break; case "異動日期": DateTime dtd; if (DateTime.TryParse(value, out dtd)) { updateRec.UpdateDate = dtd.ToShortDateString(); } break; case "備註": updateRec.Comment = value; break; case "學籍核准日期": DateTime dtLD; if (DateTime.TryParse(value, out dtLD)) { updateRec.LastADDate = dtLD.ToShortDateString(); } break; case "學籍核准文號": updateRec.LastADNumber = value; break; case "異動班級": updateRec.OriginClassName = value; break; case "異動姓名": updateRec.StudentName = value; break; case "異動身分證號": updateRec.IDNumber = value; break; case "異動學號": updateRec.StudentNumber = value; break; case "異動性別": if (value == "男" || value == "女" || value == "") { updateRec.Gender = value; } break; case "異動生日": DateTime dtb; if (DateTime.TryParse(value, out dtb)) { updateRec.Birthdate = dtb.ToShortDateString(); } break; case "異動座號": int no; if (int.TryParse(value, out no)) { updateRec.SeatNo = no + ""; } break; case "核准日期": DateTime dtAd; if (DateTime.TryParse(value, out dtAd)) { updateRec.ADDate = dtAd.ToShortDateString(); } break; case "核准文號": updateRec.ADNumber = value; break; case "異動新生日": DateTime dtNB; if (DateTime.TryParse(value, out dtNB)) { updateRec.NewBirthday = dtNB.ToShortDateString(); } break; case "異動新身分證號": updateRec.NewIDNumber = value; break; case "異動新姓名": updateRec.NewName = value; break; case "異動新性別": if (value == "男" || value == "女" || value == "") { updateRec.NewGender = value; } break; case "新生日": DateTime dtNB1; if (DateTime.TryParse(value, out dtNB1)) { updateRec.NewBirthday = dtNB1.ToShortDateString(); } break; case "新身分證號": updateRec.NewIDNumber = value; break; case "新姓名": updateRec.NewName = value; break; case "新性別": if (value == "男" || value == "女" || value == "") { updateRec.NewGender = value; } break; case "出生地": updateRec.BirthPlace = value; break; case "原因及事項": updateRec.UpdateDescription = value; break; case "異動地址": updateRec.OriginAddress = value; break; case "轉入前學校": Ur03School = value; break; case "轉出後學校": Ur04School = value; break; } } // 轉換轉出入學校 if (updateRec.UpdateCode == "3") { updateRec.ImportExportSchool = Ur03School; } if (updateRec.UpdateCode == "4") { updateRec.ImportExportSchool = Ur04School; } if (string.IsNullOrEmpty(updateRec.StudentID) || string.IsNullOrEmpty(updateRec.UpdateDate) || string.IsNullOrEmpty(updateRec.UpdateCode)) { continue; } else { if (isInsert) { InsertList.Add(updateRec); } else { UpdateList.Add(updateRec); } } } } try { if (InsertList.Count > 0) { Insert(InsertList); } if (UpdateList.Count > 0) { Update(UpdateList); } JHSchool.PermRecLogProcess prlp = new JHSchool.PermRecLogProcess(); prlp.SaveLog("學生.匯入異動", "匯入學籍異動", "匯入學籍異動:共新增" + InsertList.Count + "筆資料,共更新:" + UpdateList.Count + "筆資料"); JHSchool.Student.Instance.SyncAllBackground(); } catch (Exception ex) { } }; }
public DataRationalityMessage Execute() { //初始化 DataRationalityMessage Message = new DataRationalityMessage(); CorrectableUpdateRecords.Clear(); DisplayRecords.Clear(); StudentRecords.Clear(); //取得所有異動記錄,並篩選出轉入異動(異動代碼為3)以及新生異動(異動代碼為1) IEnumerable <JHUpdateRecordRecord> UpdateRecords = JHUpdateRecord.SelectAll().Where(x => x.UpdateCode.Equals("3") || x.UpdateCode.Equals("1")); //取得異動記錄對應的學生資料 StudentRecords = Student.SelectByIDs(UpdateRecords.Select(x => x.StudentID).Distinct()).ToDictionary(x => x.ID); foreach (var StudentUpdateRecords in UpdateRecords.GroupBy(x => x.StudentID)) { //將異動記錄排序 List <JHUpdateRecordRecord> OrderedStudentUpdateRecords = StudentUpdateRecords.OrderBy(x => x.UpdateCode).ToList(); //判斷只有2筆異動記錄的情況,其中1筆為『新生異動』,另外1筆為『轉入異動』 if (OrderedStudentUpdateRecords.Count == 2 && OrderedStudentUpdateRecords[0].UpdateCode.Equals("1") && OrderedStudentUpdateRecords[1].UpdateCode.Equals("3")) { CorrectableUpdateRecords.Add(OrderedStudentUpdateRecords[0]); StudentImportNewUpdateRecordMixRATRecord DisplayRecord = new StudentImportNewUpdateRecordMixRATRecord(); string StudentID = OrderedStudentUpdateRecords[1].StudentID; if (StudentRecords.ContainsKey(StudentID)) { DisplayRecord.學生系統編號 = StudentRecords[StudentID].ID; DisplayRecord.學號 = StudentRecords[StudentID].StudentNumber; DisplayRecord.身分證號 = StudentRecords[StudentID].IDNumber; DisplayRecord.班級 = StudentRecords[StudentID].Class != null ? StudentRecords[StudentID].Class.Name : string.Empty; DisplayRecord.座號 = K12.Data.Int.GetString(StudentRecords[StudentID].SeatNo); DisplayRecord.姓名 = StudentRecords[StudentID].Name; DisplayRecord.狀態 = StudentRecords[StudentID].StatusStr; } DisplayRecord.異動日期 = OrderedStudentUpdateRecords[1].UpdateDate; DisplayRecord.異動類別 = "轉入"; DisplayRecord.原因及事項 = OrderedStudentUpdateRecords[1].UpdateDescription; DisplayRecord.轉入前學校 = OrderedStudentUpdateRecords[1].ImportExportSchool; DisplayRecord.說明 = "該生為轉入生也有新生異動"; DisplayRecords.Add(DisplayRecord); } } StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("檢查筆數:" + UpdateRecords.Count()); strBuilder.AppendLine("問題筆數:" + DisplayRecords.Count()); if (DisplayRecords.Count > 0) { strBuilder.AppendLine("建議修正方案:"); strBuilder.AppendLine("1.將學生加入至待處理,手動刪除學生的新生異動。"); strBuilder.AppendLine("2.運用本合理性檢查自動修正功能,將學生的新生異動批次刪除。"); strBuilder.AppendLine("3.若您運用本合理性檢查自動修正功能,建議先單選1位學生進行嘗試,確認正確刪除後並有存入日誌再進行批次作業。"); } var OrderedDisplayRecords = from record in DisplayRecords orderby record.狀態, record.班級, K12.Data.Int.ParseAllowNull(record.座號) select record; Message.Data = OrderedDisplayRecords.ToList(); Message.Message = strBuilder.ToString(); return(Message); }
public void SetStudent(JHStudentRecord student, List <SemesterHistoryItem> semesterHistoryList) { ClearField(); // 學期歷程 _semesterHistoryList = semesterHistoryList; //ParentRecord parent = student.GetParent(); //PhoneRecord phone = student.GetPhone(); //AddressRecord address = student.GetAddress(); JHParentRecord parent = JHParent.SelectByStudent(student); JHPhoneRecord phone = JHPhone.SelectByStudent(student); JHAddressRecord address = JHAddress.SelectByStudent(student); string base64 = K12.Data.Photo.SelectGraduatePhoto(student.ID); // 畢業資訊 JHLeaveInfoRecord GradeInfo = JHLeaveIfno.SelectByStudentID(student.ID); string EnrollSchoolYear = ""; foreach (JHUpdateRecordRecord rec in JHUpdateRecord.SelectByStudentID(student.ID)) { if (rec.UpdateCode == "1") { int sc; if (rec.EnrollmentSchoolYear.Length == 6) { int.TryParse(rec.EnrollmentSchoolYear.Substring(0, 4), out sc); EnrollSchoolYear = (sc - 1911) + rec.EnrollmentSchoolYear.Substring(4, 2); } } } _data["姓名"] = student.Name; _data["性別"] = student.Gender; _data["身分證號"] = student.IDNumber; _data["學號"] = student.StudentNumber; _data["出生日期"] = Global.CDate(student.Birthday.HasValue ? student.Birthday.Value.ToShortDateString() : ""); _data["國籍"] = student.Nationality; _data["家長或監護人"] = (parent != null) ? parent.Custodian.Name : ""; _data["關係"] = (parent != null) ? parent.Custodian.Relationship : ""; _data["行動電話"] = (phone != null) ? phone.Cell : ""; _data["戶籍電話"] = (phone != null) ? phone.Permanent : ""; _data["戶籍地址"] = (address != null) ? address.Permanent.ToString() : ""; _data["聯絡電話"] = (phone != null) ? phone.Contact : ""; _data["聯絡地址"] = (address != null) ? address.Mailing.ToString() : ""; _data["證書字號"] = GradeInfo.DiplomaNumber; _data["入學年月"] = EnrollSchoolYear; _data["照片"] = base64; // 處理服務學習時數 if (Global._SLRDict.ContainsKey(student.ID)) { foreach (SemesterHistoryItem shi in _semesterHistoryList) { string key = shi.SchoolYear + "_" + shi.Semester; if (Global._SLRDict[student.ID].ContainsKey(key)) { string val = Global._SLRDict[student.ID][key]; if ((shi.GradeYear == 1 || shi.GradeYear == 7) && shi.Semester == 1) { _data["SLR1A"] = val; } if ((shi.GradeYear == 1 || shi.GradeYear == 7) && shi.Semester == 2) { _data["SLR1B"] = val; } if ((shi.GradeYear == 2 || shi.GradeYear == 8) && shi.Semester == 1) { _data["SLR2A"] = val; } if ((shi.GradeYear == 2 || shi.GradeYear == 8) && shi.Semester == 2) { _data["SLR2B"] = val; } if ((shi.GradeYear == 3 || shi.GradeYear == 9) && shi.Semester == 1) { _data["SLR3A"] = val; } if ((shi.GradeYear == 3 || shi.GradeYear == 9) && shi.Semester == 2) { _data["SLR3B"] = val; } } } } }
public DataRationalityMessage Execute() { RATRecords.Clear(); DataRationalityMessage Message = new DataRationalityMessage(); int UpdateRecordCount = 0; //取得學生資料及建立資料物件 foreach (JHStudentRecord student in JHStudent.SelectAll()) { if (!Dic.ContainsKey(student.ID)) { Dic.Add(student.ID, new SuperObj_new(student)); } } foreach (JHUpdateRecordRecord each in JHUpdateRecord.SelectByStudentIDs(Dic.Keys)) { if (each.UpdateCode == "3") //轉入異動代碼為"3" { if (Dic.ContainsKey(each.StudentID)) //包含於清單內 { Dic.Remove(each.StudentID); //將其移除 UpdateRecordCount++; } } } //取得所有懲戒明細,並加入學生資料物件內 foreach (JHDemeritRecord demerit in JHDemerit.SelectAll()) { if (Dic.ContainsKey(demerit.RefStudentID)) { Dic[demerit.RefStudentID].DemeritList.Add(demerit); } } //取得(971,972,981,982)自動統計,排除目前學年度/學期 List <SchoolYearSemester> SysList = new List <SchoolYearSemester>(); SysList.Add(new SchoolYearSemester(97, 1)); SysList.Add(new SchoolYearSemester(97, 2)); SysList.Add(new SchoolYearSemester(98, 1)); SysList.Add(new SchoolYearSemester(98, 2)); SysList.Add(new SchoolYearSemester(99, 1)); SysList.Add(new SchoolYearSemester(99, 2)); List <AutoSummaryRecord> AutoSummaryList = AutoSummary.Select(Dic.Keys, SysList, SummaryType.Discipline, true); foreach (AutoSummaryRecord autoSummary in AutoSummaryList) { if (!Dic[autoSummary.RefStudentID].AutoSummaryDic.Contains(autoSummary)) { Dic[autoSummary.RefStudentID].AutoSummaryDic.Add(autoSummary); } } foreach (string each in Dic.Keys) { //if (Dic[each].IsCleadDmmerit()) //{ if (Dic[each].DetailAndSummary(97, 1)) { SetValue(Dic[each], 97, 1); } if (Dic[each].DetailAndSummary(97, 2)) { SetValue(Dic[each], 97, 2); } if (Dic[each].DetailAndSummary(98, 1)) { SetValue(Dic[each], 98, 1); } if (Dic[each].DetailAndSummary(98, 2)) { SetValue(Dic[each], 98, 2); } if (Dic[each].DetailAndSummary(99, 1)) { SetValue(Dic[each], 99, 1); } if (Dic[each].DetailAndSummary(99, 2)) { SetValue(Dic[each], 99, 2); } //} } //錯誤說明 StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("檢查(非明細統計)筆數:" + AutoSummaryList.Count()); strBuilder.AppendLine("檢查(非明細統計)不為0筆數:" + RATRecords.Count); strBuilder.AppendLine("具有(轉入異動)記錄之學生共" + UpdateRecordCount + "名,未列入檢查範圍!"); strBuilder.AppendLine("(非明細定義於:僅轉入生可以有值)"); var SortedRATRecords = from RATRecord in RATRecords orderby RATRecord.班級, K12.Data.Int.ParseAllowNull(RATRecord.座號), RATRecord.學年度, RATRecord.學期 select RATRecord; Message.Data = SortedRATRecords.ToList(); Message.Message = strBuilder.ToString(); if (RATRecords.Count == 0) { MsgBox.Show("未檢查到錯誤資料!!"); } return(Message); }
private void btnNext_Click(object sender, EventArgs e) { _StudUpdateRecordEntity.SetUpdateDate(dtUpdateDate.Text); _StudUpdateRecordEntity.SetComment(txtComment.Text); _StudUpdateRecordEntity.SetClassName(txtClass.Text); _StudUpdateRecordEntity.SetName(txtName.Text); _StudUpdateRecordEntity.SetIDNumber(txtIDNumber.Text); _StudUpdateRecordEntity.SetStudentNumber(txtStudentNumber.Text); _StudUpdateRecordEntity.SetGender(cboGender.Text); _StudUpdateRecordEntity.SetBirthday(dtBirthday.Text); _StudUpdateRecordEntity.SetAddress(txtAddress.Text); _StudUpdateRecordEntity.SetImportExportSchool(txtExportSchool.Text); _StudUpdateRecordEntity.SetLastADDate(dtLastADDate.Text); _StudUpdateRecordEntity.SetLastADNumber(txtLastADNumber.Text); _StudUpdateRecordEntity.SetADDate(dtADDate.Text); _StudUpdateRecordEntity.SetADNumber(txtADNumber.Text); _StudUpdateRecordEntity.SetUpdateDescription(cboUpdateDescription.Text); int intSchoolYear, intSemester; int.TryParse(JHSchool.School.DefaultSchoolYear, out intSchoolYear); int.TryParse(JHSchool.School.DefaultSemester, out intSemester); _StudUpdateRecordEntity.SchoolYear = intSchoolYear; _StudUpdateRecordEntity.Semester = intSemester; _StudUpdateRecordEntity.SetUpdateCode("3"); // 檢查相同學年度學期異動日期 List <JHUpdateRecordRecord> StudUpRecList = JHUpdateRecord.SelectByStudentID(_StudUpdateRecordEntity.StudentID); foreach (JHUpdateRecordRecord urr in StudUpRecList) { // 轉入 if (urr.UpdateCode == "3" && urr.SchoolYear == intSchoolYear && urr.Semester == intSemester) { DateTime dtA, dtB; DateTime.TryParse(urr.UpdateDate, out dtA); DateTime.TryParse(dtUpdateDate.Text, out dtB); // 相同異動日期 if (dtA == dtB) { if (FISCA.Presentation.Controls.MsgBox.Show("已有一筆相同學年度、學期、異動日期的轉入異動,請問是否覆蓋?", MessageBoxButtons.YesNo) == DialogResult.Yes) { JHUpdateRecord.Delete(urr); _StudUpdateRecordEntity.UID = string.Empty; } else { return; } } } } // Save DAL.DALTransfer2.SetStudUpdateRecordEntity(_StudUpdateRecordEntity); // log JHSchool.PermRecLogProcess prlp = new JHSchool.PermRecLogProcess(); prlp.SaveLog("學生.轉入異動", "新增轉入異動", "新增轉入異動資料,姓名:" + _StudUpdateRecordEntity.GetName() + ",學號:" + _StudUpdateRecordEntity.GetStudentNumber()); this.Close(); }