| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 | using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using Aitex.Core.RT.DBCore;using Aitex.Core.RT.Event;using Aitex.Core.RT.Log;using Aitex.Sorter.Common;namespace Aitex.Sorter.RT.Module.DBRecorder{    /*     */    public class CarrierDataRecorder    {        /// <summary>        ///         /// </summary>        /// <param name="guid">唯一</param>        /// <param name="station">位置</param>        public static void Loaded(string guid, string station)        {            string sql = string.Format("INSERT INTO \"carrier_data\"(\"guid\", \"load_time\", \"station\" )VALUES ('{0}', '{1}', '{2}');",                guid,                DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),                station);            DB.Insert(sql);        }        public static void UpdateCarrierId(string guid, string rfid)        {            string sql = string.Format(                "UPDATE \"carrier_data\" SET \"rfid\"='{0}' WHERE \"guid\"='{1}';",                rfid, guid);            DB.Insert(sql);        }        public static void UpdateLotId(string guid, string lotId)        {            string sql = string.Format(                "UPDATE \"carrier_data\" SET \"lot_id\"='{0}' WHERE \"guid\"='{1}';",                lotId, guid);            DB.Insert(sql);        }        public static void UpdateProductCategory(string guid, string productCategory)        {            string sql = string.Format(                "UPDATE \"carrier_data\" SET \"product_category\"='{0}' WHERE \"guid\"='{1}';",                productCategory, guid);            DB.Insert(sql);        }        public static void Unloaded(string guid)        {            string sql = string.Format(                "UPDATE \"carrier_data\" SET \"unload_time\"='{0}' WHERE \"guid\"='{1}';",                DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),                guid);            DB.Insert(sql);        }        public static void CarrierMove(string guid, string lotid, string station, string status)        {            string sql = string.Format("INSERT INTO \"carrier_move_history\"(\"carrier_data_guid\", \"arrive_time\", \"lot_id\", \"station\", \"status\" )VALUES ('{0}', '{1}', '{2}', '{3}', '{4}' );",                guid,                DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),                lotid,                station,                status);            DB.Insert(sql);        }        public static List<HistoryCarrierData> QueryDBCarrier(string sql)        {            List<HistoryCarrierData> result = new List<HistoryCarrierData>();            try            {                DataSet ds = DB.ExecuteDataset(sql);                if (ds == null)                    return result;                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)                {                    HistoryCarrierData ev = new HistoryCarrierData();                    ev.Guid = ds.Tables[0].Rows[i]["guid"].ToString();                    ev.Rfid = ds.Tables[0].Rows[i]["rfid"].ToString();                    ev.LotId = ds.Tables[0].Rows[i]["lot_id"].ToString();                    ev.ProductCategory = ds.Tables[0].Rows[i]["product_category"].ToString();                    ev.Station = ds.Tables[0].Rows[i]["station"].ToString();                    if (!ds.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))                        ev.LoadTime = ((DateTime)ds.Tables[0].Rows[i]["load_time"]).ToString("yyyy/MM/dd HH:mm:ss.fff");                    if (!ds.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))                        ev.UnloadTime = ((DateTime)ds.Tables[0].Rows[i]["unload_time"]).ToString("yyyy/MM/dd HH:mm:ss.fff");                    result.Add(ev);                }            }            catch (Exception ex)            {                LOG.Write(ex);            }            return result;        }        public static List<WaferHistoryLot> QueryWaferHistoryLotsBySql(string sql)        {            List<WaferHistoryLot> result = new List<WaferHistoryLot>();            try            {                DataSet dataSet = DB.ExecuteDataset(sql);                if (dataSet == null)                    return result;                if (dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)                    return result;                for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)                {                    WaferHistoryLot item = new WaferHistoryLot();                    if (!dataSet.Tables[0].Rows[i]["lot_id"].Equals(DBNull.Value))                    {                        item.CarrierID = dataSet.Tables[0].Rows[i]["lot_id"].ToString();                        item.Name = dataSet.Tables[0].Rows[i]["lot_id"].ToString();                    }                    else                    {                        continue;                    }                    item.ID = dataSet.Tables[0].Rows[i]["guid"].ToString();                    item.Type = WaferHistoryItemType.Lot;                    if (!dataSet.Tables[0].Rows[i]["rfid"].Equals(DBNull.Value))                        item.Rfid = dataSet.Tables[0].Rows[i]["rfid"].ToString();                    if (!dataSet.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))                        item.StartTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["load_time"].ToString());                    if (!dataSet.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))                        item.EndTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["unload_time"].ToString());                    DataSet subDataSet = DB.ExecuteDataset(string.Format("SELECT * FROM \"wafer_data\" Where \"carrier_data_guid\"='{0}' ;", item.ID));                    if (subDataSet != null && subDataSet.Tables.Count != 0 && subDataSet.Tables[0].Rows.Count != 0)                    {                        item.WaferCount = subDataSet.Tables[0].Rows.Count;                        item.FaultWaferCount = subDataSet.Tables[0].Select("process_status='Failed'").Length;                    }                    result.Add(item);                }            }            catch (Exception e)            {                LOG.Write(e);            }            return result;        }        public static List<WaferHistoryLot> GetWaferHistoryLots(DateTime startTime, DateTime endTime, string keyWord)        {            List<WaferHistoryLot> result = new List<WaferHistoryLot>();            try            {                string sqlFilter = "";                if (keyWord != null && !string.IsNullOrEmpty(keyWord.Trim()))                {                    sqlFilter = "and (";                    var keyStrings = keyWord.Split(',');                    for (int i = 0; i < keyStrings.Length; i++)                    {                        sqlFilter += $"\"lot_id\" like '%{keyStrings[i].Trim()}%'";                        if (i < keyStrings.Length - 1)                        {                            sqlFilter += " or ";                        }                    }                    sqlFilter += ")";                }                string sql = string.Format("SELECT * FROM \"carrier_data\" where (\"unload_time\" is null and \"load_time\" >= '{2}') or (\"load_time\" >= '{0}' and \"load_time\" <= '{1}') or (\"unload_time\" >= '{0}' and \"unload_time\" <= '{1}') or (\"load_time\" <= '{0}' and \"unload_time\" >= '{1}')  {3} order by \"station\" ASC, \"load_time\" ASC limit 1000;", startTime.ToString("yyyy/MM/dd HH:mm:ss.fff"), startTime.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss.fff"), endTime.ToString("yyyy/MM/dd HH:mm:ss.fff"), sqlFilter);                DataSet dataSet = DB.ExecuteDataset(sql);                if (dataSet == null)                    return result;                if (dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)                    return result;                for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)                {                    WaferHistoryLot item = new WaferHistoryLot();                    if (!dataSet.Tables[0].Rows[i]["lot_id"].Equals(DBNull.Value))                    {                        item.CarrierID = dataSet.Tables[0].Rows[i]["lot_id"].ToString();                        item.Name = dataSet.Tables[0].Rows[i]["lot_id"].ToString();                    }                    else                    {                        continue;                    }                    item.ID = dataSet.Tables[0].Rows[i]["guid"].ToString();                    item.Type = WaferHistoryItemType.Lot;                    if (!dataSet.Tables[0].Rows[i]["rfid"].Equals(DBNull.Value))                        item.Rfid = dataSet.Tables[0].Rows[i]["rfid"].ToString();                    if (!dataSet.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))                        item.StartTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["load_time"].ToString());                    if (!dataSet.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))                        item.EndTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["unload_time"].ToString());                    DataSet subDataSet = DB.ExecuteDataset(string.Format("SELECT * FROM \"wafer_data\" Where \"carrier_data_guid\"='{0}' ;", item.ID));                    if (subDataSet != null && subDataSet.Tables.Count != 0 && subDataSet.Tables[0].Rows.Count != 0)                    {                        item.WaferCount = subDataSet.Tables[0].Rows.Count;                        item.FaultWaferCount = subDataSet.Tables[0].Select("process_status='Failed'").Length;                    }                    result.Add(item);                }            }            catch (Exception e)            {                LOG.Write(e);            }            return result;        }    }}
 |