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);
        }
Example #3
0
        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);
        }