using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; namespace FurnaceUI.Views.DataLog { public class CassetteDetailViewModel : FurnaceUIViewModelBase { public ObservableCollection CassetteDetailItems { get; set; } = new ObservableCollection(); public CassetteDetailViewModel(DateTime startTime, DateTime endTime, string lotId) { string sql = $"SELECT * FROM \"carrier_move_history\" where \"arrive_time\" >= '{startTime:yyyy/MM/dd HH:mm:ss.fff}' and \"arrive_time\" <= '{endTime:yyyy/MM/dd HH:mm:ss.fff}'"; if (!string.IsNullOrWhiteSpace(lotId)) sql += string.Format(" and lower(\"lot_id\")='{0}' ", lotId.ToLower()); sql += $" order by \"arrive_time\" ASC"; DataTable dbData = QueryDataClient.Instance.Service.QueryData(sql); if (dbData != null && dbData.Rows.Count > 0) { for (int i = 0; i < dbData.Rows.Count; i++) { CassetteDetailItem item = new CassetteDetailItem(); item.ModuleName = dbData.Rows[i]["station"].ToString(); item.LotId = dbData.Rows[i]["lot_id"].ToString(); item.Status = dbData.Rows[i]["status"].ToString(); if (!dbData.Rows[i]["arrive_time"].Equals(DBNull.Value)) { item.ArriveTime = (DateTime)dbData.Rows[i]["arrive_time"]; } CassetteDetailItems.Add(item); } } } public void CloseCmd() { ((Window)GetView()).Close(); } } public class CassetteDetailItem : NotifiableItem { private string _moduleName; public string ModuleName { get => _moduleName; set { _moduleName = value; InvokePropertyChanged(nameof(ModuleName)); } } private DateTime _arriveTime; public DateTime ArriveTime { get => _arriveTime; set { _arriveTime = value; InvokePropertyChanged(nameof(ArriveTime)); } } private string _lotId; public string LotId { get => _lotId; set { _lotId = value; InvokePropertyChanged(nameof(LotId)); } } private string _status; public string Status { get => _status; set { _status = value; InvokePropertyChanged(nameof(Status)); } } } }