IncADataDB.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SQLite;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using OTSCLRINTERFACE;
  12. using OTSDataType;
  13. using OTSModelSharp.DTLBase;
  14. namespace OTSModelSharp
  15. {
  16. public class CIncADataDB : CSQLiteDB
  17. {
  18. public CIncADataDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table)
  19. {
  20. }
  21. public bool UpdataAIncA(COTSParticleClr a_pParticle)
  22. {
  23. if (a_pParticle == null)
  24. {
  25. return false;
  26. }
  27. var datastorePtr = GetDatastore();
  28. string sSQLCommand = "Update IncAData set AveGray = {0},Area ={1},IncAId={2} where FieldID = {3} and ParticleId = {4} "; //sSQLCommand.Format(sSQLCommand,a_pParticle->GetAveGray(),a_pParticle->GetArea(),a_pParticle->GetType(),a_pParticle->GetFieldId(),a_pParticle->GetTagId());
  29. sSQLCommand = string.Format(sSQLCommand, a_pParticle.GetAveGray(), a_pParticle.GetArea(), a_pParticle.GetType(), a_pParticle.GetFieldId(), a_pParticle.GetTagId());
  30. var ret = datastorePtr.RunCommand( sSQLCommand);
  31. return ret;
  32. }
  33. public KeyValuePair<string,SQLiteParameter[]> GetUpdataAIncACmd(COTSParticleClr a_pParticle)
  34. {
  35. //if (a_pParticle == null)
  36. //{
  37. // return "";
  38. //}
  39. //var datastorePtr = GetDatastore();
  40. string sSQLCommand = "Update IncAData set TypeId=@TypeId,TypeName= @TypeName,TypeColor=@TypeColor where FieldID =@FieldId and ParticleId =@ParticleId "; //sSQLCommand.Format(sSQLCommand,a_pParticle->GetAveGray(),a_pParticle->GetArea(),a_pParticle->GetType(),a_pParticle->GetFieldId(),a_pParticle->GetTagId());
  41. var paras = new SQLiteParameter[5];
  42. paras[0] = new SQLiteParameter("TypeId");
  43. paras[0].Value = a_pParticle.GetClassifyId();
  44. paras[1] = new SQLiteParameter("TypeName");
  45. paras[1].Value = a_pParticle.GetTypeName();
  46. paras[2] = new SQLiteParameter("TypeColor");
  47. paras[2].Value = a_pParticle.GetTypeColor();
  48. paras[3] = new SQLiteParameter("FieldId");
  49. paras[3].Value = a_pParticle.GetFieldId();
  50. paras[4] = new SQLiteParameter("ParticleId");
  51. paras[4].Value = a_pParticle.GetTagId();
  52. //sSQLCommand = string.Format(sSQLCommand, a_pParticle.GetClassifyId(),a_pParticle.GetTypeName(),a_pParticle.GetTypeColor(), a_pParticle.GetFieldId(), a_pParticle.GetTagId());
  53. return new KeyValuePair<string, SQLiteParameter[]>(sSQLCommand,paras);
  54. }
  55. public bool SaveAIncA(COTSParticleClr a_pParticle, System.Drawing.Point fldPos)
  56. {
  57. var tableInfoPtr = GetTableInfo();
  58. if (tableInfoPtr==null)
  59. {
  60. return false;
  61. }
  62. var datastorePtr = GetDatastore();
  63. string sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  64. string sSQLCommand;
  65. Rectangle rec = (Rectangle)a_pParticle.GetParticleRect();
  66. System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos();
  67. System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetAbsolutPos();
  68. sSQLCommand =string.Format(sInsertFormat, a_pParticle.GetFieldId(), a_pParticle.GetAnalysisId(), a_pParticle.GetAveGray(), rec.Left, rec.Top, rec.Width, rec.Height, a_pParticle.GetArea(), xrayPos.X, xrayPos.Y, a_pParticle.GetClassifyId(), (int)(a_pParticle.GetFeature().GetSegmentsList().Count), fldPos.X, fldPos.Y, a_pParticle.GetTagId(), a_pParticle.GetDMAX(), a_pParticle.GetDMIN(), a_pParticle.GetDMPERP(), a_pParticle.GetDPRIMETER(), a_pParticle.GetORIENTATION(), a_pParticle.GetDINSCR(), a_pParticle.GetDMEAN(), a_pParticle.GetDELONG(), a_pParticle.GetFeretDiameter(), a_pParticle.GetTypeName(), a_pParticle.GetTypeColor(),semPos.X,semPos.Y);
  69. if (!datastorePtr.RunCommand(sSQLCommand))
  70. {
  71. return false;
  72. }
  73. return true;
  74. }
  75. public KeyValuePair<string,SQLiteParameter[]> GegInsertingAnIncACmd(COTSParticleClr a_pParticle, System.Drawing.Point fldPos)
  76. {
  77. var tableInfoPtr = GetTableInfo();
  78. var sInsertCmd = tableInfoPtr.GetInsertCommand(true);
  79. Rectangle rec = (Rectangle)a_pParticle.GetParticleRect();
  80. System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos();
  81. System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetAbsolutPos();
  82. var paras = sInsertCmd.Value;
  83. paras[0].Value = a_pParticle.GetFieldId();
  84. paras[1].Value = a_pParticle.GetAnalysisId();
  85. paras[2].Value = a_pParticle.GetAveGray();
  86. paras[3].Value = rec.Left;
  87. paras[4].Value = rec.Top;
  88. paras[5].Value = rec.Width;
  89. paras[6].Value = rec.Height;
  90. paras[7].Value = a_pParticle.GetArea();
  91. paras[8].Value = xrayPos.X;
  92. paras[9].Value = xrayPos.Y;
  93. paras[10].Value = a_pParticle.GetClassifyId();
  94. paras[11].Value = (int)(a_pParticle.GetFeature().GetSegmentsList().Count);
  95. paras[12].Value = fldPos.X;
  96. paras[13].Value = fldPos.Y;
  97. paras[14].Value = a_pParticle.GetTagId();
  98. paras[15].Value = a_pParticle.GetDMAX();
  99. paras[16].Value = a_pParticle.GetDMIN();
  100. paras[17].Value = a_pParticle.GetDMPERP();
  101. paras[18].Value = a_pParticle.GetDPRIMETER();
  102. paras[19].Value = a_pParticle.GetORIENTATION();
  103. paras[20].Value = a_pParticle.GetDINSCR();
  104. paras[21].Value = a_pParticle.GetDMEAN();
  105. paras[22].Value = a_pParticle.GetDELONG();
  106. paras[23].Value = a_pParticle.GetFeretDiameter();
  107. paras[24].Value = a_pParticle.GetTypeName();
  108. paras[25].Value = a_pParticle.GetTypeColor();
  109. paras[26].Value = semPos.X;
  110. paras[27].Value = semPos.Y;
  111. return new KeyValuePair<string, SQLiteParameter[]>(sInsertCmd.Key,paras);
  112. }
  113. public bool GetAllFieldsRecord(ref List<COTSFieldData> allFlds)
  114. {
  115. var allRecords = this.GetQueryOfAllRecord();
  116. Dictionary<int, COTSFieldData> mapFld = new Dictionary<int, COTSFieldData>(); //std.map<int, COTSFieldDataPtr> mapFld = new std.map<int, COTSFieldDataPtr>();
  117. for (int i = 0; i < allRecords.Rows.Count; i++)
  118. {
  119. int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]); //GetColIntValue((int)CIncADataTable.ColumnID.N_FIELD_ID);
  120. if (!mapFld.Keys.Contains(curFldId))
  121. {
  122. COTSFieldData fld = new COTSFieldData();
  123. fld.SetId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]));
  124. System.Drawing.Point fldPos =new System.Drawing.Point();
  125. fldPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosX]);
  126. fldPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosY]);
  127. fld.SetOTSPosition(fldPos);
  128. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  129. COTSParticleClr p = new COTSParticleClr();
  130. p.SetFieldId(fld.GetId());
  131. p.SetTagId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  132. p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  133. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  134. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  135. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  136. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  137. Rectangle r = new Rectangle(left, top, left + width, top + height);
  138. p.SetParticleRect(r);
  139. p.SetSubParticles("");
  140. byte aveGray = Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]);
  141. p.SetAveGray(aveGray);
  142. p.SetArea(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  143. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  144. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  145. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  146. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  147. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  148. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  149. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  150. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  151. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  152. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  153. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  154. ps.Add(p);
  155. allFlds.Add(fld);
  156. mapFld[curFldId] = fld;
  157. }
  158. else
  159. {
  160. COTSFieldData fld = mapFld[curFldId];
  161. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  162. COTSParticleClr p = new COTSParticleClr();
  163. p.SetFieldId(fld.GetId());
  164. p.SetTagId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  165. p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  166. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  167. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  168. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  169. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  170. Rectangle r = new Rectangle(left, top, left + width, top + height);
  171. p.SetParticleRect(r);
  172. //p.SetSubParticles("");
  173. p.SetAveGray(Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]));
  174. p.SetArea(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  175. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  176. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  177. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  178. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  179. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  180. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  181. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  182. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  183. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  184. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  185. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  186. ps.Add(p);
  187. }
  188. }
  189. return true;
  190. }
  191. protected DataTable GetQueryById(int a_nXrayId, int a_nFieldId)
  192. {
  193. CSQLiteTable query = new CSQLiteTable();
  194. var datastorePtr = GetDatastore();
  195. var tableInfoPtr = GetTableInfo();
  196. string sXrayIdColumnName = tableInfoPtr.GetColumnName((int)CIncADataTable.ColumnID.N_XRAY_ID - (int)CIncADataTable.ColumnID.MIN); //tableInfoPtr.GetColumnName((int)CIncADataTable.ColumnID.N_XRAY_ID - (int)CIncADataTable.ColumnID.MIN);
  197. string sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CIncADataTable.ColumnID.N_FIELD_ID - (int)CIncADataTable.ColumnID.MIN); //tableInfoPtr.GetColumnName((int)CIncADataTable.ColumnID.N_FIELD_ID - (int)CIncADataTable.ColumnID.MIN);
  198. string sSQLCommand=string.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND %s = {3};", (string)tableInfoPtr.GetTableName(), (string)sFieldIdColumnName, a_nFieldId, (string)sXrayIdColumnName, a_nXrayId);
  199. DataTable t1 =datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  200. return t1;
  201. }
  202. protected DataTable GetQueryOfAllRecord()
  203. {
  204. var datastorePtr = GetDatastore();
  205. var tableInfoPtr = GetTableInfo();
  206. string sSQLCommand= string.Format("SELECT * FROM \'{0}\';", (string)tableInfoPtr.GetTableName());
  207. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  208. return t1;
  209. }
  210. }
  211. }