/// <summary>
        /// 開始進行志願序資料整合
        /// </summary>
        public void 開始進行志願序資料整合()
        {
            //整理志願序資料
            foreach (OnlineVolunteer each in VolunteerList)
            {
                if (StudentDic.ContainsKey(each.RefStudentId))
                {
                    //學生
                    OnlineStudent OnlineStud = StudentDic[each.RefStudentId];

                    if (!string.IsNullOrEmpty(each.Content))
                    {
                        XmlElement xml        = DSXmlHelper.LoadXml(each.Content);
                        int        ClubNumber = 1;
                        foreach (XmlElement node in xml.SelectNodes("Club"))
                        {
                            if (node.GetAttribute("Index") == ClubNumber.ToString())
                            {
                                string clubID = node.GetAttribute("Ref_Club_ID");
                                if (ClubDic.ContainsKey(clubID))
                                {
                                    //社團
                                    OnlineClub OnlineClub = ClubDic[clubID];
                                    if (!OnlineStud.VolunteerList.ContainsKey(ClubNumber))
                                    {
                                        OnlineStud.VolunteerList.Add(ClubNumber, OnlineClub);
                                    }
                                }
                            }
                            ClubNumber++;
                        }
                    }
                }
            }
        }
        public void SetSLRInStudent(SLRecord slr)
        {
            if (StudentDic.ContainsKey(slr.RefStudentID))
            {
                string sKey = slr.SchoolYear + "/" + slr.Semester;
                Dictionary <string, decimal> SLRDic = StudentDic[slr.RefStudentID].SLRDic;

                // 假如找到同一個學年度跟學期, 就把服務時間加總
                if (SLRDic.ContainsKey(sKey))
                {
                    SLRDic[sKey] += slr.Hours;
                }
                // 沒有找到同一個學年度跟學期, 就把資料新增進去
                else
                {
                    SLRDic.Add(sKey, slr.Hours);
                }

                // 所有學生的學年度跟學期的聯集
                if (!this.SLRSchoolYearSemesterDic.ContainsKey(sKey))
                {
                    this.SLRSchoolYearSemesterDic.Add(sKey, 0);
                }
            }
        }
Пример #3
0
 private void Increase(Dictionary <string, 一個社團檢查> CLUBCheckDic, Dictionary <string, SCJoin> SCJLockDic)
 {
     foreach (SCJoin stud in SCJLockDic.Values)
     {
         if (CLUBCheckDic.ContainsKey(stud.RefClubID))
         {
             if (StudentDic.ContainsKey(stud.RefStudentID))
             {
                 一個社團檢查 c = CLUBCheckDic[stud.RefClubID];
                 一名學生   s = StudentDic[stud.RefStudentID];
                 SetClubGradeYearCount(c, s, true);
             }
         }
     }
 }
Пример #4
0
        void BGW_DoWork(object sender, DoWorkEventArgs e)
        {
            ClubDic = GetClubDic();

            List <SCJoin> SCJoin = _AccessHelper.Select <SCJoin>(UDT_S.PopOneCondition("ref_club_id", ClubDic.Values.ToList().Select(X => X.UID).ToList()));

            StudentDic = GetStudentDic(SCJoin);

            //主要資料內容
            DataDic = new Dictionary <string, StudRepeatObj>();

            //建立學生容器
            foreach (SCJoin each in SCJoin)
            {
                if (!DataDic.ContainsKey(each.RefStudentID))
                {
                    if (StudentDic.ContainsKey(each.RefStudentID))
                    {
                        StudRepeatObj sr = new StudRepeatObj(StudentDic[each.RefStudentID]);
                        sr._SCJoinList.Add(each);

                        DataDic.Add(each.RefStudentID, sr);
                    }
                }
                else
                {
                    DataDic[each.RefStudentID]._SCJoinList.Add(each);
                }
            }


            //依據資料內容呈現在畫面上

            List <StudRepeatObj> list = new List <StudRepeatObj>();

            foreach (string each in DataDic.Keys)
            {
                if (DataDic[each]._SCJoinList.Count > 1)
                {
                    list.Add(DataDic[each]);
                }
            }

            e.Result = list;
        }
Пример #5
0
        /// <summary>
        /// 傳入分配
        /// </summary>
        private bool Allocation(學生選社亂數檔 ran, int NumberIndex)
        {
            //社團選社資料
            VolunteerRecord vr = ran._record;

            XmlElement xml = XmlHelper.LoadXml(vr.Content);

            //每一個社團
            foreach (XmlElement each in xml.SelectNodes("Club"))
            {
                int index = 0;
                int.TryParse(each.GetAttribute("Index"), out index);
                //當進行第一輪志願分配時
                if (index != NumberIndex)
                {
                    continue;
                }

                string clubID    = each.GetAttribute("Ref_Club_ID");
                string StudentID = vr.RefStudentID;

                //2013/4/8號
                //需建立一個ClubCount字典
                //覆蓋 - 把本期除了鎖定學生之社團記錄清除
                //略過 - 本期的社團記錄不予更動

                //1.須檢查目前系統是否有要加入的社團(例如該社團被選社後刪除)
                //2.目前此社團是否已額滿或目前社團人數為可加入狀態
                if (!CLUBDic.ContainsKey(clubID))
                {
                    continue;
                }

                //不存在社團記錄,表示可以新增
                if (!SCJLockDic.ContainsKey(StudentID))
                {
                    #region  存在社團記錄,表示可以新增
                    SCJoin scj = new SCJoin();
                    一個社團檢查 一社團 = CLUBCheckDic[clubID];

                    if (!一社團.人數未滿)
                    {
                        if (StudentDic.ContainsKey(StudentID))
                        {
                            一名學生 一學生 = StudentDic[StudentID];
                            sb_Log.AppendLine(string.Format("序號「{0}」班級「{1}」學生「{2}」開始進行第「{3}」志願分配", ran._Index, 一學生.class_name, 一學生.student_name, NumberIndex.ToString()));
                            sb_Log.AppendLine(string.Format("分配失敗原因:社團「{0}」人數已滿", 一社團._ClubObj.ClubName));
                            sb_Log.AppendLine("");
                            return(false);
                        }
                    }

                    if (StudentDic.ContainsKey(StudentID))
                    {
                        一名學生 一學生 = StudentDic[StudentID];
                        //序號「{0}」  ran._Index
                        sb_Log.AppendLine(string.Format("序號「{0}」班級「{1}」學生「{2}」開始進行第「{3}」志願分配", ran._Index, 一學生.class_name, 一學生.student_name, NumberIndex.ToString()));

                        //你必須是本社團科別限制之學生
                        //Count大於0,表示有科別限制
                        if (一社團.DeptList.Count > 0)
                        {
                            if (!一社團.DeptList.Contains(一學生.dept_name))
                            {
                                sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」受到科別限制「{1}」", 一社團._ClubObj.ClubName, 一學生.dept_name));
                                sb_Log.AppendLine("");
                                //本社團選社失敗
                                continue;
                            }
                        }

                        if (一社團.男女限制 == 一學生.gender || 一社團.男女限制 == GetVolunteerData.男女.限制)
                        {
                            if (一學生.grade_year == "1" || 一學生.grade_year == "7" || 一學生.grade_year == "10")
                            {
                                if (一社團.一年級未滿)
                                {
                                    scj.RefClubID    = clubID;
                                    scj.RefStudentID = StudentID;

                                    一社團._Now_ClubStudentCount++;
                                    一社團._Now_GradeYear1++;

                                    sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                    sb_Log.AppendLine("");
                                    InsertList1.Add(scj);
                                    return(true);
                                }
                                else
                                {
                                    sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                    sb_Log.AppendLine("");
                                }
                            }
                            else if (一學生.grade_year == "2" || 一學生.grade_year == "8" || 一學生.grade_year == "11")
                            {
                                if (一社團.二年級未滿)
                                {
                                    scj.RefClubID    = clubID;
                                    scj.RefStudentID = StudentID;

                                    一社團._Now_ClubStudentCount++;
                                    一社團._Now_GradeYear2++;

                                    sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                    sb_Log.AppendLine("");
                                    InsertList1.Add(scj);
                                    return(true);
                                }
                                else
                                {
                                    sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                    sb_Log.AppendLine("");
                                }
                            }
                            else if (一學生.grade_year == "3" || 一學生.grade_year == "9" || 一學生.grade_year == "12")
                            {
                                if (一社團.年級未滿)
                                {
                                    scj.RefClubID    = clubID;
                                    scj.RefStudentID = StudentID;

                                    一社團._Now_ClubStudentCount++;
                                    一社團._Now_GradeYear3++;

                                    sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                    sb_Log.AppendLine("");
                                    InsertList1.Add(scj);
                                    return(true);
                                }
                                else
                                {
                                    sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                    sb_Log.AppendLine("");
                                }
                            }
                            else
                            {
                                sb_Log.AppendLine(string.Format("分配社團「{0}」失敗,未符合年級設定", 一社團._ClubObj.ClubName));
                                sb_Log.AppendLine("");
                            }
                        }
                        else
                        {
                            sb_Log.AppendLine(string.Format("分配社團「{0}」失敗,未符合男女限制「{1}」", 一社團._ClubObj.ClubName, 一社團.男女限制));
                            sb_Log.AppendLine("");
                        }
                    }
                    #endregion
                }
                else //已存在,要判斷是覆蓋還是略過
                {
                    #region 已存在,要判斷是覆蓋還是略過
                    //已有社團記錄時 - 覆蓋
                    if (By_V.已有社團記錄時)
                    {
                        #region 覆蓋
                        SCJoin scj_del = SCJLockDic[StudentID];

                        if (!scj_del.Lock)
                        {
                            #region 未鎖定
                            //新增一筆資料
                            SCJoin scj = new SCJoin();

                            //因為覆蓋所以 - 列入刪除
                            if (!DeleteList.Contains(scj_del))
                            {
                                DeleteList.Add(scj_del);
                            }

                            一個社團檢查 一社團 = CLUBCheckDic[clubID];
                            if (!一社團.人數未滿)
                            {
                                if (StudentDic.ContainsKey(StudentID))
                                {
                                    一名學生 一學生 = StudentDic[StudentID];
                                    sb_Log.AppendLine(string.Format("序號「{0}」班級「{1}」學生「{2}」開始進行第「{3}」志願分配", ran._Index, 一學生.class_name, 一學生.student_name, NumberIndex.ToString()));
                                    sb_Log.AppendLine(string.Format("分配失敗原因:社團「{0}」人數已滿", 一社團._ClubObj.ClubName));
                                    sb_Log.AppendLine("");
                                    return(false);
                                }
                            }

                            if (StudentDic.ContainsKey(StudentID))
                            {
                                一名學生 一學生 = StudentDic[StudentID];

                                string clubName = "";
                                if (CLUBDic.ContainsKey(scj_del.RefClubID))
                                {
                                    clubName = CLUBDic[scj_del.RefClubID].ClubName;
                                }
                                //序號「{0}」  ran._Index
                                sb_Log.AppendLine(string.Format("序號「{0}」班級「{1}」學生「{2}」開始進行第「{3}」志願分配", ran._Index, 一學生.class_name, 一學生.student_name, NumberIndex.ToString()));
                                sb_Log.AppendLine(string.Format("已是社團「{0}」參與學生,因「未被鎖定」將進行重新分配", clubName));

                                //你必須是本社團科別限制之學生
                                //Count大於0,表示有科別限制
                                if (一社團.DeptList.Count > 0)
                                {
                                    if (!一社團.DeptList.Contains(一學生.dept_name))
                                    {
                                        sb_Log.AppendLine(string.Format("社團「{0}」分配失敗!原因:志願「{1}」受到科別限制「{2}」", 一社團._ClubObj.ClubName, NumberIndex, 一學生.dept_name));
                                        sb_Log.AppendLine("");
                                        //本社團選社失敗
                                        continue;
                                    }
                                }

                                if (一社團.男女限制 == 一學生.gender || 一社團.男女限制 == GetVolunteerData.男女.限制)
                                {
                                    if (一學生.grade_year == "1" || 一學生.grade_year == "7" || 一學生.grade_year == "10")
                                    {
                                        if (一社團.一年級未滿)
                                        {
                                            scj.RefStudentID = StudentID;
                                            scj.RefClubID    = clubID;

                                            一社團._Now_ClubStudentCount++;
                                            一社團._Now_GradeYear1++;

                                            InsertList2.Add(scj);

                                            sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                            sb_Log.AppendLine("");

                                            return(true);
                                        }
                                        else
                                        {
                                            sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                            sb_Log.AppendLine("");
                                        }
                                    }
                                    else if (一學生.grade_year == "2" || 一學生.grade_year == "8" || 一學生.grade_year == "11")
                                    {
                                        if (一社團.二年級未滿)
                                        {
                                            scj.RefStudentID = StudentID;
                                            scj.RefClubID    = clubID;

                                            一社團._Now_ClubStudentCount++;
                                            一社團._Now_GradeYear2++;

                                            InsertList2.Add(scj);

                                            sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                            sb_Log.AppendLine("");
                                            return(true);
                                        }
                                        else
                                        {
                                            sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                            sb_Log.AppendLine("");
                                        }
                                    }
                                    else if (一學生.grade_year == "3" || 一學生.grade_year == "9" || 一學生.grade_year == "12")
                                    {
                                        if (一社團.年級未滿)
                                        {
                                            scj.RefStudentID = StudentID;
                                            scj.RefClubID    = clubID;

                                            一社團._Now_ClubStudentCount++;
                                            一社團._Now_GradeYear3++;

                                            sb_Log.AppendLine(string.Format("已入選社團「{0}」", 一社團._ClubObj.ClubName));
                                            sb_Log.AppendLine("");

                                            InsertList2.Add(scj);
                                            return(true);
                                        }
                                        else
                                        {
                                            sb_Log.AppendLine(string.Format("分配失敗原因:志願「{0}」年級「{1}」人數已滿", 一社團._ClubObj.ClubName, 一學生.grade_year));
                                            sb_Log.AppendLine("");
                                        }
                                    }
                                    else
                                    {
                                        sb_Log.AppendLine(string.Format("分配社團「{0}」失敗,未符合年級設定", 一社團._ClubObj.ClubName));
                                        sb_Log.AppendLine("");
                                    }
                                }
                                else
                                {
                                    sb_Log.AppendLine(string.Format("分配社團「{0}」失敗,未符合男女限制「{1}」", 一社團._ClubObj.ClubName, 一社團.男女限制));
                                    sb_Log.AppendLine("");
                                }
                            }
                            #endregion
                        }
                        else
                        {
                            //取得社團記錄
                            SCJoin scj = SCJLockDic[StudentID];

                            string clubName = "";
                            if (CLUBDic.ContainsKey(scj.RefClubID))
                            {
                                clubName = CLUBDic[scj_del.RefClubID].ClubName;
                            }
                            // 2018/03/08 羿均 同步code
                            //2017/9/1 - 修正Bug
                            //這是多餘的程式邏輯 - By Dylan
                            if (StudentDic.ContainsKey(StudentID))
                            {
                                一名學生 一學生 = StudentDic[StudentID];
                                //序號「{0}」  ran._Index
                                sb_Log.AppendLine(string.Format("序號「{0}」班級「{1}」學生「{2}」開始進行第「{3}」志願分配", ran._Index, 一學生.class_name, 一學生.student_name, NumberIndex.ToString()));
                                sb_Log.AppendLine(string.Format("已是社團「{0}」鎖定學生,將不變更社團", clubName));
                                sb_Log.AppendLine("");

                                return(true);
                            }
                            #region 鎖定
                            //一個社團檢查 一社團 = CLUBCheckDic[scj_del.RefClubID];

                            //if (StudentDic.ContainsKey(StudentID))
                            //{
                            //    一名學生 一學生 = StudentDic[StudentID];

                            //    if (一學生.grade_year == "1" || 一學生.grade_year == "7" || 一學生.grade_year == "10")
                            //    {
                            //        一社團._Now_ClubStudentCount++;
                            //        一社團._Now_GradeYear1++;
                            //        return true;

                            //    }
                            //    else if (一學生.grade_year == "2" || 一學生.grade_year == "8" || 一學生.grade_year == "11")
                            //    {
                            //        一社團._Now_ClubStudentCount++;
                            //        一社團._Now_GradeYear2++;
                            //        return true;

                            //    }
                            //    else if (一學生.grade_year == "3" || 一學生.grade_year == "9" || 一學生.grade_year == "12")
                            //    {
                            //        一社團._Now_ClubStudentCount++;
                            //        一社團._Now_GradeYear3++;
                            //        return true;

                            //    }
                            //}
                            #endregion
                        }
                        #endregion
                    }
                    else
                    {
                        //2017/9/1 - 修正Bug
                        //這是多餘的程式邏輯 - By Dylan
                        #region 略過
                        //取得社團記錄
                        SCJoin scj = SCJLockDic[StudentID];

                        string clubName = "";
                        if (CLUBDic.ContainsKey(scj.RefClubID))
                        {
                            clubName = CLUBDic[scj.RefClubID].ClubName;
                        }

                        if (StudentDic.ContainsKey(StudentID))
                        {
                            一名學生 一學生 = StudentDic[StudentID];

                            //序號「{0}」  ran._Index
                            sb_Log.AppendLine(string.Format("目前設定:「略過」已入選學生,序號「{0}」學生「{1}」社團「{2}」將不變更", ran._Index, 一學生.student_name, clubName));
                            sb_Log.AppendLine("");

                            return(true);

                            //if (一學生.grade_year == "1" || 一學生.grade_year == "7" || 一學生.grade_year == "10")
                            //{
                            //    一社團._Now_ClubStudentCount++;
                            //    一社團._Now_GradeYear1++;
                            //    return true;

                            //}
                            //else if (一學生.grade_year == "2" || 一學生.grade_year == "8" || 一學生.grade_year == "11")
                            //{
                            //    一社團._Now_ClubStudentCount++;
                            //    一社團._Now_GradeYear2++;
                            //    return true;

                            //}
                            //else if (一學生.grade_year == "3" || 一學生.grade_year == "9" || 一學生.grade_year == "12")
                            //{
                            //    一社團._Now_ClubStudentCount++;
                            //    一社團._Now_GradeYear3++;
                            //    return true;

                            //}
                        }
                        #endregion
                    }
                    #endregion
                }
            }
            //選社失敗
            return(false);
        }
Пример #6
0
        public Dictionary <string, int> GetMerit(List <一名學生> StudentList)
        {
            //取得學生ID
            StudentDic = GetStudentIDList(StudentList);

            //取得獎懲資料
            List <MeritRecord>   MeritList   = Merit.SelectByStudentIDs(StudentDic.Keys);
            List <DemeritRecord> DemeritList = Demerit.SelectByStudentIDs(StudentDic.Keys);

            //取得功過相抵換算值
            _Reduce = K12.Data.MeritDemeritReduce.Select();


            foreach (MeritRecord mr in MeritList)
            {
                if (StudentDic.ContainsKey(mr.RefStudentID))
                {
                    int studINT = 0;

                    int a = mr.MeritA.HasValue ? mr.MeritA.Value : 0;
                    int b = mr.MeritB.HasValue ? mr.MeritB.Value : 0;
                    int c = mr.MeritC.HasValue ? mr.MeritC.Value : 0;

                    if (_Reduce.MeritAToMeritB.HasValue)
                    {
                        int aa = a * _Reduce.MeritAToMeritB.Value;
                        studINT += aa * _Reduce.MeritBToMeritC.Value;
                    }

                    if (_Reduce.MeritBToMeritC.HasValue)
                    {
                        studINT += b * _Reduce.MeritBToMeritC.Value;
                    }

                    studINT += c;

                    StudentDic[mr.RefStudentID] += studINT;
                }
            }

            foreach (DemeritRecord mr in DemeritList)
            {
                if (mr.Cleared == "是") //銷過資料則離開
                {
                    continue;
                }

                if (mr.MeritFlag == "2") //留查資料則離開
                {
                    continue;
                }

                if (StudentDic.ContainsKey(mr.RefStudentID))
                {
                    int studINT = 0;

                    int a = mr.DemeritA.HasValue ? mr.DemeritA.Value : 0;
                    int b = mr.DemeritB.HasValue ? mr.DemeritB.Value : 0;
                    int c = mr.DemeritC.HasValue ? mr.DemeritC.Value : 0;

                    if (_Reduce.MeritAToMeritB.HasValue)
                    {
                        int aa = a * _Reduce.MeritAToMeritB.Value;
                        studINT += aa * _Reduce.MeritBToMeritC.Value;
                    }

                    if (_Reduce.MeritBToMeritC.HasValue)
                    {
                        studINT += b * _Reduce.MeritBToMeritC.Value;
                    }

                    studINT += c;

                    StudentDic[mr.RefStudentID] -= studINT;
                }
            }

            return(StudentDic);
        }
        public override string Import(List <Campus.DocumentValidator.IRowStream> Rows)
        {
            if (mOption.Action == ImportAction.InsertOrUpdate)
            {
                List <BodyTmperature> InsertList = new List <BodyTmperature>();
                List <BodyTmperature> UpdateList = new List <BodyTmperature>();

                //學號:學生紀錄
                GetStudentByNumber(Rows);

                GetBodyTmperature();

                foreach (IRowStream Row in Rows)
                {
                    string studentNumber      = Row.GetValue("學號");
                    string body_tag           = Row.GetValue("對象");
                    string category           = Row.GetValue("類別");
                    string measurement_method = Row.GetValue("量測方式");
                    string location           = Row.GetValue("地點");
                    string remark             = Row.GetValue("備註");

                    DateTime occurDate;
                    DateTime.TryParse("" + Row.GetValue("量測日期"), out occurDate);

                    double body_temperature;
                    double.TryParse("" + Row.GetValue("體溫"), out body_temperature);

                    //學生是否存在
                    if (StudentByNumberDic.ContainsKey(studentNumber))
                    {
                        StudRecord stud = StudentByNumberDic[studentNumber];

                        //學號 + 類別 + 日期
                        string name_key = studentNumber + "_" + category + "_" + occurDate.ToString("yyyy/MM/dd");;

                        if (BodyTmperatureDic.ContainsKey(name_key))
                        {
                            //更新,取得原檔
                            BodyTmperature body_tmperature = BodyTmperatureDic[name_key];

                            //20202/3/24 - 建立修改前的副本內容
                            body_tmperature.NowClone();

                            //類別
                            body_tmperature.BodyTag           = "Student";
                            body_tmperature.Category          = category;
                            body_tmperature.BodyTemperature   = body_temperature;
                            body_tmperature.MeasurementMethod = measurement_method;
                            body_tmperature.Location          = location;
                            body_tmperature.Remark            = remark;


                            //證書日期
                            if (occurDate != null)
                            {
                                body_tmperature.OccurDate = occurDate;
                            }

                            UpdateList.Add(body_tmperature);
                        }
                        else
                        {
                            //新增
                            BodyTmperature body_tmperature = new BodyTmperature();
                            if (occurDate != null)
                            {
                                body_tmperature.OccurDate = occurDate;
                            }

                            body_tmperature.BodyTag           = "Student";
                            body_tmperature.Category          = category;
                            body_tmperature.BodyTemperature   = body_temperature;
                            body_tmperature.MeasurementMethod = measurement_method;
                            body_tmperature.Location          = location;
                            body_tmperature.Remark            = remark;

                            body_tmperature.ObjID = int.Parse(stud.id);

                            InsertList.Add(body_tmperature);
                        }
                    }
                }

                if (InsertList.Count > 0)
                {
                    tool._A.InsertValues(InsertList);

                    StringBuilder sb_log_new = new StringBuilder();
                    sb_log_new.AppendLine("新增學生體溫紀錄");

                    foreach (BodyTmperature each in InsertList)
                    {
                        if (StudentDic.ContainsKey(each.ObjID.ToString()))
                        {
                            StudRecord stud = StudentDic[each.ObjID.ToString()];
                            sb_log_new.AppendLine(string.Format("班級「{0}」座號「{1}」學生「{2}」", stud.class_name, stud.seat_no, stud.name));
                            sb_log_new.AppendLine("對象「學生」");
                            sb_log_new.AppendLine("類別「" + each.Category + "」");
                            sb_log_new.AppendLine("量測日期「" + each.OccurDate.ToString("yyyy/MM/dd") + "」");

                            sb_log_new.AppendLine("體溫「" + each.BodyTemperature + "」");
                            sb_log_new.AppendLine("量測方式「" + each.MeasurementMethod + "」");
                            sb_log_new.AppendLine("地點「" + each.Location + "」");
                            sb_log_new.AppendLine("備註「" + each.Remark + "」");
                            sb_log_new.AppendLine("");
                        }
                    }
                    FISCA.LogAgent.ApplicationLog.Log("匯入學生體溫紀錄", "新增", sb_log_new.ToString());
                }

                if (UpdateList.Count > 0)
                {
                    tool._A.UpdateValues(UpdateList);

                    StringBuilder sb_log_update = new StringBuilder();
                    sb_log_update.AppendLine("更新學生體溫紀錄");
                    foreach (BodyTmperature each in UpdateList)
                    {
                        if (StudentDic.ContainsKey(each.ObjID.ToString()))
                        {
                            StudRecord stud = StudentDic[each.ObjID.ToString()];

                            StringBuilder sb_aing = new StringBuilder();
                            bool          change  = false;

                            sb_aing.AppendLine(string.Format("班級「{0}」座號「{1}」學生「{2}」", stud.class_name, stud.seat_no, stud.name));
                            sb_aing.AppendLine(string.Format("日期「{0}」", each.OccurDate.ToString("yyyy/MM/dd")));

                            if (each.bt.BodyTemperature != each.BodyTemperature)
                            {
                                change = true;
                                sb_aing.AppendLine("體溫紀錄由「" + each.bt.BodyTemperature + "」修改為「" + each.BodyTemperature + "」");
                            }

                            if (each.bt.Location != each.Location)
                            {
                                change = true;
                                sb_aing.AppendLine("地點由「" + each.bt.Location + "」修改為「" + each.Location + "」");
                            }

                            if (each.bt.Remark != each.Remark)
                            {
                                change = true;
                                sb_aing.AppendLine("備註由「" + each.bt.Remark + "」修改為「" + each.Remark + "」");
                            }

                            if (each.bt.MeasurementMethod != each.MeasurementMethod)
                            {
                                change = true;
                                sb_aing.AppendLine("量測方式由「" + each.bt.MeasurementMethod + "」修改為「" + each.MeasurementMethod + "」");
                            }

                            sb_aing.AppendLine("");

                            if (change)
                            {
                                sb_log_update.Append(sb_aing.ToString());
                            }
                        }
                    }
                    if (sb_log_update.ToString() != "更新學生體溫紀錄")
                    {
                        FISCA.LogAgent.ApplicationLog.Log("匯入學生體溫紀錄", "更新", sb_log_update.ToString());
                    }
                }
            }

            return("");
        }