private void WriteUpdateRecord(Cell cell, JHUpdateRecordRecord record) { WordHelper.Write(cell, GetUpdateType(record), _builder); cell = cell.NextSibling as Cell; if (record.SchoolYear.HasValue) { WordHelper.Write(cell, "" + record.SchoolYear.Value, _builder); } else { DateTime dt; if (DateTime.TryParse(record.UpdateDate, out dt)) { WordHelper.Write(cell, "" + (dt.Year - 1911), _builder); } } cell = cell.NextSibling as Cell; if (record.Semester.HasValue) { WordHelper.Write(cell, "" + record.Semester.Value, _builder); } else { DateTime dt; if (DateTime.TryParse(record.UpdateDate, out dt)) { if (dt.Month > 8 && dt.Month < 3) { WordHelper.Write(cell, "1", _builder); } else { WordHelper.Write(cell, "2", _builder); } } } cell = cell.NextSibling as Cell; // 當新生異動或畢業異動使用自己學校 if (record.UpdateCode == "1" || record.UpdateCode == "2") { WordHelper.Write(cell, JHSchoolInfo.ChineseName, _builder); } else { WordHelper.Write(cell, record.ImportExportSchool, _builder); } cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.UpdateDate, _builder); cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.ADDate, _builder); cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.ADNumber, _builder); }
private string GetDesc(JHUpdateRecordRecord record) { StringBuilder builder = new StringBuilder(""); string orig = Common.CDate(record.ADDate); if (!string.IsNullOrEmpty(orig)) { builder.Append(orig.Split('/')[0] + " 年 "); builder.Append(orig.Split('/')[1] + " 月 "); builder.Append(orig.Split('/')[2] + " 日 "); builder.Append(" "); } builder.Append(record.ADNumber); return(builder.ToString()); }
private string GetUpdateType(JHUpdateRecordRecord node) { string updateType = ""; if (node.UpdateCode == "1") { updateType = "新生"; } else if (node.UpdateCode == "2") { updateType = "畢(修)業"; } else if (node.UpdateCode == "3") { updateType = "轉入"; } else if (node.UpdateCode == "4") { updateType = "轉出"; } else if (node.UpdateCode == "5") { updateType = "休學"; } else if (node.UpdateCode == "6") { updateType = "復學"; } else if (node.UpdateCode == "7") { updateType = "中輟"; } else if (node.UpdateCode == "8") { updateType = "續讀"; } else if (node.UpdateCode == "9") { updateType = "更正學籍"; } else if (node.UpdateCode == "11") { updateType = "死亡"; } return(updateType); }
private void WriteUpdateRecord(Cell cell, JHUpdateRecordRecord record) { WordHelper.Write(cell, GetUpdateType(record), _builder); cell = cell.NextSibling as Cell; if (record.SchoolYear.HasValue) WordHelper.Write(cell, "" + record.SchoolYear.Value, _builder); else { DateTime dt; if(DateTime.TryParse(record.UpdateDate, out dt)) WordHelper.Write(cell, "" + (dt.Year-1911), _builder); } cell = cell.NextSibling as Cell; if (record.Semester.HasValue) WordHelper.Write(cell, "" + record.Semester.Value, _builder); else { DateTime dt; if (DateTime.TryParse(record.UpdateDate, out dt)) { if(dt.Month >8 && dt.Month <3) WordHelper.Write(cell, "1" , _builder); else WordHelper.Write(cell, "2", _builder); } } cell = cell.NextSibling as Cell; // 當新生異動或畢業異動使用自己學校 if (record.UpdateCode == "1" ||record.UpdateCode =="2") WordHelper.Write(cell,JHSchoolInfo.ChineseName, _builder); else WordHelper.Write(cell, record.ImportExportSchool, _builder); cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.UpdateDate, _builder); cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.ADDate, _builder); cell = cell.NextSibling as Cell; WordHelper.Write(cell, record.ADNumber, _builder); }
public static void ReadUpdateRecordDate(this IEnumerable <ReportStudent> students, IStatusReporter reporter) { int t1 = Environment.TickCount; Dictionary <string, ReportStudent> dicstudents = students.ToDictionary(); List <string> keys = students.ToSC().ToKeys(); Campus.FunctionSpliter <string, JHUpdateRecordRecord> selectData = new Campus.FunctionSpliter <string, JHUpdateRecordRecord>(500, 5); selectData.Function = delegate(List <string> ps) { return(JHUpdateRecord.SelectByStudentIDs(ps)); }; List <JHUpdateRecordRecord> updaterecords = selectData.Execute(keys); Dictionary <string, List <JHUpdateRecordRecord> > dicupdaterecords = new Dictionary <string, List <JHUpdateRecordRecord> >(); string ValidCodes = "1:2"; //新生:1 轉入:3 復學:6,畢業:2 foreach (JHUpdateRecordRecord each in updaterecords) { //不是要處理的代碼,就跳過。 if (ValidCodes.IndexOf(each.UpdateCode) < 0) { continue; } if (!dicupdaterecords.ContainsKey(each.StudentID)) { dicupdaterecords.Add(each.StudentID, new List <JHUpdateRecordRecord>()); } dicupdaterecords[each.StudentID].Add(each); } foreach (KeyValuePair <string, List <JHUpdateRecordRecord> > each in dicupdaterecords) { each.Value.Sort(delegate(JHUpdateRecordRecord x, JHUpdateRecordRecord y) { DateTime xx, yy; if (!DateTime.TryParse(x.UpdateDate, out xx)) { xx = DateTime.MinValue; } if (!DateTime.TryParse(y.UpdateDate, out yy)) { yy = DateTime.MinValue; } return(xx.CompareTo(yy)); }); } string ECodes = "1"; //入學 string GCodes = "2"; //畢業 foreach (KeyValuePair <string, List <JHUpdateRecordRecord> > each in dicupdaterecords) { if (!dicstudents.ContainsKey(each.Key)) { continue; } ReportStudent student = dicstudents[each.Key]; JHUpdateRecordRecord e = each.Value[0]; JHUpdateRecordRecord g = each.Value[each.Value.Count - 1]; if (ECodes.IndexOf(e.UpdateCode) >= 0) { DateTime dt; if (DateTime.TryParse(e.UpdateDate, out dt)) { student.EntranceDate = string.Format("{0}/{1}/{2}", dt.Year - 1911, dt.Month, dt.Day); student.EngEntranceDate = dt.ToString(Util.EnglishFormat, Util.USCulture); } } if (GCodes.IndexOf(g.UpdateCode) >= 0) { DateTime dt; if (DateTime.TryParse(g.UpdateDate, out dt)) { student.GraduateDate = string.Format("{0}/{1}/{2}", dt.Year - 1911, dt.Month, dt.Day); student.EngGraduateDate = dt.ToString(Util.EnglishFormat, Util.USCulture); } } } Console.WriteLine(Environment.TickCount - t1); }
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.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 == "2") { 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; CheckHasData = false; foreach (string field in e.SelectFields) { string value = e.Data[field].Trim(); //// 驗證$無法匯入 //if (value.IndexOf('$') > -1) //{ // e.ErrorFields.Add(field, "儲存格有$無法匯入."); // break; //} // 檢查系統內是否已經有畢業異動 if (CheckHasData == false) { if (UpdateRecs.ContainsKey(e.Data.ID)) { if (UpdateRecs[e.Data.ID].Count > 0) { e.WarningFields.Add(field, "系統內已有畢業異動,匯入將會取代系統內畢業異動"); CheckHasData = true; } } } switch (field) { default: break; //case "異動類別": // if (value != "畢業") // { // InputFormatPass &= false; // e.ErrorFields.Add(field, "必須填入畢業"); // } // if (value == "畢業") // { // if (UpdateRecs.ContainsKey(e.Data.ID)) // if (UpdateRecs[e.Data.ID].Count > 0) // { // e.WarningFields.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 "異動日期": if (string.IsNullOrEmpty(value) || DateTime.TryParse(value, out dt) == false) { InputFormatPass &= false; e.ErrorFields.Add(field, "必須填入日期,例如2009/1/1"); } break; case "入學年月": int.TryParse(value, out i); if (!string.IsNullOrEmpty(value) && i < 1) { e.WarningFields.Add(field, "必須填入年月格式,例如200901"); } break; case "畢業年月": int.TryParse(value, out i); if (!string.IsNullOrEmpty(value) && i < 1) { e.WarningFields.Add(field, "必須填入年月格式,例如200901"); } 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; } } }; 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>(); List <JHUpdateRecordRecord> DelList = 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["異動年級"]; } JHUpdateRecordRecord updateRec = null; foreach (JHUpdateRecordRecord urr in UpdateRecs[id]) { if (urr.UpdateCode == "2") { DelList.Add(urr); } //if (urr.SchoolYear == schoolYear && urr.Semester == Semester && urr.GradeYear == GrYear) //{ // DateTime dt1; // DateTime.TryParse(urr.UpdateDate, out dt1); // if (dt == dt1) // updateRec = urr; //} } bool isInsert = true; if (updateRec == null) { updateRec = new JHUpdateRecordRecord(); updateRec.StudentID = id; } else { isInsert = false; } updateRec.UpdateCode = "2"; // 當已經有畢業異動使用新增方式 if (CheckHasData) { isInsert = true; } bool checkData = false; foreach (string field in e.ImportFields) { string value = data[field].Trim(); switch (field) { //case "異動類別": // if (value == "畢業") // { // updateRec.UpdateCode = "2"; // checkData = true; // } // 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 "入學年月": if (string.IsNullOrEmpty(value)) { updateRec.EnrollmentSchoolYear = string.Empty; } else { updateRec.EnrollmentSchoolYear = value; } break; case "畢業年月": if (string.IsNullOrEmpty(value)) { updateRec.GraduateSchoolYear = string.Empty; } else { updateRec.GraduateSchoolYear = value; } break; case "畢修業別": updateRec.Graduate = value; 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.GraduateCertificateNumber = value; break; case "畢(結)業證書字號": updateRec.GraduateCertificateNumber = value; break; case "異動班級": updateRec.OriginClassName = value; break; case "異動姓名": updateRec.StudentName = value; break; case "異動身分證號": updateRec.IDNumber = value; break; case "異動出生地": updateRec.BirthPlace = 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 "核准日期": DateTime dtAd; if (DateTime.TryParse(value, out dtAd)) { updateRec.ADDate = dtAd.ToShortDateString(); } break; case "核准文號": updateRec.ADNumber = value; break; } } 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 (DelList.Count > 0) { Delete(DelList); } 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 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) { } }; }
private string GetUpdateType(JHUpdateRecordRecord node) { string updateType = ""; if (node.UpdateCode == "1") updateType = "新生"; else if (node.UpdateCode == "2") updateType = "畢(修)業"; else if (node.UpdateCode == "3") updateType = "轉入"; else if (node.UpdateCode == "4") updateType = "轉出"; else if (node.UpdateCode == "5") updateType = "休學"; else if (node.UpdateCode == "6") updateType = "復學"; else if (node.UpdateCode == "7") updateType = "中輟"; else if (node.UpdateCode == "8") updateType = "續讀"; else if (node.UpdateCode == "9") updateType = "更正學籍"; return updateType; }
private string GetDesc(JHUpdateRecordRecord node) { string updateDesc = ""; // 用異動代碼長度判斷國高中 if (node.UpdateCode.Length > 2) { // 高中 updateDesc = node.UpdateDescription; } else { // 國中 if (node.UpdateCode == "1") { updateDesc = "新生"; } if (node.UpdateCode == "2") { if (node.Graduate == "修業") { updateDesc = "修業"; } else { updateDesc = "畢業"; } } if (node.UpdateCode == "3") { updateDesc = "轉入"; } if (node.UpdateCode == "4") { updateDesc = "轉出"; } if (node.UpdateCode == "5") { updateDesc = "休學"; } if (node.UpdateCode == "6") { updateDesc = "復學"; } if (node.UpdateCode == "7") { updateDesc = "中輟"; } if (node.UpdateCode == "8") { updateDesc = "續讀"; } if (node.UpdateCode == "9") { updateDesc = "更正學籍"; } if (node.UpdateCode == "10") { updateDesc = "延長修業年限"; } if (node.UpdateCode == "11") { updateDesc = "死亡"; } if (node.UpdateDescription.Length > 0) { updateDesc += ":" + node.UpdateDescription; } } return(updateDesc); }