//レポートを表示 private void display_survey_report() { Task.Run(() => { //共通デリゲートインスタンス d_status_messenger message = w_status_messenger; d_ldr_activate ldr_activate = w_ldr_activate; d_task_cancel canceler = w_task_cancel; //専用デリゲートインスタンス(条件分岐) d_is_pageID_selected _is_pageID_selected = w_is_pageID_selected; d_is_guideline_selected _is_guideline_selected = w_is_guideline_selected; d_is_tech_selected _is_tech_selected = w_is_tech_selected; //専用デリゲートインスタンス(取得系) d_get_projectID get_projectID = w_get_projectID; d_get_basic_auth_cond get_basic_auth_cond = w_get_basic_auth_cond; d_get_source_flag get_source_flag = w_get_source_flag; d_get_workDir get_workDir = w_get_workDir; d_pageID_data get_page_rows = w_pageID_data; d_guideline_data get_guideline_rows = w_guideline_data; d_get_pageID_sufix get_pageID_sufix = w_get_pageID_sufix; d_get_guideline_sufix get_guideline_sufix = w_get_guideline_sufix; d_data_grid_as_RepoTask _data_grid_as_RepoTask = w_data_grid_as_RepoTask; d_tech_data get_tech_rows = w_tech_data; Boolean is_pageID_selected = (Boolean)this.Invoke(_is_pageID_selected); Boolean is_guideline_selected = (Boolean)this.Invoke(_is_guideline_selected); Boolean is_tech_selected = (Boolean)this.Invoke(_is_tech_selected); if (is_pageID_selected == false) { this.Invoke(message, "【エラー】ページIDが選択されていません!処理を停止します。"); return; } if (is_guideline_selected == false) { this.Invoke(message, "【エラー】達成基準が選択されていません!処理を停止します。"); return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(ldr_activate)) { return; } } ldr.home(); this.Invoke(message, "Libraにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string projectID = (string)this.Invoke(get_projectID); ldr.projectID = projectID; //サイト名取得 this.Invoke(message, "レポートインデックスページに移動します。(" + DateUtil.get_logtime() + ")"); ldr.browse_repo(); DateUtil.app_sleep(shortWait); string site_name = ldr.get_site_name(); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageIDコンボから選択値を取得 List <string> guideline_rows = (List <string>) this.Invoke(get_guideline_rows); //guidelineコンボから選択値を取得 List <List <string> > page_rows = (List <List <string> >) this.Invoke(get_page_rows); this.Invoke(message, "レポート詳細ページに順次アクセスしていきます。(" + DateUtil.get_logtime() + ")"); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //レポートデータ初期化 List <List <string> > rep_data = new List <List <string> >(); //処理タイプ条件分岐 string opt_type = ""; if (is_tech_selected == true) { opt_type = "qry"; } else { opt_type = "seq"; } switch (opt_type) { //絞り込み case "qry": //techコンボから値取得 List <string> tech_rows = (List <string>) this.Invoke(get_tech_rows); //一次格納用rep_data List <List <string> > tmp_rep_data = new List <List <string> >(); //guidelineのループ for (int i = 0; i < guideline_rows.Count; i++) { if (i > 0) { break; //複数達成基準には対応しない } string guideline = guideline_rows[i]; string guideline_disp = guideline; guideline = "7." + guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageのループ for (int j = 0; j < page_rows.Count; j++) { List <string> page_row = page_rows[j]; string pageID = page_row[0]; string pageURL = page_row[1]; this.Invoke(message, pageID + ", " + guideline_disp + " を処理しています。 (" + DateUtil.get_logtime() + ")"); string path = ldr.fetch_report_detail_path(pageID, guideline); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(shortWait); List <List <string> > tbl_data = ldr.get_detail_table_data(pageID, pageURL, guideline); tmp_rep_data.AddRange(tbl_data); } } //rep_dataを組み立て foreach (List <string> row in tmp_rep_data) { string q_col = row[4]; Func <List <string>, string, Boolean> _contain_tech = delegate(List <string> arr, string key) { Boolean flg = false; foreach (string vl in arr) { if (vl == key) { flg = true; break; } } return(flg); }; if (_contain_tech(tech_rows, q_col)) { rep_data.Add(row); } } break; //全件 case "seq": //guidelineのループ for (int i = 0; i < guideline_rows.Count; i++) { string guideline = guideline_rows[i]; string guideline_disp = guideline; guideline = "7." + guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageのループ for (int j = 0; j < page_rows.Count; j++) { List <string> page_row = page_rows[j]; string pageID = page_row[0]; string pageURL = page_row[1]; this.Invoke(message, pageID + ", " + guideline_disp + " を処理しています。 (" + DateUtil.get_logtime() + ")"); string path = ldr.fetch_report_detail_path(pageID, guideline); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(shortWait); List <List <string> > tbl_data = ldr.get_detail_table_data(pageID, pageURL, guideline); rep_data.AddRange(tbl_data); } } break; } //DataGridレポート処理 this.Invoke(message, "データグリッドビューへの書き出しを開始します。(" + DateUtil.get_logtime() + ")"); List <string> head_row = TextUtil.get_header(); rep_data.Insert(0, head_row); this.Invoke(_data_grid_as_RepoTask, rep_data); ldr.logout(); this.Invoke(message, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//実装番号コンボをセット private void set_techID_combo() { Task.Run(() => { //共通デリゲートインスタンス d_status_messenger message = w_status_messenger; d_ldr_activate ldr_activate = w_ldr_activate; d_task_cancel canceler = w_task_cancel; d_ctrl_activate w_ctrl_activate = ctrl_activate; d_ctrl_deactivate w_ctrl_deactivate = ctrl_deactivate; //専用デリゲートインスタンス d_is_pageID_selected _is_pageID_selected = w_is_pageID_selected; d_is_guideline_selected _is_guideline_selected = w_is_guideline_selected; d_get_projectID _projectID = w_get_projectID; d_pageID_data _page_rows = w_pageID_data; d_guideline_data _guideline_rows = w_guideline_data; d_set_techID_combo _set_techID_combo = w_set_techID_combo; //2重実行防止 this.Invoke(w_ctrl_deactivate, "techIDLoadButton"); this.Invoke(w_ctrl_deactivate, "projectIDLoadButton"); this.Invoke(w_ctrl_deactivate, "pageIDLoadButton"); Boolean pageID_selected = (Boolean)this.Invoke(_is_pageID_selected); if (!pageID_selected) { this.Invoke(message, "【エラー】ページIDが未選択です!処理を停止します。"); this.Invoke(w_ctrl_activate, "techIDLoadButton"); this.Invoke(w_ctrl_activate, "projectIDLoadButton"); this.Invoke(w_ctrl_activate, "pageIDLoadButton"); return; } Boolean guideline_selected = (Boolean)this.Invoke(_is_guideline_selected); if (!guideline_selected) { this.Invoke(message, "【エラー】達成基準が未選択です!処理を停止します。"); this.Invoke(w_ctrl_activate, "techIDLoadButton"); this.Invoke(w_ctrl_activate, "projectIDLoadButton"); this.Invoke(w_ctrl_activate, "pageIDLoadButton"); return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(ldr_activate)) { return; } } ldr.home(); this.Invoke(message, "Libraにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); //projectIDコンボから選択値を取得しセットする string projectID = (string)this.Invoke(_projectID); ldr.projectID = projectID; //pageIDコンボの選択値を匿名関数で取得(複数選択の場合先頭のみ取得) List <List <string> > page_rows = (List <List <string> >) this.Invoke(_page_rows); Func <List <List <string> >, string> _pageID = delegate(List <List <string> > data) { return(data[0][0]); }; string pageID = _pageID(page_rows); //guidelineコンボの選択値を匿名関数で取得(複数選択の場合先頭のみ取得) List <string> guideline_rows = (List <string>) this.Invoke(_guideline_rows); Func <List <string>, string> _guideline = delegate(List <string> data) { return(data[0]); }; string guideline = _guideline(guideline_rows); guideline = "7." + guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } this.Invoke(message, "レポート詳細ページに移動します。(" + DateUtil.get_logtime() + ")"); string path = ldr.fetch_report_detail_path(pageID, guideline); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(shortWait); this.Invoke(message, "レポート詳細ページから実装番号を取得しています。(" + DateUtil.get_logtime() + ")"); List <string> tech_rows = ldr.get_tech_list(); this.Invoke(_set_techID_combo, tech_rows); this.Invoke(message, "実装番号コンボが設定完了しました。(" + DateUtil.get_logtime() + ")"); ldr.logout(); this.Invoke(message, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); this.Invoke(w_ctrl_activate, "techIDLoadButton"); this.Invoke(w_ctrl_activate, "projectIDLoadButton"); this.Invoke(w_ctrl_activate, "pageIDLoadButton"); this.Invoke(w_ctrl_activate, "techSelectAllButton"); this.Invoke(w_ctrl_activate, "techSelectClearButton"); }); }
//レポートを生成 private void create_survey_report() { Task.Run(() => { //共通デリゲートインスタンス d_status_messenger message = w_status_messenger; d_ldr_activate ldr_activate = w_ldr_activate; d_task_cancel canceler = w_task_cancel; //専用デリゲートインスタンス(条件系) d_get_basic_auth_cond _d_get_basic_auth_cond = w_get_basic_auth_cond; d_get_source_flag _d_get_source_flag = w_get_source_flag; d_is_pageID_selected _is_pageID_selected = w_is_pageID_selected; d_is_guideline_selected _is_guideline_selected = w_is_guideline_selected; //専用デリゲートインスタンス(取得系) d_get_workDir _get_workDir = w_get_workDir; d_get_projectID _get_projectID = w_get_projectID; d_pageID_data get_page_rows = w_pageID_data; d_guideline_data get_guideline_rows = w_guideline_data; d_get_pageID_sufix get_pageID_sufix = w_get_pageID_sufix; d_get_guideline_sufix get_guideline_sufix = w_get_guideline_sufix; //ファイル名サフィックス取得 string guideline_sufix = (string)this.Invoke(get_guideline_sufix); string pageID_sufix = (string)this.Invoke(get_pageID_sufix); Boolean is_pageID_selected = (Boolean)this.Invoke(_is_pageID_selected); Boolean is_guideline_selected = (Boolean)this.Invoke(_is_guideline_selected); if (is_pageID_selected == false) { this.Invoke(message, "【エラー】ページIDが選択されていません!処理を停止します。"); return; } if (is_guideline_selected == false) { this.Invoke(message, "【エラー】達成基準が選択されていません!処理を停止します。"); return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(ldr_activate)) { return; } } ldr.home(); this.Invoke(message, "Libraにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string projectID = (string)this.Invoke(_get_projectID); ldr.projectID = projectID; //サイト名取得 this.Invoke(message, "レポートインデックスページに移動します。(" + DateUtil.get_logtime() + ")"); ldr.browse_repo(); DateUtil.app_sleep(shortWait); string site_name = ldr.get_site_name(); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageIDコンボから選択値を取得 List <string> guideline_rows = (List <string>) this.Invoke(get_guideline_rows); //guidelineコンボから選択値を取得 List <List <string> > page_rows = (List <List <string> >) this.Invoke(get_page_rows); this.Invoke(message, "レポート詳細ページに順次アクセスしていきます。(" + DateUtil.get_logtime() + ")"); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //レポートデータ初期化 List <List <string> > rep_data = new List <List <string> >(); //guidelineのループ for (int i = 0; i < guideline_rows.Count; i++) { string guideline = guideline_rows[i]; string guideline_disp = guideline; guideline = "7." + guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageのループ for (int j = 0; j < page_rows.Count; j++) { List <string> page_row = page_rows[j]; string pageID = page_row[0]; string pageURL = page_row[1]; this.Invoke(message, pageID + ", " + guideline_disp + " を処理しています。 (" + DateUtil.get_logtime() + ")"); string path = ldr.fetch_report_detail_path(pageID, guideline); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(shortWait); List <List <string> > tbl_data = ldr.get_detail_table_data(pageID, pageURL, guideline); rep_data.AddRange(tbl_data); } } //Excelレポート処理 this.Invoke(message, "Excelファイルへの書き出しを開始します。(" + DateUtil.get_logtime() + ")"); List <string> head_row = TextUtil.get_header(); rep_data.Insert(0, head_row); string save_dir = (string)this.Invoke(_get_workDir); string save_filename = save_dir + projectID + "_" + site_name + "_" + guideline_sufix + "_" + pageID_sufix + " " + " 検査結果 " + DateUtil.fetch_filename_logtime() + ".xlsx"; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } ExcelUtil eu = new ExcelUtil(); eu.repo_task_save_xlsx(rep_data, save_filename); ldr.logout(); this.Invoke(message, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//レポートを表示 private void display_srccode_report() { Task.Run(() => { d_status_messenger message = w_status_messenger; d_get_projectID get_projectID = w_get_projectID; d_get_basic_auth_cond get_basic_auth_cond = w_get_basic_auth_cond; d_get_source_flag get_source_flag = w_get_source_flag; d_ldr_activate ldr_activate = w_ldr_activate; d_task_cancel canceler = w_task_cancel; d_get_workDir get_workDir = w_get_workDir; d_is_pageID_selected is_pageID_selected = w_is_pageID_selected; d_is_guideline_selected is_guideline_selected = w_is_guideline_selected; d_is_tech_selected is_tech_selected = w_is_tech_selected; d_pageID_data get_page_rows = w_pageID_data; d_guideline_data get_guideline_rows = w_guideline_data; d_get_pageID_sufix get_pageID_sufix = w_get_pageID_sufix; d_get_guideline_sufix get_guideline_sufix = w_get_guideline_sufix; d_data_grid_as_SrcTask _data_grid_as_SrcTask = w_data_grid_as_SrcTask; d_tech_data get_tech_rows = w_tech_data; if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(ldr_activate)) { return; } } ldr.home(); this.Invoke(message, "Libraにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string projectID = (string)this.Invoke(get_projectID); ldr.projectID = projectID; //サイト名取得 this.Invoke(message, "レポートインデックスページに移動します。(" + DateUtil.get_logtime() + ")"); ldr.browse_repo(); DateUtil.app_sleep(shortWait); string site_name = ldr.get_site_name(); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageIDコンボから選択値を取得 List <string> guideline_rows = (List <string>) this.Invoke(get_guideline_rows); //guidelineコンボから選択値を取得 List <List <string> > page_rows = (List <List <string> >) this.Invoke(get_page_rows); //techデータ初期化 List <string> tech_rows = new List <string>(); //レポートデータ初期化 List <List <string> > rep_data = new List <List <string> >(); this.Invoke(message, "検査メインページに順次アクセスしていきます。(" + DateUtil.get_logtime() + ")"); //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //処理タイプ条件分岐 string opt_type = ""; if ((Boolean)this.Invoke(is_tech_selected)) { opt_type = "qry"; } else { opt_type = "seq"; } switch (opt_type) { //絞り込み case "qry": //techコンボから値取得 tech_rows = (List <string>) this.Invoke(get_tech_rows); //guidelineのループ for (int i = 0; i < guideline_rows.Count; i++) { if (i > 0) { break; //複数達成基準には対応しない } string guideline = guideline_rows[i]; string guideline_disp = guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageのループ for (int j = 0; j < page_rows.Count; j++) { List <string> page_row = page_rows[j]; string pageID = page_row[0]; string pageURL = page_row[1]; //techのループ for (int k = 0; k < tech_rows.Count; k++) { string tech = tech_rows[k]; this.Invoke(message, pageID + ", " + guideline_disp + ", " + tech + " を処理しています。 (" + DateUtil.get_logtime() + ")"); string path = ldr.get_sv_mainpage_url(pageID); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(midWait); ldr.select_guideline(guideline); DateUtil.app_sleep(midWait); ldr.select_techlist(tech); DateUtil.app_sleep(midWait); //ldr.browse_all_sv_page(); List <string> srccode_rows = ldr.get_srccode_list(); foreach (string srccode in srccode_rows) { List <string> row_data = new List <string>(); row_data.Add(pageID); row_data.Add(pageURL); row_data.Add(guideline); row_data.Add(tech); row_data.Add(srccode); rep_data.Add(row_data); } //余分な行がついてくるので削除 rep_data.RemoveAt(rep_data.Count - 1); } } } break; //全件 case "seq": //guidelineのループ for (int i = 0; i < guideline_rows.Count; i++) { string guideline = guideline_rows[i]; string guideline_disp = guideline; //タスクのキャンセル判定 if ((Boolean)this.Invoke(canceler)) { return; } //pageのループ for (int j = 0; j < page_rows.Count; j++) { List <string> page_row = page_rows[j]; string pageID = page_row[0]; string pageURL = page_row[1]; //検査メイン画面アクセス string path = ldr.get_sv_mainpage_url(pageID); ldr.wd.Navigate().GoToUrl(path); DateUtil.app_sleep(midWait); ldr.select_guideline(guideline); DateUtil.app_sleep(midWait); //LibraDriverクラスからtechデータ取得 tech_rows = ldr.get_tech_list_from_svpage(); //techのループ for (int k = 0; k < tech_rows.Count; k++) { string tech = tech_rows[k]; this.Invoke(message, pageID + ", " + guideline_disp + ", " + tech + " を処理しています。 (" + DateUtil.get_logtime() + ")"); ldr.select_techlist(tech); DateUtil.app_sleep(midWait); //ldr.browse_all_sv_page(); List <string> srccode_rows = ldr.get_srccode_list(); foreach (string srccode in srccode_rows) { List <string> row_data = new List <string>(); row_data.Add(pageID); row_data.Add(pageURL); row_data.Add(guideline); row_data.Add(tech); row_data.Add(srccode); rep_data.Add(row_data); } //余分な行がついてくるので削除 rep_data.RemoveAt(rep_data.Count - 1); } } } break; } //DataGridレポート処理 this.Invoke(message, "データグリッドビューへの書き出しを開始します。(" + DateUtil.get_logtime() + ")"); List <string> head_row = TextUtil.get_header_SrcTask(); rep_data.Insert(0, head_row); this.Invoke(_data_grid_as_SrcTask, rep_data); ldr.logout(); this.Invoke(message, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }