diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..5557eae --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(git add:*)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index bb077c4..21dd076 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ OutPutMarc/ GolfTicketing/ *.msi +/unimarc/PatchList/~$유니막 수정내역2.pptx diff --git a/unimarc/unimarc/Helper_DB.cs b/unimarc/unimarc/Helper_DB.cs index 62484b5..f7fbf29 100644 --- a/unimarc/unimarc/Helper_DB.cs +++ b/unimarc/unimarc/Helper_DB.cs @@ -68,6 +68,34 @@ namespace WindowsFormsApp1 } } } + + public MySql.Data.MySqlClient.MySqlConnection CreateConnection() + { + PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(ServerData[0], port, ServerData[1], ServerData[2]); + connectionInfo.Timeout = TimeSpan.FromSeconds(30); + using (var client = new SshClient(connectionInfo)) + { + if (conn != null) + { + conn.Close(); + conn.Dispose(); + } + client.Connect(); + if (client.IsConnected) + { + string strConnection = string.Format( + "Server={0};" + + "Port={1};" + + "Database=unimarc;" + + "uid={2};" + + "pwd={3};", ServerData[0], DBData[0], DBData[1], DBData[2]); + return new MySqlConnection(strConnection); + } + } + + return null; + } + /// /// 국중DB를 사용하고 싶을 때 미리 저장된 DB의 기본 접속정보를 이용하여 DB에 접근한다. /// diff --git a/unimarc/unimarc/Main.Designer.cs b/unimarc/unimarc/Main.Designer.cs index de64a14..89ed060 100644 --- a/unimarc/unimarc/Main.Designer.cs +++ b/unimarc/unimarc/Main.Designer.cs @@ -71,6 +71,7 @@ this.소장자료검색 = new System.Windows.Forms.ToolStripMenuItem(); this.마크정리 = new System.Windows.Forms.ToolStripMenuItem(); this.복본조사1 = new System.Windows.Forms.ToolStripMenuItem(); + this.복본조사2 = new System.Windows.Forms.ToolStripMenuItem(); this.iSBN조회 = new System.Windows.Forms.ToolStripMenuItem(); this.dVDCDLPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.목록 = new System.Windows.Forms.ToolStripMenuItem(); @@ -133,7 +134,7 @@ this.IPText = new System.Windows.Forms.ToolStripLabel(); this.lblStatus = new System.Windows.Forms.ToolStripLabel(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); - this.복본조사2 = new System.Windows.Forms.ToolStripMenuItem(); + this.btDevDb = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.panel1.SuspendLayout(); this.toolStrip1.SuspendLayout(); @@ -172,28 +173,28 @@ // 사업체정보 // this.사업체정보.Name = "사업체정보"; - this.사업체정보.Size = new System.Drawing.Size(180, 22); + this.사업체정보.Size = new System.Drawing.Size(175, 22); this.사업체정보.Text = "사업체 정보"; this.사업체정보.Click += new System.EventHandler(this.사용자정보ToolStripMenuItem_Click); // // 사용자관리 // this.사용자관리.Name = "사용자관리"; - this.사용자관리.Size = new System.Drawing.Size(180, 22); + this.사용자관리.Size = new System.Drawing.Size(175, 22); this.사용자관리.Text = "사용자 관리"; this.사용자관리.Click += new System.EventHandler(this.사용자관리ToolStripMenuItem_Click); // // 납품거래처관리 // this.납품거래처관리.Name = "납품거래처관리"; - this.납품거래처관리.Size = new System.Drawing.Size(180, 22); + this.납품거래처관리.Size = new System.Drawing.Size(175, 22); this.납품거래처관리.Text = "납품 / 거래처 관리"; this.납품거래처관리.Click += new System.EventHandler(this.납품거래처관리ToolStripMenuItem_Click); // // 주문처관리 // this.주문처관리.Name = "주문처관리"; - this.주문처관리.Size = new System.Drawing.Size(180, 22); + this.주문처관리.Size = new System.Drawing.Size(175, 22); this.주문처관리.Text = "주문처 관리"; this.주문처관리.Click += new System.EventHandler(this.주문처관리ToolStripMenuItem_Click); // @@ -201,14 +202,14 @@ // this.비밀번호변경.Enabled = false; this.비밀번호변경.Name = "비밀번호변경"; - this.비밀번호변경.Size = new System.Drawing.Size(180, 22); + this.비밀번호변경.Size = new System.Drawing.Size(175, 22); this.비밀번호변경.Text = "비밀번호 변경"; this.비밀번호변경.Click += new System.EventHandler(this.비밀번호변경ToolStripMenuItem_Click); // // 도서정보관리 // this.도서정보관리.Name = "도서정보관리"; - this.도서정보관리.Size = new System.Drawing.Size(180, 22); + this.도서정보관리.Size = new System.Drawing.Size(175, 22); this.도서정보관리.Text = "도서정보 관리"; this.도서정보관리.Click += new System.EventHandler(this.도서정보관리ToolStripMenuItem_Click); // @@ -216,7 +217,7 @@ // this.사용대장.Enabled = false; this.사용대장.Name = "사용대장"; - this.사용대장.Size = new System.Drawing.Size(180, 22); + this.사용대장.Size = new System.Drawing.Size(175, 22); this.사용대장.Text = "사용대장"; this.사용대장.Click += new System.EventHandler(this.사용대장ToolStripMenuItem_Click); // @@ -237,49 +238,49 @@ // 목록등록 // this.목록등록.Name = "목록등록"; - this.목록등록.Size = new System.Drawing.Size(180, 22); + this.목록등록.Size = new System.Drawing.Size(166, 22); this.목록등록.Text = "물품등록"; this.목록등록.Click += new System.EventHandler(this.물품등록ToolStripMenuItem_Click); // // 목록조회 // this.목록조회.Name = "목록조회"; - this.목록조회.Size = new System.Drawing.Size(180, 22); + this.목록조회.Size = new System.Drawing.Size(166, 22); this.목록조회.Text = "목록조회"; this.목록조회.Click += new System.EventHandler(this.목록등록편의ToolStripMenuItem_Click); // // 목록집계 // this.목록집계.Name = "목록집계"; - this.목록집계.Size = new System.Drawing.Size(180, 22); + this.목록집계.Size = new System.Drawing.Size(166, 22); this.목록집계.Text = "목록집계"; this.목록집계.Click += new System.EventHandler(this.목록집계ToolStripMenuItem_Click); // // 주문입력 // this.주문입력.Name = "주문입력"; - this.주문입력.Size = new System.Drawing.Size(180, 22); + this.주문입력.Size = new System.Drawing.Size(166, 22); this.주문입력.Text = "주문입력"; this.주문입력.Click += new System.EventHandler(this.주문입력ToolStripMenuItem_Click); // // 입고작업 // this.입고작업.Name = "입고작업"; - this.입고작업.Size = new System.Drawing.Size(180, 22); + this.입고작업.Size = new System.Drawing.Size(166, 22); this.입고작업.Text = "입고작업"; this.입고작업.Click += new System.EventHandler(this.매입ToolStripMenuItem_Click); // // 재고입력및조회 // this.재고입력및조회.Name = "재고입력및조회"; - this.재고입력및조회.Size = new System.Drawing.Size(180, 22); + this.재고입력및조회.Size = new System.Drawing.Size(166, 22); this.재고입력및조회.Text = "재고입력 및 조회"; this.재고입력및조회.Click += new System.EventHandler(this.재고입력및조회ToolStripMenuItem_Click); // // 반품처리 // this.반품처리.Name = "반품처리"; - this.반품처리.Size = new System.Drawing.Size(180, 22); + this.반품처리.Size = new System.Drawing.Size(166, 22); this.반품처리.Text = "반품처리"; this.반품처리.Click += new System.EventHandler(this.반품처리ToolStripMenuItem_Click); // @@ -298,14 +299,14 @@ // 송금내역조회 // this.송금내역조회.Name = "송금내역조회"; - this.송금내역조회.Size = new System.Drawing.Size(180, 22); + this.송금내역조회.Size = new System.Drawing.Size(154, 22); this.송금내역조회.Text = "송금 내역 조회"; this.송금내역조회.Click += new System.EventHandler(this.송금내역조회ToolStripMenuItem_Click); // // 송금등록 // this.송금등록.Name = "송금등록"; - this.송금등록.Size = new System.Drawing.Size(180, 22); + this.송금등록.Size = new System.Drawing.Size(154, 22); this.송금등록.Text = "송금 등록"; this.송금등록.Click += new System.EventHandler(this.송금등록ToolStripMenuItem_Click); // @@ -316,7 +317,7 @@ this.매입장부, this.매입미결제ToolStripMenuItem}); this.매입.Name = "매입"; - this.매입.Size = new System.Drawing.Size(180, 22); + this.매입.Size = new System.Drawing.Size(154, 22); this.매입.Text = "매입"; // // 매입집계 @@ -349,7 +350,7 @@ this.매출조회, this.매출집계}); this.매출.Name = "매출"; - this.매출.Size = new System.Drawing.Size(180, 22); + this.매출.Size = new System.Drawing.Size(154, 22); this.매출.Text = "매출"; // // 매출입력 @@ -383,7 +384,7 @@ // 파트타임관리 // this.파트타임관리.Name = "파트타임관리"; - this.파트타임관리.Size = new System.Drawing.Size(180, 22); + this.파트타임관리.Size = new System.Drawing.Size(154, 22); this.파트타임관리.Text = "파트타임 관리"; this.파트타임관리.Click += new System.EventHandler(this.파트타임관리ToolStripMenuItem_Click); // @@ -409,13 +410,13 @@ this.불용어, this.작업지시서}); this.마크설정.Name = "마크설정"; - this.마크설정.Size = new System.Drawing.Size(180, 22); + this.마크설정.Size = new System.Drawing.Size(156, 22); this.마크설정.Text = "설정"; // // 단축키설정 // this.단축키설정.Name = "단축키설정"; - this.단축키설정.Size = new System.Drawing.Size(180, 22); + this.단축키설정.Size = new System.Drawing.Size(138, 22); this.단축키설정.Text = "단축키"; this.단축키설정.Visible = false; this.단축키설정.Click += new System.EventHandler(this.단축키설정ToolStripMenuItem_Click); @@ -423,14 +424,14 @@ // 매크로문구 // this.매크로문구.Name = "매크로문구"; - this.매크로문구.Size = new System.Drawing.Size(180, 22); + this.매크로문구.Size = new System.Drawing.Size(138, 22); this.매크로문구.Text = "매크로 문구"; this.매크로문구.Click += new System.EventHandler(this.매크로문구설정ToolStripMenuItem_Click); // // 불용어 // this.불용어.Name = "불용어"; - this.불용어.Size = new System.Drawing.Size(180, 22); + this.불용어.Size = new System.Drawing.Size(138, 22); this.불용어.Text = "불용어"; this.불용어.Visible = false; this.불용어.Click += new System.EventHandler(this.불용어ToolStripMenuItem_Click); @@ -438,7 +439,7 @@ // 작업지시서 // this.작업지시서.Name = "작업지시서"; - this.작업지시서.Size = new System.Drawing.Size(180, 22); + this.작업지시서.Size = new System.Drawing.Size(138, 22); this.작업지시서.Text = "작업지시서"; this.작업지시서.Visible = false; this.작업지시서.Click += new System.EventHandler(this.작업지시서ToolStripMenuItem_Click); @@ -454,48 +455,55 @@ this.복본조사2, this.iSBN조회}); this.마크작업.Name = "마크작업"; - this.마크작업.Size = new System.Drawing.Size(180, 22); + this.마크작업.Size = new System.Drawing.Size(156, 22); this.마크작업.Text = "마크 작업"; // // 마크작성 // this.마크작성.Name = "마크작성"; - this.마크작성.Size = new System.Drawing.Size(180, 22); + this.마크작성.Size = new System.Drawing.Size(154, 22); this.마크작성.Text = "마크 작성"; this.마크작성.Click += new System.EventHandler(this.마크작성ToolStripMenuItem_Click); // // 마크목록 // this.마크목록.Name = "마크목록"; - this.마크목록.Size = new System.Drawing.Size(180, 22); + this.마크목록.Size = new System.Drawing.Size(154, 22); this.마크목록.Text = "마크 목록"; this.마크목록.Click += new System.EventHandler(this.마크목록ToolStripMenuItem_Click); // // 소장자료검색 // this.소장자료검색.Name = "소장자료검색"; - this.소장자료검색.Size = new System.Drawing.Size(180, 22); + this.소장자료검색.Size = new System.Drawing.Size(154, 22); this.소장자료검색.Text = "소장자료검색"; this.소장자료검색.Click += new System.EventHandler(this.소장자료검색ToolStripMenuItem_Click); // // 마크정리 // this.마크정리.Name = "마크정리"; - this.마크정리.Size = new System.Drawing.Size(180, 22); + this.마크정리.Size = new System.Drawing.Size(154, 22); this.마크정리.Text = "마크 정리"; this.마크정리.Click += new System.EventHandler(this.마크정리ToolStripMenuItem_Click); // // 복본조사1 // this.복본조사1.Name = "복본조사1"; - this.복본조사1.Size = new System.Drawing.Size(180, 22); + this.복본조사1.Size = new System.Drawing.Size(154, 22); this.복본조사1.Text = "복본조사"; this.복본조사1.Click += new System.EventHandler(this.복본조사ToolStripMenuItem1_Click); // + // 복본조사2 + // + this.복본조사2.Name = "복본조사2"; + this.복본조사2.Size = new System.Drawing.Size(154, 22); + this.복본조사2.Text = "복본조사(New)"; + this.복본조사2.Click += new System.EventHandler(this.복본조사2_Click); + // // iSBN조회 // this.iSBN조회.Name = "iSBN조회"; - this.iSBN조회.Size = new System.Drawing.Size(180, 22); + this.iSBN조회.Size = new System.Drawing.Size(154, 22); this.iSBN조회.Text = "ISBN 조회"; this.iSBN조회.Click += new System.EventHandler(this.iSBN조회ToolStripMenuItem_Click); // @@ -505,7 +513,7 @@ this.목록, this.편목}); this.dVDCDLPToolStripMenuItem.Name = "dVDCDLPToolStripMenuItem"; - this.dVDCDLPToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.dVDCDLPToolStripMenuItem.Size = new System.Drawing.Size(156, 22); this.dVDCDLPToolStripMenuItem.Text = "DVD / CD / LP"; // // 목록 @@ -529,7 +537,7 @@ this.마크반입, this.마크반출}); this.반입및반출.Name = "반입및반출"; - this.반입및반출.Size = new System.Drawing.Size(180, 22); + this.반입및반출.Size = new System.Drawing.Size(156, 22); this.반입및반출.Text = "반입 및 반출"; // // 마크반입 @@ -554,7 +562,7 @@ this.검수, this.저자기호}); this.부가기능.Name = "부가기능"; - this.부가기능.Size = new System.Drawing.Size(180, 22); + this.부가기능.Size = new System.Drawing.Size(156, 22); this.부가기능.Text = "부가기능"; // // 마크수집 @@ -595,7 +603,7 @@ this.DLS조회, this.dLS복본조사}); this.DLS.Name = "DLS"; - this.DLS.Size = new System.Drawing.Size(180, 22); + this.DLS.Size = new System.Drawing.Size(156, 22); this.DLS.Text = "DLS"; // // DLS조회 @@ -619,7 +627,7 @@ this.마크통계, this.장비관리}); this.마크기타.Name = "마크기타"; - this.마크기타.Size = new System.Drawing.Size(180, 22); + this.마크기타.Size = new System.Drawing.Size(156, 22); this.마크기타.Text = "기타"; // // 서류작성 @@ -754,7 +762,8 @@ this.매출내역ToolStripMenuItem, this.이용자거래처조회ToolStripMenuItem, this.마크설정ToolStripMenuItem, - this.일괄처리관리ToolStripMenuItem}); + this.일괄처리관리ToolStripMenuItem, + this.btDevDb}); this.마스터ToolStripMenuItem.Name = "마스터ToolStripMenuItem"; this.마스터ToolStripMenuItem.Size = new System.Drawing.Size(55, 20); this.마스터ToolStripMenuItem.Text = "마스터"; @@ -764,7 +773,7 @@ this.이용자관리ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.신규사업자등록ToolStripMenuItem}); this.이용자관리ToolStripMenuItem.Name = "이용자관리ToolStripMenuItem"; - this.이용자관리ToolStripMenuItem.Size = new System.Drawing.Size(178, 22); + this.이용자관리ToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.이용자관리ToolStripMenuItem.Text = "이용자 관리"; // // 신규사업자등록ToolStripMenuItem @@ -777,35 +786,35 @@ // 공지발송ToolStripMenuItem1 // this.공지발송ToolStripMenuItem1.Name = "공지발송ToolStripMenuItem1"; - this.공지발송ToolStripMenuItem1.Size = new System.Drawing.Size(178, 22); + this.공지발송ToolStripMenuItem1.Size = new System.Drawing.Size(202, 22); this.공지발송ToolStripMenuItem1.Text = "공지 발송"; this.공지발송ToolStripMenuItem1.Click += new System.EventHandler(this.공지발송ToolStripMenuItem1_Click); // // 매출내역ToolStripMenuItem // this.매출내역ToolStripMenuItem.Name = "매출내역ToolStripMenuItem"; - this.매출내역ToolStripMenuItem.Size = new System.Drawing.Size(178, 22); + this.매출내역ToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.매출내역ToolStripMenuItem.Text = "매출내역"; this.매출내역ToolStripMenuItem.Click += new System.EventHandler(this.매출내역ToolStripMenuItem_Click); // // 이용자거래처조회ToolStripMenuItem // this.이용자거래처조회ToolStripMenuItem.Name = "이용자거래처조회ToolStripMenuItem"; - this.이용자거래처조회ToolStripMenuItem.Size = new System.Drawing.Size(178, 22); + this.이용자거래처조회ToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.이용자거래처조회ToolStripMenuItem.Text = "이용자 거래처 조회"; this.이용자거래처조회ToolStripMenuItem.Click += new System.EventHandler(this.이용자거래처조회ToolStripMenuItem_Click); // // 마크설정ToolStripMenuItem // this.마크설정ToolStripMenuItem.Name = "마크설정ToolStripMenuItem"; - this.마크설정ToolStripMenuItem.Size = new System.Drawing.Size(178, 22); + this.마크설정ToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.마크설정ToolStripMenuItem.Text = "마크설정"; this.마크설정ToolStripMenuItem.Click += new System.EventHandler(this.마크설정ToolStripMenuItem_Click); // // 일괄처리관리ToolStripMenuItem // this.일괄처리관리ToolStripMenuItem.Name = "일괄처리관리ToolStripMenuItem"; - this.일괄처리관리ToolStripMenuItem.Size = new System.Drawing.Size(178, 22); + this.일괄처리관리ToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.일괄처리관리ToolStripMenuItem.Text = "일괄처리 관리"; this.일괄처리관리ToolStripMenuItem.Click += new System.EventHandler(this.일괄처리관리ToolStripMenuItem_Click); // @@ -1067,12 +1076,14 @@ this.lblStatus.Size = new System.Drawing.Size(27, 22); this.lblStatus.Text = "WD"; // - // 복본조사2 + // btDevDb // - this.복본조사2.Name = "복본조사2"; - this.복본조사2.Size = new System.Drawing.Size(180, 22); - this.복본조사2.Text = "복본조사(New)"; - this.복본조사2.Click += new System.EventHandler(this.복본조사2_Click); + this.btDevDb.ForeColor = System.Drawing.Color.Blue; + this.btDevDb.Name = "btDevDb"; + this.btDevDb.Size = new System.Drawing.Size(202, 22); + this.btDevDb.Text = "데이터베이스편집(개발)"; + this.btDevDb.Visible = false; + this.btDevDb.Click += new System.EventHandler(this.btDevDb_Click); // // Main // @@ -1207,5 +1218,6 @@ public System.Windows.Forms.ToolStripLabel IPText; private System.Windows.Forms.ToolStripLabel lblStatus; private System.Windows.Forms.ToolStripMenuItem 복본조사2; + private System.Windows.Forms.ToolStripMenuItem btDevDb; } } \ No newline at end of file diff --git a/unimarc/unimarc/Main.cs b/unimarc/unimarc/Main.cs index 09c8ca8..689f39f 100644 --- a/unimarc/unimarc/Main.cs +++ b/unimarc/unimarc/Main.cs @@ -26,6 +26,7 @@ using UniMarc.회계; using UniMarc.마크; using UniMarc.Properties; using UniMarc; +using UniMarc.개발자용; namespace WindowsFormsApp1 @@ -42,6 +43,7 @@ namespace WindowsFormsApp1 { InitializeComponent(); PUB.Init(); + this.btDevDb.Visible = System.Diagnostics.Debugger.IsAttached; } public string User_Name { get; internal set; } @@ -1544,5 +1546,11 @@ namespace WindowsFormsApp1 Mac_check_Copy.FormClosed += (o, ea) => Mac_check_Copy = null; Mac_check_Copy.Show(); } + + private void btDevDb_Click(object sender, EventArgs e) + { + var f = new fDevDB(); + f.Show(); + } } } \ No newline at end of file diff --git a/unimarc/unimarc/SearchModel/JunnamEduSearcher.cs b/unimarc/unimarc/SearchModel/JunnamEduSearcher.cs new file mode 100644 index 0000000..9ae1f14 --- /dev/null +++ b/unimarc/unimarc/SearchModel/JunnamEduSearcher.cs @@ -0,0 +1,414 @@ +using System; +using System.Threading.Tasks; +using OpenQA.Selenium; +using OpenQA.Selenium.Chrome; +using OpenQA.Selenium.Support.UI; +using System.Text.RegularExpressions; +using WebDriverManager; +using WebDriverManager.DriverConfigs.Impl; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using UniMarc.마크; +using OpenQA.Selenium.Chromium; +using UniMarc.SearchModel; +using System.Runtime.CompilerServices; + +namespace BokBonCheck +{ + + + public class JunnamEduSearcher_Mokpo : JunnamEduSearcher + { + public JunnamEduSearcher_Mokpo(int no) : base(no) + { + SiteName = "전남교육청(목포)"; // 문화관 검색기 + } + + protected override bool SelectLibrary(WebDriverWait wait) + { + IWebElement searchBox = null; + try + { + var selector = "#clickAll"; + searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector))); + if (searchBox == null) return false; + if (searchBox.Selected == true) + { + SafeClick(searchBox); + } + + selector = "#libMA"; + searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector))); + if (searchBox == null) return false; + if (searchBox.Selected == false) + { + SafeClick(searchBox); + } + + return true; + } + catch + { + return false; + } + } + } + + public class JunnamEduSearcher : ILibrarySearcher + { + public string SiteName { get; protected set; } = "전남교육청(전체)"; + public string SiteUrl => "https://lib.namgu.gwangju.kr/main/bookSearch"; + + public int No { get; set; } + + private ChromiumDriver _driver; + + public JunnamEduSearcher(int no) + { + this.No = no; + } + + + + public void StopDriver() + { + if (_driver != null) + { + _driver.Quit(); + _driver.Dispose(); + _driver = null; + } + } + + public async Task StartDriver(bool showdriver = false) + { + if (_driver == null) + { + try + { + if (SeleniumHelper.IsReady == false) await SeleniumHelper.Download(); + _driver = await SeleniumHelper.CreateDriver(); + Console.WriteLine("NamguLibrarySearcher Driver 초기화 완료"); + } + catch (Exception ex) + { + Console.WriteLine($"NamguLibrarySearcher Driver 초기화 실패: {ex.Message}"); + throw new InvalidOperationException($"NamguLibrarySearcher Driver 초기화에 실패했습니다: {ex.Message}", ex); + } + } + } + + + + virtual protected bool SelectLibrary(WebDriverWait wait) + { + IWebElement searchBox = null; + try + { + var selector = "#clickAll"; + searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector))); + if (searchBox == null) return false; + if (searchBox.Selected == false) + { + SafeClick(searchBox); + } + return true; + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + return false; + } + } + + protected void SafeClick(IWebElement searchBox) + { + // 안정적인 클릭을 위한 여러 방법 시도 + try + { + // 1. JavaScript로 클릭 시도 + var driver = ((IWrapsDriver)searchBox).WrappedDriver; + ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", searchBox); + } + catch + { + try + { + // 2. 요소가 보이도록 스크롤 후 클릭 + var driver = ((IWrapsDriver)searchBox).WrappedDriver; + ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", searchBox); + Thread.Sleep(500); + searchBox.Click(); + } + catch + { + try + { + // 3. Actions 클래스 사용 + var driver = ((IWrapsDriver)searchBox).WrappedDriver; + var actions = new OpenQA.Selenium.Interactions.Actions(driver); + actions.MoveToElement(searchBox).Click().Perform(); + } + catch + { + // 4. 마지막 방법: JavaScript로 직접 체크 해제 + var driver = ((IWrapsDriver)searchBox).WrappedDriver; + ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].checked = false;", searchBox); + } + } + } + } + + public async Task SearchAsync(string searchTerm) + { + var result = new BookSearchResult + { + SiteName = SiteName, + SearchTerm = searchTerm, + SearchTime = DateTime.Now + }; + + try + { + // 드라이버가 없으면 자동으로 시작 + if (_driver == null) + { + await StartDriver(); + } + + _driver.Navigate().GoToUrl(SiteUrl); + + // 페이지 로딩 대기 + var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(15)); + + // 모든 감지 방법이 끝나면 크롬창 최소화 + // whale 브라우저가 최소화되어 우선해제 + //IntPtr chromeWindow = FindWindow("Chrome_WidgetWin_1", null); + //if (chromeWindow != IntPtr.Zero) + //{ + // ShowWindow(chromeWindow, SW_MINIMIZE); + //} + + //대상도서관 선택 + if (SelectLibrary(wait) == false) + { + result.ErrorMessage = "도서관선택실패"; + result.BookCount = -1; + result.IsSuccess = false; + return result; + } + + // 검색창 찾기 (남구통합도서관 사이트의 특정 선택자 사용) + IWebElement searchBox = null; + try + { + // 여러 가능한 선택자 시도 + var selectors = new[] + { + "input[name='query']", + "input[id='query']", + "input[type='text']", + }; + + foreach (var selector in selectors) + { + try + { + searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector))); + break; + } + catch + { + continue; + } + } + + if (searchBox == null) + { + throw new Exception("검색창을 찾을 수 없습니다."); + } + } + catch (Exception ex) + { + throw new Exception($"검색창 찾기 실패: {ex.Message}"); + } + + // 검색어 입력 + searchBox.Clear(); + searchBox.SendKeys(searchTerm); + + // 검색 버튼 클릭 + IWebElement searchButton = null; + try + { + var buttonSelectors = new[] + { + "button[type='submit']", + "input[type='submit']", + ".search-btn", + ".btn-search", + "button:contains('검색')", + "input[value*='검색']", + "button[class*='search']", + "input[class*='search']" + }; + + foreach (var selector in buttonSelectors) + { + try + { + searchButton = _driver.FindElement(By.CssSelector(selector)); + break; + } + catch + { + continue; + } + } + + if (searchButton == null) + { + // Enter 키로 검색 시도 + searchBox.SendKeys(Keys.Enter); + } + else + { + searchButton.Click(); + } + } + catch (Exception ex) + { + // Enter 키로 검색 시도 + searchBox.SendKeys(Keys.Enter); + } + + // 페이지 변경을 감지하는 메서드 + await WaitForPageChange(new WebDriverWait(_driver, TimeSpan.FromSeconds(15))); + + // 검색 결과 수 추출 + 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.IsSuccess = true; + result.ErrorMessage = ermsg; + } + + } + catch (Exception ex) + { + result.IsSuccess = false; + result.ErrorMessage = ex.Message; + result.BookCount = 0; + } + + return result; + } + + private int ExtractBookCount(IWebDriver driver, string searchTerm, out string errmessage) + { + errmessage = string.Empty; + try + { + // div.search-result 내부의 span에서 '전체 N' 텍스트 추출 + 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(),'전체')]")); + string text = span.Text; // 예: "전체 5 " + var match = System.Text.RegularExpressions.Regex.Match(text, @"전체\s*(\d+)"); + if (match.Success) + { + if (int.TryParse(match.Groups[1].Value, out int vqty) == false) + { + 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) + { + try + { + await Task.Delay(500); + + // 방법 4: 페이지 로딩 상태 확인 + wait.Until(d => + { + var readyState = ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState"); + return readyState.Equals("complete"); + }); + + // 방법 5: 특정 텍스트가 페이지에 나타날 때까지 대기 + wait.Until(d => + { + try + { + var byclassname = By.ClassName("search-result"); + var elm = d.FindElement(byclassname); + if (elm == null) + { + return false; + } + var pageText = elm.Text; + if (pageText.Contains("검색결과가 없습니다")) return true; + return pageText.Contains("에 대하여") && pageText.Contains("검색되었습니다"); + } + catch + { + return false; + } + }); + + } + catch (Exception ex) + { + // 모든 감지 방법이 실패하면 최소한의 대기 시간 적용 + await Task.Delay(2000); + throw new Exception($"페이지 변경 감지 실패: {ex.Message}"); + } + } + } +} \ No newline at end of file diff --git a/unimarc/unimarc/UniMarc.csproj b/unimarc/unimarc/UniMarc.csproj index 974c7a2..1884e89 100644 --- a/unimarc/unimarc/UniMarc.csproj +++ b/unimarc/unimarc/UniMarc.csproj @@ -232,8 +232,15 @@ + + + Form + + + fDevDB.cs + Form @@ -958,6 +965,9 @@ Work_Log.cs + + fDevDB.cs + From_User_manage_List.cs diff --git a/unimarc/unimarc/개발자용/fDevDB.Designer.cs b/unimarc/unimarc/개발자용/fDevDB.Designer.cs new file mode 100644 index 0000000..a289ed7 --- /dev/null +++ b/unimarc/unimarc/개발자용/fDevDB.Designer.cs @@ -0,0 +1,251 @@ +namespace UniMarc.개발자용 +{ + partial class fDevDB + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fDevDB)); + this.cmbTables = new System.Windows.Forms.ComboBox(); + this.btQuery = new System.Windows.Forms.Button(); + this.dv1 = new System.Windows.Forms.DataGridView(); + this.bs1 = new System.Windows.Forms.BindingSource(this.components); + this.bn1 = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.btsave = new System.Windows.Forms.ToolStripButton(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bn1)).BeginInit(); + this.bn1.SuspendLayout(); + this.SuspendLayout(); + // + // cmbTables + // + this.cmbTables.FormattingEnabled = true; + this.cmbTables.Items.AddRange(new object[] { + "lib_CopyCheck"}); + this.cmbTables.Location = new System.Drawing.Point(67, 12); + this.cmbTables.Name = "cmbTables"; + this.cmbTables.Size = new System.Drawing.Size(240, 20); + this.cmbTables.TabIndex = 0; + // + // btQuery + // + this.btQuery.Location = new System.Drawing.Point(317, 11); + this.btQuery.Name = "btQuery"; + this.btQuery.Size = new System.Drawing.Size(87, 20); + this.btQuery.TabIndex = 1; + this.btQuery.Text = "button1"; + this.btQuery.UseVisualStyleBackColor = true; + this.btQuery.Click += new System.EventHandler(this.button1_Click); + // + // dataGridView1 + // + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Location = new System.Drawing.Point(40, 48); + this.dv1.Name = "dataGridView1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(585, 300); + this.dv1.TabIndex = 2; + // + // bn1 + // + this.bn1.AddNewItem = this.bindingNavigatorAddNewItem; + this.bn1.CountItem = this.bindingNavigatorCountItem; + this.bn1.DeleteItem = this.bindingNavigatorDeleteItem; + this.bn1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bn1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.bindingNavigatorAddNewItem, + this.bindingNavigatorDeleteItem, + this.btsave}); + this.bn1.Location = new System.Drawing.Point(0, 425); + this.bn1.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bn1.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bn1.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bn1.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bn1.Name = "bn1"; + this.bn1.PositionItem = this.bindingNavigatorPositionItem; + this.bn1.Size = new System.Drawing.Size(800, 25); + this.bn1.TabIndex = 3; + this.bn1.Text = "bindingNavigator1"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "처음으로 이동"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "이전으로 이동"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "위치"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "현재 위치"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "전체 항목 수"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "다음으로 이동"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "마지막으로 이동"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem.Text = "새로 추가"; + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem.Text = "삭제"; + // + // btsave + // + this.btsave.Image = ((System.Drawing.Image)(resources.GetObject("btsave.Image"))); + this.btsave.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btsave.Name = "btsave"; + this.btsave.Size = new System.Drawing.Size(50, 22); + this.btsave.Text = "save"; + this.btsave.Click += new System.EventHandler(this.btsave_Click); + // + // fDevDB + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.bn1); + this.Controls.Add(this.dv1); + this.Controls.Add(this.btQuery); + this.Controls.Add(this.cmbTables); + this.Name = "fDevDB"; + this.Text = "fDevDB"; + this.Load += new System.EventHandler(this.fDevDB_Load); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bn1)).EndInit(); + this.bn1.ResumeLayout(false); + this.bn1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ComboBox cmbTables; + private System.Windows.Forms.Button btQuery; + private System.Windows.Forms.DataGridView dv1; + private System.Windows.Forms.BindingSource bs1; + private System.Windows.Forms.BindingNavigator bn1; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton btsave; + } +} \ No newline at end of file diff --git a/unimarc/unimarc/개발자용/fDevDB.cs b/unimarc/unimarc/개발자용/fDevDB.cs new file mode 100644 index 0000000..40e8f24 --- /dev/null +++ b/unimarc/unimarc/개발자용/fDevDB.cs @@ -0,0 +1,56 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using WindowsFormsApp1; + +namespace UniMarc.개발자용 +{ + public partial class fDevDB : Form + { + DataTable dt = new DataTable(); + Helper_DB db = new Helper_DB(); + public fDevDB() + { + InitializeComponent(); + } + + private void fDevDB_Load(object sender, EventArgs e) + { + if (this.cmbTables.Items.Count > 0) + this.cmbTables.SelectedIndex = 0; + } + + private void btsave_Click(object sender, EventArgs e) + { + //save + var sql = $"select * from {cmbTables.Text}"; + var cn = db.CreateConnection(); + var da = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, cn); + var cnt = da.Update(dt); + UTIL.MsgI($"P{cnt}"); + cn.Dispose(); + } + + private void button1_Click(object sender, EventArgs e) + { + //query + var sql = $"select * from {cmbTables.Text}"; + var cn = db.CreateConnection(); + var da = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, cn); + + da.Fill(dt); + this.bs1.DataSource = dt; + this.bn1.BindingSource = this.bs1; + this.dv1.DataSource = this.bs1; + + cn.Dispose(); + } + } +} diff --git a/unimarc/unimarc/개발자용/fDevDB.resx b/unimarc/unimarc/개발자용/fDevDB.resx new file mode 100644 index 0000000..6667546 --- /dev/null +++ b/unimarc/unimarc/개발자용/fDevDB.resx @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 156, 17 + + + + + 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 + nOccAdABIDXXE1nzAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/unimarc/unimarc/마크/Check_Copy_Sub_List.cs b/unimarc/unimarc/마크/Check_Copy_Sub_List.cs index 9461907..3983018 100644 --- a/unimarc/unimarc/마크/Check_Copy_Sub_List.cs +++ b/unimarc/unimarc/마크/Check_Copy_Sub_List.cs @@ -133,7 +133,7 @@ namespace UniMarc.마크 { var cc2 = cc as Check_copyWD; cc2.btn_SearchList.Text = list_name; - cc2.SearchCount.Value = cc2.dataGridView1.Rows.Count - 1; + cc2.SearchCount.Value = cc2.dv1.Rows.Count - 1; } @@ -161,14 +161,14 @@ namespace UniMarc.마크 else { var cc2 = cc as Check_copyWD; - cc2.dataGridView1.Rows.Clear(); + cc2.dv1.Rows.Clear(); string[] ary = query.Split('|'); string[] grid = { "", "", "" }; for (int a = 0; a < ary.Length; a++) { if (a % 2 == 0) { grid[0] = ary[a]; } - if (a % 2 == 1) { grid[1] = ary[a]; cc2.dataGridView1.Rows.Add(grid); } + if (a % 2 == 1) { grid[1] = ary[a]; cc2.dv1.Rows.Add(grid); } } } diff --git a/unimarc/unimarc/마크/Check_Copy_Sub_Search.Designer.cs b/unimarc/unimarc/마크/Check_Copy_Sub_Search.Designer.cs index 45429ff..a7c194e 100644 --- a/unimarc/unimarc/마크/Check_Copy_Sub_Search.Designer.cs +++ b/unimarc/unimarc/마크/Check_Copy_Sub_Search.Designer.cs @@ -53,7 +53,8 @@ namespace UniMarc.마크 dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.ColumnHeadersHeight = 35; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Province, this.Area, @@ -66,7 +67,7 @@ namespace UniMarc.마크 this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.ReadOnly = true; this.dataGridView1.RowTemplate.Height = 23; - this.dataGridView1.Size = new System.Drawing.Size(411, 213); + this.dataGridView1.Size = new System.Drawing.Size(514, 261); this.dataGridView1.TabIndex = 0; this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick); this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); @@ -88,10 +89,10 @@ namespace UniMarc.마크 // // lib_name // + this.lib_name.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.lib_name.HeaderText = "도서관명"; this.lib_name.Name = "lib_name"; this.lib_name.ReadOnly = true; - this.lib_name.Width = 350; // // Code // @@ -118,7 +119,7 @@ namespace UniMarc.마크 // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(411, 213); + this.ClientSize = new System.Drawing.Size(514, 261); this.Controls.Add(this.dataGridView1); this.Name = "Check_Copy_Sub_Search"; this.Text = "도서관 검색"; diff --git a/unimarc/unimarc/마크/Check_copy.cs b/unimarc/unimarc/마크/Check_copy.cs index f8507f9..e28b10e 100644 --- a/unimarc/unimarc/마크/Check_copy.cs +++ b/unimarc/unimarc/마크/Check_copy.cs @@ -1637,6 +1637,8 @@ namespace WindowsFormsApp1.Mac private void btn_SiteDenote_Click(object sender, EventArgs e) { if (URL == null) return; + if (URL.Contains("\"") == false) + URL = $"\"{URL}\""; AR.UTIL.RunExplorer(URL); } diff --git a/unimarc/unimarc/마크/Check_copyWD.Designer.cs b/unimarc/unimarc/마크/Check_copyWD.Designer.cs index 1d4dcdc..d5fe612 100644 --- a/unimarc/unimarc/마크/Check_copyWD.Designer.cs +++ b/unimarc/unimarc/마크/Check_copyWD.Designer.cs @@ -28,8 +28,9 @@ /// private void InitializeComponent() { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); this.panel1 = new System.Windows.Forms.Panel(); + this.chkShowBrowser = new System.Windows.Forms.CheckBox(); this.chkRetryErrData = new System.Windows.Forms.CheckBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.radTargetErr = new System.Windows.Forms.RadioButton(); @@ -50,7 +51,7 @@ this.btn_SiteDenote = new System.Windows.Forms.Button(); this.lbl_PW = new System.Windows.Forms.Label(); this.lbl_ID = new System.Windows.Forms.Label(); - this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.dv1 = 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(); @@ -66,12 +67,11 @@ this.btn_GridReset = new System.Windows.Forms.Button(); this.btn_OpenMemo = new System.Windows.Forms.Button(); this.chk_spChar = new System.Windows.Forms.CheckBox(); - this.chkShowBrowser = new System.Windows.Forms.CheckBox(); this.panel1.SuspendLayout(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).BeginInit(); this.panel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); this.panel3.SuspendLayout(); this.panel6.SuspendLayout(); this.statusStrip1.SuspendLayout(); @@ -95,6 +95,16 @@ this.panel1.Size = new System.Drawing.Size(637, 106); this.panel1.TabIndex = 0; // + // chkShowBrowser + // + this.chkShowBrowser.AutoSize = true; + this.chkShowBrowser.Location = new System.Drawing.Point(515, 81); + this.chkShowBrowser.Name = "chkShowBrowser"; + this.chkShowBrowser.Size = new System.Drawing.Size(96, 16); + this.chkShowBrowser.TabIndex = 8; + this.chkShowBrowser.Text = "브라우저표시"; + this.chkShowBrowser.UseVisualStyleBackColor = true; + // // chkRetryErrData // this.chkRetryErrData.AutoSize = true; @@ -311,34 +321,34 @@ this.lbl_ID.TabIndex = 3; this.lbl_ID.Text = " "; // - // dataGridView1 + // dv1 // - this.dataGridView1.AllowUserToDeleteRows = false; - this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control; - this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); - dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dv1.AllowUserToDeleteRows = false; + this.dv1.BackgroundColor = System.Drawing.SystemColors.Control; + this.dv1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dv1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.book_name, this.book_comp, this.Count, this.dvc_remark}); - this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridView1.Location = new System.Drawing.Point(0, 0); - this.dataGridView1.Name = "dataGridView1"; - this.dataGridView1.RowTemplate.Height = 23; - this.dataGridView1.Size = new System.Drawing.Size(637, 542); - this.dataGridView1.TabIndex = 1; - this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); - this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 0); + this.dv1.Name = "dv1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(637, 542); + this.dv1.TabIndex = 1; + this.dv1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); + this.dv1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); // // book_name // @@ -391,7 +401,7 @@ // // panel6 // - this.panel6.Controls.Add(this.dataGridView1); + this.panel6.Controls.Add(this.dv1); this.panel6.Controls.Add(this.statusStrip1); this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; this.panel6.Location = new System.Drawing.Point(0, 174); @@ -480,16 +490,6 @@ this.chk_spChar.Text = "특수문자 제거"; this.chk_spChar.UseVisualStyleBackColor = true; // - // chkShowBrowser - // - this.chkShowBrowser.AutoSize = true; - this.chkShowBrowser.Location = new System.Drawing.Point(515, 81); - this.chkShowBrowser.Name = "chkShowBrowser"; - this.chkShowBrowser.Size = new System.Drawing.Size(96, 16); - this.chkShowBrowser.TabIndex = 8; - this.chkShowBrowser.Text = "브라우저표시"; - this.chkShowBrowser.UseVisualStyleBackColor = true; - // // Check_copyWD // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); @@ -507,7 +507,7 @@ ((System.ComponentModel.ISupportInitialize)(this.SearchCount)).EndInit(); this.panel2.ResumeLayout(false); this.panel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); this.panel3.ResumeLayout(false); this.panel6.ResumeLayout(false); this.panel6.PerformLayout(); @@ -529,7 +529,7 @@ private System.Windows.Forms.Button btn_Stop; private System.Windows.Forms.Button btn_Start; public System.Windows.Forms.TextBox tb_SearchTarget; - public System.Windows.Forms.DataGridView dataGridView1; + public System.Windows.Forms.DataGridView dv1; public System.Windows.Forms.Button btn_SearchList; private System.Windows.Forms.Button btn_ApplyFilter; private System.Windows.Forms.Panel panel3; diff --git a/unimarc/unimarc/마크/Check_copyWD.cs b/unimarc/unimarc/마크/Check_copyWD.cs index a93d154..30141e6 100644 --- a/unimarc/unimarc/마크/Check_copyWD.cs +++ b/unimarc/unimarc/마크/Check_copyWD.cs @@ -27,19 +27,51 @@ namespace WindowsFormsApp1.Mac main = _main; db.DBcon(); + var idx = 1; //도서검색(크롤링) _searchService = new BookSearchService(); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_central()); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_choisangjun()); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_dagachi()); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Indi()); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Student()); - //_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Kumho()); - _searchService.AddSearcher(new NamguLibrarySearcher_Munhwa(1)); - _searchService.AddSearcher(new NamguLibrarySearcher_Children(2)); - _searchService.AddSearcher(new NamguLibrarySearcher_Smart(3)); - _searchService.AddSearcher(new NamguLibrarySearcher_Purungil(4)); - _searchService.AddSearcher(new NamguLibrarySearcher_Hyocheon(5)); + + _searchService.AddSearcher(new NamguLibrarySearcher_Munhwa(idx++)); + _searchService.AddSearcher(new NamguLibrarySearcher_Children(idx++)); + _searchService.AddSearcher(new NamguLibrarySearcher_Smart(idx++)); + _searchService.AddSearcher(new NamguLibrarySearcher_Purungil(idx++)); + _searchService.AddSearcher(new NamguLibrarySearcher_Hyocheon(idx++)); + + //광주시청도서광 + idx = 30; + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_central(idx++)); + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_choisangjun(idx++)); + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_dagachi(idx++)); + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_Indi(idx++)); + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_Student(idx++)); + _searchService.AddSearcher(new KwangjuCityLibrarySearcher_Kumho(idx++)); + + //전남교육청통합도서관 + idx = 50; + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //목포 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //나주 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //남평 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //광양 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //구례 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //보성 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //벌교 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //화순 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //장흥 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //해남 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //영암 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //무안 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //함평 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //영광 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //장성 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //진도 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //곡성 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //학생교육문화원 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //광양평생 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //고흥평색 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //교육연수원 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //교육연구정보원 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //전라남도국제교육원 + _searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //순천만생태문화교육원 } private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) @@ -51,7 +83,7 @@ namespace WindowsFormsApp1.Mac private void Check_copy_Load(object sender, EventArgs e) { string[] Grid = { "----- 빈칸으로 놔주세요 -----", "빈칸", "" }; - dataGridView1.Rows.Add(Grid); + dv1.Rows.Add(Grid); this.Show(); Application.DoEvents(); @@ -182,7 +214,7 @@ namespace WindowsFormsApp1.Mac Skill_Grid sg = new Skill_Grid(); sg.Excel_to_DataGridView(sender, e); - SearchCount.Value = dataGridView1.Rows.Count; + SearchCount.Value = dv1.Rows.Count; } async private void btn_Start_Click(object sender, EventArgs e) @@ -204,10 +236,10 @@ namespace WindowsFormsApp1.Mac } - SearchCount.Value = dataGridView1.Rows.Count; //250619 + SearchCount.Value = dv1.Rows.Count; //250619 RowCount = 0; //250619 - dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0]; + dv1.CurrentCell = dv1.Rows[0].Cells[0]; int SCount = Convert.ToInt32(SearchCount.Value); @@ -259,7 +291,7 @@ namespace WindowsFormsApp1.Mac RetrySearch: - foreach (DataGridViewRow drow in this.dataGridView1.Rows) + foreach (DataGridViewRow drow in this.dv1.Rows) { if (this._isSearching == false) { @@ -267,7 +299,7 @@ namespace WindowsFormsApp1.Mac continue; } - dataGridView1.CurrentCell = drow.Cells[0]; + dv1.CurrentCell = drow.Cells[0]; //var vBookName = drow.Cells["book_name"].Value; var bookName = drow.Cells["book_name"].Value?.ToString() ?? string.Empty; if (bookName.isEmpty()) @@ -376,8 +408,8 @@ namespace WindowsFormsApp1.Mac { if (Count == "" || Count == "0" || Count == "미소장") { - dataGridView1.Rows[RowCount].DefaultCellStyle.BackColor = Color.LightGray; - dataGridView1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Red; + dv1.Rows[RowCount].DefaultCellStyle.BackColor = Color.LightGray; + dv1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Red; if (rb_isHave.Checked) return ""; @@ -385,8 +417,8 @@ namespace WindowsFormsApp1.Mac return Count; } - dataGridView1.Rows[RowCount].DefaultCellStyle.BackColor = Color.Yellow; - dataGridView1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Blue; + dv1.Rows[RowCount].DefaultCellStyle.BackColor = Color.Yellow; + dv1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Blue; if (rb_isHave.Checked) return "소장"; @@ -403,7 +435,7 @@ namespace WindowsFormsApp1.Mac private void btn_ApplyFilter_Click(object sender, EventArgs e) { - int count = dataGridView1.Rows.Count; + int count = dv1.Rows.Count; if (count <= 1) return; @@ -422,17 +454,17 @@ namespace WindowsFormsApp1.Mac { for (int a = 0; a < count; a++) { - if (dataGridView1.Rows[a].Cells["book_name"].Value == null) + if (dv1.Rows[a].Cells["book_name"].Value == null) break; - string Target = dataGridView1.Rows[a].Cells["book_name"].Value.ToString(); + string Target = dv1.Rows[a].Cells["book_name"].Value.ToString(); // 구두점 제거 ,.;:/ // Target = Target.Replace(",", "").Replace(".", "").Replace(";", "").Replace(":", ""); string res = Regex.Replace(Target, @"[^a-zA-Z0-9가-힣_\s()]", "", RegexOptions.Singleline); - dataGridView1.Rows[a].Cells["book_name"].Value = res.Trim(); + dv1.Rows[a].Cells["book_name"].Value = res.Trim(); } } @@ -444,12 +476,12 @@ namespace WindowsFormsApp1.Mac String_Text st = new String_Text(); for (int a = 0; a < count; a++) { - if (dataGridView1.Rows[a].Cells["book_name"].Value == null) + if (dv1.Rows[a].Cells["book_name"].Value == null) break; - string Target = dataGridView1.Rows[a].Cells["book_name"].Value.ToString(); + string Target = dv1.Rows[a].Cells["book_name"].Value.ToString(); - dataGridView1.Rows[a].Cells["book_name"].Value = st.RemoveWordInBracket(Target).Trim(); + dv1.Rows[a].Cells["book_name"].Value = st.RemoveWordInBracket(Target).Trim(); } } @@ -458,7 +490,7 @@ namespace WindowsFormsApp1.Mac OpenFileDialog OpenFileDialog = new OpenFileDialog(); if (OpenFileDialog.ShowDialog() == DialogResult.OK) { - dataGridView1.Rows.Clear(); + dv1.Rows.Clear(); string filePath = OpenFileDialog.FileName; try { @@ -493,23 +525,23 @@ namespace WindowsFormsApp1.Mac else GridData[0] = Line; - dataGridView1.Rows.Add(GridData); + dv1.Rows.Add(GridData); } } #endregion private void btn_GridReset_Click(object sender, EventArgs e) { - dataGridView1.Rows.Clear(); + dv1.Rows.Clear(); } private void btn_ResultEmpty_Click(object sender, EventArgs e) { - for (int a = 0; a < dataGridView1.Rows.Count; a++) + for (int a = 0; a < dv1.Rows.Count; a++) { - dataGridView1.Rows[a].DefaultCellStyle.ForeColor = Color.Black; - dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.White; - dataGridView1.Rows[a].Cells["Count"].Value = ""; + dv1.Rows[a].DefaultCellStyle.ForeColor = Color.Black; + dv1.Rows[a].DefaultCellStyle.BackColor = Color.White; + dv1.Rows[a].Cells["Count"].Value = ""; RowCount = 0; } } diff --git a/unimarc/unimarc/마크/Check_copyWD.resx b/unimarc/unimarc/마크/Check_copyWD.resx index 9fc1aef..3f8392d 100644 --- a/unimarc/unimarc/마크/Check_copyWD.resx +++ b/unimarc/unimarc/마크/Check_copyWD.resx @@ -132,7 +132,4 @@ 17, 17 - - 17, 17 - \ No newline at end of file diff --git a/unimarc/unimarc/마크/DLS_Copy.Designer.cs b/unimarc/unimarc/마크/DLS_Copy.Designer.cs index 353529a..f6c4580 100644 --- a/unimarc/unimarc/마크/DLS_Copy.Designer.cs +++ b/unimarc/unimarc/마크/DLS_Copy.Designer.cs @@ -28,18 +28,16 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DLS_Copy)); this.label1 = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.panel8 = new System.Windows.Forms.Panel(); - this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.dv1 = new System.Windows.Forms.DataGridView(); this.panel5 = new System.Windows.Forms.Panel(); this.chkShowBrowser = new System.Windows.Forms.CheckBox(); this.chk_RemoveBrit = new System.Windows.Forms.CheckBox(); this.chk_spChar = new System.Windows.Forms.CheckBox(); this.btn_ApplyFilter = new System.Windows.Forms.Button(); this.panel3 = new System.Windows.Forms.Panel(); - this.btn_Reflesh008 = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); this.rBtn_ISBN = new System.Windows.Forms.RadioButton(); this.btnStop = new System.Windows.Forms.Button(); @@ -55,12 +53,15 @@ this.tb_SearchClient = new System.Windows.Forms.TextBox(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.lblStatus = new System.Windows.Forms.ToolStripLabel(); + this.btn_ResultEmpty = new System.Windows.Forms.Button(); + this.btn_GridReset = new System.Windows.Forms.Button(); this.Book_name = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.ISBN = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Check = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_count = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_Remark = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.panel1.SuspendLayout(); this.panel8.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); this.panel5.SuspendLayout(); this.panel3.SuspendLayout(); this.panel2.SuspendLayout(); @@ -87,48 +88,50 @@ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(499, 712); + this.panel1.Size = new System.Drawing.Size(640, 699); this.panel1.TabIndex = 1; // // panel8 // - this.panel8.Controls.Add(this.dataGridView1); + this.panel8.Controls.Add(this.dv1); this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; this.panel8.Location = new System.Drawing.Point(0, 103); this.panel8.Name = "panel8"; - this.panel8.Size = new System.Drawing.Size(497, 607); + this.panel8.Size = new System.Drawing.Size(638, 594); this.panel8.TabIndex = 5; // - // dataGridView1 + // dv1 // - this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control; - this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dv1.BackgroundColor = System.Drawing.SystemColors.Control; + this.dv1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Book_name, this.ISBN, - this.Check}); - this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridView1.Location = new System.Drawing.Point(0, 0); - this.dataGridView1.Name = "dataGridView1"; - this.dataGridView1.RowHeadersWidth = 31; - this.dataGridView1.RowTemplate.Height = 23; - this.dataGridView1.Size = new System.Drawing.Size(497, 607); - this.dataGridView1.TabIndex = 0; - this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); - this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); + this.dvc_count, + this.dvc_Remark}); + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 0); + this.dv1.Name = "dv1"; + this.dv1.RowHeadersWidth = 31; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(638, 594); + this.dv1.TabIndex = 0; + this.dv1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint); + this.dv1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); // // panel5 // this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel5.Controls.Add(this.chkShowBrowser); + this.panel5.Controls.Add(this.btn_ResultEmpty); + this.panel5.Controls.Add(this.btn_GridReset); this.panel5.Controls.Add(this.chk_RemoveBrit); this.panel5.Controls.Add(this.chk_spChar); this.panel5.Controls.Add(this.btn_ApplyFilter); this.panel5.Dock = System.Windows.Forms.DockStyle.Top; this.panel5.Location = new System.Drawing.Point(0, 68); this.panel5.Name = "panel5"; - this.panel5.Size = new System.Drawing.Size(497, 35); + this.panel5.Size = new System.Drawing.Size(638, 35); this.panel5.TabIndex = 4; // // chkShowBrowser @@ -137,7 +140,7 @@ this.chkShowBrowser.AutoSize = true; this.chkShowBrowser.Checked = true; this.chkShowBrowser.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkShowBrowser.Location = new System.Drawing.Point(395, 7); + this.chkShowBrowser.Location = new System.Drawing.Point(354, 9); this.chkShowBrowser.Name = "chkShowBrowser"; this.chkShowBrowser.Size = new System.Drawing.Size(96, 16); this.chkShowBrowser.TabIndex = 209; @@ -157,7 +160,7 @@ // chk_spChar // this.chk_spChar.AutoSize = true; - this.chk_spChar.Location = new System.Drawing.Point(10, 9); + this.chk_spChar.Location = new System.Drawing.Point(10, 8); this.chk_spChar.Name = "chk_spChar"; this.chk_spChar.Size = new System.Drawing.Size(100, 16); this.chk_spChar.TabIndex = 4; @@ -167,17 +170,18 @@ // btn_ApplyFilter // this.btn_ApplyFilter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btn_ApplyFilter.Location = new System.Drawing.Point(314, 3); + this.btn_ApplyFilter.Location = new System.Drawing.Point(258, 4); this.btn_ApplyFilter.Name = "btn_ApplyFilter"; this.btn_ApplyFilter.Size = new System.Drawing.Size(75, 24); this.btn_ApplyFilter.TabIndex = 5; this.btn_ApplyFilter.Text = "필터적용"; this.btn_ApplyFilter.UseVisualStyleBackColor = true; + this.btn_ApplyFilter.Click += new System.EventHandler(this.btn_ApplyFilter_Click); // // panel3 // this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel3.Controls.Add(this.btn_Reflesh008); + this.panel3.Controls.Add(this.chkShowBrowser); this.panel3.Controls.Add(this.label2); this.panel3.Controls.Add(this.rBtn_ISBN); this.panel3.Controls.Add(this.btnStop); @@ -186,22 +190,9 @@ this.panel3.Dock = System.Windows.Forms.DockStyle.Top; this.panel3.Location = new System.Drawing.Point(0, 33); this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(497, 35); + this.panel3.Size = new System.Drawing.Size(638, 35); this.panel3.TabIndex = 4; // - // btn_Reflesh008 - // - this.btn_Reflesh008.BackColor = System.Drawing.SystemColors.WindowText; - this.btn_Reflesh008.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_Reflesh008.BackgroundImage"))); - this.btn_Reflesh008.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btn_Reflesh008.Dock = System.Windows.Forms.DockStyle.Right; - this.btn_Reflesh008.Location = new System.Drawing.Point(462, 0); - this.btn_Reflesh008.Name = "btn_Reflesh008"; - this.btn_Reflesh008.Size = new System.Drawing.Size(33, 33); - this.btn_Reflesh008.TabIndex = 208; - this.btn_Reflesh008.UseVisualStyleBackColor = false; - this.btn_Reflesh008.Click += new System.EventHandler(this.btn_Reflesh008_Click); - // // label2 // this.label2.AutoSize = true; @@ -267,13 +258,13 @@ this.panel2.Dock = System.Windows.Forms.DockStyle.Top; this.panel2.Location = new System.Drawing.Point(0, 0); this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(497, 33); + this.panel2.Size = new System.Drawing.Size(638, 33); this.panel2.TabIndex = 3; // // btn_SiteDenote // this.btn_SiteDenote.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btn_SiteDenote.Location = new System.Drawing.Point(414, 5); + this.btn_SiteDenote.Location = new System.Drawing.Point(555, 5); this.btn_SiteDenote.Name = "btn_SiteDenote"; this.btn_SiteDenote.Size = new System.Drawing.Size(77, 23); this.btn_SiteDenote.TabIndex = 6; @@ -284,7 +275,7 @@ // btn_Connect // this.btn_Connect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btn_Connect.Location = new System.Drawing.Point(338, 5); + this.btn_Connect.Location = new System.Drawing.Point(479, 5); this.btn_Connect.Name = "btn_Connect"; this.btn_Connect.Size = new System.Drawing.Size(70, 23); this.btn_Connect.TabIndex = 5; @@ -335,7 +326,7 @@ this.tb_SearchClient.ImeMode = System.Windows.Forms.ImeMode.Hangul; this.tb_SearchClient.Location = new System.Drawing.Point(76, 6); this.tb_SearchClient.Name = "tb_SearchClient"; - this.tb_SearchClient.Size = new System.Drawing.Size(256, 21); + this.tb_SearchClient.Size = new System.Drawing.Size(397, 21); this.tb_SearchClient.TabIndex = 1; this.tb_SearchClient.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SearchClient_KeyDown); // @@ -343,9 +334,9 @@ // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.lblStatus}); - this.statusStrip1.Location = new System.Drawing.Point(0, 712); + this.statusStrip1.Location = new System.Drawing.Point(0, 699); this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(499, 22); + this.statusStrip1.Size = new System.Drawing.Size(640, 22); this.statusStrip1.TabIndex = 3; this.statusStrip1.Text = "statusStrip1"; // @@ -356,6 +347,26 @@ this.lblStatus.Text = "WD"; this.lblStatus.Click += new System.EventHandler(this.lblStatus_Click); // + // btn_ResultEmpty + // + this.btn_ResultEmpty.Location = new System.Drawing.Point(478, 4); + this.btn_ResultEmpty.Name = "btn_ResultEmpty"; + this.btn_ResultEmpty.Size = new System.Drawing.Size(75, 24); + this.btn_ResultEmpty.TabIndex = 6; + this.btn_ResultEmpty.Text = "결과 비움"; + this.btn_ResultEmpty.UseVisualStyleBackColor = true; + this.btn_ResultEmpty.Click += new System.EventHandler(this.btn_ResultEmpty_Click); + // + // btn_GridReset + // + this.btn_GridReset.Location = new System.Drawing.Point(555, 4); + this.btn_GridReset.Name = "btn_GridReset"; + this.btn_GridReset.Size = new System.Drawing.Size(75, 24); + this.btn_GridReset.TabIndex = 7; + this.btn_GridReset.Text = "표 비우기"; + this.btn_GridReset.UseVisualStyleBackColor = true; + this.btn_GridReset.Click += new System.EventHandler(this.btn_GridReset_Click); + // // Book_name // this.Book_name.HeaderText = "도서명"; @@ -369,17 +380,22 @@ this.ISBN.Name = "ISBN"; this.ISBN.Width = 140; // - // Check + // dvc_count // - this.Check.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.Check.HeaderText = "권수"; - this.Check.Name = "Check"; + this.dvc_count.HeaderText = "검색"; + this.dvc_count.Name = "dvc_count"; + // + // dvc_Remark + // + this.dvc_Remark.HeaderText = "비고"; + this.dvc_Remark.Name = "dvc_Remark"; + this.dvc_Remark.Width = 200; // // DLS_Copy // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(499, 734); + this.ClientSize = new System.Drawing.Size(640, 721); this.Controls.Add(this.panel1); this.Controls.Add(this.statusStrip1); this.Name = "DLS_Copy"; @@ -387,7 +403,7 @@ this.Load += new System.EventHandler(this.DLS_Copy_Load); this.panel1.ResumeLayout(false); this.panel8.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); this.panel5.ResumeLayout(false); this.panel5.PerformLayout(); this.panel3.ResumeLayout(false); @@ -411,14 +427,13 @@ public System.Windows.Forms.Label lbl_PW; public System.Windows.Forms.Label lbl_ID; public System.Windows.Forms.Label lbl_Client; - private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.DataGridView dv1; private System.Windows.Forms.Panel panel5; private System.Windows.Forms.RadioButton rBtn_ISBN; private System.Windows.Forms.RadioButton rBtn_BookName; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btn_Search; public System.Windows.Forms.Label lbl_Area; - private System.Windows.Forms.Button btn_Reflesh008; private System.Windows.Forms.CheckBox chk_RemoveBrit; private System.Windows.Forms.Button btn_ApplyFilter; private System.Windows.Forms.CheckBox chk_spChar; @@ -429,8 +444,11 @@ private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripLabel lblStatus; public System.Windows.Forms.Button btn_Connect; + private System.Windows.Forms.Button btn_ResultEmpty; + private System.Windows.Forms.Button btn_GridReset; private System.Windows.Forms.DataGridViewTextBoxColumn Book_name; private System.Windows.Forms.DataGridViewTextBoxColumn ISBN; - private System.Windows.Forms.DataGridViewTextBoxColumn Check; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_count; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_Remark; } } \ No newline at end of file diff --git a/unimarc/unimarc/마크/DLS_Copy.cs b/unimarc/unimarc/마크/DLS_Copy.cs index c509340..159ea67 100644 --- a/unimarc/unimarc/마크/DLS_Copy.cs +++ b/unimarc/unimarc/마크/DLS_Copy.cs @@ -6,6 +6,7 @@ using System.Data; using System.Drawing; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; using UniMarc.SearchModel; @@ -190,12 +191,12 @@ namespace WindowsFormsApp1.Mac async private void btn_Search_Click(object sender, EventArgs e) { - if (dataGridView1.Rows[0].Cells["ISBN"].Value == null && rBtn_ISBN.Checked) + if (dv1.Rows[0].Cells["ISBN"].Value == null && rBtn_ISBN.Checked) { MessageBox.Show("ISBN이 입력되지않았습니다!"); return; } - if (dataGridView1.Rows[0].Cells["Book_name"].Value == null && rBtn_BookName.Checked) + if (dv1.Rows[0].Cells["Book_name"].Value == null && rBtn_BookName.Checked) { MessageBox.Show("도서명이 입력되지않았습니다!"); return; @@ -208,7 +209,7 @@ namespace WindowsFormsApp1.Mac var sType = rBtn_ISBN.Checked ? "ea_isbn" : "title"; _searcher.SetParameter(this.lbl_ID.Text, lbl_PW.Text, "유덕초등학교", sType); - foreach (DataGridViewRow dr in this.dataGridView1.Rows) + foreach (DataGridViewRow dr in this.dv1.Rows) { var title = dr.Cells[0].Value?.ToString() ?? string.Empty; var isbn = dr.Cells[1].Value?.ToString() ?? string.Empty; @@ -216,12 +217,17 @@ namespace WindowsFormsApp1.Mac var rlt = await _searcher.SearchAsync(search); if (rlt.IsSuccess == false) { - dr.Cells[2].Value = rlt.ErrorMessage; + dr.Cells[3].Value = rlt.ErrorMessage; + dr.DefaultCellStyle.BackColor = Color.HotPink; } else { //if (rlt.BookCount > 0) dr.Cells[2].Value = "Y"; dr.Cells[2].Value = $"{rlt.BookCount }"; + if (rlt.BookCount == 0) + dr.DefaultCellStyle.BackColor = Color.WhiteSmoke; + else + dr.DefaultCellStyle.BackColor = Color.LightSkyBlue; } } @@ -283,10 +289,10 @@ namespace WindowsFormsApp1.Mac private void btn_Reflesh008_Click(object sender, EventArgs e) { - for (int a = 0; a < dataGridView1.Rows.Count; a++) + for (int a = 0; a < dv1.Rows.Count; a++) { - dataGridView1.Rows[a].Cells["Check"].Value = ""; - dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.White; + dv1.Rows[a].Cells["Check"].Value = ""; + dv1.Rows[a].DefaultCellStyle.BackColor = Color.White; } } @@ -323,10 +329,79 @@ namespace WindowsFormsApp1.Mac "9788999729188", "9788999729188"}; - this.dataGridView1.Rows.Clear(); + this.dv1.Rows.Clear(); foreach (var isbn in lst) { - dataGridView1.Rows.Add(new object[] { "", isbn, "" }); + dv1.Rows.Add(new object[] { "", isbn, "","" }); + } + } + + private void btn_GridReset_Click(object sender, EventArgs e) + { + dv1.Rows.Clear(); + } + + private void btn_ResultEmpty_Click(object sender, EventArgs e) + { + for (int a = 0; a < dv1.Rows.Count; a++) + { + dv1.Rows[a].DefaultCellStyle.ForeColor = Color.Black; + dv1.Rows[a].DefaultCellStyle.BackColor = Color.White; + dv1.Rows[a].Cells["dvc_count"].Value = ""; + } + } + + private void btn_ApplyFilter_Click(object sender, EventArgs e) + { + int count = dv1.Rows.Count; + + if (count <= 1) + return; + + if (chk_spChar.Checked) // 특수문자 제거 + RemoveSpecialChar(count); + + if (chk_RemoveBrit.Checked) // 괄호안의 문자 제거 + RemoveInBrit(count); + } + + /// + /// 특수문자 제거 + /// + void RemoveSpecialChar(int count) + { + var booknamecol = 0; + for (int a = 0; a < count; a++) + { + if (dv1.Rows[a].Cells[booknamecol].Value == null) + break; + + string Target = dv1.Rows[a].Cells[booknamecol].Value.ToString(); + + // 구두점 제거 ,.;:/ + // Target = Target.Replace(",", "").Replace(".", "").Replace(";", "").Replace(":", ""); + + string res = Regex.Replace(Target, @"[^a-zA-Z0-9가-힣_\s()]", "", RegexOptions.Singleline); + + dv1.Rows[a].Cells[booknamecol].Value = res.Trim(); + } + } + + /// + /// 괄호안의 문자 제거 + /// + void RemoveInBrit(int count) + { + var booknamecol = 0; + String_Text st = new String_Text(); + for (int a = 0; a < count; a++) + { + if (dv1.Rows[a].Cells[booknamecol].Value == null) + break; + + string Target = dv1.Rows[a].Cells[booknamecol].Value.ToString(); + + dv1.Rows[a].Cells[booknamecol].Value = st.RemoveWordInBracket(Target).Trim(); } } } diff --git a/unimarc/unimarc/마크/DLS_Copy.resx b/unimarc/unimarc/마크/DLS_Copy.resx index 9731881..7a575ec 100644 --- a/unimarc/unimarc/마크/DLS_Copy.resx +++ b/unimarc/unimarc/마크/DLS_Copy.resx @@ -123,48 +123,12 @@ True - + + True + + True - - - - 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 - - 17, 17