프로젝트 구조 개선 및 README.md 추가

- UIControl 프로젝트 구조 변경 (CapCleaningControl → Sub/UIControl)
- arAjinextek 라이브러리 통합 및 구조 개선
- 새로운 arAjinextek_Union 프로젝트 추가
- 솔루션 파일에 README.md 추가
- QR 모드에서 WMS RCV 태그 인식 기능 강화
- 데이터베이스 스키마 업데이트 및 관련 클래스 수정
- 프린터 및 바코드 장치 연동 로직 개선

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ChiKyun Kim
2025-08-07 08:35:56 +09:00
parent c17296101a
commit 9a7d1d27c7
140 changed files with 4203 additions and 6791 deletions

View File

@@ -38,8 +38,6 @@ namespace Project
else patsEx = patternsEx.Where(t => t.IsEnable == true).OrderBy(t => t.Seq).ToList();
}
if (pats.Any() == false)
{
PUB.log.AddAT($"등록된 패턴이 없습니다(SYM={barcodeSymbol})");
@@ -68,11 +66,8 @@ namespace Project
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
}
//이 바코드가 무시바코드에 있는지 먼저 검사한다 220718
foreach (var pt in patsEx)
{
@@ -147,7 +142,7 @@ namespace Project
return new Tuple<int, List<string>>(ValueApplyCount, list);
}
/// <summary>
/// barcod eprocess
/// </summary>
@@ -163,6 +158,8 @@ namespace Project
if (vdata.Confirm) return;
var vm = PUB.Result.vModel;
//바코드목록에서 정규식값으로 각 필드값을 기록한다.
lock (vdata.barcodelist)
{
foreach (var item in vdata.barcodelist)
@@ -186,135 +183,11 @@ namespace Project
}
}
//assign customer code - fixed data
if (vdata.CUSTCODE.isEmpty() && VAR.STR[eVarString.JOB_CUSTOMER_CODE].isEmpty() == false)
{
vdata.CUSTCODE = VAR.STR[eVarString.JOB_CUSTOMER_CODE];
PUB.log.Add($"Cutomer Code 고정값 사용 : {vdata.CUSTCODE}");
}
//SiD CONVERT
if (VAR.BOOL[eVarBool.Opt_SIDConvert])
{
if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO) == false && VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] == false)
{
//원본시드(sid0)가 비어있는데 sid과 확정되었다면 변환작업을 진행한다
if (vdata.SID0.isEmpty() && vdata.SID.isEmpty() == false && vdata.SID_Trust)
{
//이 sid가 존재여부확인 후 없는 sid라면 더이상 처리하지 않는다 230510
if (PUB.Result.DTSidConvertEmptyList.Contains(vdata.SID))
{
//존재하지 않는 SID로 이미 확인되었다
}
else if (PUB.Result.DTSidConvertMultiList.Contains(vdata.SID))
{
//다중sid로 인해 처리하지 않는다
}
else
{
var newsid = PUB.SIDCovert(vdata.SID, "SPS_BarcodeProcess", out bool converr);
if (converr)
{
if (PUB.sm.Step == eSMStep.RUN)
PUB.log.AddE(newsid);
}
else
{
vdata.SID0 = vdata.SID;
vdata.SID = newsid;
}
}
}
}
}
//정규식혹은 바코드 룰에 의해 데이터가 바뀌었더라도 모델 기준으로 진행한다
if (PUB.Result.vModel.Def_Vname.isEmpty() == false)
{
if (itemC.VisionData.VNAME.Equals(PUB.Result.vModel.Def_Vname) == false)
{
itemC.VisionData.VNAME = PUB.Result.vModel.Def_Vname.Trim();
itemC.VisionData.VNAME_Trust = true;
PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}");
}
}
if (PUB.Result.vModel.Def_MFG.isEmpty() == false)
{
if (itemC.VisionData.MFGDATE.Equals(PUB.Result.vModel.Def_MFG) == false)
{
itemC.VisionData.MFGDATE = PUB.Result.vModel.Def_MFG.Trim();
itemC.VisionData.MFGDATE_Trust = true;
PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}");
}
}
////New ReelID
/// this process run ( 3_keyence_read.cs )
//if (VAR.BOOL[eVarBool.Opt_NewReelID) && PUB.sm.isRunning)
//{
// if (vdata.temp_custcode.Length == 4 && vdata.RID0.isEmpty() && vdata.RIDNew == false)
// {
// //backup old reel id
// vdata.RID0 = vdata.RID;
// vdata.RIDNew = true;
// var newid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(vdata.temp_custcode, "4", "A", out string err);
// if (newid.isEmpty() == false)
// {
// //remain original reel id
// vdata.SetRID( newid,"SPS");
// PUB.log.AddI($"New REELID:{newid}");
// }
// }
//}
//릴ID 신규발행
if (PUB.sm.Step == eSMStep.RUN && vdata.CUSTCODE.isEmpty() == false && vdata.SID.isEmpty() == false)
{
if (VAR.BOOL[eVarBool.Opt_NewReelID])
{
if (itemC.VisionData.RIDNew == false && itemC.VisionData.CUSTCODE.isEmpty() == false)
{
var newid = PUB.MakeNewREELID(vdata.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg);
if (newid.success)
{
//backup origin reel id
itemC.VisionData.RID0 = itemC.VisionData.RID;
//set new reel id
itemC.VisionData.SetRID(newid.newid, "SPS:CHKDATACOMPLETE");// = newid;
itemC.VisionData.RIDNew = true; //applied new reel id
//서버의수량업데이트기능이 켜져있다면 해당 값을 제거해준다. (다시 조회되도록 함)
if (VAR.BOOL[eVarBool.Opt_ServerQty])
{
//이미 수량업데이트된 경우이므로 복원시켜준다
if (itemC.VisionData.QTY0.isEmpty() == false)
{
PUB.log.AddAT($"릴아이디 변경으로 인해 수량을 복원합니다({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
itemC.VisionData.QTY = itemC.VisionData.QTY0;
itemC.VisionData.QTY0 = string.Empty;
}
}
}
else
{
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
if (logtime.TotalSeconds >= 3000)
{
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
}
}
}
}
}
//바코드가 변경된 경우이다, 자동채우기 기능이 있다면 사용한다
bool NewBarcodeUpdated = false;
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeTouched == true)
//SID정보테이블에서 정보 추출
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
@@ -377,19 +250,15 @@ namespace Project
if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode;
var SQL = "select top 1 " + string.Join(",", fields) +
" from Component_Reel_SID_Information WITH(NOLOCK)" +
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
" where mc='" + mcname + "' and " + string.Join(" and ", wheres) +
" order by wdate desc";
var SQLC = "select count(*)" +
" from Component_Reel_SID_Information WITH(NOLOCK)" +
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
" where mc='" + mcname + "' and " + string.Join(" and ", wheres);
if (PUB.Result.ItemDataC.VisionData.LastQueryString.Equals(SQL))
{
//같은 쿼리이므로 처리하지 않는다
}
else
if (PUB.Result.ItemDataC.VisionData.LastQueryStringSID.Equals(SQL) == false)
{
PUB.log.Add($"DATABAES : SID INFORMATIION QUERY");
@@ -418,75 +287,7 @@ namespace Project
var vStr = v.ToString().RemoveNoneASCII().Trim();
if (vStr.isEmpty()) continue;
//O_Trust == false)) fields.Add("PartNo");
//ields.Add("PrintPosition");
//ta.VNAME.isEmpty())) fields.Add("VenderName");
//Empty())) fields.Add("SID");
//value is not empty
if (colName == "CustCode")
{
PUB.log.Add($"AUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
vdata.CUSTCODE = vStr;
NewBarcodeUpdated = true;
}
else if (colName == "PartNo")
{
PUB.log.Add($"AUP [{colName}] {vdata.PARTNO}=>{vStr}");
vdata.PARTNO = vStr;
vdata.PARTNO_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "PrintPosition")
{
PUB.log.Add($"AUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
vdata.PrintPositionData = vStr;
vdata.PrintPositionCheck = true;
NewBarcodeUpdated = true;
}
else if (colName == "VenderName")
{
PUB.log.Add($"AUP [{colName}] {vdata.VNAME}=>{vStr}");
vdata.VNAME = vStr;
vdata.VNAME_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "VenderLot")
{
PUB.log.Add($"AUP [{colName}] {vdata.VLOT}=>{vStr}");
vdata.VLOT = vStr;
vdata.VLOT_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "SID")
{
PUB.log.Add($"AUP [{colName}] {vdata.SID}=>{vStr}");
vdata.SID = vStr;
vdata.SID_Trust = vdata.SID.Length == 9;
if (vStr.Length != 9)
{
PUB.log.AddE($"DB SID LEN ERROR:{vStr},LEN={vStr.Length}");
}
NewBarcodeUpdated = true;
}
else if (colName == "batch")
{
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
vdata.BATCH = vStr;
NewBarcodeUpdated = true;
}
else if (colName == "qtymax")
{
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
vdata.QTYMAX = vStr;
NewBarcodeUpdated = true;
}
else if (colName.ToLower() == "attach")
{
PUB.log.Add($"attach [{colName}] {vdata.Target}=>{vStr}");
vdata.Target = vStr;
NewBarcodeUpdated = true;
}
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
}
}
}
@@ -495,13 +296,111 @@ namespace Project
CMD.Dispose();
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
CN.Dispose();
PUB.Result.ItemDataC.VisionData.LastQueryString = SQL;
PUB.Result.ItemDataC.VisionData.LastQueryStringSID = SQL;
}
}
}
//[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음)
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && vdata.BarcodeTouched == true)
//select columns
List<string> fields = new List<string>();
if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUST_CODE");
if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PART_NO");
if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VENDOR_NM");
if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
if (VAR.BOOL[eVarBool.Opt_SID_Apply_batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("BATCH_NO"); //220921
//where coluns
List<string> wheres = new List<string>();
if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUST_CODE='{vdata.CUSTCODE}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_SID_Where_PartNo])
{
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PART_NO='{vdata.PARTNO}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_SID_Where_SID])
{
if (VAR.BOOL[eVarBool.Opt_SIDConvert]) //if sid convert logic
{
if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
else Apply = false;
}
else
{
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
else Apply = false;
}
}
if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013
{
if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VENDER_LOT = '{vdata.VLOT}'");
else Apply = false;
}
//if query data . no error
if (Apply && fields.Count > 0 && wheres.Count > 0)
{
var mcname = VAR.BOOL[eVarBool.Use_Conveyor] ? PUB.MCCode : SETTING.Data.McName;
var TableName = "VW_GET_MAX_QTY_VENDOR_LOT";
var whereState = " where " + string.Join(" and ", wheres);
var selectFields = string.Join(",", fields);
var SQL = $"select top 1 {selectFields} from {TableName} WITH(NOLOCK) {whereState}";
var SQLC = $"select count(*) from {TableName} WITH(NOLOCK) {whereState}";
if (PUB.Result.ItemDataC.VisionData.LastQueryStringWMS.Equals(SQL) == false) //같은 쿼리는 처리하지 않는다
{
PUB.log.Add($"DATABAES : WMS INFORMATIION QUERY");
PUB.log.Add(SQL);
var CS = Properties.Settings.Default.CS;
var CN = new System.Data.SqlClient.SqlConnection(CS);
var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN);
if (CN.State == System.Data.ConnectionState.Closed) CN.Open();
//데이터가 중복으로 존재하는지 확인한다. 231006
CMD.CommandText = SQLC;
var cnt = int.Parse(CMD.ExecuteScalar().ToString());
if (cnt == 1)
{
CMD.CommandText = SQL;
var DAR = CMD.ExecuteReader();
while (DAR.Read())
{
//loop select columns
for (int i = 0; i < fields.Count; i++)
{
var colName = fields[i];
var v = DAR[colName];
if (v != null)
{
var vStr = v.ToString().RemoveNoneASCII().Trim();
if (vStr.isEmpty()) continue;
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
}
}
}
DAR.Close();
}
CMD.Dispose();
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
CN.Dispose();
PUB.Result.ItemDataC.VisionData.LastQueryStringWMS = SQL;
}
}
}
//시드변환정보에서 정보 추출
if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
@@ -514,7 +413,7 @@ namespace Project
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_Batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("batch"); //220921
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_QtyMax] && (vdata.SID_Trust == false || vdata.QTYMAX.isEmpty())) fields.Add("qtymax"); //220921
//where coluns
List<string> wheres = new List<string>();
@@ -564,19 +463,15 @@ namespace Project
if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode;
var SQL = "select top 1 " + string.Join(",", fields) +
" from Component_Reel_SID_Convert WITH(NOLOCK)" +
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres) +
" order by wdate desc";
var SQLC = "select count(*)" +
" from Component_Reel_SID_Convert WITH(NOLOCK)" +
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres);
if (PUB.Result.ItemDataC.VisionData.LastQueryString.Equals(SQL))
{
//같은 쿼리이므로 처리하지 않는다
}
else
if (PUB.Result.ItemDataC.VisionData.LastQueryStringCNV.Equals(SQL) == false)
{
PUB.log.Add($"DATABAES : SID(CONV) INFORMATIION QUERY");
@@ -605,75 +500,7 @@ namespace Project
var vStr = v.ToString().RemoveNoneASCII().Trim();
if (vStr.isEmpty()) continue;
//O_Trust == false)) fields.Add("PartNo");
//ields.Add("PrintPosition");
//ta.VNAME.isEmpty())) fields.Add("VenderName");
//Empty())) fields.Add("SID");
//value is not empty
if (colName == "CustCode")
{
PUB.log.Add($"AUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
vdata.CUSTCODE = vStr;
NewBarcodeUpdated = true;
}
else if (colName == "PartNo")
{
PUB.log.Add($"AUP [{colName}] {vdata.PARTNO}=>{vStr}");
vdata.PARTNO = vStr;
vdata.PARTNO_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "PrintPosition")
{
PUB.log.Add($"AUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
vdata.PrintPositionData = vStr;
vdata.PrintPositionCheck = true;
NewBarcodeUpdated = true;
}
else if (colName == "VenderName")
{
PUB.log.Add($"AUP [{colName}] {vdata.VNAME}=>{vStr}");
vdata.VNAME = vStr;
vdata.VNAME_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "VenderLot")
{
PUB.log.Add($"AUP [{colName}] {vdata.VLOT}=>{vStr}");
vdata.VLOT = vStr;
vdata.VLOT_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "SID")
{
PUB.log.Add($"AUP [{colName}] {vdata.SID}=>{vStr}");
vdata.SID = vStr;
vdata.SID_Trust = vdata.SID.Length == 9;
if (vStr.Length != 9)
{
PUB.log.AddE($"DB SID LEN ERROR:{vStr},LEN={vStr.Length}");
}
NewBarcodeUpdated = true;
}
else if (colName == "batch")
{
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
vdata.BATCH = vStr;
NewBarcodeUpdated = true;
}
else if (colName == "qtymax")
{
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
vdata.QTYMAX = vStr;
NewBarcodeUpdated = true;
}
else if (colName.ToLower() == "attach")
{
PUB.log.Add($"attach [{colName}] {vdata.Target}=>{vStr}");
vdata.Target = vStr;
NewBarcodeUpdated = true;
}
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
}
}
}
@@ -682,13 +509,13 @@ namespace Project
CMD.Dispose();
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
CN.Dispose();
PUB.Result.ItemDataC.VisionData.LastQueryString = SQL;
PUB.Result.ItemDataC.VisionData.LastQueryStringCNV = SQL;
}
}
}
//기존 작업에서 데이터를 찾아서 쓴다
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeTouched == true)
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
@@ -729,7 +556,7 @@ namespace Project
PUB.log.Add($"DATABAES : RESULT QUERY");
var SQL = "select top 1 " + string.Join(",", fields) +
" from Component_Reel_Result WITH(NOLOCK) " +
" from K4EE_Component_Reel_Result WITH(NOLOCK) " +
$" where mc = '{AR.SETTING.Data.McName}'" +
$" and prnattach = 1 and stime >= '{DateTime.Now.AddHours(-3).ToString("yyyy-MM-dd HH:mm:ss")}'" +
$" and " + string.Join(" and ", wheres) +
@@ -760,53 +587,8 @@ namespace Project
var vStr = v.ToString().RemoveNoneASCII().Trim();
if (vStr.isEmpty()) continue;
//O_Trust == false)) fields.Add("PartNo");
//ields.Add("PrintPosition");
//ta.VNAME.isEmpty())) fields.Add("VenderName");
//Empty())) fields.Add("SID");
//value is not empty
if (colName == "CUSTCODE")
{
PUB.log.Add($"JUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
vdata.CUSTCODE = vStr;
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr))
NewBarcodeUpdated = true;
}
else if (colName == "PARTNO")
{
PUB.log.Add($"JUP [{colName}] {vdata.PARTNO}=>{vStr}");
vdata.PARTNO = vStr;
vdata.PARTNO_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "POS")
{
PUB.log.Add($"JUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
vdata.PrintPositionData = vStr;
vdata.PrintPositionCheck = true;
NewBarcodeUpdated = true;
}
else if (colName == "VNAME")
{
PUB.log.Add($"JUP [{colName}] {vdata.VNAME}=>{vStr}");
vdata.VNAME = vStr;
vdata.VNAME_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "VenderLot")
{
PUB.log.Add($"JUP [{colName}] {vdata.VLOT}=>{vStr}");
vdata.VLOT = vStr;
vdata.VLOT_Trust = true;
NewBarcodeUpdated = true;
}
else if (colName == "SID")
{
PUB.log.Add($"JUP [{colName}] {vdata.SID}=>{vStr}");
vdata.SID = vStr;
vdata.SID_Trust = true;
NewBarcodeUpdated = true;
}
}
}
}
@@ -818,28 +600,10 @@ namespace Project
}
}
if (PUB.sm.Step == eSMStep.RUN)
{
var CVMode = VAR.BOOL[eVarBool.Use_Conveyor];
if (itemC.VisionData.VNAME.isEmpty() == false &&
itemC.VisionData.VLOT.isEmpty() == false &&
itemC.VisionData.SID.Length == 9 &&
itemC.VisionData.MFGDATE.isEmpty() == false &&
(itemC.VisionData.PARTNO.isEmpty() == false) &&
itemC.VisionData.BATCH.isEmpty() == false &&
itemC.VisionData.RID.isEmpty() == false)
{
//모든값이 입력되어 있다면 조건 체크후 진행할 수 있도록 한다
CheckDataComplte(itemC, "SPS-BARCODEPROCESS", false); //2206211400
}
//CheckDataComplte(PUB.Result.ItemDataC, "SPS-BARCODEPROCESS");
}
//바코드 처리 여부 변경
if (vdata.BarcodeTouched == true && NewBarcodeUpdated == false)
if (vdata.BarcodeDirty == true && NewBarcodeUpdated == false)
{
vdata.BarcodeTouched = false;
var a = PUB.Result.ItemDataC.VisionData.BarcodeTouched;
vdata.BarcodeDirty = false;
}