ParticleAnalysis.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  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. int in_ct = 0;
  151. for (int a = 4; a < Dt.Columns.Count; a++)
  152. {
  153. row[a] = CalculationTableColumn(DBData[i], DtName.Rows[0][ie].ToString());
  154. in_ct = in_ct + Convert.ToInt32(CalculationTableColumn(DBData[i], DtName.Rows[0][ie].ToString()));
  155. ie++;
  156. }
  157. row["total"] = in_ct;
  158. Dt.Rows.Add(row);
  159. for (int a = 0; a < DBData[i].Rows.Count; a++)
  160. {
  161. DataRow dataRow1 = statisticalQuantity.NewRow();
  162. dataRow1["Name"] = DBData[i].Rows[a]["TypeName"];
  163. dataRow1["total"] = DBData[i].Rows[a]["con"];
  164. dataRow1["TypeId"] = DBData[i].Rows[a]["TypeId"];
  165. //dataRow1["Class"] = DBData[i].Rows[a]["Class"];
  166. dataRow1["Class"] = "";
  167. DataRow row1= Dt.NewRow();
  168. row1["Name"] = DBData[i].Rows[a]["TypeName"];
  169. //row1["total"] = DBData[i].Rows[a]["con"];
  170. row1["TypeId"] = DBData[i].Rows[a]["TypeId"];
  171. //row1["Class"] = DBData[i].Rows[a]["Class"];
  172. row1["Class"] = "";
  173. int ii = 4;
  174. int in_count = 0;
  175. for (int j = 7; j < DBData[i].Columns.Count; j++)
  176. {
  177. row1[ii]= DBData[i].Rows[a][j];
  178. dataRow1[ii] = DBData[i].Rows[a][j];
  179. in_count = in_count + Convert.ToInt32(DBData[i].Rows[a][j]);
  180. ii++;
  181. }
  182. row1["total"] = in_count;
  183. Dt.Rows.Add(row1);
  184. statisticalQuantity.Rows.Add(dataRow1);
  185. }
  186. }
  187. datas.Add(Dt);
  188. DataTable OutStatisticalQuantity = statisticalQuantity.Clone();
  189. DataRow row2 = OutStatisticalQuantity.NewRow();
  190. for (int i = 4; i < statisticalQuantity.Columns.Count; i++)
  191. {
  192. row2[i]= CalculationTableColumn(statisticalQuantity, statisticalQuantity.Columns[i].ColumnName);
  193. }
  194. OutStatisticalQuantity.Rows.Add(row2);
  195. dataTable = OutStatisticalQuantity.Copy();
  196. return datas;
  197. }
  198. /// <summary>
  199. /// 获得颗粒类别
  200. /// </summary>
  201. /// <returns></returns>
  202. private List<string> ObtainParticleCategory(OTSReport_Export m_otsreport_export, BasicData basicData)
  203. {
  204. List<string> ClassName = new List<string>();
  205. if (m_otsreport_export.m_ReportApp.m_RptConfigFile.Systype != OTS_SysType_ID.IncA)
  206. {
  207. DataTable get_dt = ReadClassification(basicData);
  208. DataTable getClass_dt = get_dt.Clone();
  209. DataRow[] dataRow = get_dt.Select("", "iorder ASC");
  210. foreach (DataRow row in dataRow)
  211. {
  212. if (row.ItemArray[1].ToString() != "Default")
  213. {
  214. getClass_dt.ImportRow(row);
  215. }
  216. }
  217. for (int i = 0; i < getClass_dt.Rows.Count; i++)
  218. {
  219. ClassName.Add(getClass_dt.Rows[i][1].ToString());
  220. }
  221. ClassName.Add("Default");
  222. }
  223. else
  224. {
  225. ClassName = basicData.GetGroupInformation();
  226. }
  227. return ClassName;
  228. }
  229. private DataTable ReadClassification(BasicData basicData )
  230. {
  231. DataTable dt_stl = new DataTable();
  232. SqLiteHelper sh = new SqLiteHelper("data source='" + basicData.GetFilePath()+ "\\"+basicData.GetResfile() + "'");
  233. dt_stl = sh.ExecuteQuery("select * from STDGroups");
  234. return dt_stl;
  235. }
  236. public DataTable TypeRange(c_TemplateClass m_mbszclass, OTSReport_Export m_otsreport_export)
  237. {
  238. List<string> colid = new List<string>();
  239. //获取粒级表
  240. string path1 = m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder +
  241. m_otsreport_export.m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile;
  242. DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXml(path1);
  243. string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
  244. for (int i = 0; i < sizestr.Split(',').Length; i++)
  245. {
  246. if (sizestr.Split(',')[i].Length > 0)
  247. {
  248. double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
  249. colid.Add("≥" + d1.ToString());
  250. }
  251. }
  252. DataTable ls_partsize_dt = new DataTable();
  253. ls_partsize_dt.TableName = "PartSize";
  254. for (int i=0;i< colid.Count;i++)
  255. {
  256. ls_partsize_dt.Columns.Add("c"+(i+1).ToString());
  257. }
  258. DataRow dr = ls_partsize_dt.NewRow();
  259. for (int i = 0; i < colid.Count; i++)
  260. {
  261. dr["c" + (i+1).ToString()] = colid[i];
  262. }
  263. ls_partsize_dt.Rows.Add(dr);
  264. return ls_partsize_dt;
  265. }
  266. private double CalculationTableColumn(DataTable a_data, string a_str)
  267. {
  268. double dl = 0;
  269. if (a_data.Columns.Contains(a_str))
  270. {
  271. for (int i = 0; i < a_data.Rows.Count; i++)
  272. {
  273. if (a_data.Rows[i][a_str].ToString() != "")
  274. {
  275. dl = dl + Convert.ToDouble(a_data.Rows[i][a_str]);
  276. }
  277. }
  278. }
  279. return dl;
  280. }
  281. }
  282. }