PosXrayInfoDB.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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 OTSCOMMONCLR;
  12. namespace OTSModelSharp
  13. {
  14. public class CPosXrayInfoDB :CSQLiteDB
  15. {
  16. protected static NLog.Logger logger = null;
  17. protected CSQLiteTable m_tableInfo = new CSQLiteTable();
  18. List<CPosXrayClr> m_listPosXrayInfo=new List<CPosXrayClr>();
  19. public CPosXrayInfoDB(IDBStoreBase _conStr, CSQLiteTable _table) : base(_conStr, _table)
  20. {
  21. }
  22. public List<CPosXrayClr> GetXrayInfoListByFieldId(long a_nFieldId)
  23. {
  24. List<CPosXrayClr> xrayPointInfoVec =new List<CPosXrayClr>();
  25. if (m_listPosXrayInfo!=null)
  26. {
  27. foreach(CPosXrayClr xrayPointInfo in m_listPosXrayInfo) //for (auto & xrayPointInfo : m_listPosXrayInfo)
  28. {
  29. if (xrayPointInfo.GetScanFieldId() == (System.UInt32)a_nFieldId)
  30. {
  31. xrayPointInfoVec.Add(xrayPointInfo);
  32. }
  33. }
  34. }
  35. else
  36. {
  37. DataTable tableQuery = GetQueryByFieldId(a_nFieldId);
  38. if (tableQuery!=null)
  39. {
  40. return xrayPointInfoVec;
  41. }
  42. xrayPointInfoVec = ReadXrayPointInfoListByQuery(tableQuery);
  43. }
  44. return xrayPointInfoVec;
  45. }
  46. public List<CPosXrayClr> GetXrayInfoList(bool a_bForce, int fldId)
  47. {
  48. if (a_bForce)
  49. {
  50. m_listPosXrayInfo.Clear();
  51. }
  52. if (m_listPosXrayInfo.Count() == 0)
  53. {
  54. GetXrayInfoListByFieldId(fldId);
  55. }
  56. return m_listPosXrayInfo;
  57. }
  58. public bool SaveXrayInfoList(List<CPosXrayClr> a_xrayPointList)
  59. {
  60. var tableInfoPtr = GetTableInfo();
  61. if (tableInfoPtr==null)
  62. {
  63. return false;
  64. }
  65. var datastorePtr = GetDatastore();
  66. if (datastorePtr==null)
  67. {
  68. return false;
  69. }
  70. CSQLiteTable cSQLiteTable = new CSQLiteTable();
  71. string sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  72. string sSQLCommand = "";
  73. foreach (CPosXrayClr xrayPointInfo in a_xrayPointList)
  74. {
  75. System.Drawing.Point pos = (System.Drawing.Point)xrayPointInfo.GetPosition();
  76. var qtyData = xrayPointInfo.GetElementQuantifyData();
  77. var elenum = qtyData.Count;
  78. sSQLCommand =string.Format( sInsertFormat,
  79. (xrayPointInfo.GetIndex()),
  80. (pos.X) ,
  81. (pos.Y) ,
  82. (xrayPointInfo.GetScanFieldId()) ,
  83. (xrayPointInfo.GetPartTagId()) ,
  84. (xrayPointInfo.GetFeatureId()) ,
  85. (elenum));
  86. if (!datastorePtr.RunCommand(sSQLCommand, false))
  87. {
  88. return false;
  89. }
  90. }
  91. return true;
  92. }
  93. //public bool DeleteXrayListByFieldId(long a_nFieldId)
  94. //{
  95. // if (m_listPosXrayInfo != null)
  96. // {
  97. // for (int i = 0; i < m_listPosXrayInfo.Count; i++)
  98. // {
  99. // if (m_listPosXrayInfo[i].GetScanFieldId() == (uint)a_nFieldId)
  100. // {
  101. // m_listPosXrayInfo.Remove(m_listPosXrayInfo[i]);
  102. // }
  103. // }
  104. // }
  105. // var tableInfoPtr = GetTableInfo();
  106. // if (tableInfoPtr == null)
  107. // {
  108. // return false;
  109. // }
  110. // var datastorePtr = GetDatastore();
  111. // if (datastorePtr == null)
  112. // {
  113. // return false;
  114. // }
  115. // string sTableName = tableInfoPtr.GetTableName();
  116. // if (!datastorePtr.IsTableExists(sTableName))
  117. // {
  118. // logger.Trace("Table %s not exist" + sTableName);
  119. // return true;
  120. // }
  121. // string sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CPosXrayInfoTable.ColumnID.N_FIELD_ID - (int)CPosXrayInfoTable.ColumnID.MIN);
  122. // string sSQLCommand = "DELETE FROM \'{0}\' WHERE {1} = {2}";
  123. // sSQLCommand = string.Format(sSQLCommand, tableInfoPtr.GetTableName(), sFieldIdColumnName, a_nFieldId);
  124. // return datastorePtr.RunCommand(sSQLCommand);
  125. //}
  126. protected bool ReadXrayPointInfoList()
  127. {
  128. var st = GetDatastore();
  129. var t = GetTableInfo();
  130. DataTable query = st.QueryByTableNameForDataTable(t.GetTableName(), "");
  131. if (query!=null)
  132. {
  133. return false;
  134. }
  135. m_listPosXrayInfo = ReadXrayPointInfoListByQuery(query);
  136. return true;
  137. }
  138. protected List<CPosXrayClr> ReadXrayPointInfoListByQuery(DataTable a_query)
  139. {
  140. List<CPosXrayClr> xrayPointInfoVec =new List<CPosXrayClr>();
  141. //xrayPointInfoVec.Clear();
  142. //int nRowId = 0;
  143. //int nWrongItems = 0;
  144. //while (!a_query.IsEOF())
  145. //{
  146. // CPosXrayClr xrayPointInfo = ReadXrayPointInfo(a_query);
  147. // if (xrayPointInfo!=null)
  148. // {
  149. // logger.Info("Read xray point info item failed: row id: %d");
  150. // nWrongItems++;
  151. // }
  152. // else
  153. // {
  154. // xrayPointInfoVec.Add(xrayPointInfo);
  155. // }
  156. // a_query.NextRow();
  157. // nRowId++;
  158. //}
  159. for (int i=0; i< a_query.Rows.Count;i++)
  160. {
  161. CPosXrayClr xrayPointInfo = ReadXrayPointInfo(a_query);
  162. if(xrayPointInfo != null)
  163. {
  164. logger.Info("Read xray point info item failed: row id: %d",i);
  165. //nWrongItems++;
  166. }
  167. else
  168. {
  169. xrayPointInfoVec.Add(xrayPointInfo);
  170. }
  171. //a_query.NextRow();
  172. //nRowId++;
  173. }
  174. return xrayPointInfoVec;
  175. }
  176. protected CPosXrayClr ReadXrayPointInfo(DataTable a_query)
  177. {
  178. int nCol;
  179. //CPosXrayClr CPosXrayClr = new CPosXrayClr();
  180. CPosXrayClr xrayPointPtr = new CPosXrayClr();
  181. nCol = (int)CPosXrayInfoTable.ColumnID.N_INDEX - (int)CPosXrayInfoTable.ColumnID.MIN;
  182. xrayPointPtr.SetIndex((int)a_query.Rows[nCol][0]);
  183. System.Drawing.Point xrayPosition =new System.Drawing.Point();
  184. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_X - (int)CPosXrayInfoTable.ColumnID.MIN;
  185. xrayPosition.X = (int)a_query.Rows[nCol][0];
  186. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_Y - (int)CPosXrayInfoTable.ColumnID.MIN;
  187. xrayPosition.Y = (int)a_query.Rows[nCol][0];
  188. xrayPointPtr.SetPosition(xrayPosition);
  189. nCol = (int)CPosXrayInfoTable.ColumnID.N_FIELD_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  190. xrayPointPtr.SetScanFieldId((int)a_query.Rows[nCol][0]);
  191. nCol = (int)CPosXrayInfoTable.ColumnID.N_PARTICLE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  192. xrayPointPtr.SetPartTagId((int)a_query.Rows[nCol][0]);
  193. nCol = (int)CPosXrayInfoTable.ColumnID.N_FEATURE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  194. xrayPointPtr.SetFeatureId((int)a_query.Rows[nCol][0]);
  195. nCol = (int)CPosXrayInfoTable.ColumnID.N_ELEMENT_NUM - (int)CPosXrayInfoTable.ColumnID.MIN;
  196. xrayPointPtr.SetElementNum((int)a_query.Rows[nCol][0]);
  197. return xrayPointPtr;
  198. }
  199. protected DataTable GetQueryByFieldId( long a_nFieldId)
  200. {
  201. CSQLiteTable query =new CSQLiteTable();
  202. var datastorePtr = GetDatastore();
  203. //if (datastorePtr==null)
  204. //{
  205. // return query;
  206. //}
  207. var tableInfoPtr = GetTableInfo();
  208. //if (tableInfoPtr==null)
  209. //{
  210. // return query;
  211. //}
  212. string sFieldIdColumnName = tableInfoPtr.GetColumnName(Convert.ToInt32(CPosXrayInfoTable.ColumnID.N_FIELD_ID) - Convert.ToInt32(CPosXrayInfoTable.ColumnID.MIN));
  213. //string sSQLCommand;
  214. //sSQLCommand = "SELECT * FROM \'{0}\' WHERE {1} ={2};" + Convert.ToString(tableInfoPtr.GetTableName()) +
  215. // Convert.ToString(sFieldIdColumnName) + a_nFieldId;
  216. //CSQLiteQuery cSQLiteQuery = new CSQLiteQuery();
  217. //query = datastorePtr.QueryByCommand(sSQLCommand);
  218. string sSQLCommand = string.Format("SELECT * FROM \'{0}\' WHERE {1} ={2};",tableInfoPtr.GetTableName(),sFieldIdColumnName, a_nFieldId);
  219. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  220. //ASSERT(query);
  221. //if (query==null || !query.IsValid())
  222. //{
  223. // logger.Info("Invalid quary command (%s)."+Convert.ToString(sSQLCommand));
  224. // //ASSERT(FALSE);
  225. // CDBQueryBase cDBQueryBase = new CDBQueryBase();
  226. // return (cDBQueryBase);
  227. //}
  228. //// do the table related valid checking
  229. //if (query.GetColCount() != GetTableInfo().GetColumnCount())
  230. //{
  231. // logger.Info("query col num value is %d, but not %d"+ cSQLiteQuery.GetColCount()+ GetTableInfo().GetColumnCount());
  232. // CDBQueryBase cDBQueryBase = new CDBQueryBase();
  233. // return (cDBQueryBase);
  234. //}
  235. return t1;
  236. }
  237. }
  238. }