锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

691 lines
31 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Linq;
  6. using System.Linq;
  7. using System.Drawing;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraGrid.Views.BandedGrid;
  12. using DevExpress.XtraGrid.Columns;
  13. using DevExpress.XtraGrid;
  14. using System.IO;
  15. using System.Threading;
  16. using ICSSoft.Base.Language.Tool;
  17. using ICSSoft.Base.Config.AppConfig;
  18. using ICSSoft.Base.UserControl.MessageControl;
  19. using ICSSoft.Base.Config.DBHelper;
  20. using ICSSoft.Base.Report.Filter;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.GridReport;
  23. using ICSSoft.Base.ReferForm.AppReferForm;
  24. using ICSSoft.Frame.Data.BLL;
  25. using ICSSoft.Base.Lable.PrintTool;
  26. using DevExpress.XtraPrinting;
  27. using ICSSoft.Frame.Common;
  28. namespace ICSSoft.Frame.APP
  29. {
  30. public partial class FormICSGauge : DevExpress.XtraEditors.XtraForm
  31. {
  32. private string sqltxt = "";
  33. private string sqlconn = "";
  34. String guid = AppConfig.GetGuid();
  35. private DataTable dataSource = null;
  36. private DataTable dataSourceAll = null;
  37. private DataTable dataGauge = null;
  38. private string MoId = "";
  39. private string MoCode = "";
  40. private decimal Qty = 0.00m;
  41. #region 构造函数
  42. public FormICSGauge()
  43. {
  44. InitializeComponent();
  45. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  46. this.WindowState = FormWindowState.Maximized;
  47. }
  48. public FormICSGauge(string moID, string moCode, decimal qty)
  49. {
  50. InitializeComponent();
  51. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  52. this.WindowState = FormWindowState.Maximized;
  53. MoId = moID;
  54. MoCode = moCode;
  55. Qty = qty;
  56. }
  57. #endregion
  58. #region 操作权限
  59. public DataTable RightOfExute()
  60. {
  61. DataTable rData = new DataTable();
  62. rData.Columns.Add("BtnName");
  63. rData.Columns.Add("ActionName");
  64. //查看权限(必须有)
  65. DataRow seeRow = rData.NewRow();
  66. seeRow["BtnName"] = "see";
  67. seeRow["ActionName"] = "查看";
  68. rData.Rows.Add(seeRow);
  69. List<Control> ControlList = new List<Control>();
  70. ControlList.Add(btnPrint);
  71. ControlList.Add(btnOutPut);
  72. foreach (Control ctr in ControlList)
  73. {
  74. if (ctr.GetType() == typeof(SimpleButton))
  75. {
  76. DataRow dr = rData.NewRow();
  77. dr["BtnName"] = ctr.Name;
  78. dr["ActionName"] = ctr.Text;
  79. rData.Rows.Add(dr);
  80. }
  81. }
  82. rData.AcceptChanges();
  83. return rData;
  84. }
  85. public DataTable RightOfData()// 数据权限
  86. {
  87. DataTable rData = new DataTable();
  88. rData.Columns.Add("BodyName");
  89. rData.Columns.Add("ControlName");
  90. rData.Columns.Add("ControlCaption");
  91. rData.AcceptChanges();
  92. return rData;
  93. }
  94. #endregion
  95. #region 退出
  96. private void btnClose_Click(object sender, EventArgs e)
  97. {
  98. AppConfig.CloseFormShow(this.Text);
  99. this.Close();
  100. }
  101. private void btnExit_Click(object sender, EventArgs e)
  102. {
  103. AppConfig.CloseFormShow(this.Text);
  104. this.Close();
  105. }
  106. #endregion
  107. #region 移动窗体
  108. private const int WM_NCHITTEST = 0x84;
  109. private const int HTCLIENT = 0x1;
  110. private const int HTCAPTION = 0x2;
  111. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  112. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  113. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  114. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  115. //重写窗体,使窗体可以不通过自带标题栏实现移动
  116. protected override void WndProc(ref Message m)
  117. {
  118. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  119. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  120. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  121. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  122. switch (m.Msg)
  123. {
  124. case WM_NCHITTEST:
  125. base.WndProc(ref m);
  126. if ((int)m.Result == HTCLIENT)
  127. m.Result = (IntPtr)HTCAPTION;
  128. return;
  129. }
  130. //拦截双击标题栏、移动窗体的系统消息
  131. if (m.Msg != 0xA3)
  132. {
  133. base.WndProc(ref m);
  134. }
  135. }
  136. #endregion
  137. #region 列表
  138. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  139. {
  140. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  141. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  142. }
  143. #endregion
  144. private void btnFilter_Click(object sender, EventArgs e)
  145. {
  146. }
  147. //加载
  148. private void FormICSGauge_Load(object sender, EventArgs e)
  149. {
  150. init();
  151. }
  152. public bool Search(string TransferNO)
  153. {
  154. bool Search = false;
  155. string sql = @"SELECT DISTINCT TransferNO AS [生产订单号] FROM ICSTransferNO WHERE 1=1 AND TransferNO = '{0}' ORDER BY TransferNO DESC ";
  156. sql = string.Format(sql, TransferNO);
  157. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  158. if (dt.Rows.Count > 0)
  159. {
  160. Search = true;
  161. }
  162. return Search;
  163. }
  164. #region 初始化查询条件
  165. private void init()
  166. {
  167. #region 生产订单号
  168. string sql = @"SELECT DISTINCT [单据号] FROM (SELECT DISTINCT A.TransferNO AS [单据号], A.MTIME FROM ICSPACKINGINPUT A
  169. WHERE 1=1 AND A.TransferNO IS NOT NULL AND A.Status = ''
  170. UNION
  171. SELECT DISTINCT B.TransferNO AS [], B.MTIME FROM ICSTransferNO B WHERE 1=1 AND B.TransferNO IS NOT NULL AND B.Status = '' ) A
  172. ORDER BY [] DESC";
  173. sql = string.Format(sql, AppConfig.WorkPointCode);
  174. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  175. txtMOCode.Properties.ValueMember = "单据号";
  176. txtMOCode.Properties.DisplayMember = "单据号";
  177. txtMOCode.Properties.DataSource = dt;
  178. txtMOCode.Properties.NullText = "";//空时的值
  179. txtMOCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  180. txtMOCode.Properties.ValidateOnEnterKey = true;//回车确认
  181. txtMOCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  182. txtMOCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  183. //自适应宽度
  184. txtMOCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  185. #endregion
  186. DataTable dtWH = new DataTable();
  187. dtWH.Columns.Add("仓库");
  188. txtWHCode.Properties.ValueMember = "仓库";
  189. txtWHCode.Properties.DisplayMember = "仓库";
  190. txtWHCode.Properties.DataSource = dtWH;
  191. txtWHCode.Properties.NullText = "";//空时的值
  192. txtWHCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  193. txtWHCode.Properties.ValidateOnEnterKey = true;//回车确认
  194. txtWHCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  195. txtWHCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  196. //自适应宽度
  197. txtWHCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  198. DataTable dtBin = new DataTable();
  199. dtBin.Columns.Add("库位");
  200. txtBinCode.Properties.ValueMember = "库位";
  201. txtBinCode.Properties.DisplayMember = "库位";
  202. txtBinCode.Properties.DataSource = dtBin;
  203. txtBinCode.Properties.NullText = "";//空时的值
  204. txtBinCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  205. txtBinCode.Properties.ValidateOnEnterKey = true;//回车确认
  206. txtBinCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  207. txtBinCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  208. //自适应宽度
  209. txtBinCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  210. }
  211. #endregion
  212. private void loadData()
  213. {
  214. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  215. try
  216. {
  217. _wait.Show();
  218. dataSourceAll = null;
  219. dataSource = null;
  220. dataGauge = null;
  221. txtWHCode.EditValue = "";
  222. txtBinCode.EditValue = "";
  223. if (string.IsNullOrWhiteSpace(txtMOCode.Text.Trim()))
  224. {
  225. _wait.Close();
  226. ICSBaseSimpleCode.AppshowMessageBox("请输入单据号!");
  227. return;
  228. }
  229. string Where = txtMOCode.Text.Trim();
  230. #region 查询
  231. if (this.Search(txtMOCode.Text.Trim()))
  232. {
  233. string sql = @"SELECT a.INVCode as MOBITEMCODE, a.INVName as CINVNAME, b.INVSTD AS CINVTYPE, b.INVUOM as INVUOM,
  234. a.QTY as MOBITEMQTY, f.BinCode, f.LotNO, f.LotQty FROM ICSTransferNO a
  235. LEFT JOIN ICSINVENTORY b ON a.INVCode = b.INVCode
  236. LEFT JOIN ICSWareHouseLotInfo f ON b.INVCODE = f.INVCode and b.WorkPoint = f.WorkPoint
  237. WHERE 1=1 AND a.TransferNO = '{0}'";
  238. sql = string.Format(sql, txtMOCode.Text.Trim());
  239. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  240. gridControlGroup.DataSource = dt;
  241. }
  242. else
  243. {
  244. if (!string.IsNullOrWhiteSpace(cmbSEQ.Text.Trim()))
  245. {
  246. Where += "' AND e.MOSEQ='" + cmbSEQ.Text.Trim() + " ";
  247. }
  248. DataSet ds1 = ICSGaugeBLL.select_(Where, txtMOCode.Text.Trim(), AppConfig.AppConnectString);
  249. if (ds1 != null && ds1.Tables.Count == 2)
  250. {
  251. dataSourceAll = ds1.Tables[0];
  252. GetDataDetail();
  253. gridControlGroup.DataSource = ds1.Tables[1];
  254. gridViewGroup.BestFitColumns();
  255. }
  256. #endregion
  257. #region 生产拣料表
  258. if (!string.IsNullOrWhiteSpace(cmbSEQ.Text.Trim()))
  259. {
  260. Where += "' AND e.MOSEQ='" + cmbSEQ.Text.Trim() + " ";
  261. }
  262. DataSet ds = ICSGaugeBLL.GetGauge_(Where, AppConfig.AppConnectString);
  263. if (ds != null && ds.Tables.Count == 1)
  264. {
  265. DataTable dt = ds.Tables[0];
  266. string ItemCode = "";
  267. decimal QTY = 0;
  268. bool CanDelete = false;
  269. int count = dt.Rows.Count;
  270. for (int i = 0; i < count; i++)
  271. {
  272. DataRow dr = dt.Rows[i];
  273. if (!ItemCode.Equals(dr["MOBITEMCODE"].ToString()))
  274. {
  275. ItemCode = dr["MOBITEMCODE"].ToString();
  276. QTY = Convert.ToDecimal(dr["QTYXBC"]);
  277. CanDelete = false;
  278. }
  279. if (CanDelete)
  280. {
  281. dr.Delete();
  282. continue;
  283. }
  284. QTY += Convert.ToDecimal(dr["QTY"]);
  285. if (QTY >= Convert.ToDecimal(dr["MOBITEMQTY"]))
  286. {
  287. CanDelete = true;
  288. }
  289. }
  290. dt.AcceptChanges();
  291. dataGauge = dt;
  292. gridControlGauge.DataSource = dataGauge;
  293. gridViewGauge.BestFitColumns();
  294. //#region 仓库
  295. //DataTable dtWH = new DataTable();
  296. //dtWH.Columns.Add("仓库");
  297. //DataRow newdrWH = dtWH.NewRow();
  298. //newdrWH["仓库"] = "";
  299. //dtWH.Rows.Add(newdrWH);
  300. //foreach (DataRow dr in dataGauge.Rows)
  301. //{
  302. // if (!string.IsNullOrWhiteSpace(dr["WHCode"].ToString()))
  303. // {
  304. // bool nothas = true;
  305. // foreach (DataRow drs in dtWH.Rows)
  306. // {
  307. // if (drs["仓库"].ToString().Equals(dr["WHCode"].ToString()))
  308. // {
  309. // nothas = false;
  310. // break;
  311. // }
  312. // }
  313. // if (nothas)
  314. // {
  315. // DataRow newdr = dtWH.NewRow();
  316. // newdr["仓库"] = dr["WHCode"].ToString();
  317. // dtWH.Rows.Add(newdr);
  318. // }
  319. // }
  320. //}
  321. //txtWHCode.Properties.ValueMember = "仓库";
  322. //txtWHCode.Properties.DisplayMember = "仓库";
  323. //txtWHCode.Properties.DataSource = dtWH;
  324. //txtWHCode.Properties.NullText = "";//空时的值
  325. //txtWHCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  326. //txtWHCode.Properties.ValidateOnEnterKey = true;//回车确认
  327. //txtWHCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  328. //txtWHCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  329. // //自适应宽度
  330. //txtWHCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  331. //#endregion
  332. //#region 库位
  333. //DataTable dtBin = new DataTable();
  334. //dtBin.Columns.Add("库位");
  335. //DataRow newdrBin = dtBin.NewRow();
  336. //newdrBin["库位"] = "";
  337. //dtBin.Rows.Add(newdrBin);
  338. //foreach (DataRow dr in dataGauge.Rows)
  339. //{
  340. // if (!string.IsNullOrWhiteSpace(dr["BinCode"].ToString()))
  341. // {
  342. // bool nothas = true;
  343. // foreach (DataRow drs in dtBin.Rows)
  344. // {
  345. // if (drs["库位"].ToString().Equals(dr["BinCode"].ToString()))
  346. // {
  347. // nothas = false;
  348. // break;
  349. // }
  350. // }
  351. // if (nothas)
  352. // {
  353. // DataRow newdr = dtBin.NewRow();
  354. // newdr["库位"] = dr["BinCode"].ToString();
  355. // dtBin.Rows.Add(newdr);
  356. // }
  357. // }
  358. //}
  359. //txtBinCode.Properties.ValueMember = "库位";
  360. //txtBinCode.Properties.DisplayMember = "库位";
  361. //txtBinCode.Properties.DataSource = dtBin;
  362. //txtBinCode.Properties.NullText = "";//空时的值
  363. //txtBinCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  364. //txtBinCode.Properties.ValidateOnEnterKey = true;//回车确认
  365. //txtBinCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  366. //txtBinCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  367. // //自适应宽度
  368. //txtBinCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  369. //#endregion
  370. }
  371. }
  372. #endregion
  373. _wait.Close();
  374. }
  375. catch (Exception ex)
  376. {
  377. _wait.Close();
  378. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  379. }
  380. }
  381. private void GetDataDetail()
  382. {
  383. string ItemCode = "";
  384. decimal qtyPlan = 0;
  385. #region 处理DataTalbe ITEMCODE
  386. for (int i = 0; i < dataSourceAll.Rows.Count; i++)
  387. {
  388. if (!ItemCode.Equals(dataSourceAll.Rows[i]["MOBITEMCODE"].ToString()))
  389. {
  390. if (i > 0 && qtyPlan > 0)
  391. dataSourceAll.Rows[i - 1]["QTYS"] = Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTYS"].ToString()) - qtyPlan;
  392. ItemCode = dataSourceAll.Rows[i]["MOBITEMCODE"].ToString();
  393. qtyPlan = 0;
  394. }
  395. else if ( i > 0 && Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTYS"].ToString()) > 0)
  396. {
  397. if (Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTYS"]) > Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTY"]))
  398. dataSourceAll.Rows[i - 1]["QTYS"] = Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTY"].ToString());
  399. qtyPlan += Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTY"].ToString());
  400. }
  401. if (i == dataSourceAll.Rows.Count - 1 && qtyPlan > 0)
  402. dataSourceAll.Rows[i]["QTYS"] = Convert.ToDecimal(dataSourceAll.Rows[i]["QTYS"].ToString()) - qtyPlan;
  403. if (i > 0)
  404. {
  405. dataSourceAll.Rows[i - 1]["QTYS"] = Convert.ToDecimal(dataSourceAll.Rows[i - 1]["QTYS"]) < 0 ? 0 : dataSourceAll.Rows[i - 1]["QTYS"];
  406. if (i == dataSourceAll.Rows.Count - 1)
  407. {
  408. dataSourceAll.Rows[i]["QTYS"] = Convert.ToDecimal(dataSourceAll.Rows[i]["QTYS"]) < 0 ? 0 : dataSourceAll.Rows[i]["QTYS"];
  409. }
  410. }
  411. }
  412. #endregion
  413. #region DataTalbe排序 SEQ
  414. DataView dv1 = dataSourceAll.DefaultView;
  415. dv1.Sort = "MOSEQ,MOBITEMCODE";
  416. dataSourceAll = dv1.ToTable().Copy();
  417. #endregion
  418. #region 处理dataSource
  419. dataSource = dataSourceAll.Copy();
  420. int count = dataSource.Rows.Count;
  421. for (int i = count-1; i >=0 ; i--)
  422. {
  423. if (Convert.ToDecimal(dataSource.Rows[i]["QTYS"].ToString()) >= Convert.ToDecimal(dataSource.Rows[i]["QTY"].ToString()))
  424. {
  425. dataSource.Rows[i].Delete();
  426. }
  427. }
  428. dataSource.AcceptChanges();
  429. #endregion
  430. if (!string.IsNullOrWhiteSpace(cmbSEQ.Text.Trim()))
  431. {
  432. DataView dvAll = dataSourceAll.DefaultView;
  433. dvAll.RowFilter="MOSEQ='" + cmbSEQ.Text.Trim() + "'";
  434. dataSourceAll = dvAll.ToTable();
  435. DataView dv = dataSource.DefaultView;
  436. dv.RowFilter = "MOSEQ='" + cmbSEQ.Text.Trim() + "'";
  437. dataSource = dv.ToTable();
  438. }
  439. if (chkAll.Checked)
  440. grdDetail.DataSource = dataSourceAll;
  441. else
  442. grdDetail.DataSource = dataSource;
  443. grvDetail.BestFitColumns();
  444. }
  445. private void txtMOCode_EditValueChanged(object sender, EventArgs e)
  446. {
  447. #region
  448. // grdDetail.DataSource = null;
  449. // gridControlGroup.DataSource = null;
  450. // gridControlGauge.DataSource = null;
  451. // cmbSEQ.Text = "";
  452. // cmbSEQ.Properties.Items.Clear();
  453. // string MOCode = txtMOCode.EditValue.ToString();
  454. // string sql = @"SELECT MOSEQ FROM ICSMO A
  455. // LEFT JOIN ICSPACKINGINPUTLog B ON A.MOCODE = B.MOCODE
  456. // WHERE A.WorkPoint = '{0}' AND B.TransferNO = '{1}' ORDER BY MOSEQ";
  457. // sql = string.Format(sql, AppConfig.WorkPointCode, MOCode);
  458. // DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  459. // cmbSEQ.Properties.Items.Add("");
  460. // cmbSEQ.Properties.Items.AddRange(dt.AsEnumerable().Select(a=>a["MOSEQ"]).ToList());
  461. // loadData();
  462. #endregion
  463. DataTable dt = TranOutClass.TranOut(txtMOCode.Text.Trim());
  464. gridControlGroup.DataSource = dt;
  465. gridViewGroup.BestFitColumns();
  466. }
  467. private void cmbSEQ_SelectedIndexChanged(object sender, EventArgs e)
  468. {
  469. grdDetail.DataSource = null;
  470. gridControlGroup.DataSource = null;
  471. gridControlGauge.DataSource = null;
  472. loadData();
  473. }
  474. #region 导出
  475. private void btnOutPut_Click(object sender, EventArgs e)
  476. {
  477. SimpleButton btntemp = (SimpleButton)sender;
  478. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  479. {
  480. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  481. return;
  482. }
  483. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  484. foe.ShowDialog();
  485. }
  486. #endregion
  487. #region 打印
  488. private void btnPrint_Click(object sender, EventArgs e)
  489. {
  490. try
  491. {
  492. #region
  493. //this.gridViewGauge.OptionsView.RowAutoHeight = true;
  494. //PrintingSystem print = new DevExpress.XtraPrinting.PrintingSystem();
  495. //PrintableComponentLink link = new PrintableComponentLink(print);
  496. //DevExpress.XtraPrintingLinks.CompositeLink compositeLink = new DevExpress.XtraPrintingLinks.CompositeLink();
  497. //print.Links.Add(link);
  498. //link.Component = gridControlGauge;//这里可以是可打印的部件
  499. //link.Margins.Top = 50;
  500. //link.Margins.Bottom = 0;
  501. //link.Margins.Left = 0;
  502. //link.Margins.Right = 0;
  503. //string _PrintHeader = MOTitle.Text;
  504. //PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter;
  505. //phf.Header.Content.Clear();
  506. //phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" });
  507. //phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold);
  508. //phf.Header.LineAlignment = BrickAlignment.Center;
  509. //link.CreateDocument(); //建立文档
  510. //print.PreviewFormEx.Show();//进行预览
  511. #endregion
  512. #region
  513. //SimpleButton btntemp = (SimpleButton)sender;
  514. //if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  515. //{
  516. // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  517. // return;
  518. //}
  519. //if (string.IsNullOrWhiteSpace(txtMOCode.EditValue.ToString()))
  520. //{
  521. // ICSBaseSimpleCode.AppshowMessageBox("请选择生产订单号!");
  522. // return;
  523. //}
  524. //string where = txtMOCode.EditValue.ToString();
  525. //string code = txtMOCode.EditValue.ToString();
  526. //if (!string.IsNullOrWhiteSpace(cmbSEQ.Text.Trim()))
  527. //{
  528. // where += "' AND a.SEQ='" + cmbSEQ.Text.Trim();
  529. // code += "' AND MOSEQ='" + cmbSEQ.Text.Trim();
  530. //}
  531. //List<PrintPara> parasList = new List<PrintPara>();
  532. //string BinCode = " d.BinCode OR d.BinCode IS NULL";
  533. //if (!string.IsNullOrWhiteSpace(txtBinCode.Text.Trim()))
  534. //{
  535. // BinCode = " '" + txtBinCode.Text.Trim() + "' ";
  536. //}
  537. //if (!string.IsNullOrWhiteSpace(txtWHCode.Text.Trim()))
  538. //{
  539. // BinCode += " AND d.WHCode='" + txtWHCode.Text.Trim() + "' ";
  540. //}
  541. //PrintPara para = new PrintPara();
  542. //para.PrintKey = "MOCODE";
  543. //para.PrintValues = new object[] { where, BinCode, cmbSEQ.Text.Trim(), code, txtWHCode.Text.Trim()};
  544. //parasList.Add(para);
  545. //if (parasList.Count == 0)
  546. //{
  547. // ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  548. // return;
  549. //}
  550. //FormPrintDialog f = new FormPrintDialog("014", this.Text, parasList, false, null);
  551. //f.ShowDialog();
  552. #endregion
  553. #region
  554. SimpleButton btntemp = (SimpleButton)sender;
  555. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  556. {
  557. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  558. return;
  559. }
  560. if (string.IsNullOrWhiteSpace(txtMOCode.EditValue.ToString()))
  561. {
  562. ICSBaseSimpleCode.AppshowMessageBox("请选择生产订单号!");
  563. return;
  564. }
  565. string code = txtMOCode.EditValue.ToString();
  566. List<PrintPara> parasList = new List<PrintPara>();
  567. PrintPara para = new PrintPara();
  568. para.PrintKey = "TransferNO";
  569. para.PrintValues = new object[] { txtMOCode.Text };
  570. parasList.Add(para);
  571. if (parasList.Count == 0)
  572. {
  573. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  574. return;
  575. }
  576. FormPrintDialog f = new FormPrintDialog("014", this.Text, parasList, false, null);
  577. f.ShowDialog();
  578. #endregion
  579. }
  580. catch (Exception ex)
  581. {
  582. MessageBox.Show(ex.ToString());
  583. }
  584. }
  585. #endregion
  586. private void chkAll_CheckedChanged(object sender, EventArgs e)
  587. {
  588. if (chkAll.Checked)
  589. grdDetail.DataSource = dataSourceAll;
  590. else
  591. grdDetail.DataSource = dataSource;
  592. grvDetail.BestFitColumns();
  593. }
  594. //private void txtBinCode_KeyPress(object sender, KeyPressEventArgs e)
  595. //{
  596. // if (e.KeyChar == 13)
  597. // {
  598. // DataView dv = dataGauge.DefaultView;
  599. // if (!string.IsNullOrWhiteSpace(txtBinCode.Text.Trim()))
  600. // dv.RowFilter = "BinCode='" + txtBinCode.Text.Trim() + "'";
  601. // else
  602. // dv.RowFilter = "";
  603. // //dataGauge = dv.ToTable();
  604. // gridControlGauge.DataSource = dv;
  605. // gridViewGauge.BestFitColumns();
  606. // }
  607. //}
  608. private void txtBinCode_EditValueChanged(object sender, EventArgs e)
  609. {
  610. Select();
  611. }
  612. private void Select()
  613. {
  614. if (dataGauge == null)
  615. return;
  616. DataView dv = dataGauge.DefaultView;
  617. dv.RowFilter = "";
  618. if (!string.IsNullOrWhiteSpace(txtWHCode.Text.Trim()))
  619. dv.RowFilter = "WHCode='" + txtWHCode.Text.Trim() + "'";
  620. if (!string.IsNullOrWhiteSpace(txtBinCode.Text.Trim()))
  621. {
  622. if (string.IsNullOrWhiteSpace(dv.RowFilter))
  623. dv.RowFilter = "BinCode='" + txtBinCode.Text.Trim() + "'";
  624. else
  625. dv.RowFilter += " AND BinCode='" + txtBinCode.Text.Trim() + "'";
  626. }
  627. //dataGauge = dv.ToTable();
  628. gridControlGauge.DataSource = dv;
  629. gridViewGauge.BestFitColumns();
  630. }
  631. }
  632. }