private void _loader_DoWork(object sender, DoWorkEventArgs e) { _StudUpdateRecList.Clear(); List <string> _UpdateCodeList = new List <string>(); foreach (CheckBox code in _CheckDit) { _UpdateCodeList.Add((string)code.Tag); } foreach (JHUpdateRecordRecord UpdateRec in JHUpdateRecord.SelectAll()) { DateTime UpdateDate; if (DateTime.TryParse(UpdateRec.UpdateDate, out UpdateDate)) { if (UpdateDate >= dtStart.Value.Date && UpdateDate < dtEnd.Value.AddDays(1).Date) { if (_UpdateCodeList.Contains(UpdateRec.UpdateCode)) { //檢查是否存非刪除 if (students.ContainsKey(UpdateRec.StudentID)) { _StudUpdateRecList.Add(UpdateRec); } } } } } }
public DataRationalityMessage Execute() { CorrectableUpdateRecords = JHUpdateRecord.SelectAll().Where (x => x.UpdateCode.Equals("1") && !string.IsNullOrEmpty(x.ADNumber) && !x.ADNumber.Contains("字第") ).ToList(); StudentRecords = Student.SelectByIDs(CorrectableUpdateRecords.Select(x => x.StudentID)); StringBuilder strBuilder = new StringBuilder(); DataRationalityMessage Message = new DataRationalityMessage(); var StudentUpdateRecords = CorrectableUpdateRecords.Join(StudentRecords, x => x.StudentID, y => y.ID, (x, y) => new { 學生系統編號 = y.ID, 學號 = y.StudentNumber, 身分證號 = y.IDNumber, 班級 = y.Class != null ? y.Class.Name : string.Empty, 座號 = K12.Data.Int.GetString(y.SeatNo), 姓名 = y.Name, 狀態 = y.StatusStr, 學年度 = K12.Data.Int.GetString(x.SchoolYear), 學期 = K12.Data.Int.GetString(x.Semester), 異動日期 = x.UpdateDate, 入學年月 = x.EnrollmentSchoolYear, 核准文號 = x.ADNumber, 原核准文號 = x.ADNumber.Replace("字第", "") }); CorrectableUpdateRecords.ForEach(x => x.ADNumber = x.ADNumber.ADNumberCorrect()); strBuilder.AppendLine("問題筆數:" + CorrectableUpdateRecords.Count()); if (CorrectableUpdateRecords.Count > 0) { strBuilder.AppendLine("建議修正方案:"); strBuilder.AppendLine("1.將資料匯出後於Excel上修改後,再用匯入學生新生異動功能更新。"); strBuilder.AppendLine("2.運用本合理性檢查自動修正功能,補上『字第』後更新地址。"); strBuilder.AppendLine("3.自動修正方案僅考慮在核准文號(數字)前加上字號,若您有特殊情況建議使用匯入學生新生異動功能進行更新。"); } var OrderedStudentUpdateRecords = from record in StudentUpdateRecords orderby record.狀態, record.班級, K12.Data.Int.ParseAllowNull(record.座號) select record; Message.Data = OrderedStudentUpdateRecords.ToList(); Message.Message = strBuilder.ToString(); return(Message); }
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); }