Compare commits

4 Commits

Author SHA1 Message Date
00e736d668 .. 2026-04-08 19:43:38 +09:00
e75400cdc4 광주시립도서관 - 하남 추가 (최영진) 2026-03-26 23:41:43 +09:00
7288d8c95c 마크정리에서. 파일불러올때 마지막 줄이 불러오지 않는 현상 수 2026-03-12 19:28:21 +09:00
054e1c9c10 마크목록화면에서 신규마크인 경우에 비고란이 초기화되지 않는 현상 수정(비고란업데이트 코드 추가)
마크목록에서 신규 마크저장 후 바로 화면이 업데이트 되지 않는 현상 수정(데이터정보불일치로 업데이트 SKIP)
마크정리에서 일부 마크파일 불러오기에서 오류가 발생하는 현상 수정(원인 : 가격정보없음)
마크목록에서 적색데이터의 기본 마크 100a 에 서명이 입력되는 현상 수정(기본마크로직오류)
2026-03-08 17:37:39 +09:00
8 changed files with 64 additions and 30 deletions

View File

@@ -295,7 +295,7 @@ namespace UniMarc
}
public static (bool result, int newidx, string message) UpdateMarc(int midx, string FullMarc, int v_grade,
public static (bool result, int newidx, string message,string date) UpdateMarc(int midx, string FullMarc, int v_grade,
string etc1, string etc2, string url, string v_orgmarc)
{
var isUpdate = midx > 0;
@@ -307,7 +307,7 @@ namespace UniMarc
//상황에 맞게 업데이트 명령을 처리한다.
var basicinfo = GetBasicMarcInfo(FullMarc);
if (basicinfo.Success == false) return (false, 0, basicinfo.Message);
if (basicinfo.Success == false) return (false, 0, basicinfo.Message,v_date);
@@ -392,10 +392,10 @@ namespace UniMarc
var ret = Helper_DB.ExcuteNonQuery(U_cmd);
if (ret.applyCount != 1)
{
return (false, midx, $"업데이트된 행의 수가 1이 아닙니다. 적용된 행 수: {ret.applyCount}, 오류 메시지: {ret.errorMessage}");
return (false, midx, $"업데이트된 행의 수가 1이 아닙니다. 적용된 행 수: {ret.applyCount}, 오류 메시지: {ret.errorMessage}", v_date);
}
}
return (true, midx, string.Empty);
return (true, midx, string.Empty, v_date);
}
}

View File

@@ -55,7 +55,7 @@ namespace UniMarc
string Empty_text = string.Format(
"020\t \t▼a{1}▼c\\{5}▲\n" +
"056\t \t▼a▼25▲\n" +
"100\t \t▼a{2}▲\n" +
"100\t \t▼a{3}▲\n" +
"245\t \t▼a{2}▼d{3}▲\n" +
"260\t \t▼b{4}▲\n" +
"300\t \t▼a▼c▲\n" +

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2026.03.02.1630")]
[assembly: AssemblyFileVersion("2026.03.02.1630")]
[assembly: AssemblyVersion("2026.03.26.2350")]
[assembly: AssemblyFileVersion("2026.03.26.2350")]

View File

@@ -258,6 +258,7 @@ namespace UniMarc
_searchService.AddSearcher(new GwangjuCityLibSearcher(idx++, "124003", "무등도서관"));
_searchService.AddSearcher(new GwangjuCityLibSearcher(idx++, "124004", "사직도서관"));
_searchService.AddSearcher(new GwangjuCityLibSearcher(idx++, "124008", "산수도서관"));
_searchService.AddSearcher(new GwangjuCityLibSearcher(idx++, "129232", "하남도서관"));
_searchService.AddSearcher(new GwangjuCityLibSearcher(idx++, "129228", "디지털정보도서관"));
// 완도군립도서관

View File

@@ -948,7 +948,6 @@ namespace UniMarc
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string orimarc = marcEditorControl1.MakeMarcString();
//아래는 실제 폼에서의 저장코드
// [신규 방식: 데이터 객체(Item) 중심 로직]
var item = this.dataList.Where(t => t.ListIdx == this.Param.ListIdx).FirstOrDefault();
@@ -959,18 +958,12 @@ namespace UniMarc
// cb_grade.SelectedIndex.ToString(); // 등급은 0~3의 숫자로 저장된다고 가정
var v_grade = uC_SelectGrade1.Grade == -1 ? "" : uC_SelectGrade1.Grade.ToString();
//if (radA.Checked) v_grade = "0";
//else if (radB.Checked) v_grade = "1";
//else if (radC.Checked) v_grade = "2";
//else if (radD.Checked) v_grade = "3";
var v_etc1 = this.etc1.Text.Trim();
var v_etc2 = this.etc2.Text.Trim();
// 1. DB 작업 (공용 메서드로 통합 관리)
int targetMarcIdx = (item.Status == MarcRecordStatus.MyCompany) ? item.MarcIdx : 0;
var saveResult = Helper_DB.UpdateMarc(targetMarcIdx, orimarc, uC_SelectGrade1.Grade, v_etc1, v_etc2, this.Param.URL, this.Param.OriginalMarc);
if (saveResult.result == false)
{
UTIL.MsgE(saveResult.message);
@@ -978,20 +971,38 @@ namespace UniMarc
}
// 새로 생성된 인덱스 반영
item.MarcIdx = saveResult.newidx;
if(saveResult.newidx != item.MarcIdx)
{
Console.WriteLine($"new marc index set : {item.MarcIdx} to {saveResult.newidx}");
item.MarcIdx = saveResult.newidx;
}
// 2. 객체 데이터 업데이트 및 시각적 상태 계산
item.Status = MarcRecordStatus.MyCompany;
item.BackColor = GetSaveDateColor(date);
item.Grade = v_grade; //등급업데이트추가
item.DbMarc = orimarc;
SetMarcItemInfo(item,
saveResult.newidx,
PUB.user.CompanyIdx,
orimarc,
v_grade,
PUB.user.UserName,
saveResult.date,
string.Empty);
// 3. 목록 인덱스 연동 업데이트 (Obj_List_Book)
string UpdateListIndex = string.Format("UPDATE `Obj_List_Book` SET `m_idx` = {0} WHERE `idx` = {1} AND `compidx` = \"{2}\";", item.MarcIdx, item.ListIdx, mCompidx);
Helper_DB.ExcuteNonQuery(UpdateListIndex);
//업데이트되도록 원래데이터를 초기화한다 260308
mOldMarc = string.Empty;
mOldMarIdx = -1;
// 4. BindingSource 갱신으로 UI 자동 업데이트
bs1.ResetCurrentItem();
bs1_CurrentChanged(null, null);
UTIL.MsgI("저장되었습니다!");
}
@@ -1080,7 +1091,13 @@ namespace UniMarc
{
if (!mLoadCompleted) return;
var dr = bs1.Current as MarcBookItem;
if (dr == null) return;
if (dr == null)
{
mOldMarIdx = -1;
return;
}
if (mOldMarc == null) mOldMarc = string.Empty;
//if (List_Book.CurrentCell == null) return;
//int row_idx = List_Book.CurrentCell.RowIndex;
@@ -1152,26 +1169,27 @@ namespace UniMarc
OriginalMarc = dbMarc,
};
var defMarc = PUB.MakeEmptyMarc(isbn13, bookName, author, publisher, price);
marcEditorControl1.LoadBookData(dbMarc, isbn13, defMarc);
var load_ret = marcEditorControl1.LoadBookData(dbMarc, isbn13, defMarc);
//등급선택 (dbMarc 데이터를 확인하여. 등급을 결정한다)
int gradeNo;
bool check_Marc = dbMarc.Length >= 3;
if (!check_Marc)
if (load_ret ==false)
{
//richTextBox1.Text = Make_Empty();
gradeNo = 3; //마크가 없는것은 D등급으로 한다
remark.remark1 = string.Empty;
remark.remark2 = string.Empty;
}
else
{
etc1.Text = remark.remark1;
etc2.Text = remark.remark2;
//자료의 등급 다시 선택
if (int.TryParse(grade, out gradeNo) == false)
gradeNo = 2;
}
etc1.Text = remark.remark1;
etc2.Text = remark.remark2;
uC_SelectGrade1.Grade = gradeNo;
lbl_SaveData.Multiline = true;

View File

@@ -122,7 +122,7 @@ namespace UniMarc
/// <param name="user"></param>
/// <param name="saveDate"></param>
/// <param name="listIdx"></param>
public void LoadBookData(string dbMarc, string isbn = "", string defaultMarc = "")
public bool LoadBookData(string dbMarc, string isbn = "", string defaultMarc = "")
{
mLoadCompleted = false;
richTextBox1.Text = "";
@@ -182,6 +182,8 @@ namespace UniMarc
UpdateTextColor();
mLoadCompleted = true;
return check_Marc;
}

View File

@@ -173,7 +173,19 @@ namespace UniMarc
item.SBookNum2 = dr["s_book_num2"].ToString();
item.Author = dr["author"].ToString();
item.BookComp = dr["book_comp"].ToString();
item.Price = dr["price"] != DBNull.Value ? Convert.ToInt32(dr["price"]) : 0;
if(dr["price"] ==DBNull.Value)
{
item.Price = 0;
}
else
{
var str_price = dr["price"].ToString();
if (int.TryParse(str_price, out int v_price))
item.Price = v_price;
else
item.Price = 0;
}
item.Midx = dr["midx"] != DBNull.Value ? Convert.ToInt32(dr["midx"]) : 0;
item.etc1 = dr["etc1"]?.ToString() ?? string.Empty;
item.etc2 = dr["etc2"]?.ToString() ?? string.Empty;

View File

@@ -276,7 +276,7 @@ namespace UniMarc
var fullparser = new MarcParser();
var warnmessage = new System.Text.StringBuilder();
for (int a = 0; a < grid.Length - 1; a++)
for (int a = 0; a < grid.Length ; a++)
{
//string[] Search = {
//// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f
@@ -307,7 +307,8 @@ namespace UniMarc
else if (v_110a.isEmpty() == false) v_author = v_110a;
else if (v_100a.isEmpty() == false) v_author = v_100a;
var str_price = fullparser.GetTag("950b").FirstOrDefault() ?? string.Empty;
int.TryParse(str_price, out int v_price);
var item = new MarcPlanItem
{
RegNum = fullparser.GetTag("049l").FirstOrDefault(),// Search_Res[0], 등록번호
@@ -324,7 +325,7 @@ namespace UniMarc
SBookNum2 = fullparser.GetTag("490v").FirstOrDefault(),//Search_Res[11],총서번호2
Author = v_author,
BookComp = fullparser.GetTag("260b").FirstOrDefault(),//Search_Res[12],출판사
Price = Convert.ToInt32(fullparser.GetTag("950b").FirstOrDefault()),//Search_Res[13],정가
Price = v_price,//Convert.ToInt32(fullparser.GetTag("950b").FirstOrDefault()),//Search_Res[13],정가
Marc = fullmarc,
ColCheck = "T"
};