마크목록화면에서 신규마크인 경우에 비고란이 초기화되지 않는 현상 수정(비고란업데이트 코드 추가)
마크목록에서 신규 마크저장 후 바로 화면이 업데이트 되지 않는 현상 수정(데이터정보불일치로 업데이트 SKIP) 마크정리에서 일부 마크파일 불러오기에서 오류가 발생하는 현상 수정(원인 : 가격정보없음) 마크목록에서 적색데이터의 기본 마크 100a 에 서명이 입력되는 현상 수정(기본마크로직오류)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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" +
|
||||
|
||||
@@ -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.08.1700")]
|
||||
[assembly: AssemblyFileVersion("2026.03.08.1700")]
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user