using AuroraLaserScanner;
using System;
using WeldingCommon.Data;
namespace ILSOS_CCW_H52A.Data
{
public class JigInfo
{
// --- 지그 식별 ---
public int JigNo; // 물리 지그 번호 (1-based, -1: 미설정)
// --- 스캐너 리스트 파라미터 (ReadyScannerList에서 채워짐) ---
public eListNo ListNo;
public DateTime WriteTime;
public double StartAngle;
public int WeldingCount;
// --- 캔 유무 / 용접 상태 ---
public bool IsCanExist;
public bool IsWelding;
public bool WeldComplete;
public DateTime WeldStartTime;
public DateTime WeldEndTime;
public TimeSpan WeldingSpanTime; // 스캐너 리스트 실행 시간 (GetTime() 결과)
// CellTracker 수신 정보
public string LotId;
public string CellId;
// --- 플래그 ---
public bool CheckSendCellinfo;
public bool ReportComplete;
// --- 리포팅/뷰 용 상세 정보 ---
public WeldingData InnerCellInfo;
public JigInfo()
{
InnerCellInfo = new WeldingData();
Clear();
}
public void SetReportComplete(bool comp) => ReportComplete = comp;
///
/// 다른 JigInfo의 모든 필드를 이 슬롯에 복사 (재시작 보존용 pendingSlot에 사용)
///
public void CopyFrom(JigInfo src)
{
JigNo = src.JigNo;
ListNo = src.ListNo;
WriteTime = src.WriteTime;
StartAngle = src.StartAngle;
WeldingCount = src.WeldingCount;
IsCanExist = src.IsCanExist;
IsWelding = src.IsWelding;
WeldComplete = src.WeldComplete;
WeldStartTime = src.WeldStartTime;
WeldEndTime = src.WeldEndTime;
WeldingSpanTime = src.WeldingSpanTime;
LotId = src.LotId;
CellId = src.CellId;
CheckSendCellinfo = src.CheckSendCellinfo;
ReportComplete = src.ReportComplete;
UpdateCellInfo(src.InnerCellInfo);
}
///
/// 슬롯 전체 초기화 (Shift 시 새 Prefetch2 슬롯에 자동 호출됨)
///
public void Clear()
{
JigNo = -1;
ListNo = 0;
WriteTime = DateTime.MinValue;
StartAngle = 0.0;
WeldingCount = -1;
IsCanExist = false;
IsWelding = false;
WeldComplete = false;
WeldStartTime = DateTime.MinValue;
WeldEndTime = DateTime.MinValue;
WeldingSpanTime = TimeSpan.Zero;
LotId = string.Empty;
CellId = string.Empty;
CheckSendCellinfo = false;
ReportComplete = false;
InnerCellInfo.Clear();
}
///
/// InnerCellInfo를 WeldingData 로부터 필드 단위로 복사 (GC 할당 없음)
///
public void UpdateCellInfo(WeldingData data)
{
InnerCellInfo.CellId = data.CellId;
InnerCellInfo.LotId = data.LotId;
InnerCellInfo.AutoRunStartTime = data.AutoRunStartTime;
InnerCellInfo.WeldingStartTime = data.WeldingStartTime;
InnerCellInfo.WeldingEndTime = data.WeldingEndTime;
InnerCellInfo.WeldingSpanTimeMilliseconds = data.WeldingSpanTimeMilliseconds;
InnerCellInfo.TodayProduct = data.TodayProduct;
InnerCellInfo.TotalProduct = data.TotalProduct;
InnerCellInfo.RecipeNo = data.RecipeNo;
InnerCellInfo.WeldStartTime = data.WeldStartTime;
InnerCellInfo.WeldTime = data.WeldTime;
InnerCellInfo.WorkCellId = data.WorkCellId;
InnerCellInfo.WorkLotId = data.WorkLotId;
InnerCellInfo.LBAD_Judge = data.LBAD_Judge;
InnerCellInfo.LDD_Judge = data.LDD_Judge;
InnerCellInfo.LaserPowerCore = data.LaserPowerCore;
InnerCellInfo.LaserPowerRing = data.LaserPowerRing;
InnerCellInfo.MarkSpeed = data.MarkSpeed;
InnerCellInfo.FocalLength = data.FocalLength;
InnerCellInfo.WeldingJigNo = data.WeldingJigNo;
InnerCellInfo.LaserPowerByLBAD = data.LaserPowerByLBAD;
InnerCellInfo.CheckCanExist = data.CheckCanExist;
InnerCellInfo.CheckScannerListEnd = data.CheckScannerListEnd;
}
}
}