PosXrayInfoDB.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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. 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 List<string> GetSavingXrayInfoCmds(List<CPosXrayClr> a_xrayPointList)
  94. {
  95. List<string> cmds = new List<string>();
  96. var tableInfoPtr = GetTableInfo();
  97. if (tableInfoPtr == null)
  98. {
  99. return cmds;
  100. }
  101. var datastorePtr = GetDatastore();
  102. if (datastorePtr == null)
  103. {
  104. return cmds;
  105. }
  106. CSQLiteTable cSQLiteTable = new CSQLiteTable();
  107. string sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  108. string sSQLCommand = "";
  109. foreach (CPosXrayClr xrayPointInfo in a_xrayPointList)
  110. {
  111. System.Drawing.Point pos = (System.Drawing.Point)xrayPointInfo.GetPosition();
  112. var qtyData = xrayPointInfo.GetElementQuantifyData();
  113. var elenum = qtyData.Count;
  114. sSQLCommand = string.Format(sInsertFormat,
  115. (xrayPointInfo.GetIndex()),
  116. (pos.X),
  117. (pos.Y),
  118. (xrayPointInfo.GetScanFieldId()),
  119. (xrayPointInfo.GetPartTagId()),
  120. (xrayPointInfo.GetFeatureId()),
  121. (elenum));
  122. cmds.Add(sSQLCommand);
  123. }
  124. return cmds;
  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. for (int i=0; i< a_query.Rows.Count;i++)
  142. {
  143. CPosXrayClr xrayPointInfo = ReadXrayPointInfo(a_query);
  144. if(xrayPointInfo != null)
  145. {
  146. logger.Info("Read xray point info item failed: row id: %d",i);
  147. }
  148. else
  149. {
  150. xrayPointInfoVec.Add(xrayPointInfo);
  151. }
  152. }
  153. return xrayPointInfoVec;
  154. }
  155. protected CPosXrayClr ReadXrayPointInfo(DataTable a_query)
  156. {
  157. int nCol;
  158. //CPosXrayClr CPosXrayClr = new CPosXrayClr();
  159. CPosXrayClr xrayPointPtr = new CPosXrayClr();
  160. nCol = (int)CPosXrayInfoTable.ColumnID.N_INDEX - (int)CPosXrayInfoTable.ColumnID.MIN;
  161. xrayPointPtr.SetIndex((int)a_query.Rows[nCol][0]);
  162. System.Drawing.Point xrayPosition =new System.Drawing.Point();
  163. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_X - (int)CPosXrayInfoTable.ColumnID.MIN;
  164. xrayPosition.X = (int)a_query.Rows[nCol][0];
  165. nCol = (int)CPosXrayInfoTable.ColumnID.N_POS_Y - (int)CPosXrayInfoTable.ColumnID.MIN;
  166. xrayPosition.Y = (int)a_query.Rows[nCol][0];
  167. xrayPointPtr.SetPosition(xrayPosition);
  168. nCol = (int)CPosXrayInfoTable.ColumnID.N_FIELD_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  169. xrayPointPtr.SetScanFieldId((int)a_query.Rows[nCol][0]);
  170. nCol = (int)CPosXrayInfoTable.ColumnID.N_PARTICLE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  171. xrayPointPtr.SetPartTagId((int)a_query.Rows[nCol][0]);
  172. nCol = (int)CPosXrayInfoTable.ColumnID.N_FEATURE_ID - (int)CPosXrayInfoTable.ColumnID.MIN;
  173. xrayPointPtr.SetFeatureId((int)a_query.Rows[nCol][0]);
  174. nCol = (int)CPosXrayInfoTable.ColumnID.N_ELEMENT_NUM - (int)CPosXrayInfoTable.ColumnID.MIN;
  175. xrayPointPtr.SetElementNum((int)a_query.Rows[nCol][0]);
  176. return xrayPointPtr;
  177. }
  178. protected DataTable GetQueryByFieldId( long a_nFieldId)
  179. {
  180. CSQLiteTable query =new CSQLiteTable();
  181. var datastorePtr = GetDatastore();
  182. var tableInfoPtr = GetTableInfo();
  183. string sFieldIdColumnName = tableInfoPtr.GetColumnName(Convert.ToInt32(CPosXrayInfoTable.ColumnID.N_FIELD_ID) - Convert.ToInt32(CPosXrayInfoTable.ColumnID.MIN));
  184. string sSQLCommand = string.Format("SELECT * FROM \'{0}\' WHERE {1} ={2};",tableInfoPtr.GetTableName(),sFieldIdColumnName, a_nFieldId);
  185. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  186. return t1;
  187. }
  188. }
  189. }