frmMinWgtMeter.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Infragistics.Win.UltraWinGrid;
  10. using System.IO;
  11. using System.Data.OleDb; //连接Access数据库
  12. using ADOX;
  13. using System.Reflection;
  14. using System.Threading;
  15. using Infragistics.Win;
  16. namespace CreateAccess
  17. {
  18. public partial class frmMinWgtMeter : Form
  19. {
  20. ServiceReference1.WebServerClient webServer = new ServiceReference1.WebServerClient();
  21. public frmMinWgtMeter()
  22. {
  23. InitializeComponent();
  24. }
  25. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  26. {
  27. switch (e.Tool.Key)
  28. {
  29. case "btnQuery":
  30. {
  31. btnQuery();
  32. break;
  33. }
  34. case "btnImpl":
  35. {
  36. openFileDialog1.Filter = "Access数据库文件(mdb)|*.mdb";//只允许mdb文件
  37. openFileDialog1.Title = "选择要导入的Access数据文件"; //弹出框头部显示
  38. openFileDialog1.AddExtension = true; //自动增加后缀
  39. openFileDialog1.AutoUpgradeEnabled = true; //是否随系统自动升级弹出窗口样式
  40. openFileDialog1.InitialDirectory = Application.StartupPath;//默认打开当前目录
  41. if (openFileDialog1.ShowDialog() == DialogResult.OK)
  42. {
  43. btnImpl(openFileDialog1.FileName);
  44. };
  45. break;
  46. }
  47. default: break;
  48. }
  49. }
  50. private void btnImpl(string fileName)
  51. {
  52. string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Persist Security Info=False";
  53. DataSet ds = new DataSet();
  54. using (OleDbConnection conn = new OleDbConnection(strConnection))
  55. {
  56. conn.Open();
  57. string strSql = string.Format("select * from Data08_MCGS where MCGS_Time between #{0}# and #{1}#", dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
  58. OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
  59. da.Fill(ds, "生产数据");
  60. try
  61. {
  62. ServiceReference1.meterWorkStorageActual[] lm = new ServiceReference1.meterWorkStorageActual[ds.Tables[0].Rows.Count];
  63. string preNo = DateTime.Now.ToString("yyyyMMddHHmmssfff");
  64. int i = 0;
  65. foreach (DataRow dr in ds.Tables[0].Rows)
  66. {
  67. lm[i++] = new ServiceReference1.meterWorkStorageActual
  68. {
  69. predictionNo = preNo,
  70. batchNo = dr["Data47"].ToString().Trim(), //批号
  71. valueFlag = dr["Data51"]?.ToString().Trim() == "有效" ? "1" : "0",
  72. checkFlag = "0",
  73. createManNo = dr["Data06"].ToString().Trim(), //计量员编号
  74. createManName = dr["Data06"].ToString().Trim(), //计量员
  75. createTime = DateTime.Now,
  76. createTimeSpecified = true,
  77. //productNo = "",s
  78. productName = "小块镍", //品名
  79. //gradeNo = "",
  80. //gradeName = dr["牌号"].ToString().Trim(), //牌号
  81. //standardNo = "",
  82. standardName = dr["Data09"].ToString().Trim(), //标准 规格
  83. packageNo = dr["Data45"].ToString().Trim(), //包号、箱号
  84. //blockNum = dr["片数"].ToString().Trim() == "" ? short.Parse("0") : short.Parse(dr["片数"].ToString().Trim()),
  85. //blockNumSpecified = true,
  86. productDate = Convert.ToDateTime(dr["MCGS_Time"].ToString().Trim()), //生产日期
  87. productDateSpecified = true,
  88. grossWeight = Convert.ToDecimal(dr["Data35"].ToString().Trim()), //毛
  89. grossWeightSpecified = true,
  90. tareWeight = Convert.ToDecimal(dr["Data00"].ToString().Trim()), //皮
  91. tareWeightSpecified = true,
  92. netWeight = Convert.ToDecimal(dr["Data02"].ToString().Trim()), //净
  93. netWeightSpecified = true,
  94. baseSpotNo = "001034003",
  95. baseSpotName = "小块镍包装线",
  96. };
  97. }
  98. da.Dispose();
  99. ServiceReference1.resTfulResult res = webServer.doAccessCuImpl(lm);
  100. if (res.succeed)
  101. {
  102. MessageBox.Show("导入完成");
  103. btnQuery();
  104. }
  105. else
  106. {
  107. MessageBox.Show("部分数据导入失败");
  108. }
  109. }
  110. catch (Exception ex)
  111. {
  112. MessageBox.Show("导入失败:" + ex.Message);
  113. System.GC.Collect();
  114. }
  115. }
  116. }
  117. private void btnQuery()
  118. {
  119. try
  120. {
  121. if (DateTime.Compare(dtStartTime.Value, dtEndTime.Value) > 0)
  122. {
  123. MessageBox.Show("开始时间不能大于结束时间");
  124. return;
  125. }
  126. if ((dtEndTime.Value - dtStartTime.Value).Days > 7)
  127. {
  128. MessageBox.Show("时间跨度不能大于7天");
  129. return;
  130. }
  131. ServiceReference1.commonPage cp = new ServiceReference1.commonPage();
  132. cp.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  133. cp.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  134. cp.param = new ServiceReference1.meterWorkStorageActual { valueFlag = "1", baseSpotNo = "001034003" };
  135. ServiceReference1.meterWorkStorageActual[] ls = webServer.doQueryTimeWf(cp);
  136. DataTable dt = this.dataTable1.Clone();
  137. if (ls != null && ls.Length > 0)
  138. {
  139. dt = ListToDataTable<ServiceReference1.meterWorkStorageActual>(ls);
  140. }
  141. CopyDataToDatatable(ref dt, ref this.dataTable1, true);
  142. RefreshAndAutoSize(ultraGridSj);
  143. }
  144. catch (Exception ex)
  145. {
  146. MessageBox.Show("查询异常:" + ex.Message);
  147. }
  148. }
  149. private void frmMinWgtMeter_Load(object sender, EventArgs e)
  150. {
  151. dtStartTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"));
  152. dtEndTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"));
  153. SetUltraGridRowFilter(ref ultraGridSj, true);
  154. }
  155. #region 控件数据设置
  156. public void RefreshAndAutoSize(UltraGrid ultraGrid)
  157. {
  158. try
  159. {
  160. ultraGrid.BeginUpdate();
  161. foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands)
  162. {
  163. foreach (UltraGridColumn column in band.Columns)
  164. {
  165. column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, band.ColHeadersVisible ? true : false);
  166. }
  167. }
  168. }
  169. catch { }
  170. ultraGrid.EndUpdate();
  171. }
  172. public void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists)
  173. {
  174. if (src == null)
  175. {
  176. dest = null;
  177. return;
  178. }
  179. if (dest == null)
  180. {
  181. dest = new DataTable();
  182. }
  183. if (ClearExists)
  184. {
  185. if (dest != null) dest.Rows.Clear();
  186. }
  187. DataRow CurRow, NewRow;
  188. if (src.Rows.Count > 0)
  189. for (int i = 0; i < src.Rows.Count; i++)
  190. {
  191. CurRow = src.Rows[i];
  192. NewRow = dest.NewRow();
  193. for (int j = 0; j < src.Columns.Count; j++)
  194. {
  195. try
  196. {
  197. if (dest.Columns.Contains(src.Columns[j].ColumnName))
  198. {
  199. NewRow[src.Columns[j].ColumnName] = CurRow[j];
  200. }
  201. }
  202. catch { }
  203. }
  204. dest.Rows.Add(NewRow);
  205. }
  206. dest.AcceptChanges();
  207. }
  208. public void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter)
  209. {
  210. try
  211. {
  212. if (bAllowFilter)
  213. {
  214. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow)
  215. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow;
  216. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  217. {
  218. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  219. {
  220. try
  221. {
  222. if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
  223. {
  224. //string sKey = myGrid1.DisplayLayout.Bands[i].Columns[j].Key; //UNCK UNCH
  225. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
  226. }
  227. }
  228. catch { }
  229. }
  230. }
  231. }
  232. else
  233. {
  234. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons)
  235. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
  236. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  237. {
  238. try
  239. {
  240. myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters();
  241. }
  242. catch { }
  243. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  244. {
  245. try
  246. {
  247. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  248. }
  249. catch { }
  250. }
  251. }
  252. }
  253. }
  254. catch { }
  255. }
  256. public DataTable ListToDataTable<T>(T[] items)
  257. {
  258. DataTable dataTable = new DataTable();
  259. PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
  260. foreach (PropertyInfo prop in Props)
  261. {
  262. dataTable.Columns.Add(prop.Name);
  263. }
  264. foreach (T obj in items)
  265. {
  266. var values = new object[Props.Length];
  267. for (int i = 0; i < Props.Length; i++)
  268. {
  269. values[i] = Props[i].GetValue(obj, null);
  270. }
  271. dataTable.Rows.Add(values);
  272. }
  273. return dataTable;
  274. }
  275. #endregion
  276. }
  277. }