ParticleAnalysis.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. 
  2. using OTSCommon.DBOperate;
  3. using OTSIncAReportApp.DataOperation.DataAccess;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using static OTSDataType.otsdataconst;
  11. using static OTSIncAReportApp.OTSReport_Export;
  12. namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
  13. {
  14. /// <summary>
  15. /// 颗粒分析
  16. /// </summary>
  17. class ParticleAnalysis
  18. {
  19. /// <summary>
  20. /// 大分类
  21. /// </summary>
  22. /// <returns></returns>
  23. public DataTable GetLargeClassification(OTSReport_Export m_otsreport_export,BasicData basicData)
  24. {
  25. List<DataTable> DBData = basicData.GetDBData();
  26. DataTable Out_data = new DataTable();
  27. Out_data.Columns.Add("Name");
  28. Out_data.Columns.Add("total");
  29. Out_data.Columns.Add("TypeId");
  30. Out_data.Columns.Add("Class");
  31. int it = 1;
  32. for (int i = 7; i < DBData[0].Columns.Count; i++)
  33. {
  34. Out_data.Columns.Add("c" + it);
  35. it++;
  36. }
  37. List<string> ClassName = ObtainParticleCategory(m_otsreport_export, basicData);
  38. for (int i = 0; i < DBData.Count; i++)
  39. {
  40. if (DBData[i].Rows.Count == 0)
  41. {
  42. continue;
  43. }
  44. DataRow row1 = Out_data.NewRow();
  45. row1["Class"] = ClassName[i];
  46. List<double> ints = new List<double>();
  47. for (int a = 7; a < DBData[i].Columns.Count; a++)
  48. {
  49. double ias = CalculationTableColumn(DBData[i], DBData[i].Columns[a].ColumnName);
  50. ints.Add(ias);
  51. }
  52. int zur = 0;
  53. for (int a = 0; a < ints.Count; a++)
  54. {
  55. zur = zur + Convert.ToInt32(ints[a]);
  56. }
  57. row1["total"] = zur;
  58. Out_data.Rows.Add(row1);
  59. }
  60. return Out_data;
  61. }
  62. /// <summary>
  63. /// 小分类
  64. /// </summary>
  65. /// <returns></returns>
  66. public DataTable GetSubClassification(BasicData basicData)
  67. {
  68. List<DataTable> DBData = basicData.GetDBData();
  69. DataTable Out_data = new DataTable();
  70. Out_data.Columns.Add("Name");
  71. Out_data.Columns.Add("total");
  72. Out_data.Columns.Add("TypeId");
  73. Out_data.Columns.Add("Class");
  74. int it = 1;
  75. for (int i = 7; i < DBData[0].Columns.Count; i++)
  76. {
  77. Out_data.Columns.Add("c" + it);
  78. it++;
  79. }
  80. for (int i = 0; i < DBData.Count; i++)
  81. {
  82. if (DBData[i].Rows.Count == 0)
  83. {
  84. continue;
  85. }
  86. for (int a = 0; a < DBData[i].Rows.Count; a++)
  87. {
  88. DataRow row1 = Out_data.NewRow();
  89. row1["Name"] = DBData[i].Rows[a]["TypeName"];
  90. row1["total"] = DBData[i].Rows[a]["con"];
  91. row1["TypeId"] = DBData[i].Rows[a]["TypeId"];
  92. row1["Class"] = "";
  93. int ii = 4;
  94. for (int j = 7; j < DBData[i].Columns.Count; j++)
  95. {
  96. row1[ii] = DBData[i].Rows[a][j];
  97. ii++;
  98. }
  99. Out_data.Rows.Add(row1);
  100. }
  101. }
  102. return Out_data;
  103. }
  104. /// <summary>
  105. /// 分类整合大小分类都有
  106. /// </summary>
  107. /// <returns></returns>
  108. public List<DataTable> GetClassificationConsolidationTable(OTSReport_Export m_otsreport_export, BasicData basicData ,out DataTable dataTable)
  109. {
  110. List<DataTable> datas = new List<DataTable>();
  111. List<DataTable> DBData = basicData.GetDBData();
  112. DataTable DtName = new DataTable();
  113. DataTable table = new DataTable();
  114. table.Columns.Add("Name");
  115. table.Columns.Add("total");
  116. table.Columns.Add("TypeId");
  117. table.Columns.Add("Class");
  118. int it = 1;
  119. List<string> strings = new List<string>();
  120. for (int i = 7; i < DBData[0].Columns.Count; i++)
  121. {
  122. table.Columns.Add("c" + it);
  123. DtName.Columns.Add("c" + it);
  124. strings.Add(DBData[0].Columns[i].ColumnName);
  125. it++;
  126. }
  127. DataRow dataRow = DtName.NewRow();
  128. for (int i = 0; i < strings.Count; i++)
  129. {
  130. dataRow[i] = strings[i];
  131. }
  132. DtName.Rows.Add(dataRow);
  133. datas.Add(DtName);
  134. //数据
  135. List<string> ClassName = ObtainParticleCategory(m_otsreport_export, basicData);
  136. DataTable Dt = table.Clone();
  137. DataTable statisticalQuantity = Dt.Clone();
  138. for (int i = 0; i < DBData.Count; i++)
  139. {
  140. if (DBData[i].Rows.Count == 0)
  141. {
  142. continue;
  143. }
  144. DataRow row = Dt.NewRow();
  145. row["Name"] = "";
  146. row["total"] = CalculationTableColumn(DBData[i], "con");
  147. row["TypeId"] = "";
  148. row["Class"] = ClassName[i];
  149. int ie = 0;
  150. for (int a = 4; a < Dt.Columns.Count; a++)
  151. {
  152. row[a] = CalculationTableColumn(DBData[i], DtName.Rows[0][ie].ToString());
  153. ie++;
  154. }
  155. Dt.Rows.Add(row);
  156. for (int a = 0; a < DBData[i].Rows.Count; a++)
  157. {
  158. DataRow dataRow1 = statisticalQuantity.NewRow();
  159. dataRow1["Name"] = DBData[i].Rows[a]["TypeName"];
  160. dataRow1["total"] = DBData[i].Rows[a]["con"];
  161. dataRow1["TypeId"] = DBData[i].Rows[a]["TypeId"];
  162. //dataRow1["Class"] = DBData[i].Rows[a]["Class"];
  163. dataRow1["Class"] = "";
  164. DataRow row1= Dt.NewRow();
  165. row1["Name"] = DBData[i].Rows[a]["TypeName"];
  166. row1["total"] = DBData[i].Rows[a]["con"];
  167. row1["TypeId"] = DBData[i].Rows[a]["TypeId"];
  168. //row1["Class"] = DBData[i].Rows[a]["Class"];
  169. row1["Class"] = "";
  170. int ii = 4;
  171. for (int j = 7; j < DBData[i].Columns.Count; j++)
  172. {
  173. row1[ii]= DBData[i].Rows[a][j];
  174. dataRow1[ii] = DBData[i].Rows[a][j];
  175. ii++;
  176. }
  177. Dt.Rows.Add(row1);
  178. statisticalQuantity.Rows.Add(dataRow1);
  179. }
  180. }
  181. datas.Add(Dt);
  182. DataTable OutStatisticalQuantity = statisticalQuantity.Clone();
  183. DataRow row2 = OutStatisticalQuantity.NewRow();
  184. for (int i = 4; i < statisticalQuantity.Columns.Count; i++)
  185. {
  186. row2[i]= CalculationTableColumn(statisticalQuantity, statisticalQuantity.Columns[i].ColumnName);
  187. }
  188. OutStatisticalQuantity.Rows.Add(row2);
  189. dataTable = OutStatisticalQuantity.Copy();
  190. return datas;
  191. }
  192. /// <summary>
  193. /// 获得颗粒类别
  194. /// </summary>
  195. /// <returns></returns>
  196. private List<string> ObtainParticleCategory(OTSReport_Export m_otsreport_export, BasicData basicData)
  197. {
  198. List<string> ClassName = new List<string>();
  199. if (m_otsreport_export.m_ReportApp.m_RptConfigFile.Systype != OTS_SysType_ID.IncA)
  200. {
  201. DataTable get_dt = ReadClassification(basicData);
  202. DataTable getClass_dt = get_dt.Clone();
  203. DataRow[] dataRow = get_dt.Select("", "iorder ASC");
  204. foreach (DataRow row in dataRow)
  205. {
  206. if (row.ItemArray[1].ToString() != "Default")
  207. {
  208. getClass_dt.ImportRow(row);
  209. }
  210. }
  211. for (int i = 0; i < getClass_dt.Rows.Count; i++)
  212. {
  213. ClassName.Add(getClass_dt.Rows[i][1].ToString());
  214. }
  215. ClassName.Add("Default");
  216. }
  217. else
  218. {
  219. ClassName = basicData.GetGroupInformation();
  220. }
  221. return ClassName;
  222. }
  223. private DataTable ReadClassification(BasicData basicData )
  224. {
  225. DataTable dt_stl = new DataTable();
  226. SqLiteHelper sh = new SqLiteHelper("data source='" + basicData.GetFilePath()+ "\\"+basicData.GetResfile() + "'");
  227. dt_stl = sh.ExecuteQuery("select * from STDGroups");
  228. return dt_stl;
  229. }
  230. public DataTable TypeRange(c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export)
  231. {
  232. List<string> colid = new List<string>();
  233. //获取粒级表
  234. string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder +
  235. m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile;
  236. DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1);
  237. string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
  238. for (int i = 0; i < sizestr.Split(',').Length; i++)
  239. {
  240. if (sizestr.Split(',')[i].Length > 0)
  241. {
  242. double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
  243. colid.Add("≥" + d1.ToString());
  244. }
  245. }
  246. DataTable ls_partsize_dt = new DataTable();
  247. ls_partsize_dt.TableName = "PartSize";
  248. for (int i=0;i< colid.Count;i++)
  249. {
  250. ls_partsize_dt.Columns.Add("c"+(i+1).ToString());
  251. }
  252. DataRow dr = ls_partsize_dt.NewRow();
  253. for (int i = 0; i < colid.Count; i++)
  254. {
  255. dr["c" + (i+1).ToString()] = colid[i];
  256. }
  257. ls_partsize_dt.Rows.Add(dr);
  258. return ls_partsize_dt;
  259. }
  260. private double CalculationTableColumn(DataTable a_data, string a_str)
  261. {
  262. double dl = 0;
  263. if (a_data.Columns.Contains(a_str))
  264. {
  265. for (int i = 0; i < a_data.Rows.Count; i++)
  266. {
  267. if (a_data.Rows[i][a_str].ToString() != "")
  268. {
  269. dl = dl + Convert.ToDouble(a_data.Rows[i][a_str]);
  270. }
  271. }
  272. }
  273. return dl;
  274. }
  275. }
  276. }