qrmode 에서 wms rcv 태그 인식되게 함

This commit is contained in:
ChiKyun Kim
2025-08-06 10:05:24 +09:00
parent a7bc964b5c
commit c17296101a
89 changed files with 8051 additions and 6661 deletions

View File

@@ -23,7 +23,7 @@ namespace Project
{
var bg1 = lbl.BackColor;
var bg2 = lbl.BackColor2;
lbl.BackColor = bg2;
if(bg2 != null) lbl.BackColor = (Color)bg2;
lbl.BackColor2 = bg1;
lbl.Invalidate();
}

View File

@@ -83,7 +83,7 @@ namespace Project
var conv = VAR.BOOL[eVarBool.Use_Conveyor];
if (conv)
{
var sidinfo = await PUB.UpdateSIDInfoByECS();
var sidinfo = await PUB.UpdateSIDInfo();
var systembypass = SETTING.Data.SystemBypass;
if (systembypass == false && sidinfo.Item1 == false)
{

View File

@@ -343,111 +343,6 @@ namespace Project
}
}
//데이터가 충족되면 오류처리한다.
if (PUB.Result.ItemDataC.VisionData.SID.isEmpty() == false && PUB.Result.ItemDataC.VisionData.BATCH.isEmpty() == false)
{
//ecs on 컨베이어때만 사용한다
bool warndata = false;
if (SETTING.Data.ECSSkip == false && CVMode)
{
//모두 찾은상태에서는 활성화여부를 추가 확인한다.
var sid = PUB.Result.ItemDataC.VisionData.SID;// item.VisionData.SID;
var bat = PUB.Result.ItemDataC.VisionData.BATCH;// item.VisionData.BATCH;
//현 시점의 활성화 목록을 가져온다
var activelist = PUB.GetECSActiveSIDList();
//해당sid+bat 가 활성화된것인지 확인한다.
bool active = false;
string active_sid = "";
string active_bat = "";
var sidorder = 0;
var sidx = 0;
foreach (var actItem in activelist)
{
if (actItem.Item3 != SETTING.Data.McName) continue;
if (actItem.Item4)
{
if (active_sid.isEmpty())
{
active_sid = actItem.Item1;
active_bat = actItem.Item2;
PUB.log.Add($"act 목록에서 활성화코드 확인:{active_sid},bat:{active_bat}");
}
}
if (actItem.Item1.Equals(sid) && actItem.Item2.Equals(bat))
{
active = actItem.Item4;
sidorder = sidx; //순서를 저장한다. 0부터 시작하는값이다.
}
//내 장비에 한해서 순서를 결정한다.
//if (actItem.Item3 == SETTING.Data.McName)
sidx += 1;
}
//활성화된 sid가 아니다
if (active == false)
{
if (sidorder > 1) //2번째는 무조건 에러
{
PUB.log.AddE($"active sid 아니고 {sidorder + 1}번 항목이므로 오류 처리한다.");
warndata = true;
}
else
{
//활성sid의 작업데이터가있으면 ok
var qa = new DataSet1TableAdapters.QueriesTableAdapter();
var existreadat = qa.GetIBResultCountBySIDBatch(DateTime.Now.AddHours(-6), active_sid, active_bat) > 0;
//활성sid의 작업데이터가있으면 ok
if (existreadat)
{
PUB.log.AddAT($"active sid 는 아니지만 활성sid({active_sid},batch:{active_bat}) 의 기록이 있어 진행 합니다");
warndata = false;
}
else
{
PUB.log.AddE($"active sid 아니고 활성sid({active_sid},batch:{active_bat}) 의 기록이 없어 진행 불가");
warndata = true;
}
//없으면 ng
}
}
//오류발생조건이나, 이미 발생했다면 처리하지 않는다.
if (warndata)
{
if (warninactivelist.Contains(sid + bat) == false)
{
warninactivelist.Add(sid + bat);
}
else
{
PUB.log.AddAT($"이미 경고한 sid+bqt이므로 넘어갑니다({sid}{bat})");
warndata = false;
}
}
}
if (warndata)
{
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOECSDATAACTIVE, eNextStep.PAUSE, item.VisionData.SID, item.VisionData.BATCH);
if (ShowUserForm)
{
//오류로 인해 사용자 확인창을 표시하지 않습니다.
ShowUserForm = false;
return false;
}
}
}
//사용자 확인창을 표시한다
if (ShowUserForm)
{
@@ -1042,43 +937,27 @@ namespace Project
bool rlt = false;
string errmsg = string.Empty;
//var systembypassmode = SETTING PUB.Result.vModel.Title.Equals("BYPASS");
if (CVMode == true && SETTING.Data.SystemBypass == false)
//var systembypassmode = SETTING PUB.Result.vModel.Title.Equals("BYPASS"); CVMode == true &&
if (SETTING.Data.SystemBypass == false)
{
rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out errmsg);
PUB.log.AddE("WAS전송" + (rlt ? "성공" : "실패") + $":{errmsg}");
rlt = PUB.UpdateWMS(item.VisionData); //rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out errmsg);
PUB.log.AddE("WMS전송" + (rlt ? "성공" : "실패") + $":{errmsg}");
if (rlt == false) //230927 - 오류발생시
{
if (errmsg.Contains("LABEL_ID is duplicate") && SETTING.Data.InboundWebService_RID_DupSKIP)
{
PUB.log.AddAT($"환경설정에서 인바운드API 중복 오류가 무시됨");
}
else
{
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INBOUNDWEBAPIERROR, eNextStep.PAUSE, target, errmsg);
return false; ;
}
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INBOUNDWEBAPIERROR, eNextStep.PAUSE, target, errmsg);
return false; ;
}
}
else if (CVMode == false)
{
//카트모드에서는 처리하지 않는다.
rlt = true;
errmsg = string.Empty;
PUB.log.AddAT($"cart mode 로 인해 inbound 저장 안함");
}
else
{
errmsg = "bypass";
rlt = false;
PUB.log.AddAT($"System bytpass 로 인해 inbound 저장 안함");
PUB.log.AddAT($"System bytpass 로 인해 WMS 저장 안함");
}
if (errmsg.Length > 190) errmsg = errmsg.Substring(0, 190); //230810 maxlength error
SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg),"root_sequence");
SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg), "root_sequence");
//RefreshList(); //목록업데이트
EEMStatus.AddStatusCount(1, $"{item.VisionData.SID}|{item.VisionData.RID}"); //eem 추가 230620
PUB.sm.seq.Update(cmdIndex);
return false;
}

View File

@@ -187,16 +187,16 @@ namespace Project
//릴Id 신규부여
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_NewReelID])
{
if (itemC.VisionData.RIDNew == false && itemC.VisionData.CUSTCODE.isEmpty() == false)
if (itemC.VisionData.RIDNew == false && itemC.VisionData.CUSTCODE.isEmpty() == false && itemC.VisionData.SID.isEmpty() == false)
{
var newid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg);
if (newid.isEmpty() == false)
var newid = PUB.MakeNewREELID(itemC.VisionData.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg);
if (newid.success == true)
{
//backup origin reel id
itemC.VisionData.RID0 = itemC.VisionData.RID;
//set new reel id
itemC.VisionData.SetRID(newid, "SPS:CHKDATACOMPLETE");// = newid;
itemC.VisionData.SetRID(newid.newid, "SPS:CHKDATACOMPLETE");// = newid;
itemC.VisionData.RIDNew = true; //applied new reel id
//서버의수량업데이트기능이 켜져있다면 해당 값을 제거해준다. (다시 조회되도록 함)
@@ -216,7 +216,7 @@ namespace Project
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
if (logtime.TotalSeconds >= 3000)
{
PUB.log.AddAT($"Reel_ID 생성실패 : {errmsg}");
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
}
}
@@ -331,8 +331,12 @@ namespace Project
//수량원본이 없는 경우
if (item.VisionData.QTY0.isEmpty())
{
string msg;
var cnt = (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg));
string msg= "서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택";
var cnt = 0;// (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg));
if(mainjob)
{
PUB.log.AddE("서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택");
}
if (cnt > 0)
{
//새로받은 데이터를 실제 수량에 추가한다
@@ -570,7 +574,7 @@ namespace Project
// active_sid = actItem.Item1;
// active_bat = actItem.Item2;
// }
// }
// if (actItem.Item1.Equals(sid) && actItem.Item2.Equals(bat))
@@ -633,11 +637,11 @@ namespace Project
//}
//else
//{
if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
{
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
}
if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
{
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
}
//}
}
@@ -655,9 +659,9 @@ namespace Project
if (item.VisionData.PARTNO.isEmpty()) item.VisionData.PARTNO = "PARTNO" + DateTime.Now.ToString("yyyyMMddHHmmss.fff");
if (item.VisionData.RID.isEmpty())
{
var rid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD("1234", "4", "A", out string err);
if (rid.isEmpty()) item.VisionData.SetRID("RID" + DateTime.Now.ToString("yyyyMMddHHmmss.fff"), "DRY");
else item.VisionData.SetRID(rid, "DRY");
var newid = PUB.MakeNewREELID(item.VisionData.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD("1234", "4", "A", out string err);
if (newid.success == false) item.VisionData.SetRID("RID" + DateTime.Now.ToString("yyyyMMddHHmmss.fff"), "DRY");
else item.VisionData.SetRID(newid.newid, "DRY");
}
if (item.VisionData.PrintPositionData.isEmpty()) item.VisionData.PrintPositionData = "2";
item.VisionData.PrintPositionCheck = true;

View File

@@ -249,7 +249,6 @@ namespace Project
}
}
////New ReelID
/// this process run ( 3_keyence_read.cs )
//if (VAR.BOOL[eVarBool.Opt_NewReelID) && PUB.sm.isRunning)
@@ -277,14 +276,14 @@ namespace Project
{
if (itemC.VisionData.RIDNew == false && itemC.VisionData.CUSTCODE.isEmpty() == false)
{
var newid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg);
if (newid.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, "SPS:CHKDATACOMPLETE");// = newid;
itemC.VisionData.SetRID(newid.newid, "SPS:CHKDATACOMPLETE");// = newid;
itemC.VisionData.RIDNew = true; //applied new reel id
//서버의수량업데이트기능이 켜져있다면 해당 값을 제거해준다. (다시 조회되도록 함)
@@ -304,7 +303,7 @@ namespace Project
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
if (logtime.TotalSeconds >= 3000)
{
PUB.log.AddAT($"Reel_ID 생성실패 : {errmsg}");
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
}
}