using Aurora; using Aurora.Api; using Aurora.View; using AuroraLaserScanner; using CoreUnit.Control.UserControl.Canvas; using Hermes; using Matrox.MatroxImagingLibrary; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows; using WeldingCommon.Devices; using WeldingCommon.Settings; using static Aurora.Api.SequenceBuilder; using static AuroraPLC.PLCBase; namespace WeldingCommon.Data { public class WeldingData : NotifyPropertyChangedBase { protected readonly Logger Log = new Logger("WeldingData"); private object _LockObj = new object(); // For View // Main AutoRun Sequence 에서 한번에 Update 하여 view 에 보여 주기 위함. // 아래 EDC 와 중복인 것도 있지만, 한번에 Update 되어야 혼란이 없을 것 같음. public DateTime AutoRunStartTime { get => _AutoRunStartTime; set => SetProperty(ref _AutoRunStartTime, value); } private DateTime _AutoRunStartTime; public DateTime LoadStartTime { get => _LoadStartTime; set => SetProperty(ref _LoadStartTime, value); } private DateTime _LoadStartTime; // 마지막 제품 Weld 시작 시각 public DateTime WeldingStartTime { get => _WeldingStartTime; set => SetProperty(ref _WeldingStartTime, value); } private DateTime _WeldingStartTime; public TimeSpan TactTime_Welding { get => _TactTime_Welding; set => SetProperty(ref _TactTime_Welding, value); } private TimeSpan _TactTime_Welding; // 마지막 제품 생산 시각, LastProductTime public DateTime WeldingEndTime { get => _WeldingEndTime; set { TactTime_Welding = value.Subtract(WeldingStartTime); SetProperty(ref _WeldingEndTime, value); } } private DateTime _WeldingEndTime; public DateTime UnloadStartTime { get => _UnloadStartTime; set => SetProperty(ref _UnloadStartTime, value); } private DateTime _UnloadStartTime; public string WeldingSpanTimeMilliseconds { get => _WeldingSpanTimeMilliseconds; set => SetProperty(ref _WeldingSpanTimeMilliseconds, value); } private string _WeldingSpanTimeMilliseconds; public uint TodayProduct { get => _TodayProduct; set => SetProperty(ref _TodayProduct, value); } private uint _TodayProduct; public uint TotalProduct { get => _TotalProduct; set => SetProperty(ref _TotalProduct, value); } private uint _TotalProduct; public string CellId { get => _CellId; set => SetProperty(ref _CellId, value); } private string _CellId; public string LotId { get => _LotId; set => SetProperty(ref _LotId, value); } private string _LotId; // public string LBAD_Judge { get => _LBAD_Judge; set => SetProperty(ref _LBAD_Judge, value); } private string _LBAD_Judge; public string LDD_Judge { get => _LDD_Judge; set => SetProperty(ref _LDD_Judge, value); } private string _LDD_Judge; public bool IsVisionNG { get => _IsVisionNG; set => SetProperty(ref _IsVisionNG, value); } private bool _IsVisionNG; // AutoRun <-> (FlyingVisionScout, SeqScout) [JsonIgnore] public MIL_ID ScannerFiledImage { get => _ScannerFiledImage; set => SetProperty(ref _ScannerFiledImage, value); } private MIL_ID _ScannerFiledImage; [JsonIgnore] public List UploadProcessDatas { get => _UploadProcessDatas; set => SetProperty(ref _UploadProcessDatas, value); } private List _UploadProcessDatas = new List(); public WeldingData() { var aurora = Application.Current.AuroraEnv(); var _SettingUploadList = aurora.SettingEntry[CommonSettingIds.UploadDatas] as SettingUploadDataList; foreach (var item in _SettingUploadList.PlcUploadList) UploadProcessDatas.Add(item.Clone() as PLCReportData); } public virtual void Clear() { CellId = string.Empty; LotId = string.Empty; foreach (var data in UploadProcessDatas) data.Value = 0.0; } } }