Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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) {}
            };
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 9
0
        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);
        }