PosXrayInfoDB.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. using OTSDataType;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using OTSModelSharp.DTLBase;
  9. using System.Data;
  10. using System.Drawing;
  11. using OTSCLRINTERFACE;
  12. using System.Data.SQLite;
  13. namespace OTSModelSharp
  14. {
  15. public class CPosXrayInfoDB :CSQLiteDB
  16. {
  17. protected static NLog.Logger logger = null;
  18. protected CSQLiteTable m_tableInfo = new CSQLiteTable();
  19. List<CPosXrayClr> m_listPosXrayInfo=new List<CPosXrayClr>();
  20. public CPosXrayInfoDB(IDBStoreBase _conStr, CSQLiteTable _table) : base(_conStr, _table)
  21. {
  22. }
  23. public List<CPosXrayClr> GetXrayInfoListByFieldId(long a_nFieldId)
  24. {
  25. List<CPosXrayClr> xrayPointInfoVec =new List<CPosXrayClr>();
  26. if (m_listPosXrayInfo!=null)
  27. {
  28. foreach(CPosXrayClr xrayPointInfo in m_listPosXrayInfo) //for (auto & xrayPointInfo : m_listPosXrayInfo)
  29. {
  30. if (xrayPointInfo.GetScanFieldId() == (System.UInt32)a_nFieldId)
  31. {
  32. xrayPointInfoVec.Add(xrayPointInfo);
  33. }
  34. }
  35. }
  36. else
  37. {
  38. DataTable tableQuery = GetQueryByFieldId(a_nFieldId);
  39. if (tableQuery!=null)
  40. {
  41. return xrayPointInfoVec;
  42. }
  43. xrayPointInfoVec = ReadXrayPointInfoListByQuery(tableQuery);
  44. }
  45. return xrayPointInfoVec;
  46. }
  47. public List<CPosXrayClr> GetXrayInfoList(bool a_bForce, int fldId)
  48. {
  49. if (a_bForce)
  50. {
  51. m_listPosXrayInfo.Clear();
  52. }
  53. if (m_listPosXrayInfo.Count() == 0)
  54. {
  55. GetXrayInfoListByFieldId(fldId);
  56. }
  57. return m_listPosXrayInfo;
  58. }
  59. public bool SaveXrayInfoList(List<CPosXrayClr> a_xrayPointList)
  60. {
  61. var tableInfoPtr = GetTableInfo();
  62. if (tableInfoPtr==null)
  63. {
  64. return false;
  65. }
  66. var datastorePtr = GetDatastore();
  67. if (datastorePtr==null)
  68. {
  69. return false;
  70. }
  71. CSQLiteTable cSQLiteTable = new CSQLiteTable();
  72. string sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  73. string sSQLCommand = "";
  74. foreach (CPosXrayClr xrayPointInfo in a_xrayPointList)
  75. {
  76. System.Drawing.Point pos = (System.Drawing.Point)xrayPointInfo.GetPosition();
  77. var qtyData = xrayPointInfo.GetElementQuantifyData();
  78. var elenum = qtyData.Count;
  79. sSQLCommand =string.Format( sInsertFormat,
  80. (xrayPointInfo.GetIndex()),
  81. (pos.X) ,
  82. (pos.Y) ,
  83. (xrayPointInfo.GetScanFieldId()) ,
  84. (xrayPointInfo.GetPartTagId()) ,
  85. (xrayPointInfo.GetFeatureId()) ,
  86. (elenum));
  87. if (!datastorePtr.RunCommand(sSQLCommand, false))
  88. {
  89. return false;
  90. }
  91. }
  92. return true;
  93. }
  94. public List<KeyValuePair<string,SQLiteParameter[]>> GetSavingXrayInfoCmds(List<CPosXrayClr> a_xrayPointList)
  95. {
  96. List<KeyValuePair<string, SQLiteParameter[]>> cmds = new List<KeyValuePair<string, SQLiteParameter[]>>();
  97. var tableInfoPtr = GetTableInfo();
  98. var datastorePtr = GetDatastore();
  99. //CSQLiteTable cSQLiteTable = new CSQLiteTable();
  100. var sInsertFormat = tableInfoPtr.GetInsertCommand(true);
  101. //string sSQLCommand = "";
  102. var parasTem = sInsertFormat.Value;
  103. foreach (CPosXrayClr xrayPointInfo in a_xrayPointList)
  104. {
  105. var paras = new SQLiteParameter[7];
  106. for (int j = 0; j < 7; j++)
  107. {
  108. paras[j] = new SQLiteParameter(parasTem[j].ParameterName);
  109. }
  110. System.Drawing.Point pos = (System.Drawing.Point)xrayPointInfo.GetPosition();
  111. var qtyData = xrayPointInfo.GetElementQuantifyData();
  112. var elenum = qtyData.Count;
  113. paras[0].Value = xrayPointInfo.GetIndex();
  114. paras[1].Value = pos.X;
  115. paras[2].Value = pos.Y;
  116. paras[3].Value = xrayPointInfo.GetScanFieldId();
  117. paras[4].Value = xrayPointInfo.GetPartTagId();
  118. paras[5].Value = xrayPointInfo.GetFeatureId();
  119. paras[6].Value= elenum;
  120. cmds.Add(new KeyValuePair<string, SQLiteParameter[]>(sInsertFormat.Key, paras));
  121. }
  122. return cmds;
  123. }
  124. protected bool ReadXrayPointInfoList()
  125. {
  126. var st = GetDatastore();
  127. var t = GetTableInfo();
  128. DataTable query = st.QueryByTableNameForDataTable(t.GetTableName(), "");
  129. if (query!=null)
  130. {
  131. return false;
  132. }
  133. m_listPosXrayInfo = ReadXrayPointInfoListByQuery(query);
  134. return true;
  135. }
  136. protected List<CPosXrayClr> ReadXrayPointInfoListByQuery(DataTable a_query)
  137. {
  138. List<CPosXrayClr> xrayPointInfoVec =new List<CPosXrayClr>();
  139. for (int i=0; i< a_query.Rows.Count;i++)
  140. {
  141. CPosXrayClr xrayPointInfo = ReadXrayPointInfo(a_query);
  142. if(xrayPointInfo != null)
  143. {
  144. logger.Info("Read xray point info item failed: row id: %d",i);
  145. }
  146. else
  147. {
  148. xrayPointInfoVec.Add(xrayPointInfo);
  149. }
  150. }
  151. return xrayPointInfoVec;
  152. }
  153. protected CPosXrayClr ReadXrayPointInfo(DataTable a_query)
  154. {
  155. int nCol;
  156. //CPosXrayClr CPosXrayClr = new CPosXrayClr();
  157. CPosXrayClr xrayPointPtr = new CPosXrayClr();
  158. nCol = (int)CPosXrayInfoTable.ColumnID.N_INDEX - (int)CPosXrayInfoTable.ColumnID.MIN;
  159. xrayPointPtr.SetIndex((int)a_query.Rows[nCol][0]);
  160. System.Drawing.Point xrayPosition =new System.Drawing.Point();
  161. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_X - (int)CPosXrayInfoTable.ColumnID.MIN;
  162. xrayPosition.X = (int)a_query.Rows[nCol][0];
  163. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_Y - (int)CPosXrayInfoTable.ColumnID.MIN;
  164. xrayPosition.Y = (int)a_query.Rows[nCol][0];
  165. xrayPointPtr.SetPosition(xrayPosition);
  166. nCol = (int)CPosXrayInfoTable.ColumnID.N_FIELD_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  167. xrayPointPtr.SetScanFieldId((int)a_query.Rows[nCol][0]);
  168. nCol = (int)CPosXrayInfoTable.ColumnID.N_PARTICLE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  169. xrayPointPtr.SetPartTagId((int)a_query.Rows[nCol][0]);
  170. nCol = (int)CPosXrayInfoTable.ColumnID.N_FEATURE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  171. xrayPointPtr.SetFeatureId((int)a_query.Rows[nCol][0]);
  172. nCol = (int)CPosXrayInfoTable.ColumnID.N_ELEMENT_NUM - (int)CPosXrayInfoTable.ColumnID.MIN;
  173. xrayPointPtr.SetElementNum((int)a_query.Rows[nCol][0]);
  174. return xrayPointPtr;
  175. }
  176. protected DataTable GetQueryByFieldId( long a_nFieldId)
  177. {
  178. CSQLiteTable query =new CSQLiteTable();
  179. var datastorePtr = GetDatastore();
  180. var tableInfoPtr = GetTableInfo();
  181. string sFieldIdColumnName = tableInfoPtr.GetColumnName(Convert.ToInt32(CPosXrayInfoTable.ColumnID.N_FIELD_ID) - Convert.ToInt32(CPosXrayInfoTable.ColumnID.MIN));
  182. string sSQLCommand = string.Format("SELECT * FROM \'{0}\' WHERE {1} ={2};",tableInfoPtr.GetTableName(),sFieldIdColumnName, a_nFieldId);
  183. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  184. return t1;
  185. }
  186. }
  187. }