검색결과 수량부분이 자세히 표시됨
오류 메세지 표현 방식 변경
This commit is contained in:
		| @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | |||||||
| // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 | ||||||
| // 기본값으로 할 수 있습니다. | // 기본값으로 할 수 있습니다. | ||||||
| // [assembly: AssemblyVersion("1.0.*")] | // [assembly: AssemblyVersion("1.0.*")] | ||||||
| [assembly: AssemblyVersion("1.0.0.186")] | [assembly: AssemblyVersion("1.0.187.1")] | ||||||
| [assembly: AssemblyFileVersion("1.0.0.186")] | [assembly: AssemblyFileVersion("1.0.187.1")] | ||||||
|   | |||||||
| @@ -375,10 +375,20 @@ namespace BokBonCheck | |||||||
|                 await WaitForPageChange(new WebDriverWait(_driver, TimeSpan.FromSeconds(15))); |                 await WaitForPageChange(new WebDriverWait(_driver, TimeSpan.FromSeconds(15))); | ||||||
|  |  | ||||||
|                 // 검색 결과 수 추출 |                 // 검색 결과 수 추출 | ||||||
|                 var resultCount = ExtractBookCount(_driver); |                 var resultCount = ExtractBookCount(_driver, searchTerm, out string ermsg); | ||||||
|  |                 if (resultCount == -1) | ||||||
|  |                 { | ||||||
|  |                     result.BookCount = 0; | ||||||
|  |                     result.IsSuccess = false; | ||||||
|  |                     result.ErrorMessage = ermsg; | ||||||
|  |                 } | ||||||
|  |                 else | ||||||
|  |                 { | ||||||
|                     result.BookCount = resultCount; |                     result.BookCount = resultCount; | ||||||
|                     result.IsSuccess = true; |                     result.IsSuccess = true; | ||||||
|  |                     result.ErrorMessage = ermsg; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|             } |             } | ||||||
|             catch (Exception ex) |             catch (Exception ex) | ||||||
|             { |             { | ||||||
| @@ -390,32 +400,67 @@ namespace BokBonCheck | |||||||
|             return result; |             return result; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private int ExtractBookCount(IWebDriver driver) |         private int ExtractBookCount(IWebDriver driver, string searchTerm, out string errmessage) | ||||||
|         { |         { | ||||||
|  |             errmessage = string.Empty; | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|                 // div.search-result 내부의 span에서 '전체 N' 텍스트 추출 |                 // div.search-result 내부의 span에서 '전체 N' 텍스트 추출 | ||||||
|                 var resultDiv = driver.FindElement(By.CssSelector("div.search-result")); |                 var resultDiv = driver.FindElement(By.CssSelector("div.search-result")); | ||||||
|  |  | ||||||
|  |                 var bodytext = resultDiv.Text; | ||||||
|  |                 if (bodytext.Contains("검색결과가 없습니다")) | ||||||
|  |                 { | ||||||
|  |                     errmessage = "검색결과없음"; | ||||||
|  |                     return 0; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 var searchkey = resultDiv.FindElement(By.XPath("//*[@id=\"sub\"]/section[3]/div/div/div/div/div[2]/div[1]/p/b")); | ||||||
|  |                 var searchtitle = searchkey.Text; | ||||||
|  |  | ||||||
|  |                 if (searchTerm.Contains(searchtitle) == false) | ||||||
|  |                 { | ||||||
|  |                     errmessage = $"검색어불일치({searchtitle}/{searchTerm})"; | ||||||
|  |                     return -1; | ||||||
|  |                 } | ||||||
|                 var span = resultDiv.FindElement(By.XPath(".//span[contains(text(),'전체')]")); |                 var span = resultDiv.FindElement(By.XPath(".//span[contains(text(),'전체')]")); | ||||||
|                 string text = span.Text; // 예: "전체 5 " |                 string text = span.Text; // 예: "전체 5 " | ||||||
|                 var match = System.Text.RegularExpressions.Regex.Match(text, @"전체\s*(\d+)"); |                 var match = System.Text.RegularExpressions.Regex.Match(text, @"전체\s*(\d+)"); | ||||||
|                 if (match.Success) |                 if (match.Success) | ||||||
|                 { |                 { | ||||||
|                     return int.Parse(match.Groups[1].Value); |                     if(int.TryParse(match.Groups[1].Value,out int vqty)==false) | ||||||
|                 } |  | ||||||
|                 return 0; |  | ||||||
|             } |  | ||||||
|             catch |  | ||||||
|                     { |                     { | ||||||
|                 return 0; |                         errmessage = $"수량값오류({match.Groups[1].Value})"; | ||||||
|  |                         return -1; | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|  |                     { | ||||||
|  |                         searchTerm = string.Empty; | ||||||
|  |                         return vqty; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  |                 else | ||||||
|  |                 { | ||||||
|  |                     errmessage = "수량항목없음"; | ||||||
|  |                     return -1; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |             catch (Exception ex) | ||||||
|  |             { | ||||||
|  |                 errmessage = ex.Message; | ||||||
|  |                 return -1; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         // 페이지 변경을 감지하는 메서드 |         // 페이지 변경을 감지하는 메서드 | ||||||
|         public async Task WaitForPageChange(WebDriverWait wait) |         public async Task WaitForPageChange(WebDriverWait wait) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|  |                 await Task.Delay(500); | ||||||
|  |  | ||||||
|                 // 방법 4: 페이지 로딩 상태 확인 |                 // 방법 4: 페이지 로딩 상태 확인 | ||||||
|                 wait.Until(d => |                 wait.Until(d => | ||||||
|                 { |                 { | ||||||
| @@ -426,10 +471,9 @@ namespace BokBonCheck | |||||||
|                 // 방법 5: 특정 텍스트가 페이지에 나타날 때까지 대기 |                 // 방법 5: 특정 텍스트가 페이지에 나타날 때까지 대기 | ||||||
|                 wait.Until(d => |                 wait.Until(d => | ||||||
|                 { |                 { | ||||||
|                     var elm = d.FindElement(By.TagName("body")); |                     var pageText = d.FindElement(By.ClassName("search-result")).Text; | ||||||
|                     if (elm == null) return false; |                     if (pageText.Contains("검색결과가 없습니다")) return true; | ||||||
|                     var pageText = elm.Text; |                     return pageText.Contains("에 대하여") && pageText.Contains("검색되었습니다"); | ||||||
|                     return pageText.Contains("전체") || pageText.Contains("건") || pageText.Contains("검색결과"); |  | ||||||
|                 }); |                 }); | ||||||
|  |  | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -85,6 +85,10 @@ namespace UniMarc.마크 | |||||||
|             cc.tb_SearchTarget.Text = lib_name; |             cc.tb_SearchTarget.Text = lib_name; | ||||||
|             cc.SearcherNo = searcher; |             cc.SearcherNo = searcher; | ||||||
|  |  | ||||||
|  |             cc.groupBox1.Enabled = int.TryParse(searcher, out int vno) && vno > 0; | ||||||
|  |             cc.chkRetryErrData.Enabled = cc.groupBox1.Enabled; | ||||||
|  |     | ||||||
|  |  | ||||||
|             if (lib_name.Contains("Kolasys.net")) |             if (lib_name.Contains("Kolasys.net")) | ||||||
|             { |             { | ||||||
|                 Check_Copy_Login ccl = new Check_Copy_Login(this); |                 Check_Copy_Login ccl = new Check_Copy_Login(this); | ||||||
|   | |||||||
							
								
								
									
										218
									
								
								unimarc/unimarc/마크/Check_copy.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										218
									
								
								unimarc/unimarc/마크/Check_copy.Designer.cs
									
									
									
										generated
									
									
									
								
							| @@ -30,6 +30,11 @@ | |||||||
|         { |         { | ||||||
|             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); |             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); | ||||||
|             this.panel1 = new System.Windows.Forms.Panel(); |             this.panel1 = new System.Windows.Forms.Panel(); | ||||||
|  |             this.groupBox1 = new System.Windows.Forms.GroupBox(); | ||||||
|  |             this.radTargetErr = new System.Windows.Forms.RadioButton(); | ||||||
|  |             this.radTargetEmpty = new System.Windows.Forms.RadioButton(); | ||||||
|  |             this.radTargetErrEmpty = new System.Windows.Forms.RadioButton(); | ||||||
|  |             this.radTargetAll = new System.Windows.Forms.RadioButton(); | ||||||
|             this.rb_isNumber = new System.Windows.Forms.RadioButton(); |             this.rb_isNumber = new System.Windows.Forms.RadioButton(); | ||||||
|             this.rb_isHave = new System.Windows.Forms.RadioButton(); |             this.rb_isHave = new System.Windows.Forms.RadioButton(); | ||||||
|             this.btn_SearchList = new System.Windows.Forms.Button(); |             this.btn_SearchList = new System.Windows.Forms.Button(); | ||||||
| @@ -45,6 +50,10 @@ | |||||||
|             this.lbl_PW = new System.Windows.Forms.Label(); |             this.lbl_PW = new System.Windows.Forms.Label(); | ||||||
|             this.lbl_ID = new System.Windows.Forms.Label(); |             this.lbl_ID = new System.Windows.Forms.Label(); | ||||||
|             this.dataGridView1 = new System.Windows.Forms.DataGridView(); |             this.dataGridView1 = new System.Windows.Forms.DataGridView(); | ||||||
|  |             this.book_name = new System.Windows.Forms.DataGridViewTextBoxColumn(); | ||||||
|  |             this.book_comp = new System.Windows.Forms.DataGridViewTextBoxColumn(); | ||||||
|  |             this.Count = new System.Windows.Forms.DataGridViewTextBoxColumn(); | ||||||
|  |             this.dvc_remark = new System.Windows.Forms.DataGridViewTextBoxColumn(); | ||||||
|             this.btn_ApplyFilter = new System.Windows.Forms.Button(); |             this.btn_ApplyFilter = new System.Windows.Forms.Button(); | ||||||
|             this.panel3 = new System.Windows.Forms.Panel(); |             this.panel3 = new System.Windows.Forms.Panel(); | ||||||
|             this.panel6 = new System.Windows.Forms.Panel(); |             this.panel6 = new System.Windows.Forms.Panel(); | ||||||
| @@ -57,17 +66,10 @@ | |||||||
|             this.btn_OpenMemo = new System.Windows.Forms.Button(); |             this.btn_OpenMemo = new System.Windows.Forms.Button(); | ||||||
|             this.chk_spChar = new System.Windows.Forms.CheckBox(); |             this.chk_spChar = new System.Windows.Forms.CheckBox(); | ||||||
|             this.panel5 = new System.Windows.Forms.Panel(); |             this.panel5 = new System.Windows.Forms.Panel(); | ||||||
|             this.groupBox1 = new System.Windows.Forms.GroupBox(); |  | ||||||
|             this.radTargetAll = new System.Windows.Forms.RadioButton(); |  | ||||||
|             this.radTargetErrEmpty = new System.Windows.Forms.RadioButton(); |  | ||||||
|             this.radTargetEmpty = new System.Windows.Forms.RadioButton(); |  | ||||||
|             this.radTargetErr = new System.Windows.Forms.RadioButton(); |  | ||||||
|             this.book_name = new System.Windows.Forms.DataGridViewTextBoxColumn(); |  | ||||||
|             this.book_comp = new System.Windows.Forms.DataGridViewTextBoxColumn(); |  | ||||||
|             this.Count = new System.Windows.Forms.DataGridViewTextBoxColumn(); |  | ||||||
|             this.dvc_remark = new System.Windows.Forms.DataGridViewTextBoxColumn(); |  | ||||||
|             this.webBrowser1 = new System.Windows.Forms.WebBrowser(); |             this.webBrowser1 = new System.Windows.Forms.WebBrowser(); | ||||||
|  |             this.chkRetryErrData = new System.Windows.Forms.CheckBox(); | ||||||
|             this.panel1.SuspendLayout(); |             this.panel1.SuspendLayout(); | ||||||
|  |             this.groupBox1.SuspendLayout(); | ||||||
|             ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).BeginInit(); |             ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).BeginInit(); | ||||||
|             this.panel2.SuspendLayout(); |             this.panel2.SuspendLayout(); | ||||||
|             ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); |             ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); | ||||||
| @@ -76,12 +78,12 @@ | |||||||
|             this.statusStrip1.SuspendLayout(); |             this.statusStrip1.SuspendLayout(); | ||||||
|             this.panel4.SuspendLayout(); |             this.panel4.SuspendLayout(); | ||||||
|             this.panel5.SuspendLayout(); |             this.panel5.SuspendLayout(); | ||||||
|             this.groupBox1.SuspendLayout(); |  | ||||||
|             this.SuspendLayout(); |             this.SuspendLayout(); | ||||||
|             //  |             //  | ||||||
|             // panel1 |             // panel1 | ||||||
|             //  |             //  | ||||||
|             this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; |             this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | ||||||
|  |             this.panel1.Controls.Add(this.chkRetryErrData); | ||||||
|             this.panel1.Controls.Add(this.groupBox1); |             this.panel1.Controls.Add(this.groupBox1); | ||||||
|             this.panel1.Controls.Add(this.rb_isNumber); |             this.panel1.Controls.Add(this.rb_isNumber); | ||||||
|             this.panel1.Controls.Add(this.rb_isHave); |             this.panel1.Controls.Add(this.rb_isHave); | ||||||
| @@ -91,9 +93,64 @@ | |||||||
|             this.panel1.Dock = System.Windows.Forms.DockStyle.Top; |             this.panel1.Dock = System.Windows.Forms.DockStyle.Top; | ||||||
|             this.panel1.Location = new System.Drawing.Point(0, 34); |             this.panel1.Location = new System.Drawing.Point(0, 34); | ||||||
|             this.panel1.Name = "panel1"; |             this.panel1.Name = "panel1"; | ||||||
|             this.panel1.Size = new System.Drawing.Size(629, 83); |             this.panel1.Size = new System.Drawing.Size(629, 106); | ||||||
|             this.panel1.TabIndex = 0; |             this.panel1.TabIndex = 0; | ||||||
|             //  |             //  | ||||||
|  |             // groupBox1 | ||||||
|  |             //  | ||||||
|  |             this.groupBox1.Controls.Add(this.radTargetErr); | ||||||
|  |             this.groupBox1.Controls.Add(this.radTargetEmpty); | ||||||
|  |             this.groupBox1.Controls.Add(this.radTargetErrEmpty); | ||||||
|  |             this.groupBox1.Controls.Add(this.radTargetAll); | ||||||
|  |             this.groupBox1.Location = new System.Drawing.Point(318, 34); | ||||||
|  |             this.groupBox1.Name = "groupBox1"; | ||||||
|  |             this.groupBox1.Size = new System.Drawing.Size(304, 39); | ||||||
|  |             this.groupBox1.TabIndex = 6; | ||||||
|  |             this.groupBox1.TabStop = false; | ||||||
|  |             this.groupBox1.Text = "검색대상"; | ||||||
|  |             //  | ||||||
|  |             // radTargetErr | ||||||
|  |             //  | ||||||
|  |             this.radTargetErr.AutoSize = true; | ||||||
|  |             this.radTargetErr.Location = new System.Drawing.Point(197, 16); | ||||||
|  |             this.radTargetErr.Name = "radTargetErr"; | ||||||
|  |             this.radTargetErr.Size = new System.Drawing.Size(47, 16); | ||||||
|  |             this.radTargetErr.TabIndex = 9; | ||||||
|  |             this.radTargetErr.Text = "오류"; | ||||||
|  |             this.radTargetErr.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|  |             // radTargetEmpty | ||||||
|  |             //  | ||||||
|  |             this.radTargetEmpty.AutoSize = true; | ||||||
|  |             this.radTargetEmpty.Location = new System.Drawing.Point(144, 16); | ||||||
|  |             this.radTargetEmpty.Name = "radTargetEmpty"; | ||||||
|  |             this.radTargetEmpty.Size = new System.Drawing.Size(47, 16); | ||||||
|  |             this.radTargetEmpty.TabIndex = 8; | ||||||
|  |             this.radTargetEmpty.Text = "없음"; | ||||||
|  |             this.radTargetEmpty.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|  |             // radTargetErrEmpty | ||||||
|  |             //  | ||||||
|  |             this.radTargetErrEmpty.AutoSize = true; | ||||||
|  |             this.radTargetErrEmpty.Location = new System.Drawing.Point(61, 17); | ||||||
|  |             this.radTargetErrEmpty.Name = "radTargetErrEmpty"; | ||||||
|  |             this.radTargetErrEmpty.Size = new System.Drawing.Size(77, 16); | ||||||
|  |             this.radTargetErrEmpty.TabIndex = 7; | ||||||
|  |             this.radTargetErrEmpty.Text = "오류+없음"; | ||||||
|  |             this.radTargetErrEmpty.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|  |             // radTargetAll | ||||||
|  |             //  | ||||||
|  |             this.radTargetAll.AutoSize = true; | ||||||
|  |             this.radTargetAll.Checked = true; | ||||||
|  |             this.radTargetAll.Location = new System.Drawing.Point(8, 16); | ||||||
|  |             this.radTargetAll.Name = "radTargetAll"; | ||||||
|  |             this.radTargetAll.Size = new System.Drawing.Size(47, 16); | ||||||
|  |             this.radTargetAll.TabIndex = 6; | ||||||
|  |             this.radTargetAll.TabStop = true; | ||||||
|  |             this.radTargetAll.Text = "전체"; | ||||||
|  |             this.radTargetAll.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|             // rb_isNumber |             // rb_isNumber | ||||||
|             //  |             //  | ||||||
|             this.rb_isNumber.AutoSize = true; |             this.rb_isNumber.AutoSize = true; | ||||||
| @@ -121,7 +178,7 @@ | |||||||
|             //  |             //  | ||||||
|             this.btn_SearchList.Location = new System.Drawing.Point(4, 4); |             this.btn_SearchList.Location = new System.Drawing.Point(4, 4); | ||||||
|             this.btn_SearchList.Name = "btn_SearchList"; |             this.btn_SearchList.Name = "btn_SearchList"; | ||||||
|             this.btn_SearchList.Size = new System.Drawing.Size(305, 69); |             this.btn_SearchList.Size = new System.Drawing.Size(305, 93); | ||||||
|             this.btn_SearchList.TabIndex = 3; |             this.btn_SearchList.TabIndex = 3; | ||||||
|             this.btn_SearchList.Text = "목록 검색"; |             this.btn_SearchList.Text = "목록 검색"; | ||||||
|             this.btn_SearchList.UseVisualStyleBackColor = true; |             this.btn_SearchList.UseVisualStyleBackColor = true; | ||||||
| @@ -267,11 +324,38 @@ | |||||||
|             this.dataGridView1.Location = new System.Drawing.Point(0, 0); |             this.dataGridView1.Location = new System.Drawing.Point(0, 0); | ||||||
|             this.dataGridView1.Name = "dataGridView1"; |             this.dataGridView1.Name = "dataGridView1"; | ||||||
|             this.dataGridView1.RowTemplate.Height = 23; |             this.dataGridView1.RowTemplate.Height = 23; | ||||||
|             this.dataGridView1.Size = new System.Drawing.Size(629, 565); |             this.dataGridView1.Size = new System.Drawing.Size(629, 542); | ||||||
|             this.dataGridView1.TabIndex = 1; |             this.dataGridView1.TabIndex = 1; | ||||||
|             this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); |             this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); | ||||||
|             this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); |             this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); | ||||||
|             //  |             //  | ||||||
|  |             // book_name | ||||||
|  |             //  | ||||||
|  |             this.book_name.HeaderText = "도서명(총서명)"; | ||||||
|  |             this.book_name.Name = "book_name"; | ||||||
|  |             this.book_name.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; | ||||||
|  |             this.book_name.Width = 300; | ||||||
|  |             //  | ||||||
|  |             // book_comp | ||||||
|  |             //  | ||||||
|  |             this.book_comp.HeaderText = "출판사"; | ||||||
|  |             this.book_comp.Name = "book_comp"; | ||||||
|  |             this.book_comp.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; | ||||||
|  |             this.book_comp.Width = 120; | ||||||
|  |             //  | ||||||
|  |             // Count | ||||||
|  |             //  | ||||||
|  |             this.Count.HeaderText = "검색 수"; | ||||||
|  |             this.Count.Name = "Count"; | ||||||
|  |             this.Count.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; | ||||||
|  |             this.Count.Width = 50; | ||||||
|  |             //  | ||||||
|  |             // dvc_remark | ||||||
|  |             //  | ||||||
|  |             this.dvc_remark.HeaderText = "비고"; | ||||||
|  |             this.dvc_remark.Name = "dvc_remark"; | ||||||
|  |             this.dvc_remark.Width = 110; | ||||||
|  |             //  | ||||||
|             // btn_ApplyFilter |             // btn_ApplyFilter | ||||||
|             //  |             //  | ||||||
|             this.btn_ApplyFilter.Location = new System.Drawing.Point(317, 4); |             this.btn_ApplyFilter.Location = new System.Drawing.Point(317, 4); | ||||||
| @@ -299,16 +383,16 @@ | |||||||
|             this.panel6.Controls.Add(this.dataGridView1); |             this.panel6.Controls.Add(this.dataGridView1); | ||||||
|             this.panel6.Controls.Add(this.statusStrip1); |             this.panel6.Controls.Add(this.statusStrip1); | ||||||
|             this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; |             this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; | ||||||
|             this.panel6.Location = new System.Drawing.Point(0, 151); |             this.panel6.Location = new System.Drawing.Point(0, 174); | ||||||
|             this.panel6.Name = "panel6"; |             this.panel6.Name = "panel6"; | ||||||
|             this.panel6.Size = new System.Drawing.Size(629, 587); |             this.panel6.Size = new System.Drawing.Size(629, 564); | ||||||
|             this.panel6.TabIndex = 3; |             this.panel6.TabIndex = 3; | ||||||
|             //  |             //  | ||||||
|             // statusStrip1 |             // statusStrip1 | ||||||
|             //  |             //  | ||||||
|             this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |             this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | ||||||
|             this.lblStatus}); |             this.lblStatus}); | ||||||
|             this.statusStrip1.Location = new System.Drawing.Point(0, 565); |             this.statusStrip1.Location = new System.Drawing.Point(0, 542); | ||||||
|             this.statusStrip1.Name = "statusStrip1"; |             this.statusStrip1.Name = "statusStrip1"; | ||||||
|             this.statusStrip1.Size = new System.Drawing.Size(629, 22); |             this.statusStrip1.Size = new System.Drawing.Size(629, 22); | ||||||
|             this.statusStrip1.TabIndex = 2; |             this.statusStrip1.TabIndex = 2; | ||||||
| @@ -330,7 +414,7 @@ | |||||||
|             this.panel4.Controls.Add(this.btn_ApplyFilter); |             this.panel4.Controls.Add(this.btn_ApplyFilter); | ||||||
|             this.panel4.Controls.Add(this.chk_spChar); |             this.panel4.Controls.Add(this.chk_spChar); | ||||||
|             this.panel4.Dock = System.Windows.Forms.DockStyle.Top; |             this.panel4.Dock = System.Windows.Forms.DockStyle.Top; | ||||||
|             this.panel4.Location = new System.Drawing.Point(0, 117); |             this.panel4.Location = new System.Drawing.Point(0, 140); | ||||||
|             this.panel4.Name = "panel4"; |             this.panel4.Name = "panel4"; | ||||||
|             this.panel4.Size = new System.Drawing.Size(629, 34); |             this.panel4.Size = new System.Drawing.Size(629, 34); | ||||||
|             this.panel4.TabIndex = 2; |             this.panel4.TabIndex = 2; | ||||||
| @@ -394,87 +478,6 @@ | |||||||
|             this.panel5.Size = new System.Drawing.Size(662, 738); |             this.panel5.Size = new System.Drawing.Size(662, 738); | ||||||
|             this.panel5.TabIndex = 4; |             this.panel5.TabIndex = 4; | ||||||
|             //  |             //  | ||||||
|             // groupBox1 |  | ||||||
|             //  |  | ||||||
|             this.groupBox1.Controls.Add(this.radTargetErr); |  | ||||||
|             this.groupBox1.Controls.Add(this.radTargetEmpty); |  | ||||||
|             this.groupBox1.Controls.Add(this.radTargetErrEmpty); |  | ||||||
|             this.groupBox1.Controls.Add(this.radTargetAll); |  | ||||||
|             this.groupBox1.Location = new System.Drawing.Point(318, 34); |  | ||||||
|             this.groupBox1.Name = "groupBox1"; |  | ||||||
|             this.groupBox1.Size = new System.Drawing.Size(305, 39); |  | ||||||
|             this.groupBox1.TabIndex = 6; |  | ||||||
|             this.groupBox1.TabStop = false; |  | ||||||
|             this.groupBox1.Text = "검색대상"; |  | ||||||
|             //  |  | ||||||
|             // radTargetAll |  | ||||||
|             //  |  | ||||||
|             this.radTargetAll.AutoSize = true; |  | ||||||
|             this.radTargetAll.Checked = true; |  | ||||||
|             this.radTargetAll.Location = new System.Drawing.Point(8, 16); |  | ||||||
|             this.radTargetAll.Name = "radTargetAll"; |  | ||||||
|             this.radTargetAll.Size = new System.Drawing.Size(47, 16); |  | ||||||
|             this.radTargetAll.TabIndex = 6; |  | ||||||
|             this.radTargetAll.Text = "전체"; |  | ||||||
|             this.radTargetAll.UseVisualStyleBackColor = true; |  | ||||||
|             //  |  | ||||||
|             // radTargetErrEmpty |  | ||||||
|             //  |  | ||||||
|             this.radTargetErrEmpty.AutoSize = true; |  | ||||||
|             this.radTargetErrEmpty.Location = new System.Drawing.Point(61, 17); |  | ||||||
|             this.radTargetErrEmpty.Name = "radTargetErrEmpty"; |  | ||||||
|             this.radTargetErrEmpty.Size = new System.Drawing.Size(77, 16); |  | ||||||
|             this.radTargetErrEmpty.TabIndex = 7; |  | ||||||
|             this.radTargetErrEmpty.Text = "오류+없음"; |  | ||||||
|             this.radTargetErrEmpty.UseVisualStyleBackColor = true; |  | ||||||
|             //  |  | ||||||
|             // radTargetEmpty |  | ||||||
|             //  |  | ||||||
|             this.radTargetEmpty.AutoSize = true; |  | ||||||
|             this.radTargetEmpty.Location = new System.Drawing.Point(144, 16); |  | ||||||
|             this.radTargetEmpty.Name = "radTargetEmpty"; |  | ||||||
|             this.radTargetEmpty.Size = new System.Drawing.Size(47, 16); |  | ||||||
|             this.radTargetEmpty.TabIndex = 8; |  | ||||||
|             this.radTargetEmpty.Text = "없음"; |  | ||||||
|             this.radTargetEmpty.UseVisualStyleBackColor = true; |  | ||||||
|             //  |  | ||||||
|             // radTargetErr |  | ||||||
|             //  |  | ||||||
|             this.radTargetErr.AutoSize = true; |  | ||||||
|             this.radTargetErr.Location = new System.Drawing.Point(197, 16); |  | ||||||
|             this.radTargetErr.Name = "radTargetErr"; |  | ||||||
|             this.radTargetErr.Size = new System.Drawing.Size(47, 16); |  | ||||||
|             this.radTargetErr.TabIndex = 9; |  | ||||||
|             this.radTargetErr.Text = "오류"; |  | ||||||
|             this.radTargetErr.UseVisualStyleBackColor = true; |  | ||||||
|             //  |  | ||||||
|             // book_name |  | ||||||
|             //  |  | ||||||
|             this.book_name.HeaderText = "도서명(총서명)"; |  | ||||||
|             this.book_name.Name = "book_name"; |  | ||||||
|             this.book_name.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; |  | ||||||
|             this.book_name.Width = 300; |  | ||||||
|             //  |  | ||||||
|             // book_comp |  | ||||||
|             //  |  | ||||||
|             this.book_comp.HeaderText = "출판사"; |  | ||||||
|             this.book_comp.Name = "book_comp"; |  | ||||||
|             this.book_comp.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; |  | ||||||
|             this.book_comp.Width = 120; |  | ||||||
|             //  |  | ||||||
|             // Count |  | ||||||
|             //  |  | ||||||
|             this.Count.HeaderText = "검색 수"; |  | ||||||
|             this.Count.Name = "Count"; |  | ||||||
|             this.Count.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; |  | ||||||
|             this.Count.Width = 50; |  | ||||||
|             //  |  | ||||||
|             // dvc_remark |  | ||||||
|             //  |  | ||||||
|             this.dvc_remark.HeaderText = "비고"; |  | ||||||
|             this.dvc_remark.Name = "dvc_remark"; |  | ||||||
|             this.dvc_remark.Width = 110; |  | ||||||
|             //  |  | ||||||
|             // webBrowser1 |             // webBrowser1 | ||||||
|             //  |             //  | ||||||
|             this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; |             this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; | ||||||
| @@ -485,6 +488,18 @@ | |||||||
|             this.webBrowser1.Size = new System.Drawing.Size(662, 738); |             this.webBrowser1.Size = new System.Drawing.Size(662, 738); | ||||||
|             this.webBrowser1.TabIndex = 2; |             this.webBrowser1.TabIndex = 2; | ||||||
|             //  |             //  | ||||||
|  |             // chkRetryErrData | ||||||
|  |             //  | ||||||
|  |             this.chkRetryErrData.AutoSize = true; | ||||||
|  |             this.chkRetryErrData.Checked = true; | ||||||
|  |             this.chkRetryErrData.CheckState = System.Windows.Forms.CheckState.Checked; | ||||||
|  |             this.chkRetryErrData.Location = new System.Drawing.Point(319, 81); | ||||||
|  |             this.chkRetryErrData.Name = "chkRetryErrData"; | ||||||
|  |             this.chkRetryErrData.Size = new System.Drawing.Size(188, 16); | ||||||
|  |             this.chkRetryErrData.TabIndex = 7; | ||||||
|  |             this.chkRetryErrData.Text = "검색 후 오류 데이터 추가 검색"; | ||||||
|  |             this.chkRetryErrData.UseVisualStyleBackColor = true; | ||||||
|  |             //  | ||||||
|             // Check_copy |             // Check_copy | ||||||
|             //  |             //  | ||||||
|             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); |             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); | ||||||
| @@ -498,6 +513,8 @@ | |||||||
|             this.Load += new System.EventHandler(this.Check_copy_Load); |             this.Load += new System.EventHandler(this.Check_copy_Load); | ||||||
|             this.panel1.ResumeLayout(false); |             this.panel1.ResumeLayout(false); | ||||||
|             this.panel1.PerformLayout(); |             this.panel1.PerformLayout(); | ||||||
|  |             this.groupBox1.ResumeLayout(false); | ||||||
|  |             this.groupBox1.PerformLayout(); | ||||||
|             ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).EndInit(); |             ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).EndInit(); | ||||||
|             this.panel2.ResumeLayout(false); |             this.panel2.ResumeLayout(false); | ||||||
|             this.panel2.PerformLayout(); |             this.panel2.PerformLayout(); | ||||||
| @@ -510,8 +527,6 @@ | |||||||
|             this.panel4.ResumeLayout(false); |             this.panel4.ResumeLayout(false); | ||||||
|             this.panel4.PerformLayout(); |             this.panel4.PerformLayout(); | ||||||
|             this.panel5.ResumeLayout(false); |             this.panel5.ResumeLayout(false); | ||||||
|             this.groupBox1.ResumeLayout(false); |  | ||||||
|             this.groupBox1.PerformLayout(); |  | ||||||
|             this.ResumeLayout(false); |             this.ResumeLayout(false); | ||||||
|  |  | ||||||
|         } |         } | ||||||
| @@ -547,7 +562,6 @@ | |||||||
|         private System.Windows.Forms.WebBrowser webBrowser1; |         private System.Windows.Forms.WebBrowser webBrowser1; | ||||||
|         private System.Windows.Forms.StatusStrip statusStrip1; |         private System.Windows.Forms.StatusStrip statusStrip1; | ||||||
|         private System.Windows.Forms.ToolStripLabel lblStatus; |         private System.Windows.Forms.ToolStripLabel lblStatus; | ||||||
|         private System.Windows.Forms.GroupBox groupBox1; |  | ||||||
|         private System.Windows.Forms.RadioButton radTargetAll; |         private System.Windows.Forms.RadioButton radTargetAll; | ||||||
|         private System.Windows.Forms.RadioButton radTargetErr; |         private System.Windows.Forms.RadioButton radTargetErr; | ||||||
|         private System.Windows.Forms.RadioButton radTargetEmpty; |         private System.Windows.Forms.RadioButton radTargetEmpty; | ||||||
| @@ -556,5 +570,7 @@ | |||||||
|         private System.Windows.Forms.DataGridViewTextBoxColumn book_comp; |         private System.Windows.Forms.DataGridViewTextBoxColumn book_comp; | ||||||
|         private System.Windows.Forms.DataGridViewTextBoxColumn Count; |         private System.Windows.Forms.DataGridViewTextBoxColumn Count; | ||||||
|         private System.Windows.Forms.DataGridViewTextBoxColumn dvc_remark; |         private System.Windows.Forms.DataGridViewTextBoxColumn dvc_remark; | ||||||
|  |         public System.Windows.Forms.CheckBox chkRetryErrData; | ||||||
|  |         public System.Windows.Forms.GroupBox groupBox1; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -305,11 +305,25 @@ namespace WindowsFormsApp1.Mac | |||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     var intSearchCnt = 0; |                  | ||||||
|                     this._isSearching = true; |                     this._isSearching = true; | ||||||
|                     btn_Start.Enabled = false; |                     btn_Start.Enabled = false; | ||||||
|                     btn_Stop.Enabled = false; |                     btn_Stop.Enabled = false; | ||||||
|                     searcher.StartDriver(); |                     searcher.StartDriver(); | ||||||
|  |                     byte searchopt = 0; //전체검색 | ||||||
|  |                     if (radTargetEmpty.Checked) searchopt = 1; | ||||||
|  |                     else if (radTargetErr.Checked) searchopt = 2; | ||||||
|  |                     else if (radTargetErrEmpty.Checked) searchopt = 3; | ||||||
|  |  | ||||||
|  |                     bool retry = false; | ||||||
|  |                     var cnt_totalcnt = 0; | ||||||
|  |                     int cnt_skip = 0; | ||||||
|  |                     int cnt_ok = 0; | ||||||
|  |                     int cnt_ng = 0; | ||||||
|  |                     int cnt_er = 0; | ||||||
|  |                      | ||||||
|  |                      | ||||||
|  |                 RetrySearch: | ||||||
|                     foreach (DataGridViewRow drow in this.dataGridView1.Rows) |                     foreach (DataGridViewRow drow in this.dataGridView1.Rows) | ||||||
|                     { |                     { | ||||||
|                         if (this._isSearching == false) |                         if (this._isSearching == false) | ||||||
| @@ -323,6 +337,7 @@ namespace WindowsFormsApp1.Mac | |||||||
|                         var bookName = drow.Cells["book_name"].Value?.ToString() ?? string.Empty; |                         var bookName = drow.Cells["book_name"].Value?.ToString() ?? string.Empty; | ||||||
|                         if (bookName.isEmpty()) |                         if (bookName.isEmpty()) | ||||||
|                         { |                         { | ||||||
|  |                             cnt_skip += 1; | ||||||
|                             drow.Cells["dvc_remark"].Value = "No Title"; |                             drow.Cells["dvc_remark"].Value = "No Title"; | ||||||
|                             drow.DefaultCellStyle.BackColor = Color.HotPink; |                             drow.DefaultCellStyle.BackColor = Color.HotPink; | ||||||
|                             drow.DefaultCellStyle.ForeColor = Color.Blue; |                             drow.DefaultCellStyle.ForeColor = Color.Blue; | ||||||
| @@ -334,7 +349,7 @@ namespace WindowsFormsApp1.Mac | |||||||
|  |  | ||||||
|                         if (radTargetErr.Checked)    //오류데이터만 처리 |                         if (radTargetErr.Checked)    //오류데이터만 처리 | ||||||
|                         { |                         { | ||||||
|                             if (cntValue.StartsWith("err") == false)  |                             if ( cntValue.Equals("-1")==false) | ||||||
|                                 continue; |                                 continue; | ||||||
|                         } |                         } | ||||||
|                         else if (radTargetEmpty.Checked) //빈데이터만 처리 |                         else if (radTargetEmpty.Checked) //빈데이터만 처리 | ||||||
| @@ -344,39 +359,58 @@ namespace WindowsFormsApp1.Mac | |||||||
|                         } |                         } | ||||||
|                         else if (radTargetErrEmpty.Checked) //오류+빈데이터처리 |                         else if (radTargetErrEmpty.Checked) //오류+빈데이터처리 | ||||||
|                         { |                         { | ||||||
|                             if (cntValue.StartsWith("err") == false && int.TryParse(cntValue, out int cntvalue) && cntvalue > 0) |                             if (cntValue.Equals("-1") == false && int.TryParse(cntValue, out int cntvalue) && cntvalue > 0) | ||||||
|                                 continue; |                                 continue; | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|                         intSearchCnt += 1; |                         cnt_totalcnt += 1; | ||||||
|                         var rlt = await searcher.SearchAsync(bookName);                         |                         var rlt = await searcher.SearchAsync(bookName);                         | ||||||
|                         if (rlt.IsSuccess) |                         if (rlt.IsSuccess) | ||||||
|                         { |                         { | ||||||
|  |                             drow.Cells["dvc_remark"].Value = rlt.ErrorMessage; | ||||||
|                             drow.Cells["Count"].Value = $"{rlt.BookCount}"; |                             drow.Cells["Count"].Value = $"{rlt.BookCount}"; | ||||||
|                             if (rlt.BookCount == 0) |                             if (rlt.BookCount == 0) | ||||||
|                             { |                             { | ||||||
|                                 drow.Cells["dvc_remark"].Value = "No Data"; |                                 cnt_ng += 1; | ||||||
|                                 drow.DefaultCellStyle.BackColor = Color.LightGray; |                                 drow.DefaultCellStyle.BackColor = Color.LightGray; | ||||||
|                                 drow.DefaultCellStyle.ForeColor = Color.Red; |                                 drow.DefaultCellStyle.ForeColor = Color.Red; | ||||||
|                             } |                             } | ||||||
|                             else |                             else | ||||||
|                             { |                             { | ||||||
|                                 drow.Cells["dvc_remark"].Value = ""; |                                 cnt_ok += 1; | ||||||
|                                 drow.DefaultCellStyle.BackColor = Color.Yellow; |                                 drow.DefaultCellStyle.BackColor = Color.Yellow; | ||||||
|                                 drow.DefaultCellStyle.ForeColor = Color.Blue; |                                 drow.DefaultCellStyle.ForeColor = Color.Blue; | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                         { |                         { | ||||||
|                             drow.Cells["dvc_remark"].Value = "Error"; |                             cnt_er += 1; | ||||||
|  |                             drow.Cells["dvc_remark"].Value = $"Error|{rlt.ErrorMessage}"; | ||||||
|                             drow.DefaultCellStyle.BackColor = Color.HotPink; |                             drow.DefaultCellStyle.BackColor = Color.HotPink; | ||||||
|                             drow.DefaultCellStyle.ForeColor = Color.Blue; |                             drow.DefaultCellStyle.ForeColor = Color.Blue; | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|  |  | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  |                     if (retry == false && chkRetryErrData.Checked) | ||||||
|  |                     { | ||||||
|  |                         retry = true; | ||||||
|  |                         radTargetErr.Checked = true; | ||||||
|  |                         goto RetrySearch; | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|  |                     { | ||||||
|                         searcher.StopDriver(); |                         searcher.StopDriver(); | ||||||
|                     UTIL.MsgI($"검색 완료({intSearchCnt})건"); |                         UTIL.MsgI($"검색 완료\n전체:{cnt_totalcnt}건/오류:{cnt_er}/성공:{cnt_ok}/없음:{cnt_ng}"); | ||||||
|  |  | ||||||
|  |                         //재시도한경우라면 원복해준다 | ||||||
|  |                         if(retry) | ||||||
|  |                         { | ||||||
|  |                             if (searchopt == 1) radTargetEmpty.Checked = true; | ||||||
|  |                             else if (searchopt == 2) radTargetErr.Checked = true; | ||||||
|  |                             else if (searchopt == 3) radTargetErrEmpty.Checked = true; | ||||||
|  |                             else radTargetAll.Checked = true; | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|                 catch (Exception ex) |                 catch (Exception ex) | ||||||
|                 { |                 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 SeungHo Yang
					SeungHo Yang