public DataRationalityMessage Execute() { DataRationalityMessage retMsg = new DataRationalityMessage(); // 取得所有學生資料 Dictionary<string,StudentRecord> studIDDict = new Dictionary<string,StudentRecord> (); List<StudentRecord> studRecList = Student.SelectAll(); foreach (StudentRecord stud in studRecList) studIDDict.Add(stud.ID, stud); // 取得學生自訂欄位資料 List<UserDefineData.DAL.UserDefData> UserDefDataList = UDTTransfer.GetDataFromUDT(studIDDict.Keys.ToList()); // 檢查資料並組合 Dictionary<string, Dictionary<string, List<UserDefineData.DAL.UserDefData>>> dataDict = new Dictionary<string, Dictionary<string, List<DAL.UserDefData>>>(); foreach (UserDefineData.DAL.UserDefData data in UserDefDataList) { if (!dataDict.ContainsKey(data.RefID)) dataDict.Add(data.RefID, new Dictionary<string,List<DAL.UserDefData>>()); if (!dataDict[data.RefID].ContainsKey(data.FieldName)) dataDict[data.RefID].Add(data.FieldName, new List<DAL.UserDefData>()); dataDict[data.RefID][data.FieldName].Add(data); } CorrectableRecs.Clear(); RATRecs.Clear(); try { foreach (string sid in dataDict.Keys) { Dictionary<string, List<UserDefineData.DAL.UserDefData>> dataA = dataDict[sid]; foreach (List<UserDefineData.DAL.UserDefData> data in dataA.Values) { // 有重複 if (data.Count > 1) { foreach (UserDefineData.DAL.UserDefData data1 in data) { DoubleUserDefDataRATRec rec = new DoubleUserDefDataRATRec(); rec.UID = data1.UID; rec.學生系統編號 = data1.RefID; rec.欄位名稱 = data1.FieldName; rec.值 = data1.Value; if (studIDDict.ContainsKey(data1.RefID)) { rec.身分證號 = studIDDict[data1.RefID].IDNumber; rec.姓名 = studIDDict[data1.RefID].Name; rec.狀態 = studIDDict[data1.RefID].Status.ToString(); rec.學號 = studIDDict[data1.RefID].StudentNumber; if (studIDDict[data1.RefID].SeatNo.HasValue) rec.座號 = studIDDict[data1.RefID].SeatNo.Value.ToString(); else rec.座號 = ""; if (studIDDict[data1.RefID].Class != null) rec.班級 = studIDDict[data1.RefID].Class.Name; else rec.班級 = ""; } RATRecs.Add(rec); CorrectableRecs.Add(data1); } } } } } catch (Exception ex) { retMsg.Message = ex.Message; return retMsg; } StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("檢查學生自訂欄位資料筆數:" + UserDefDataList.Count); strBuilder.AppendLine("自訂欄位資料有重複筆數:" + RATRecs.Count); var SortedRATRecords = from RATRecord in RATRecs orderby RATRecord.狀態, RATRecord.班級, K12.Data.Int.ParseAllowNull(RATRecord.座號), RATRecord.欄位名稱, RATRecord.值 select RATRecord; retMsg.Message = strBuilder.ToString(); retMsg.Data = SortedRATRecords.ToList(); return retMsg; }
public DataRationalityMessage Execute() { DataRationalityMessage retMsg = new DataRationalityMessage(); // 取得所有學生資料 Dictionary <string, StudentRecord> studIDDict = new Dictionary <string, StudentRecord> (); List <StudentRecord> studRecList = Student.SelectAll(); foreach (StudentRecord stud in studRecList) { studIDDict.Add(stud.ID, stud); } // 取得學生自訂欄位資料 List <UserDefineData.DAL.UserDefData> UserDefDataList = UDTTransfer.GetDataFromUDT(studIDDict.Keys.ToList()); // 檢查資料並組合 Dictionary <string, Dictionary <string, List <UserDefineData.DAL.UserDefData> > > dataDict = new Dictionary <string, Dictionary <string, List <DAL.UserDefData> > >(); foreach (UserDefineData.DAL.UserDefData data in UserDefDataList) { if (!dataDict.ContainsKey(data.RefID)) { dataDict.Add(data.RefID, new Dictionary <string, List <DAL.UserDefData> >()); } if (!dataDict[data.RefID].ContainsKey(data.FieldName)) { dataDict[data.RefID].Add(data.FieldName, new List <DAL.UserDefData>()); } dataDict[data.RefID][data.FieldName].Add(data); } CorrectableRecs.Clear(); RATRecs.Clear(); try { foreach (string sid in dataDict.Keys) { Dictionary <string, List <UserDefineData.DAL.UserDefData> > dataA = dataDict[sid]; foreach (List <UserDefineData.DAL.UserDefData> data in dataA.Values) { // 有重複 if (data.Count > 1) { foreach (UserDefineData.DAL.UserDefData data1 in data) { DoubleUserDefDataRATRec rec = new DoubleUserDefDataRATRec(); rec.UID = data1.UID; rec.學生系統編號 = data1.RefID; rec.欄位名稱 = data1.FieldName; rec.值 = data1.Value; if (studIDDict.ContainsKey(data1.RefID)) { rec.身分證號 = studIDDict[data1.RefID].IDNumber; rec.姓名 = studIDDict[data1.RefID].Name; rec.狀態 = studIDDict[data1.RefID].Status.ToString(); rec.學號 = studIDDict[data1.RefID].StudentNumber; if (studIDDict[data1.RefID].SeatNo.HasValue) { rec.座號 = studIDDict[data1.RefID].SeatNo.Value.ToString(); } else { rec.座號 = ""; } if (studIDDict[data1.RefID].Class != null) { rec.班級 = studIDDict[data1.RefID].Class.Name; } else { rec.班級 = ""; } } RATRecs.Add(rec); CorrectableRecs.Add(data1); } } } } } catch (Exception ex) { retMsg.Message = ex.Message; return(retMsg); } StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("檢查學生自訂欄位資料筆數:" + UserDefDataList.Count); strBuilder.AppendLine("自訂欄位資料有重複筆數:" + RATRecs.Count); var SortedRATRecords = from RATRecord in RATRecs orderby RATRecord.狀態, RATRecord.班級, K12.Data.Int.ParseAllowNull(RATRecord.座號), RATRecord.欄位名稱, RATRecord.值 select RATRecord; retMsg.Message = strBuilder.ToString(); retMsg.Data = SortedRATRecords.ToList(); return(retMsg); }