diff --git a/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs b/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs index d4adbc9..51a22ea 100644 --- a/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs +++ b/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs @@ -272,28 +272,63 @@ namespace UniMarc { String_Text st = new String_Text(); - string[] grid = text.Split(' '); + string[] grid = text.Split(new char[] { (char)0x1D }, StringSplitOptions.RemoveEmptyEntries); + + var fullparser = new MarcParser(); + var warnmessage = new System.Text.StringBuilder(); for (int a = 0; a < grid.Length - 1; a++) { - string[] Search = { - // 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f - "049l", "090a", "090b", "049v", "049c", "049f", - // ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자 - "020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" }; + //string[] Search = { + //// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f + // "049l", "090a", "090b", "049v", "049c", "049f", + //// ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자 + // "020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" }; - string[] Search_Res = st.Take_Tag(grid[a], Search); - string[] Author_Search = { "100a", "110a", "111a" }; - string[] Author_Res = st.Take_Tag(grid[a], Author_Search); - string author_Fin = Search_Res[14]; - foreach (string author in Author_Res) + var fullmarc = grid[a] + (char)0x1D; + var rlt = fullparser.ParseFullMarc(fullmarc); + if (rlt.success == false) { - if (author != "") - { - author_Fin = author; - break; - } + warnmessage.AppendLine($"[{a + 1}] 번 줄 마크 인식 실패 : {rlt.message}"); + continue; } + // string[] Search_Res = st.Take_Tag(grid[a], Search); + + //저자기호목록 마지막것을 우선시한다 ("100a", "110a", "111a") + // string[] Author_Search = { "100a", "110a", "111a" }; + + //저자기호확인 + var v_author = string.Empty; + var v_111a = fullparser.GetTag("111a").FirstOrDefault(); + var v_110a = fullparser.GetTag("110a").FirstOrDefault(); + var v_100a = fullparser.GetTag("100a").FirstOrDefault(); + + if (v_111a.isEmpty() == false) v_author = v_111a; + else if (v_110a.isEmpty() == false) v_author = v_110a; + else if (v_100a.isEmpty() == false) v_author = v_100a; + + + var item = new MarcPlanItem + { + RegNum = fullparser.GetTag("049l").FirstOrDefault(),// Search_Res[0], 등록번호 + ClassCode = fullparser.GetTag("090a").FirstOrDefault(),//Search_Res[1], 분류기호 + AuthorCode = fullparser.GetTag("090b").FirstOrDefault(),//Search_Res[2], 저자기호 + Volume = fullparser.GetTag("049v").FirstOrDefault(),//Search_Res[3], 볼륨v + Copy = fullparser.GetTag("049c").FirstOrDefault(),//Search_Res[4], 복본c + Prefix = fullparser.GetTag("049f").FirstOrDefault(),//Search_Res[5], 별치f + Isbn = fullparser.GetTag("020a").FirstOrDefault(),//Search_Res[6], ISBN + BookName = fullparser.GetTag("245a").FirstOrDefault(),// Search_Res[7], 도서명 + SBookName1 = fullparser.GetTag("440a").FirstOrDefault(),// Search_Res[8],총서명1 + SBookNum1 = fullparser.GetTag("440v").FirstOrDefault(),//Search_Res[9],총서번호1 + SBookName2 = fullparser.GetTag("490a").FirstOrDefault(),//Search_Res[10],총서명2 + SBookNum2 = fullparser.GetTag("490v").FirstOrDefault(),//Search_Res[11],총서번호2 + Author = v_author, + BookComp = fullparser.GetTag("260b").FirstOrDefault(),//Search_Res[12],출판사 + Price = fullparser.GetTag("950b").FirstOrDefault(),//Search_Res[13],정가 + Marc = fullmarc, + ColCheck = "T" + }; + // idx, 연번, 등록번호, 분류, 저자기호 // "", "", Search_Res[0], Search_Res[1], Search_Res[2], // 볼륨v, 복본c, 별치f, 구분, isbn @@ -305,30 +340,12 @@ namespace UniMarc // 검색태그 // "", "T" - var item = new MarcPlanItem - { - RegNum = Search_Res[0], - ClassCode = Search_Res[1], - AuthorCode = Search_Res[2], - Volume = Search_Res[3], - Copy = Search_Res[4], - Prefix = Search_Res[5], - Isbn = Search_Res[6], - BookName = Search_Res[7], - SBookName1 = Search_Res[8], - SBookNum1 = Search_Res[9], - SBookName2 = Search_Res[10], - SBookNum2 = Search_Res[11], - Author = author_Fin, - BookComp = Search_Res[12], - Price = Search_Res[13], - Marc = grid[a], - ColCheck = "T" - }; if (ResultItems == null) ResultItems = new List(); ResultItems.Add(item); } + if (warnmessage.Length > 0) + UTIL.MsgI(warnmessage.ToString()); } #endregion