// 1. 取得學年度、學期、日期區間、沒有被取消的【評分紀錄】
        private void GetScoreSheet()
        {
            #region SQL
            string sql = string.Format(@"
SELECT
    place.ref_area_id
    , pc_belong.ref_class_id
    , standard.points
    , score_sheet.create_time
    , score_sheet.uid
FROM
    $ischool.tidy_competition.score_sheet AS score_sheet
    LEFT OUTER JOIN $ischool.tidy_competition.place AS place
        ON place.uid = score_sheet.ref_place_id
    LEFT OUTER JOIN $ischool.tidy_competition.pc_belong AS pc_belong
        ON pc_belong.ref_place_id = score_sheet.ref_place_id
    LEFT OUTER JOIN $ischool.tidy_competition.deduction_standard AS standard
        ON standard.uid = score_sheet.ref_deduction_standard_id
    WHERE
        score_sheet.school_year = {0}
        AND score_sheet.semester = {1}
        AND date_trunc('day', score_sheet.create_time) <= '{2}'::TIMESTAMP
        AND date_trunc('day', score_sheet.create_time) >= '{3}'::TIMESTAMP
        AND score_sheet.is_canceled = false
            ", this._schoolYear, this._semester, this._endDate, this._startDate);
            #endregion

            QueryHelper qh = new QueryHelper();
            DataTable   dt = qh.Select(sql);

            List <string> listScoreSheetID = new List <string>();
            foreach (DataRow row in dt.Rows)
            {
                if (this.dicClassCalculatorByID.ContainsKey("" + row["ref_class_id"]))
                {
                    ScoreItem item = new ScoreItem();
                    item.AreaID    = "" + row["ref_area_id"];
                    item.ClassID   = "" + row["ref_class_id"];
                    item.Score     = ("" + row["points"]) == "" ? 0 : int.Parse("" + row["points"]);
                    item.OccurDate = "" + row["create_time"];

                    this.dicClassCalculatorByID[item.ClassID].Add(item);
                    listScoreSheetID.Add("" + row["uid"]);
                }
            }

            // 評分紀錄資料快照
            SnapshotData.SnapshotScoreSheet(listScoreSheetID);
        }
 public void Add(ScoreItem si)
 {
     this.scoreItems.Add(si);
 }