CarrierDataRecorder.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using Aitex.Core.RT.DBCore;
  7. using Aitex.Core.RT.Event;
  8. using Aitex.Core.RT.Log;
  9. using Aitex.Sorter.Common;
  10. namespace Aitex.Sorter.RT.Module.DBRecorder
  11. {
  12. /*
  13. */
  14. public class CarrierDataRecorder
  15. {
  16. /// <summary>
  17. ///
  18. /// </summary>
  19. /// <param name="guid">唯一</param>
  20. /// <param name="station">位置</param>
  21. public static void Loaded(string guid, string station)
  22. {
  23. string sql = string.Format("INSERT INTO \"carrier_data\"(\"guid\", \"load_time\", \"station\" )VALUES ('{0}', '{1}', '{2}');",
  24. guid,
  25. DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  26. station);
  27. DB.Insert(sql);
  28. }
  29. public static void UpdateCarrierId(string guid, string rfid)
  30. {
  31. string sql = string.Format(
  32. "UPDATE \"carrier_data\" SET \"rfid\"='{0}' WHERE \"guid\"='{1}';",
  33. rfid, guid);
  34. DB.Insert(sql);
  35. }
  36. public static void UpdateLotId(string guid, string lotId)
  37. {
  38. string sql = string.Format(
  39. "UPDATE \"carrier_data\" SET \"lot_id\"='{0}' WHERE \"guid\"='{1}';",
  40. lotId, guid);
  41. DB.Insert(sql);
  42. }
  43. public static void UpdateProductCategory(string guid, string productCategory)
  44. {
  45. string sql = string.Format(
  46. "UPDATE \"carrier_data\" SET \"product_category\"='{0}' WHERE \"guid\"='{1}';",
  47. productCategory, guid);
  48. DB.Insert(sql);
  49. }
  50. public static void Unloaded(string guid)
  51. {
  52. string sql = string.Format(
  53. "UPDATE \"carrier_data\" SET \"unload_time\"='{0}' WHERE \"guid\"='{1}';",
  54. DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  55. guid);
  56. DB.Insert(sql);
  57. }
  58. public static void CarrierMove(string guid, string lotid, string station, string status)
  59. {
  60. string sql = string.Format("INSERT INTO \"carrier_move_history\"(\"carrier_data_guid\", \"arrive_time\", \"lot_id\", \"station\", \"status\" )VALUES ('{0}', '{1}', '{2}', '{3}', '{4}' );",
  61. guid,
  62. DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  63. lotid,
  64. station,
  65. status);
  66. DB.Insert(sql);
  67. }
  68. public static List<HistoryCarrierData> QueryDBCarrier(string sql)
  69. {
  70. List<HistoryCarrierData> result = new List<HistoryCarrierData>();
  71. try
  72. {
  73. DataSet ds = DB.ExecuteDataset(sql);
  74. if (ds == null)
  75. return result;
  76. for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  77. {
  78. HistoryCarrierData ev = new HistoryCarrierData();
  79. ev.Guid = ds.Tables[0].Rows[i]["guid"].ToString();
  80. ev.Rfid = ds.Tables[0].Rows[i]["rfid"].ToString();
  81. ev.LotId = ds.Tables[0].Rows[i]["lot_id"].ToString();
  82. ev.ProductCategory = ds.Tables[0].Rows[i]["product_category"].ToString();
  83. ev.Station = ds.Tables[0].Rows[i]["station"].ToString();
  84. if (!ds.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))
  85. ev.LoadTime = ((DateTime)ds.Tables[0].Rows[i]["load_time"]).ToString("yyyy/MM/dd HH:mm:ss.fff");
  86. if (!ds.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))
  87. ev.UnloadTime = ((DateTime)ds.Tables[0].Rows[i]["unload_time"]).ToString("yyyy/MM/dd HH:mm:ss.fff");
  88. result.Add(ev);
  89. }
  90. }
  91. catch (Exception ex)
  92. {
  93. LOG.Write(ex);
  94. }
  95. return result;
  96. }
  97. public static List<WaferHistoryLot> QueryWaferHistoryLotsBySql(string sql)
  98. {
  99. List<WaferHistoryLot> result = new List<WaferHistoryLot>();
  100. try
  101. {
  102. DataSet dataSet = DB.ExecuteDataset(sql);
  103. if (dataSet == null)
  104. return result;
  105. if (dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)
  106. return result;
  107. for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
  108. {
  109. WaferHistoryLot item = new WaferHistoryLot();
  110. if (!dataSet.Tables[0].Rows[i]["lot_id"].Equals(DBNull.Value))
  111. {
  112. item.CarrierID = dataSet.Tables[0].Rows[i]["lot_id"].ToString();
  113. item.Name = dataSet.Tables[0].Rows[i]["lot_id"].ToString();
  114. }
  115. else
  116. {
  117. continue;
  118. }
  119. item.ID = dataSet.Tables[0].Rows[i]["guid"].ToString();
  120. item.Type = WaferHistoryItemType.Lot;
  121. if (!dataSet.Tables[0].Rows[i]["rfid"].Equals(DBNull.Value))
  122. item.Rfid = dataSet.Tables[0].Rows[i]["rfid"].ToString();
  123. if (!dataSet.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))
  124. item.StartTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["load_time"].ToString());
  125. if (!dataSet.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))
  126. item.EndTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["unload_time"].ToString());
  127. DataSet subDataSet = DB.ExecuteDataset(string.Format("SELECT * FROM \"wafer_data\" Where \"carrier_data_guid\"='{0}' ;", item.ID));
  128. if (subDataSet != null && subDataSet.Tables.Count != 0 && subDataSet.Tables[0].Rows.Count != 0)
  129. {
  130. item.WaferCount = subDataSet.Tables[0].Rows.Count;
  131. item.FaultWaferCount = subDataSet.Tables[0].Select("process_status='Failed'").Length;
  132. }
  133. result.Add(item);
  134. }
  135. }
  136. catch (Exception e)
  137. {
  138. LOG.Write(e);
  139. }
  140. return result;
  141. }
  142. public static List<WaferHistoryLot> GetWaferHistoryLots(DateTime startTime, DateTime endTime, string keyWord)
  143. {
  144. List<WaferHistoryLot> result = new List<WaferHistoryLot>();
  145. try
  146. {
  147. string sqlFilter = "";
  148. if (keyWord != null && !string.IsNullOrEmpty(keyWord.Trim()))
  149. {
  150. sqlFilter = "and (";
  151. var keyStrings = keyWord.Split(',');
  152. for (int i = 0; i < keyStrings.Length; i++)
  153. {
  154. sqlFilter += $"\"lot_id\" like '%{keyStrings[i].Trim()}%'";
  155. if (i < keyStrings.Length - 1)
  156. {
  157. sqlFilter += " or ";
  158. }
  159. }
  160. sqlFilter += ")";
  161. }
  162. 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);
  163. DataSet dataSet = DB.ExecuteDataset(sql);
  164. if (dataSet == null)
  165. return result;
  166. if (dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count == 0)
  167. return result;
  168. for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
  169. {
  170. WaferHistoryLot item = new WaferHistoryLot();
  171. if (!dataSet.Tables[0].Rows[i]["lot_id"].Equals(DBNull.Value))
  172. {
  173. item.CarrierID = dataSet.Tables[0].Rows[i]["lot_id"].ToString();
  174. item.Name = dataSet.Tables[0].Rows[i]["lot_id"].ToString();
  175. }
  176. else
  177. {
  178. continue;
  179. }
  180. item.ID = dataSet.Tables[0].Rows[i]["guid"].ToString();
  181. item.Type = WaferHistoryItemType.Lot;
  182. if (!dataSet.Tables[0].Rows[i]["rfid"].Equals(DBNull.Value))
  183. item.Rfid = dataSet.Tables[0].Rows[i]["rfid"].ToString();
  184. if (!dataSet.Tables[0].Rows[i]["load_time"].Equals(DBNull.Value))
  185. item.StartTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["load_time"].ToString());
  186. if (!dataSet.Tables[0].Rows[i]["unload_time"].Equals(DBNull.Value))
  187. item.EndTime = DateTime.Parse(dataSet.Tables[0].Rows[i]["unload_time"].ToString());
  188. DataSet subDataSet = DB.ExecuteDataset(string.Format("SELECT * FROM \"wafer_data\" Where \"carrier_data_guid\"='{0}' ;", item.ID));
  189. if (subDataSet != null && subDataSet.Tables.Count != 0 && subDataSet.Tables[0].Rows.Count != 0)
  190. {
  191. item.WaferCount = subDataSet.Tables[0].Rows.Count;
  192. item.FaultWaferCount = subDataSet.Tables[0].Select("process_status='Failed'").Length;
  193. }
  194. result.Add(item);
  195. }
  196. }
  197. catch (Exception e)
  198. {
  199. LOG.Write(e);
  200. }
  201. return result;
  202. }
  203. }
  204. }