TCCleannessA.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
  8. {
  9. class TCCleannessA
  10. {
  11. public DataTable ParticleSizeStatistician(BasicData basicData,string strName)
  12. {
  13. List<DataTable> datalist = basicData.GetDBData();
  14. if (datalist.Count == 0)
  15. {
  16. return new DataTable();
  17. }
  18. DataTable data = datalist[0].Clone();
  19. for (int i = 0; i < datalist.Count; i++)
  20. {
  21. for (int a = 0; a < datalist[i].Rows.Count; a++)
  22. {
  23. data.Rows.Add(datalist[i].Rows[a].ItemArray);
  24. }
  25. }
  26. //获取粒级表
  27. List<string> colid = basicData.GetParticlesizeTable();
  28. DataTable ls_partsize_dt = new DataTable();
  29. ls_partsize_dt.TableName = "PartSize";
  30. ls_partsize_dt.Columns.Add("c1");
  31. ls_partsize_dt.Columns.Add("c2");
  32. ls_partsize_dt.Columns.Add("c3");
  33. ls_partsize_dt.Columns.Add("c4");
  34. ls_partsize_dt.Columns.Add("c5");
  35. ls_partsize_dt.Columns.Add("c6");
  36. ls_partsize_dt.Columns.Add("c7");
  37. ls_partsize_dt.Columns.Add("c8");
  38. ls_partsize_dt.Columns.Add("c9");
  39. DataRow dr = ls_partsize_dt.NewRow();
  40. for (int i = 1; i < 10; i++)
  41. {
  42. if (colid.Count < i)
  43. {
  44. dr["c" + i.ToString()] = "";
  45. }
  46. else
  47. {
  48. dr["c" + i.ToString()] = colid[i - 1];
  49. }
  50. }
  51. ls_partsize_dt.Rows.Add(dr);
  52. DataTable ls_Particel_dt = new DataTable();
  53. ls_Particel_dt.TableName = "Particel";
  54. ls_Particel_dt.Columns.Add("c1", typeof(double));
  55. ls_Particel_dt.Columns.Add("c2", typeof(double));
  56. ls_Particel_dt.Columns.Add("c3", typeof(double));
  57. ls_Particel_dt.Columns.Add("c4", typeof(double));
  58. ls_Particel_dt.Columns.Add("c5", typeof(double));
  59. ls_Particel_dt.Columns.Add("c6", typeof(double));
  60. ls_Particel_dt.Columns.Add("c7", typeof(double));
  61. ls_Particel_dt.Columns.Add("c8", typeof(double));
  62. ls_Particel_dt.Columns.Add("c9", typeof(double));
  63. ls_Particel_dt.Columns.Add("Name");
  64. ls_Particel_dt.Columns.Add("total", typeof(double));
  65. ls_Particel_dt.Columns.Add("TypeId");
  66. ls_Particel_dt.Columns.Add("Class");
  67. ls_Particel_dt.Columns.Add("hardnes");
  68. ls_Particel_dt.Columns.Add("hardness");
  69. ls_Particel_dt.Columns.Add("metal");
  70. ls_Particel_dt.Columns.Add("maximum");
  71. DataTable table = GetSTL(basicData, strName);
  72. for (int i = 0; i < data.Rows.Count; i++)
  73. {
  74. DataRow dr2 = ls_Particel_dt.NewRow();
  75. dr2["Name"] = data.Rows[i]["TypeName"].ToString();
  76. dr2["Class"] = data.Rows[i]["Class"].ToString();
  77. dr2["TypeId"] = data.Rows[i]["TypeId"].ToString();//获取分类编号
  78. dr2["maximum"]= data.Rows[i]["Largest"].ToString();
  79. for (int j = 1; j < 10; j++)
  80. {
  81. if (colid.Count >= j)
  82. {
  83. dr2["c" + j.ToString()] = Convert.ToDouble(data.Rows[i][colid[j - 1]]);
  84. }
  85. }
  86. if (dr2["Name"].ToString() != "" && dr2["Name"].ToString().IndexOf("number") < 0)
  87. {
  88. dr2["total"] = "0"; //求合
  89. double d_total = 0;
  90. for (int j = 1; j < 10; j++)
  91. {
  92. if (colid.Count >= j)
  93. {
  94. d_total = d_total + Convert.ToInt64(data.Rows[i][colid[j - 1]]);
  95. }
  96. }
  97. dr2["total"] = d_total.ToString();
  98. }
  99. dr2["hardness"] = "o. Def.";
  100. dr2["metal"] = "0";
  101. dr2["hardnes"] = "0";
  102. for (int a=0;a< table.Rows.Count;a++)
  103. {
  104. if(data.Rows[i]["TypeId"].ToString()== table.Rows[a]["TypeId"].ToString())
  105. {
  106. dr2["hardness"] = table.Rows[a]["Hardness_detailed"].ToString();
  107. dr2["metal"]= table.Rows[a]["metal"].ToString();
  108. dr2["hardnes"] = table.Rows[a]["Hardness"].ToString(); ;
  109. break;
  110. }
  111. }
  112. ls_Particel_dt.Rows.Add(dr2);
  113. }
  114. return ls_Particel_dt;
  115. }
  116. public List<DataTable> GetGroupingTable(DataTable data)
  117. {
  118. List<DataTable> datas = new List<DataTable>();
  119. HashSet<string> uniqueStrings = new HashSet<string>();
  120. for (int i=0;i< data.Rows.Count;i++)
  121. {
  122. uniqueStrings.Add(data.Rows[i]["Class"].ToString());
  123. }
  124. foreach (var uniqueString in uniqueStrings)
  125. {
  126. DataTable dt = data.Clone();
  127. dt.TableName = uniqueString;
  128. for (int i = 0; i < data.Rows.Count; i++)
  129. {
  130. if (data.Rows[i]["Class"].ToString() == uniqueString)
  131. {
  132. dt.Rows.Add(data.Rows[i].ItemArray);
  133. }
  134. }
  135. datas.Add(dt);
  136. }
  137. return datas;
  138. }
  139. private DataTable GetSTL( BasicData basicData, string strName)
  140. {
  141. DataTable data = new DataTable();
  142. if (basicData.GetResfile().ToLower() == "nostddb")
  143. {
  144. data = new DataTable();
  145. }
  146. DataTable dt = new DataTable();
  147. dt.Columns.Add("Name");
  148. dt.Columns.Add("TypeId");
  149. dt.Columns.Add("Hardness", typeof(double));
  150. dt.Columns.Add("Hardness_detailed");
  151. dt.Columns.Add("metal");
  152. OTSCommon.DBOperate.SqLiteHelper sh = null;
  153. string fullPath = basicData.GetFilePath() + "\\" + strName;
  154. string fullPath2 = System.IO.Directory.GetCurrentDirectory() + "\\Config\\SysData\\" + strName;
  155. if (System.IO.File.Exists(fullPath))
  156. {
  157. sh = new OTSCommon.DBOperate.SqLiteHelper("data source='" + fullPath + "'");
  158. }
  159. else if (System.IO.File.Exists(fullPath2))
  160. {
  161. sh = new OTSCommon.DBOperate.SqLiteHelper("data source='" + fullPath2 + "'");
  162. }
  163. else
  164. {
  165. sh = null;
  166. return data;
  167. }
  168. DataTable dt_stl = sh.ExecuteQuery("select * from ClassifySTD");
  169. DataTable LargeClassificationTable = sh.ExecuteQuery("select * from STDGroups");
  170. for (int i = 0; i < dt_stl.Rows.Count; i++)
  171. {
  172. double DAGroupId;
  173. DataRow dr = dt.NewRow();
  174. dr["Name"] = dt_stl.Rows[i]["StrName"].ToString();
  175. dr["TypeId"]= dt_stl.Rows[i]["STDId"].ToString();
  176. dr["Hardness_detailed"] = dt_stl.Rows[i]["Hardness"].ToString();
  177. if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", "").ToString() != "")
  178. {
  179. try
  180. {
  181. if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", "") == "o. Def.")
  182. {
  183. dr["Hardness"] = 0;
  184. }
  185. else
  186. {
  187. double dl= Convert.ToDouble(System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["Hardness"].ToString(), @"[^\d.\d]", ""));
  188. if (">"+ dl.ToString()== dt_stl.Rows[i]["Hardness"].ToString())
  189. {
  190. dr["Hardness"] = dl + 1;
  191. }
  192. else
  193. {
  194. dr["Hardness"] = dl -1;
  195. }
  196. }
  197. }
  198. catch
  199. {
  200. dr["Hardness"] = 0;
  201. }
  202. }
  203. else
  204. {
  205. dr["Hardness"] = 0;
  206. }
  207. if (System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["GroupId"].ToString(), @"[^\d.\d]", "").ToString() != "")
  208. {
  209. DAGroupId= Convert.ToDouble(System.Text.RegularExpressions.Regex.Replace(dt_stl.Rows[i]["GroupId"].ToString(), @"[^\d.\d]", ""));
  210. }
  211. else
  212. {
  213. DAGroupId = 0;
  214. }
  215. dr["metal"] = 0;
  216. for (int a = 0; a < LargeClassificationTable.Rows.Count; a++)
  217. {
  218. if(Convert.ToDouble(LargeClassificationTable.Rows[a]["id"]) == DAGroupId)
  219. {
  220. if (LargeClassificationTable.Rows[a]["name"].ToString().ToLower()== "metallic")
  221. {
  222. dr["metal"] = 1;
  223. }
  224. }
  225. }
  226. dt.Rows.Add(dr);
  227. }
  228. data = dt.Copy();
  229. return data;
  230. }
  231. }
  232. }