Example #1
0
        void _bgWorkerLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            // 取得學生類別
            _StudentTagList = QueryTransfer.GetStudentTagList();

            _SelectMappingDict1 = GetExcessCreditsBase1();
            _SelectMappingDict2 = GetExcessCreditsBase2();
            _SelectMappingDict3 = GetExcessCreditsBase3();

            // 取得設定檔
            _UDTConfigList = UDTTransfer.UDTConfigSelectByName(conf_name);
            if (_UDTConfigList.Count > 0)
            {
                UDTConfig cd = _UDTConfigList[0];
                if (!string.IsNullOrWhiteSpace(cd.Data))
                {
                    try
                    {
                        _ConfigXML = XElement.Parse(cd.Data);
                    }
                    catch
                    {
                    }
                }
            }
        }
Example #2
0
        void _bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            // 取得三年級學生一般生
            _StudentExcessCreditDict = QueryTransfer.GetStudentExcessCreditDict();

            // 取得比序資料
            List <UDT_EnrolmentExcessCredits> EnrolmentExcessCreditsList = UDTTransfer.UDTEnrolmentExcessCreditsSelect();

            _EnrolmentExcessCreditsDict.Clear();
            foreach (UDT_EnrolmentExcessCredits data in EnrolmentExcessCreditsList)
            {
                if (!_EnrolmentExcessCreditsDict.ContainsKey(data.StudentID))
                {
                    _EnrolmentExcessCreditsDict.Add(data.StudentID, data);
                }
            }

            // 比對資料放入DataTable
            _dtTable.Clear();
            _dtTableNonPass.Clear();
            List <string> nameList = new List <string>();

            nameList.Add("學號");
            nameList.Add("班級");
            nameList.Add("座號");

            List <string> ColNameList = new List <string>();

            ColNameList.Add("均衡學習");
            ColNameList.Add("服務學習");
            ColNameList.Add("體適能");
            ColNameList.Add("競賽表現");
            ColNameList.Add("檢定證照");
            ColNameList.Add("獎勵紀錄");
            ColNameList.Add("幹部任期");

            foreach (string name in ColNameList)
            {
                nameList.Add(name);
            }

            // 填入 DataTable
            foreach (string name in nameList)
            {
                _dtTable.Columns.Add(name);
                _dtTableNonPass.Columns.Add(name);
            }

            _TotalCount = _passCount = _noPassCount = 0;
            foreach (int sid in _StudentExcessCreditDict.Keys)
            {
                DataRow dr = _dtTable.NewRow();
                dr["學號"] = _StudentExcessCreditDict[sid].StudentNumber;
                dr["班級"] = _StudentExcessCreditDict[sid].ClassName;
                dr["座號"] = _StudentExcessCreditDict[sid].SeatNo;

                // 填入比序資料
                if (_EnrolmentExcessCreditsDict.ContainsKey(sid))
                {
                    UDT_EnrolmentExcessCredits udata = _EnrolmentExcessCreditsDict[sid];
                    foreach (string colName in ColNameList)
                    {
                        switch (colName)
                        {
                        case "均衡學習":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Balanced);
                            dr[colName] = udata.Balanced;
                            break;

                        case "服務學習":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Services);
                            dr[colName] = udata.Services;
                            break;

                        case "體適能":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Fitness);
                            dr[colName] = udata.Fitness;
                            break;

                        case "競賽表現":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Competition);
                            dr[colName] = udata.Competition;
                            break;

                        case "檢定證照":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Verification);
                            dr[colName] = udata.Verification;
                            break;

                        case "獎勵紀錄":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Merit);
                            dr[colName] = udata.Merit;
                            break;

                        case "幹部任期":
                            _StudentExcessCreditDict[sid].ExcessCreditDict.Add(colName, udata.Term);
                            dr[colName] = udata.Term;
                            break;
                        }
                    }

                    bool pass = true;

                    // 檢查是否有全部輸入
                    foreach (string str in _StudentExcessCreditDict[sid].ExcessCreditDict.Values)
                    {
                        if (string.IsNullOrEmpty(str))
                        {
                            pass = false;
                            break;
                        }
                    }
                    _StudentExcessCreditDict[sid].InputPass = pass;

                    if (pass)
                    {
                        _passCount++;
                    }
                    else
                    {
                        _noPassCount++;
                    }
                }
                _TotalCount++;

                if (_StudentExcessCreditDict[sid].InputPass == false)
                {
                    DataRow dr1 = _dtTableNonPass.NewRow();
                    foreach (string name in nameList)
                    {
                        dr1[name] = dr[name];
                    }
                    _dtTableNonPass.Rows.Add(dr1);
                }

                _dtTable.Rows.Add(dr);
            }
        }
Example #3
0
 public ServiceRequestResult QueryTransfer(QueryTransfer request, out QueryTransferResult result)
 {
     return(ServiceRequest(EventNames.Transfer_Query, request, out result));
 }
Example #4
0
        void _bgWorkerRun_DoWork(object sender, DoWorkEventArgs e)
        {
            // 學生基本資料與相關資料
            _AddressRecDict.Clear();
            _ParentDict.Clear();
            _PhoneDict.Clear();
            _StudentDict.Clear();
            _dtTable.Clear();
            _ClassNameDict.Clear();

            // 學生畫面上所選,再排序過
            _SelectStudentList = QueryTransfer.StudentSortByClassSeatNo(K12.Presentation.NLDPanels.Student.SelectedSource);

            // 三,九年級,一般狀態學生
            _StudGradeList = QueryTransfer.GetStudeGrade3List();

            // 學生,來自學生所選
            if (_isStudent)
            {
                foreach (StudentRecord stud in Student.SelectByIDs(_SelectStudentList))
                {
                    _StudentDict.Add(stud.ID, stud);
                }
            }
            else
            {
                foreach (StudentRecord stud in Student.SelectByIDs(_StudGradeList))
                {
                    _StudentDict.Add(stud.ID, stud);
                }
            }

            // 班級
            foreach (ClassRecord rec in Class.SelectAll())
            {
                _ClassNameDict.Add(rec.ID, rec.Name.Substring(1, rec.Name.Length - 1));
            }

            // 地址
            foreach (AddressRecord rec in Address.SelectByStudentIDs(_StudGradeList))
            {
                _AddressRecDict.Add(rec.RefStudentID, rec);
            }

            // 父母
            foreach (ParentRecord rec in K12.Data.Parent.SelectByStudentIDs(_StudGradeList))
            {
                _ParentDict.Add(rec.RefStudentID, rec);
            }

            // 電話
            foreach (PhoneRecord rec in Phone.SelectByStudentIDs(_StudGradeList))
            {
                _PhoneDict.Add(rec.RefStudentID, rec);
            }

            // 學生類別
            _StudTagDict = QueryTransfer.GetStduentTagDict();

            // 填入DataColumn name 資料
            foreach (string name in GetDataTableColumnsName())
            {
                _dtTable.Columns.Add(name);
            }

            List <string> tmptagList1 = new List <string> ();
            List <string> tmptagList2 = new List <string> ();

            List <string> exportStudentIDList = new List <string>();

            if (_isStudent)
            {
                exportStudentIDList = _SelectStudentList;
            }
            else
            {
                exportStudentIDList = _StudGradeList;
            }

            // 填入 DataTable
            foreach (string id in exportStudentIDList)
            {
                // 地區代碼、集報單位代碼、序號、學號、班級、座號、學生姓名、身分證統一編號、性別、出生年、出生月、出生日、
                // 畢業學校代碼、畢業年、畢肄業、學生身分、身心障礙、就學區、低收入戶、中低收入戶、失業勞工、資料授權、
                // 家長姓名、市內電話、行動電話、郵遞區號、地址

                DataRow dr = _dtTable.NewRow();

                if (_StudentDict.ContainsKey(id))
                {
                    dr["地區代碼"] = "";
                    if (_SelectMappingDict1.ContainsKey(strType1))
                    {
                        dr["地區代碼"] = _SelectMappingDict1[strType1];
                    }

                    dr["學號"] = _StudentDict[id].StudentNumber;
                    dr["班級"] = "";
                    if (_ClassNameDict.ContainsKey(_StudentDict[id].RefClassID))
                    {
                        dr["班級"] = _ClassNameDict[_StudentDict[id].RefClassID].PadLeft(2, '0');
                    }

                    dr["座號"] = "";
                    if (_StudentDict[id].SeatNo.HasValue)
                    {
                        dr["座號"] = _StudentDict[id].SeatNo.Value.ToString().PadLeft(2, '0');
                    }

                    dr["學生姓名"]    = _StudentDict[id].Name;
                    dr["身分證統一編號"] = _StudentDict[id].IDNumber.ToUpper();

                    dr["性別"] = "";
                    if (_StudentDict[id].Gender == "男")
                    {
                        dr["性別"] = "1";
                    }

                    if (_StudentDict[id].Gender == "女")
                    {
                        dr["性別"] = "2";
                    }

                    dr["出生年"] = dr["出生月"] = dr["出生日"] = "";
                    if (_StudentDict[id].Birthday.HasValue)
                    {
                        dr["出生年"] = (_StudentDict[id].Birthday.Value.Year - 1911).ToString().PadLeft(3, '0');
                        dr["出生月"] = (_StudentDict[id].Birthday.Value.Month).ToString().PadLeft(2, '0');
                        dr["出生日"] = (_StudentDict[id].Birthday.Value.Day).ToString().PadLeft(2, '0');
                    }

                    dr["畢業學校代碼"] = K12.Data.School.Code;

                    dr["畢業年"]   = K12.Data.School.DefaultSchoolYear.PadLeft(3, '0');
                    dr["畢肄業"]   = "1";
                    dr["學生身分"]  = "0";
                    dr["身心障礙"]  = "0";
                    dr["低收入戶"]  = "0";
                    dr["中低收入戶"] = "0";
                    dr["失業勞工"]  = "0";

                    tmptagList1.Clear();
                    tmptagList2.Clear();

                    if (_StudTagDict.ContainsKey(id))
                    {
                        foreach (string name in _StudTagDict[id])
                        {
                            if (_strStudTagMappingDict1.ContainsKey(name))
                            {
                                tmptagList1.Add(_strStudTagMappingDict1[name]);
                            }

                            if (_strStudTagMappingDict2.ContainsKey(name))
                            {
                                tmptagList2.Add(_strStudTagMappingDict2[name]);
                            }
                        }

                        if (tmptagList1.Count > 0)
                        {
                            dr["學生身分"] = string.Join(",", tmptagList1.ToArray());
                        }

                        if (tmptagList2.Count > 0)
                        {
                            dr["身心障礙"] = string.Join(",", tmptagList2.ToArray());
                        }


                        if (_StudTagDict[id].Contains(strType2))
                        {
                            dr["低收入戶"] = "1";
                        }

                        if (_StudTagDict[id].Contains(strType3))
                        {
                            dr["中低收入戶"] = "1";
                        }

                        if (_StudTagDict[id].Contains(strType4))
                        {
                            dr["失業勞工"] = "1";
                        }
                    }

                    dr["資料授權"] = "1";

                    dr["家長姓名"] = "";
                    dr["市內電話"] = "";
                    // 監護人
                    if (_ParentDict.ContainsKey(id))
                    {
                        if (strType6 == "父親")
                        {
                            dr["家長姓名"] = _ParentDict[id].FatherName;
                            dr["市內電話"] = ParseTelStr(_ParentDict[id].FatherPhone);
                        }

                        if (strType6 == "母親")
                        {
                            dr["家長姓名"] = _ParentDict[id].MotherName;
                            dr["市內電話"] = ParseTelStr(_ParentDict[id].MotherPhone);
                        }

                        if (strType6 == "監護人")
                        {
                            dr["家長姓名"] = _ParentDict[id].CustodianName;
                            dr["市內電話"] = ParseTelStr(_ParentDict[id].CustodianPhone);
                        }
                    }

                    dr["行動電話"] = "";
                    if (_PhoneDict.ContainsKey(id))
                    {
                        dr["行動電話"] = ParseTelStr(_PhoneDict[id].Cell);
                    }

                    // 通訊地址
                    dr["郵遞區號"] = "";
                    dr["地址"]   = "";
                    if (_AddressRecDict.ContainsKey(id))
                    {
                        if (strType5 == "聯絡")
                        {
                            dr["郵遞區號"] = _AddressRecDict[id].MailingZipCode;

                            dr["地址"] = _AddressRecDict[id].MailingCounty + _AddressRecDict[id].MailingTown + _AddressRecDict[id].MailingDistrict + _AddressRecDict[id].MailingArea + _AddressRecDict[id].MailingDetail;
                        }

                        if (strType5 == "戶籍")
                        {
                            dr["郵遞區號"] = _AddressRecDict[id].PermanentZipCode;
                            dr["地址"]   = _AddressRecDict[id].PermanentCounty + _AddressRecDict[id].PermanentTown + _AddressRecDict[id].PermanentDistrict + _AddressRecDict[id].PermanentArea + _AddressRecDict[id].PermanentDetail;
                        }
                    }
                }

                _dtTable.Rows.Add(dr);
            }

            // 取得樣板
            Workbook wb = new Workbook();

            wb.Open(new MemoryStream(Properties.Resources.基本資料樣板));

            // 取得樣板欄位索引
            Dictionary <string, int> ColNameDict = new Dictionary <string, int>();

            for (int idx = 0; idx <= wb.Worksheets[0].Cells.MaxDataColumn; idx++)
            {
                string name = wb.Worksheets[0].Cells[0, idx].StringValue;
                if (!ColNameDict.ContainsKey(name))
                {
                    ColNameDict.Add(name, idx);
                }
            }

            // 填入資料
            int rowIdx = 1;

            foreach (DataRow dr in _dtTable.Rows)
            {
                foreach (string name in GetDataTableColumnsName())
                {
                    if (ColNameDict.ContainsKey(name))
                    {
                        wb.Worksheets[0].Cells[rowIdx, ColNameDict[name]].PutValue(dr[name].ToString());
                    }
                }

                rowIdx++;
            }

            e.Result = wb;
        }
Example #5
0
        void _bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            // 取得特定年級資料
            _dtTable = QueryTransfer.GetStudentExcessCreditDataTable(_gradeYear);
            // 讀取樣板
            _wb.Open(new MemoryStream(Properties.Resources.比序資料樣板));

            int row = 1, col = 0;

            foreach (DataRow dr in _dtTable.Rows)
            {
                // 出生年月日解析
                DateTime dt;
                string   sYY = "", sMM = "", sDD = "";

                if (DateTime.TryParse(dr["出生年月日"].ToString(), out dt))
                {
                    sYY = (dt.Year - 1911).ToString();
                    sMM = dt.Month.ToString();
                    sDD = dt.Day.ToString();
                }

                col = 0;
                foreach (string colName in _ColNameList)
                {
                    if (colName == "出生年")
                    {
                        _wb.Worksheets[0].Cells[row, col].PutValue(strParse(sYY, colName));
                    }
                    else if (colName == "出生月")
                    {
                        _wb.Worksheets[0].Cells[row, col].PutValue(strParse(sMM, colName));
                    }
                    else if (colName == "出生日")
                    {
                        _wb.Worksheets[0].Cells[row, col].PutValue(strParse(sDD, colName));
                    }
                    //else if (colName == "服務學習" || colName=="獎勵紀錄")
                    //{
                    //    _wb.Worksheets[0].Cells[row, col].PutValue(string.Format("{0:00.0}",dr[colName]));
                    //}
                    //else if (colName == "競賽表現")
                    //{
                    //    _wb.Worksheets[0].Cells[row, col].PutValue(string.Format("{0:00.00}", dr[colName]));
                    //}
                    else
                    {
                        // 轉換格式
                        if (_formatMappingDict.ContainsKey(colName))
                        {
                            _wb.Worksheets[0].Cells[row, col].PutValue(strParse(dr[colName].ToString(), colName));
                        }
                        else
                        {
                            string value = dr[colName].ToString();

                            // 身分證號統一編號,英文字母轉大寫
                            if (colName == "身分證號統一編號")
                            {
                                value = value.ToUpper();
                            }

                            _wb.Worksheets[0].Cells[row, col].PutValue(value);
                        }
                    }
                    col++;
                }
                row++;
            }
        }