BasicData.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. 
  2. using OTSIncAReportApp.DataOperation.DataAccess;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using static OTSIncAReportApp.OTSReport_Export;
  10. namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
  11. {
  12. class BasicData
  13. {
  14. ParticleData fielddata;
  15. private string SizeChart = "";
  16. List<string> colid = new List<string>();
  17. private DataTable BData = new DataTable();
  18. private DataTable AllClass = new DataTable();
  19. private DataTable AllElement = new DataTable();
  20. private bool IsShereAClassificationGroup = false;
  21. /// <summary>
  22. /// 获取粒级表
  23. /// </summary>
  24. public void SetParticlesizeTable(OTSReport_Export m_otsreport_export)
  25. {
  26. //获取粒级表
  27. string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder +
  28. m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile;
  29. DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1);
  30. SizeChart = ds.Tables[0].Rows[0]["Sizes"].ToString();
  31. for (int i = 0; i < SizeChart.Split(',').Length - 1; i++)
  32. {
  33. if (SizeChart.Split(',')[i].Length > 0)
  34. {
  35. double d1 = Convert.ToDouble(SizeChart.Split(',')[i]);
  36. double d2 = Convert.ToDouble(SizeChart.Split(',')[i + 1]);
  37. colid.Add(d1.ToString() + "~" + d2.ToString());
  38. }
  39. }
  40. double d = Convert.ToDouble(SizeChart.Split(',')[SizeChart.Split(',').Length - 1]);
  41. colid.Add(d.ToString() + "~MAX");
  42. }
  43. /// <summary>
  44. /// 获取粒级表
  45. /// </summary>
  46. /// <returns></returns>
  47. public List<string> GetParticlesizeTable()
  48. {
  49. return colid;
  50. }
  51. public void SetDBData(c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export, string ComputeMode)
  52. {
  53. DataTable m_bt_DBData = new DataTable();
  54. ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.getSelectedIndex()].FilePath);
  55. List<string> colid = new List<string>() { "TypeName", "ar", "TypeId", "Largest", "Class", "con" };
  56. //获取粒级表
  57. string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder +
  58. m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile;
  59. DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1);
  60. string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
  61. for (int i = 0; i < sizestr.Split(',').Length - 1; i++)
  62. {
  63. if (sizestr.Split(',')[i].Length > 0)
  64. {
  65. double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
  66. double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]);
  67. colid.Add(d1.ToString() + "~" + d2.ToString());
  68. }
  69. }
  70. double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
  71. colid.Add(d.ToString() + "~MAX");
  72. for (int i = 0; i < colid.Count; i++)
  73. {
  74. m_bt_DBData.Columns.Add(colid[i].ToString());
  75. }
  76. DataTable dt = InvalidRemoval(fielddata.GetParticleListForParticlSize("area", ""));
  77. DataTable AreaInformationOfAllElements = InvalidRemoval(fielddata.GetAreaByAllIncA(""));
  78. DataTable dtp = InvalidRemoval(fielddata.GetParticleAll(""));
  79. string po = ComputeMode;
  80. switch (po)
  81. {
  82. case "DMAX":
  83. po = "DMAX";
  84. break;
  85. case "DMIN":
  86. po = "DMIN";
  87. break;
  88. case "ECD":
  89. po = "Area";
  90. break;
  91. case "FERET":
  92. po = "DFERET";
  93. break;
  94. }
  95. for (int i = 0; i < dt.Rows.Count; i++)
  96. {
  97. DataRow dr = m_bt_DBData.NewRow();
  98. dr["TypeName"] = dt.Rows[i]["TypeName"].ToString();
  99. dr["TypeId"] = dt.Rows[i]["TypeId"].ToString();
  100. dr["con"] = dt.Rows[i]["con"].ToString();
  101. if (dt.Rows[i]["GroupName"].ToString() == "")
  102. dr["Class"] = "Default";
  103. else
  104. dr["Class"] = dt.Rows[i]["GroupName"].ToString();
  105. //continue;
  106. dr["Largest"] = Math.Round(Convert.ToDouble(dt.Rows[i]["max"]), 2);
  107. for (int a = 6; a < colid.Count; a++)
  108. {
  109. string d1 = colid[a].Split('~')[0];
  110. string d2 = colid[a].Split('~')[1];
  111. if (d2 == "MAX")
  112. {
  113. d2 = "999";
  114. }
  115. DataRow[] datas = dtp.Select(getWhere(d2, d1, po, dt.Rows[i]["TypeId"].ToString()));
  116. dr[colid[a]] = datas.Count();
  117. }
  118. for (int a = 0; a < AreaInformationOfAllElements.Rows.Count; a++)
  119. {
  120. if (dt.Rows[i]["TypeId"].ToString() == AreaInformationOfAllElements.Rows[a]["TypeId"].ToString())
  121. {
  122. dr["ar"] = AreaInformationOfAllElements.Rows[a]["ar"];
  123. }
  124. }
  125. m_bt_DBData.Rows.Add(dr);
  126. }
  127. //去除物质分类(非夹杂物分类)
  128. for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; a++)
  129. {
  130. for (int i = m_bt_DBData.Rows.Count - 1; i >= 0; i--)
  131. {
  132. if (m_bt_DBData.Rows[i]["TypeName"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[a].ToString())
  133. {
  134. m_bt_DBData.Rows.RemoveAt(i);
  135. }
  136. }
  137. }
  138. if (m_mbszclass.list_str_MainPriority.Count == 0)
  139. {
  140. BData = m_bt_DBData.Copy();
  141. return;
  142. }
  143. DataTable datass = m_bt_DBData.Clone();
  144. for (int i = 0; i < m_mbszclass.list_str_MainPriority.Count; i++)
  145. {
  146. bool bl = false;
  147. for (int a = 0; a < m_bt_DBData.Rows.Count; a++)
  148. {
  149. if (m_bt_DBData.Rows[a]["TypeName"].ToString() == m_mbszclass.list_str_MainPriority[i])
  150. {
  151. datass.Rows.Add(m_bt_DBData.Rows[a].ItemArray);
  152. bl = true;
  153. continue;
  154. }
  155. }
  156. if (!bl)
  157. {
  158. DataTable dta = m_bt_DBData.Clone();
  159. //DataTable dtb = m_bt_DBData.Clone();
  160. // 添加一个空行
  161. DataRow newRow = dta.NewRow();
  162. dta.Rows.Add(newRow);
  163. //if (m_bt_DBData.Rows.Count != 0)
  164. //{
  165. //dta.Rows.Add(dtb.Rows[0].ItemArray);
  166. for (int b = 0; b < dta.Columns.Count; b++)
  167. {
  168. if (dta.Columns[b].ColumnName == "TypeName")
  169. {
  170. dta.Rows[0][b] = m_mbszclass.list_str_MainPriority[i];
  171. }
  172. else if (dta.Columns[b].ColumnName == "Class")
  173. {
  174. dta.Rows[0][b] = "Default";
  175. }
  176. else
  177. {
  178. dta.Rows[0][b] = 0;
  179. }
  180. }
  181. datass.Rows.Add(dta.Rows[0].ItemArray);
  182. //}
  183. }
  184. }
  185. BData = datass.Copy();
  186. //return datass;
  187. }
  188. /// <summary>
  189. /// 获取读取数据库并过滤颗粒
  190. /// </summary>
  191. /// <returns></returns>
  192. public DataTable GetDBData()
  193. {
  194. return BData;
  195. }
  196. public void SetAllClass()
  197. {
  198. AllClass = fielddata.GetAllClass();
  199. }
  200. /// <summary>
  201. /// 获取全部大类
  202. /// </summary>
  203. /// <returns></returns>
  204. public DataTable GetAllClass()
  205. {
  206. return AllClass;
  207. }
  208. /// <summary>
  209. /// 定义ParticleData类
  210. /// </summary>
  211. public void newParticleData(OTSReport_Export m_otsreport_export)
  212. {
  213. fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.getSelectedIndex()].FilePath);
  214. }
  215. public ParticleData getParticleData()
  216. {
  217. return fielddata;
  218. }
  219. public void SetAllElement()
  220. {
  221. AllElement = fielddata.GetAllElement();
  222. }
  223. /// <summary>
  224. /// 获取全部元素
  225. /// </summary>
  226. /// <returns></returns>
  227. public DataTable GetAllElement()
  228. {
  229. return AllElement;
  230. }
  231. /// <summary>
  232. /// 判断是否有大分类,有为true
  233. /// </summary>
  234. /// <param name="m_otsreport_export"></param>
  235. /// <returns></returns>
  236. public void IsThereAMajorClassification()
  237. {
  238. DataTable getClass_dt = fielddata.GetAllClass();
  239. List<string> ClassName = new List<string>();
  240. bool bl = false;
  241. for (int i = 0; i < getClass_dt.Rows.Count; i++)
  242. {
  243. if (getClass_dt.Rows[i]["GroupName"].ToString() != "NOT_INCLUTION" && getClass_dt.Rows[i]["GroupName"].ToString() != "Invalid"
  244. && getClass_dt.Rows[i]["GroupName"].ToString() != "Not Identified")
  245. if (getClass_dt.Rows[i]["GroupName"].ToString() == "")
  246. {
  247. if (!bl)
  248. {
  249. ClassName.Add("Default");
  250. bl = true;
  251. }
  252. }
  253. else
  254. {
  255. if (getClass_dt.Rows[i]["GroupName"].ToString() != "Default")
  256. {
  257. ClassName.Add(getClass_dt.Rows[i]["GroupName"].ToString());
  258. }
  259. }
  260. }
  261. if (ClassName.Count < 2)
  262. {
  263. IsShereAClassificationGroup= false;
  264. }
  265. else
  266. {
  267. IsShereAClassificationGroup= true;
  268. }
  269. }
  270. public bool GetIsThereAMajorClassification()
  271. {
  272. return IsShereAClassificationGroup;
  273. }
  274. #region 内部函数
  275. private string getWhere(string max, string min, string col, string partic)
  276. {
  277. return col + ">=" + min + " and " + col + "<" + max + " and TypeId=" + partic;
  278. }
  279. private DataTable InvalidRemoval(DataTable dt)
  280. {
  281. DataTable dataTable = dt.Copy();
  282. dataTable.Clear();
  283. for (int i = 0; i < dt.Rows.Count; i++)
  284. {
  285. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 10)
  286. {
  287. dataTable.Rows.Add(dt.Rows[i].ItemArray);
  288. }
  289. }
  290. return dataTable;
  291. }
  292. #endregion
  293. }
  294. }