锐腾搅拌上料功能
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.

1211 lines
51 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraEditors;
  9. using ICSSoft.Frame.User.BLL;
  10. using ICSSoft.Base.Language.Tool;
  11. using ICSSoft.Base.UserControl.MessageControl;
  12. using System.Data.SqlClient;
  13. using ICSSoft.Base.Config.AppConfig;
  14. using ICSSoft.Base.Report.Filter;
  15. using ICSSoft.Base.Config.DBHelper;
  16. using ICSSoft.Base.UserControl.FormControl;
  17. using ICSSoft.Base.ReferForm.AppReferForm;
  18. using ICSSoft.Base.Lable.PrintTool;
  19. using ICSSoft.Frame.Data.DAL;
  20. using ICSSoft.Frame.Data.BLL;
  21. using ICSSoft.Frame.Data.Entity;
  22. namespace ICSSoft.Frame.APP
  23. {
  24. public partial class FormICSMO2Lot : DevExpress.XtraEditors.XtraForm
  25. {
  26. private string sqltxt = "";
  27. private string sqlconn = "";
  28. String guid = AppConfig.GetGuid();
  29. private DataTable dataSource = null;
  30. //WorkPointBLL workBll = new WorkPointBLL();
  31. string moid = "";
  32. string mocode = "";//工单编码
  33. string moseq = "";//生产订单行号
  34. int monum;
  35. string itemcode = "";
  36. string LotNO = string.Empty;//批号20190711ZM
  37. string MOTYPE = "";
  38. DataTable dttp;
  39. #region 构造函数
  40. public FormICSMO2Lot()
  41. {
  42. InitializeComponent();
  43. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  44. this.WindowState = FormWindowState.Maximized;
  45. this.txtLOTQTY.Text = "1";
  46. }
  47. #endregion
  48. public FormICSMO2Lot(string id, string code, int num, string ITEMCODE, string moSeq)//,DataTable dt
  49. {
  50. InitializeComponent();
  51. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  52. this.WindowState = FormWindowState.Maximized;
  53. moid = id;
  54. mocode = code;
  55. monum = num;
  56. moseq = moSeq;
  57. itemcode = ITEMCODE;
  58. this.txtLOTQTY.Text = "1";
  59. // this.dttp = dt;
  60. }
  61. #region 移动窗体
  62. private const int WM_NCHITTEST = 0x84;
  63. private const int HTCLIENT = 0x1;
  64. private const int HTCAPTION = 0x2;
  65. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  66. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  67. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  68. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  69. //重写窗体,使窗体可以不通过自带标题栏实现移动
  70. protected override void WndProc(ref Message m)
  71. {
  72. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  73. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  74. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  75. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  76. switch (m.Msg)
  77. {
  78. case WM_NCHITTEST:
  79. base.WndProc(ref m);
  80. if ((int)m.Result == HTCLIENT)
  81. m.Result = (IntPtr)HTCAPTION;
  82. return;
  83. }
  84. //拦截双击标题栏、移动窗体的系统消息
  85. if (m.Msg != 0xA3)
  86. {
  87. base.WndProc(ref m);
  88. }
  89. }
  90. #endregion
  91. #region SystemOptition
  92. /// <summary>
  93. /// 操作权限
  94. /// </summary>
  95. /// <returns></returns>
  96. public DataTable RightOfExute()
  97. {
  98. DataTable rData = new DataTable();
  99. rData.Columns.Add("BtnName");
  100. rData.Columns.Add("ActionName");
  101. //查看权限(必须有)
  102. DataRow seeRow = rData.NewRow();
  103. seeRow["BtnName"] = "see";
  104. seeRow["ActionName"] = "查看";
  105. rData.Rows.Add(seeRow);
  106. List<Control> ControlList = new List<Control>();
  107. ControlList.Add(btnSave);
  108. //ControlList.Add(btnDelLable);
  109. foreach (Control ctr in ControlList)
  110. {
  111. if (ctr.GetType() == typeof(SimpleButton))
  112. {
  113. DataRow dr = rData.NewRow();
  114. dr["BtnName"] = ctr.Name;
  115. dr["ActionName"] = ctr.Text;
  116. rData.Rows.Add(dr);
  117. }
  118. }
  119. rData.AcceptChanges();
  120. return rData;
  121. }
  122. /// <summary>
  123. /// 数据权限
  124. /// </summary>
  125. /// <returns></returns>
  126. public DataTable RightOfData()
  127. {
  128. DataTable rData = new DataTable();
  129. rData.Columns.Add("BodyName");
  130. rData.Columns.Add("ControlName");
  131. rData.Columns.Add("ControlCaption");
  132. rData.AcceptChanges();
  133. return rData;
  134. }
  135. #endregion
  136. #region 退出
  137. private void btnClose_Click(object sender, EventArgs e)
  138. {
  139. AppConfig.CloseFormShow(this.Text);
  140. this.Close();
  141. }
  142. private void btnExit_Click(object sender, EventArgs e)
  143. {
  144. AppConfig.CloseFormShow(this.Text);
  145. this.Close();
  146. }
  147. #endregion
  148. //#region 过滤
  149. //private string tempTableName = "";
  150. //private void btnFilter_Click(object sender, EventArgs e)
  151. //{
  152. // FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  153. // filter.OldTempTableName = tempTableName;
  154. // if (filter.ShowDialog() == DialogResult.OK)
  155. // {
  156. // DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  157. // try
  158. // {
  159. // _wait.Show();
  160. // tempTableName = filter.NewTempTableName;
  161. // sqltxt = filter.SqlText;
  162. // sqlconn = filter.FilterConnectString;
  163. // dataSource = filter.FilterData.Tables[0];
  164. // grdDetail.DataSource = dataSource;
  165. // grvDetail.BestFitColumns();
  166. // rptPage.RecordNum = dataSource.Rows.Count;
  167. // rptPage.PageSize = 500;
  168. // rptPage.PageIndex = 1;
  169. // rptPage.ReLoad();
  170. // _wait.Close();
  171. // }
  172. // catch (Exception ex)
  173. // {
  174. // MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  175. // _wait.Close();
  176. // }
  177. // }
  178. //}
  179. //#endregion
  180. #region 全选
  181. private void btnSelect_Click(object sender, EventArgs e)
  182. {
  183. for (int i = 0; i < grvDetail.RowCount; i++)
  184. {
  185. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  186. }
  187. }
  188. #endregion
  189. #region 全消
  190. private void btnCanSelect_Click(object sender, EventArgs e)
  191. {
  192. for (int i = 0; i < grvDetail.RowCount; i++)
  193. {
  194. grvDetail.SetRowCellValue(i, colisSelect, "");
  195. }
  196. }
  197. #endregion
  198. #region 刷新
  199. private void btnFalsh_Click(object sender, EventArgs e)
  200. {
  201. if (sqlconn == null || sqlconn == "")
  202. {
  203. return;
  204. }
  205. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  206. try
  207. {
  208. _wait.Show();
  209. //FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name), false);
  210. //filter.OldTempTableName = tempTableName;
  211. //tempTableName = filter.NewTempTableName;
  212. //DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, "select * from " + tempTableName).Tables[0];
  213. dataSource = DBHelper.ExecuteDataset(sqlconn, CommandType.Text, sqltxt).Tables[0];
  214. grdDetail.DataSource = dataSource;
  215. rptPage.RecordNum = dataSource.Rows.Count;
  216. rptPage.PageIndex = 1;
  217. rptPage.ReLoad();
  218. _wait.Close();
  219. }
  220. catch (Exception ex)
  221. {
  222. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  223. _wait.Close();
  224. }
  225. }
  226. #endregion
  227. #region 列表
  228. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  229. {
  230. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  231. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  232. }
  233. #endregion
  234. #region 双击选择
  235. private void grvDetail_DoubleClick(object sender, EventArgs e)
  236. {
  237. if (grvDetail.FocusedRowHandle < 0)
  238. {
  239. return;
  240. }
  241. if (grvDetail.FocusedColumn == colisSelect)
  242. {
  243. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  244. {
  245. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  246. }
  247. else
  248. {
  249. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  250. }
  251. }
  252. }
  253. #endregion
  254. //#region 绑定数据源
  255. //private void btnConfig_Click(object sender, EventArgs e)//绑定数据源
  256. //{
  257. // if (AppConfig.UserCode.ToLower() != "demo")
  258. // {
  259. // //ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
  260. // return;
  261. // }
  262. // FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
  263. // fdata.ShowDialog();
  264. //}
  265. //#endregion
  266. //#region 加载
  267. //private void FormICSFACTORY_Load(object sender, EventArgs e)
  268. //{
  269. // btnFilter_Click(sender, e);
  270. //}
  271. //#endregion
  272. //#region 增加
  273. //private void btnAdd_Click(object sender, EventArgs e)
  274. //{
  275. // //SimpleButton btntemp = (SimpleButton)sender;
  276. // //if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  277. // //{
  278. // // //ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  279. // // return;
  280. // //}
  281. // //FormICSFACTORYAdd add = new FormICSFACTORYAdd();
  282. // //add.ShowDialog();
  283. // ////btnFalsh_Click(null, null);
  284. //}
  285. //#endregion
  286. //#region 修改
  287. //private void btnEdit_Click(object sender, EventArgs e)
  288. //{
  289. // SimpleButton btntemp = (SimpleButton)sender;
  290. // if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  291. // {
  292. // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  293. // return;
  294. // }
  295. // int count = 0;
  296. // for (int i = 0; i < grvDetail.RowCount; i++)
  297. // {
  298. // if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  299. // {
  300. // count++;
  301. // }
  302. // }
  303. // if (count != 1)
  304. // {
  305. // ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  306. // return;
  307. // }
  308. // try
  309. // {
  310. // string Code;
  311. // for (int i = 0; i < grvDetail.RowCount; i++)
  312. // {
  313. // if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  314. // {
  315. // Code = grvDetail.GetRowCellValue(i, colMOID).ToString();
  316. // FormICSFACTORYAdd add = new FormICSFACTORYAdd(Code);
  317. // add.ShowDialog();
  318. // }
  319. // }
  320. // //btnFalsh_Click(null, null);
  321. // }
  322. // catch (Exception ex)
  323. // {
  324. // //throw ex;
  325. // ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  326. // }
  327. //}
  328. //#endregion
  329. #region 删除
  330. private void btnDel_Click(object sender, EventArgs e)
  331. {
  332. grvDetail.PostEditor();
  333. this.Validate();
  334. if (grvDetail.RowCount == 0)
  335. return;
  336. List<string> guidList = new List<string>();
  337. List<string> codeList = new List<string>();
  338. for (int i = 0; i < grvDetail.RowCount; i++)
  339. {
  340. guidList.Add(grvDetail.GetRowCellValue(i, colLOTNO).ToString());
  341. }
  342. if (guidList.Count == 0)
  343. {
  344. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  345. return;
  346. }
  347. //删除 ICSITEMROUT2OPLot表中数据删除20190717ZM
  348. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该工单批次信息吗?删除后无法恢复,确定吗?") != DialogResult.OK)
  349. return;
  350. try
  351. {
  352. ICSMO2LotBLL.delete(guidList);
  353. ICSBaseSimpleCode.AppshowMessageBox(0, "删除成功");
  354. FormICSMO2Lot_Load(null, null);
  355. }
  356. catch (Exception ex)
  357. {
  358. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  359. }
  360. }
  361. #endregion
  362. #region 导出
  363. private void btnOutPut_Click(object sender, EventArgs e)
  364. {
  365. FormOutExcel foe = new FormOutExcel("", grdDetail);
  366. foe.ShowDialog();
  367. }
  368. #endregion
  369. private void FormICSMO2Lot_Load(object sender, EventArgs e)
  370. {
  371. try
  372. {
  373. // string sql = @"IF NOT EXISTS(SELECT mo.ID
  374. // FROM ICSMO mo
  375. // INNER JOIN ICSMO2ROUTE a ON mo.ID=a.MOID
  376. // WHERE mo.ID='{0}')
  377. // BEGIN
  378. // RAISERROR('工单未维护工艺路线!',16,1)
  379. // END
  380. //
  381. // IF NOT EXISTS(SELECT mo.ID
  382. // FROM ICSMO mo
  383. // INNER JOIN ICSMO2ROUTE a ON mo.ID=a.MOID
  384. // INNER JOIN ICSITEMROUTE2OP b ON mo.ITEMCODE=b.ITEMCODE AND a.ROUTECODE=b.ROUTECODE
  385. // LEFT JOIN (SELECT a.ITEMCODE,a.OPCODE,a.EQPCODE,a.STIME,a.RTIME
  386. // FROM ICSEQPSTP a
  387. // WHERE ID=(SELECT MAX(ID) FROM ICSEQPSTP WHERE ITEMCODE=a.ITEMCODE AND OPCODE=a.OPCODE AND ISREF='是')
  388. // ) c ON b.ITEMCODE=c.ITEMCODE AND b.OPCODE=c.OPCODE
  389. // WHERE mo.ID='{0}'
  390. // GROUP BY mo.ID
  391. // HAVING COUNT(b.ITEMCODE)=COUNT(c.ITEMCODE))
  392. // BEGIN
  393. // RAISERROR('所有工序的标准工时都需维护!',16,1)
  394. // END
  395. //
  396. // SELECT TOP 1 mo.ID,c.ITEMCODE,c.OPCODE,d.OPDESC,c.EQPCODE,c.STIME,c.RTIME
  397. // FROM ICSMO mo
  398. // INNER JOIN ICSMO2ROUTE a ON mo.ID=a.MOID AND mo.WorkPoint=a.WorkPoint
  399. // INNER JOIN ICSITEMROUTE2OP b ON mo.ITEMCODE=b.ITEMCODE AND a.ROUTECODE=b.ROUTECODE AND a.WorkPoint=b.WorkPoint
  400. // LEFT JOIN (SELECT a.ITEMCODE,a.OPCODE,a.EQPCODE,a.STIME,a.RTIME,a.WorkPoint
  401. // FROM ICSEQPSTP a
  402. // WHERE ID=(SELECT MAX(ID) FROM ICSEQPSTP WHERE ITEMCODE=a.ITEMCODE AND OPCODE=a.OPCODE AND WorkPoint=a.WorkPoint AND ISREF='是')
  403. // ) c ON b.ITEMCODE=c.ITEMCODE AND b.OPCODE=c.OPCODE AND b.WorkPoint=c.WorkPoint
  404. // LEFT JOIN ICSOP d ON b.OPCODE=d.OPCODE AND b.WorkPoint=c.WorkPoint
  405. // WHERE mo.ID='{0}'
  406. // ORDER BY c.STIME DESC,OPCODE
  407. //
  408. // select '' as [isSelect],
  409. // a.ID as ID,
  410. // b.ID as MOID,
  411. // a.LOTNO as LOTNO,
  412. // b.MOCODE as MOCODE,
  413. // a.ItemCode as ItemCode,
  414. // b.MOSEQ as TransLine,
  415. // a.LOTQTY as LOTQTY,
  416. // a.MUSERName as MUSERName,
  417. // a.VenderLotNO MOVER,
  418. // a.EATTRIBUTE3 MOINPUTQTY,
  419. // a.MTIME as MTIME
  420. // from dbo.ICSITEMLot a
  421. // left join ICSMO b on a.TransNO=b.MOCODE AND a.TransLine=b.MOSEQ AND a.WorkPoint=b.WorkPoint
  422. // where b.ID='{0}' order by a.LOTNO asc";
  423. string sql = @"
  424. SELECT
  425. A.ROUTECODE,
  426. c.OPCODE,
  427. op.OPDESC,
  428. d.id,
  429. ISNULL(d.STIME,0) STIME,
  430. d.RTIME
  431. INTO #t001
  432. FROM ICSMO mo
  433. INNER JOIN ICSMO2ROUTE a ON mo.ID=a.MOID AND A.WorkPoint=mo.WorkPoint
  434. INNER JOIN dbo.ICSROUTE B ON B.ROUTECODE=A.ROUTECODE AND B.WorkPoint=A.WorkPoint
  435. INNER JOIN dbo.ICSROUTE2OP C ON C.ROUTECODE=B.ROUTECODE AND C.WORKPOINT=B.WorkPoint
  436. LEFT JOIN ICSEQPSTP D ON MO.ITEMCODE=D.ITEMCODE AND D.EATTRIBUTE1 = C.ROUTECODE AND D.OPCODE=C.OPCODE AND D.WorkPoint=c.WorkPoint
  437. LEFT JOIN dbo.ICSOP op ON op.OPCODE=c.OPCODE AND op.WorkPoint=c.WORKPOINT
  438. WHERE mo.ID='{0}'
  439. IF NOT EXISTS(
  440. SELECT 1 FROM #t001
  441. GROUP BY ROUTECODE
  442. HAVING COUNT(1)=SUM(CASE WHEN ID IS NULL THEN 0 ELSE 1 END) AND COUNT(1)>0
  443. )
  444. BEGIN
  445. RAISERROR('',16,1)
  446. END
  447. SELECT TOP 1 * FROM #t001 ORDER BY STIME DESC,OPCODE ASC
  448. select '' as [isSelect],
  449. a.ID as ID,
  450. b.ID as MOID,
  451. a.LOTNO as LOTNO,
  452. b.MOCODE as MOCODE,
  453. a.ItemCode as ItemCode,
  454. b.MOSEQ as TransLine,
  455. a.LOTQTY as LOTQTY,
  456. a.MUSERName as MUSERName,
  457. a.VenderLotNO MOVER,
  458. a.EATTRIBUTE3 MOINPUTQTY,
  459. a.MTIME as MTIME
  460. from dbo.ICSITEMLot a
  461. left join ICSMO b on a.TransNO=b.MOCODE AND a.TransLine=b.MOSEQ AND a.WorkPoint=b.WorkPoint
  462. where b.ID='{0}' order by a.LOTNO ASC
  463. DROP TABLE #t001
  464. ";
  465. sql = string.Format(sql, moid);
  466. DataSet ds = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
  467. DataTable dtMO = ds.Tables[0];
  468. if (dtMO != null && dtMO.Rows.Count > 0)
  469. {
  470. DataRow dr = dtMO.Rows[0];
  471. txtOPCode.Text = dr["OPDESC"].ToString();
  472. txtSTime.Text = dr["STIME"].ToString();
  473. }
  474. DataTable dt = ds.Tables[1];
  475. grdDetail.DataSource = dt;
  476. this.txtMoQty.Text = monum.ToString();
  477. //设置单件流
  478. sql = @"select EnumValue from Sys_EnumValues
  479. where EnumKey='028'";
  480. DataTable dtKey = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  481. bool flag = false;
  482. foreach (DataRow dr in dtKey.Rows)
  483. {
  484. if (itemcode.StartsWith(dr["EnumValue"].ToString()))
  485. {
  486. flag = true;
  487. }
  488. }
  489. if (flag)
  490. {
  491. this.txtLOTQTY.Text = "1";
  492. this.txtJYLotQty.Text = "1";
  493. }
  494. //else
  495. //{
  496. // GetLotQty(dttp);
  497. //}
  498. }
  499. catch (Exception ex)
  500. {
  501. this.Close();
  502. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  503. }
  504. // sql = @"select isnull(c.[Expanded1],'1') as LotQty from ICSMO a
  505. // left join Base_Inventory b on a.ItemCode=b.ITEMCODE
  506. // left join Base_InventoryExpanded c on b.guid = c.guid
  507. // where a.ID='{0}'";
  508. // sql = string.Format(sql, moid);
  509. // DataTable dt2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  510. // if (dt2.Rows.Count > 0)
  511. // {
  512. // this.txtLOTQTY.Text = dt2.Rows[0][0].ToString();
  513. // }
  514. }
  515. private void GetLotQty(DataTable DT)
  516. {
  517. if (DT.Rows.Count > 0)
  518. {
  519. DataRow dr = DT.Select("", "标准工时 DESC")[0];
  520. int lotQty = (int)Math.Round(8 / Convert.ToDecimal(dr["标准工时"].ToString()), 0);
  521. this.txtJYLotQty.Text = lotQty.ToString();
  522. if (monum > lotQty)
  523. {
  524. this.txtLOTQTY.Text = lotQty + "";
  525. }
  526. else
  527. {
  528. this.txtLOTQTY.Text = monum.ToString();
  529. }
  530. this.txtOPCode.Text = dr["工序代码"].ToString();
  531. this.txtSTime.Text = dr["标准工时"].ToString();
  532. }
  533. }
  534. private void btnLot_Click(object sender, EventArgs e)
  535. {
  536. ////根据ICSMOPickLog窜起来查确定是否领料。工单:MOCODE、生产订单行号:MOSEQ、子料:ITEMCODE(根据工单母料看子料)
  537. ////限制:如果‘是否领料’字段为‘否’,那么无法进行分批操作;
  538. //DataTable _dt = ICSMO2LotBLL.IsUsingMO(mocode, moseq);
  539. //if (_dt != null && _dt.Rows.Count > 0)
  540. //{
  541. // string isUsing = _dt.Rows[0][0].ToString();
  542. // if (!string.IsNullOrWhiteSpace(isUsing))
  543. // {
  544. // int _isUsing = Int32.Parse(isUsing);
  545. // if (_isUsing <= 0)
  546. // {
  547. // ICSBaseSimpleCode.AppshowMessageBox("该工单料号还未领用,不能进行拆批");
  548. // return;
  549. // }
  550. // }
  551. //}
  552. bool b = ICSMO2LotBLL.IsIncludingInMO2Lot(moid);
  553. if (b)
  554. {
  555. ICSBaseSimpleCode.AppshowMessageBox("该工单已生成批次,若重新生成,请先删除原批次信息!");
  556. return;
  557. }
  558. int num = 0;
  559. int morow;//行数
  560. int lotqty;//批次数量
  561. int lotcount;//共分成多少批次
  562. int ys;//余数
  563. if (txtLOTQTY.Text.Trim() != "")
  564. {
  565. if (!int.TryParse(txtLOTQTY.Text.Trim(), out num))
  566. {
  567. ICSBaseSimpleCode.AppshowMessageBox("批次数量应该为正整数!");
  568. return;
  569. }
  570. lotqty = int.Parse(txtLOTQTY.Text.Trim());
  571. ys = monum % lotqty;
  572. if (ys == 0)
  573. {
  574. morow = monum / lotqty;
  575. }
  576. else
  577. {
  578. morow = monum / lotqty + 1;
  579. }
  580. }
  581. else
  582. {
  583. lotqty = 1;
  584. morow = monum;
  585. ys = 0;
  586. }
  587. string _sqlMOVER = @"SELECT B.MOVER, B.MOINPUTQTY AS MOINPUTQTY, B.MOPLANQTY, MOTYPE FROM ICSMO B WHERE B.ID = '{0}' ";
  588. _sqlMOVER = string.Format(_sqlMOVER, moid);
  589. DataTable dtMOVER = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sqlMOVER).Tables[0];
  590. string MOVER = string.Empty;
  591. Decimal MOINPUTQTY = 0;
  592. if (dtMOVER != null && dtMOVER.Rows.Count > 0)
  593. {
  594. MOTYPE = dtMOVER.Rows[0]["MOTYPE"].ToString();
  595. MOVER = dtMOVER.Rows[0][0].ToString();
  596. Decimal _QTY = 0;
  597. if (!string.IsNullOrWhiteSpace(dtMOVER.Rows[0][2].ToString()))
  598. {
  599. _QTY = Decimal.Parse(dtMOVER.Rows[0][2].ToString());
  600. }
  601. //20190924更改工单表中辅助计量数值,总数值/个数
  602. MOINPUTQTY = Decimal.Parse(dtMOVER.Rows[0][1].ToString()) / _QTY;
  603. }
  604. DataTable dt = new DataTable();
  605. dt.Columns.Add("isSelect", typeof(string));
  606. dt.Columns["isSelect"].Caption = "选择";
  607. dt.Columns.Add("ID", typeof(string));
  608. dt.Columns["ID"].Caption = "批次ID";
  609. dt.Columns.Add("LOTNO", typeof(string));
  610. dt.Columns["LOTNO"].Caption = "批号";
  611. dt.Columns.Add("MOCODE", typeof(string));
  612. dt.Columns["MOCODE"].Caption = "生产订单号";
  613. dt.Columns.Add("TransLine", typeof(string));
  614. dt.Columns["TransLine"].Caption = "生产订单行号";
  615. dt.Columns.Add("PRODUCTDATE", typeof(DateTime));
  616. dt.Columns["PRODUCTDATE"].Caption = "产品日期";
  617. dt.Columns.Add("LOTQTY", typeof(int));
  618. dt.Columns["LOTQTY"].Caption = "批次数量";
  619. dt.Columns.Add("ItemCode", typeof(string));
  620. dt.Columns["ItemCode"].Caption = "存货编码";
  621. dt.Columns.Add("ACTIVE", typeof(string));
  622. dt.Columns["ACTIVE"].Caption = "状态";
  623. dt.Columns.Add("Exdate", typeof(DateTime));
  624. dt.Columns["Exdate"].Caption = "日期";
  625. dt.Columns.Add("WorkPoint", typeof(string));
  626. dt.Columns["WorkPoint"].Caption = "站点";
  627. dt.Columns.Add("MUSER", typeof(string));
  628. dt.Columns["MUSER"].Caption = "维护人";
  629. dt.Columns.Add("MUSERName", typeof(string));
  630. dt.Columns["MUSERName"].Caption = "维护人名称";
  631. dt.Columns.Add("MTIME", typeof(DateTime));
  632. dt.Columns["MTIME"].Caption = "维护时间";
  633. dt.Columns.Add("MOID", typeof(string));
  634. dt.Columns["MOID"].Caption = "工单ID";
  635. dt.Columns.Add("MOVER", typeof(string));
  636. dt.Columns["MOVER"].Caption = "零件号";
  637. dt.Columns.Add("MOINPUTQTY", typeof(Decimal));
  638. dt.Columns["MOINPUTQTY"].Caption = "辅助计量单位";
  639. //dt.Columns.Add("LOTSEQ", typeof(int));
  640. //dt.Columns["LOTSEQ"].Caption = "产品跟踪单号流水号";
  641. //dt.Columns.Add("LOTStatus", typeof(string));
  642. //dt.Columns["LOTStatus"].Caption = "状态";
  643. //dt.Columns.Add("TransNO", typeof(string));
  644. //dt.Columns["TransNO"].Caption = "生产订单行号";
  645. for (int i = 1; i <= morow; i++)
  646. {
  647. DataRow dr = dt.NewRow();
  648. dr["isSelect"] = "";
  649. dr["ID"] = Guid.NewGuid().ToString();
  650. dr["MOID"] = moid;
  651. string n = Convert.ToString(i);
  652. n = n.PadLeft(4, '0');
  653. dr["LOTNO"] = mocode + moseq + n;
  654. //dr["LOTSEQ"] = i;
  655. dr["MOCODE"] = mocode;
  656. dr["ItemCode"] = itemcode;
  657. if (ys == 0 || i != morow)
  658. {
  659. dr["LOTQTY"] = lotqty;
  660. }
  661. else if (i == morow)
  662. dr["LOTQTY"] = ys;
  663. dr["TransLine"] = moseq;
  664. //dr["LOTStatus"] = "新增";
  665. dr["MUSERName"] = AppConfig.UserName;
  666. dr["MTIME"] = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss").ToString();
  667. dr["MOVER"] = MOVER;
  668. dr["MOINPUTQTY"] = MOINPUTQTY;
  669. dt.Rows.Add(dr);
  670. }
  671. grdDetail.DataSource = dt;
  672. btnFalsh_Click(null, null);
  673. }
  674. private void btnSave_Click(object sender, EventArgs e)
  675. {
  676. if (!string.IsNullOrWhiteSpace(this.txtLOTQTY.Text.Trim()))
  677. {
  678. if (Decimal.Parse(this.txtLOTQTY.Text.Trim()) < 0 || Decimal.Parse(this.txtLOTQTY.Text.Trim()) == 0)
  679. {
  680. ICSBaseSimpleCode.AppshowMessageBox("每批数量不能小于等于0!");
  681. return;
  682. }
  683. }
  684. else
  685. {
  686. ICSBaseSimpleCode.AppshowMessageBox("请填写分批数量!");
  687. return;
  688. }
  689. bool b = ICSMO2LotBLL.IsIncludingInMO2Lot(moid);
  690. if (b)
  691. {
  692. ICSBaseSimpleCode.AppshowMessageBox("该工单已生成批次,若重新生成,请先删除原批次信息!");
  693. return;
  694. }
  695. #region 关联工单的默认途程
  696. // string isref = "";
  697. // string routeid = "";
  698. // //查找工单--产品途程
  699. // string sql1 = @"select ROUTEID,ISREF from ICSITEM2ROUTE where ITEMCODE='" + itemcode + "' and ISREF = '1' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  700. // sql1 = string.Format(sql1);
  701. // DataTable data1 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  702. // if (data1 != null && data1.Rows.Count > 0)
  703. // {
  704. // routeid = data1.Rows[0]["ROUTEID"].ToString();
  705. // isref = data1.Rows[0]["ISREF"].ToString();
  706. // ICSMOBLL.addRoute(moid, routeid, itemcode, isref, AppConfig.AppConnectString);
  707. // }
  708. // else
  709. // {
  710. // string sql = @"select a.ROUTEID,
  711. // a.ISREF
  712. // from ICSMODEL2ROUTE a
  713. // left join Base_Inventory b on a.MODELCODE=b.ItemMainCategoryCode
  714. // where b.ItemCode='" + itemcode + "' and a.ISREF = '是' and a.WorkPoint='" + AppConfig.WorkPointCode + "'";
  715. // sql = string.Format(sql);
  716. // DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  717. // if (data != null && data.Rows.Count > 0)
  718. // {
  719. // routeid = data.Rows[0]["ROUTEID"].ToString();
  720. // isref = data.Rows[0]["ISREF"].ToString();
  721. // ICSMOBLL.addRoute(moid, routeid, itemcode, isref, AppConfig.AppConnectString);
  722. // }
  723. // else
  724. // {
  725. // if (ICSBaseSimpleCode.AppshowMessageBoxRepose("该工单没有默认途程,是否继续生成批次?") != DialogResult.OK)
  726. // {
  727. // return;
  728. // }
  729. // }
  730. // }
  731. #endregion
  732. #region 校验工单是否关联途程、工艺路线、工序
  733. //mocode = code;
  734. //moseq = moSeq;
  735. //itemcode = ITEMCODE;
  736. //string mocode = "";//工单编码
  737. //string moseq = "";//生产订单行号
  738. //string itemcode = "";
  739. string _sql = @"SELECT DISTINCT
  740. a.ITEMCODE,
  741. b.ROUTECODE AS ROUTECODE,
  742. e.OPCODE,
  743. e.OPSEQ,
  744. a.MOCODE AS MOCODE,
  745. CONVERT (INT, a.MOSEQ) AS MOSEQ
  746. FROM
  747. ICSMO a
  748. LEFT JOIN ICSMO2ROUTE b ON ( b.MOID = a.ID)
  749. LEFT JOIN ICSITEMROUTE2OP e ON e.ROUTECODE = b.ROUTECODE AND a.ITEMCODE=e.ITEMCODE
  750. WHERE
  751. a.MOCODE = '" + mocode + "' AND a.MOSEQ = '" + moseq + "' AND a.ITEMCODE = '" + itemcode + "' ";
  752. _sql = string.Format(_sql);
  753. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sql).Tables[0];
  754. if (dt != null && dt.Rows.Count > 0)
  755. {
  756. foreach (DataRow dr in dt.Rows)
  757. {
  758. string ROUTECODE = string.Empty;
  759. string OPCODE = string.Empty;
  760. int OPSEQ = 0;
  761. ROUTECODE = dr["ROUTECODE"].ToString();
  762. OPCODE = dr["OPCODE"].ToString();
  763. if (string.IsNullOrWhiteSpace(dr["OPSEQ"].ToString()))
  764. {
  765. OPSEQ = 0;
  766. }
  767. else
  768. {
  769. OPSEQ = Int32.Parse(dr["OPSEQ"].ToString());
  770. }
  771. if (string.IsNullOrWhiteSpace(ROUTECODE))
  772. {
  773. ICSBaseSimpleCode.AppshowMessageBox("未获取到途程,请维护");
  774. return;
  775. }
  776. if (string.IsNullOrWhiteSpace(OPCODE))
  777. {
  778. ICSBaseSimpleCode.AppshowMessageBox("未获取到工序,请维护");
  779. return;
  780. }
  781. if (OPSEQ <= 0)
  782. {
  783. ICSBaseSimpleCode.AppshowMessageBox("工序次序不符合规则,请重新维护");
  784. return;
  785. }
  786. }
  787. }
  788. else
  789. {
  790. ICSBaseSimpleCode.AppshowMessageBox("未获取到工单途程工序关系,请重新维护");
  791. return;
  792. }
  793. #endregion
  794. List<FormICSMO2LotUIModel> equipmentInfoList = new List<FormICSMO2LotUIModel>();
  795. //List<WM_BarCode> barcodeList = new List<WM_BarCode>();
  796. if (grvDetail.RowCount == 0)
  797. {
  798. ICSBaseSimpleCode.AppshowMessageBox("请先输入批数!");
  799. return;
  800. }
  801. int NUM = 0;
  802. for (int i = 0; i < grvDetail.RowCount; i++)
  803. {
  804. NUM += Convert.ToInt32(grvDetail.GetRowCellValue(i, colLOTQTY));
  805. }
  806. if (NUM != monum)
  807. {
  808. ICSBaseSimpleCode.AppshowMessageBox("批次总数量与计划工单数量不等!");
  809. return;
  810. }
  811. int row = 0;
  812. for (int i = 0; i < grvDetail.RowCount; i++)
  813. {
  814. // if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  815. // {
  816. FormICSMO2LotUIModel equipmentInfo = new FormICSMO2LotUIModel();
  817. equipmentInfo.ID = grvDetail.GetRowCellValue(i, colID).ToString();
  818. equipmentInfo.ItemCode = itemcode;
  819. equipmentInfo.TYPE = "工单";
  820. equipmentInfo.TransNO = grvDetail.GetRowCellValue(i, colMOCODE).ToString();
  821. equipmentInfo.TransLine = grvDetail.GetRowCellValue(i, colTransLine).ToString();
  822. equipmentInfo.LotNO = grvDetail.GetRowCellValue(i, colLOTNO).ToString();
  823. equipmentInfo.LOTQTY = Convert.ToInt32(grvDetail.GetRowCellValue(i, colLOTQTY));
  824. //equipmentInfo.ItemCode = grvDetail.GetRowCellValue(i, colMCODE).ToString();
  825. equipmentInfo.MUSER = AppConfig.UserId;
  826. equipmentInfo.MUSERName = AppConfig.UserName;
  827. equipmentInfo.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  828. equipmentInfo.WorkPoint = AppConfig.WorkPointCode;
  829. equipmentInfo.EATTRIBUTE1 = null;
  830. //20190916新增ZM
  831. equipmentInfo.EATTRIBUTE3 = Decimal.Parse(grvDetail.GetRowCellValue(i, colMOINPUTQTY).ToString());//辅助计量
  832. if (MOTYPE == "装配生产")
  833. {
  834. row++;
  835. equipmentInfo.VenderLotNO = grvDetail.GetRowCellValue(i, colMOVER).ToString() + "-" + row.ToString();//add by summer 2020.10.27
  836. equipmentInfo.EATTRIBUTE6 = "qichu" + row;
  837. equipmentInfo.EATTRIBUTE7 = grvDetail.GetRowCellValue(i, colMOVER).ToString() + "-" + row.ToString();
  838. }
  839. //dr["MOVER"] = MOVER;
  840. //dr["MOINPUTQTY"] = MOINPUTQTY;
  841. equipmentInfoList.Add(equipmentInfo);
  842. //20190711ZM
  843. LotNO = equipmentInfo.LotNO;
  844. //WM_BarCode barcode = new WM_BarCode();
  845. //barcode.guid = AppConfig.GetGuid();
  846. //barcode.SrcType = "WM_Order";
  847. //barcode.Srcguid = grvDetail.GetRowCellValue(i, colMOID).ToString();
  848. //barcode.RCVShipguid = grvDetail.GetRowCellValue(i, colMOID).ToString();
  849. //barcode.BarCodeNo = grvDetail.GetRowCellValue(i, colLOTNO).ToString();
  850. //barcode.BarCodeQty = Convert.ToInt32(grvDetail.GetRowCellValue(i, colLOTQTY).ToString());
  851. //DataTable dt=ICSMO2LotBLL.searchForItem(itemcode,AppConfig.AppConnectString);
  852. //if (dt != null && dt.Rows.Count > 0)
  853. //{
  854. // barcode.ItemGuid = dt.Rows[0]["guid"].ToString();
  855. // barcode.ItemName = dt.Rows[0]["ItemName"].ToString();
  856. //}
  857. //barcode.ItemCode=itemcode;
  858. //barcode.WorkPointCode = AppConfig.WorkPointCode;
  859. //barcode.BarCodeStatus = "new";
  860. //barcode.MUSERCode = AppConfig.UserCode;
  861. //barcode.MUSERName = AppConfig.UserName;
  862. //barcode.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  863. //barcodeList.Add(barcode);
  864. }
  865. try
  866. {
  867. #region ICSITEMLot
  868. //往ICSITEMLot表中插入数据
  869. ICSMO2LotBLL.Add(equipmentInfoList, AppConfig.AppConnectString);
  870. #endregion
  871. #region ICSITEMROUT2OPLot
  872. //往ICSITEMROUT2OPLot表中插入数据
  873. List<ICSITEMROUTE2OPLot> ITEMROUTE2OPList = new List<ICSITEMROUTE2OPLot>();
  874. //foreach (DataRow dr in dt.Rows)
  875. foreach (var item in equipmentInfoList)
  876. {
  877. foreach (DataRow dr in dt.Rows)
  878. {
  879. string ROUTECODE = string.Empty;
  880. string OPCODE = string.Empty;
  881. int OPSEQ = 0;
  882. ROUTECODE = dr["ROUTECODE"].ToString();
  883. OPCODE = dr["OPCODE"].ToString();
  884. OPSEQ = Int32.Parse(dr["OPSEQ"].ToString());
  885. if (string.IsNullOrWhiteSpace(ROUTECODE))
  886. {
  887. ICSBaseSimpleCode.AppshowMessageBox("未获取到途程,请维护");
  888. return;
  889. }
  890. if (string.IsNullOrWhiteSpace(OPCODE))
  891. {
  892. ICSBaseSimpleCode.AppshowMessageBox("未获取到工序,请维护");
  893. return;
  894. }
  895. if (OPSEQ <= 0)
  896. {
  897. ICSBaseSimpleCode.AppshowMessageBox("工序次序不符合规则,请重新维护");
  898. return;
  899. }
  900. string OPCONTROL = string.Empty;
  901. string OPTIONALOP = string.Empty;
  902. string IDMERGETYPE = string.Empty;
  903. string IDMERGERULE = string.Empty;
  904. string OPAttr = string.Empty;
  905. string CtrlType = string.Empty;
  906. string RouteMGR = string.Empty;
  907. string _sql_ = @"SELECT
  908. OPCONTROL,
  909. OPTIONALOP,
  910. IDMERGETYPE,
  911. IDMERGERULE,
  912. OPAttr,
  913. CtrlType,
  914. RouteMGR
  915. FROM
  916. ICSITEMROUTE2OP
  917. WHERE
  918. ITEMCODE='" + itemcode + "' AND ROUTECODE = '" + ROUTECODE + "' AND OPCODE = '" + OPCODE + "' AND OPSEQ = '" + OPSEQ + "'";
  919. _sql_ = string.Format(_sql_);
  920. DataTable _dt_ = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sql_).Tables[0];
  921. if (_dt_ != null && _dt_.Rows.Count > 0)
  922. {
  923. OPCONTROL = _dt_.Rows[0][0].ToString();
  924. OPTIONALOP = _dt_.Rows[0][1].ToString();
  925. IDMERGETYPE = _dt_.Rows[0][2].ToString();
  926. IDMERGERULE = _dt_.Rows[0][3].ToString();
  927. OPAttr = _dt_.Rows[0][4].ToString();
  928. CtrlType = _dt_.Rows[0][5].ToString();
  929. RouteMGR = _dt_.Rows[0][6].ToString();
  930. }
  931. ICSITEMROUTE2OPLot ITEMROUTE2OP = new ICSITEMROUTE2OPLot();
  932. ITEMROUTE2OP.ID = "";
  933. ITEMROUTE2OP.ITEMCODE = itemcode;
  934. ITEMROUTE2OP.LotNo = item.LotNO;// LotNO;
  935. ITEMROUTE2OP.ROUTECODE = ROUTECODE;
  936. ITEMROUTE2OP.OPCODE = OPCODE;
  937. ITEMROUTE2OP.OPSEQ = OPSEQ;
  938. ITEMROUTE2OP.OPCONTROL = OPCONTROL;
  939. ITEMROUTE2OP.OPTIONALOP = OPTIONALOP;
  940. ITEMROUTE2OP.IDMERGETYPE = IDMERGETYPE;
  941. ITEMROUTE2OP.IDMERGERULE = 0;
  942. ITEMROUTE2OP.MUSER = AppConfig.UserId;
  943. ITEMROUTE2OP.MUSERName = AppConfig.UserName;
  944. ITEMROUTE2OP.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  945. ITEMROUTE2OP.WorkPoint = AppConfig.WorkPointCode;
  946. ITEMROUTE2OP.EATTRIBUTE1 = null;
  947. ITEMROUTE2OP.CtrlType = CtrlType;
  948. ITEMROUTE2OP.OPAttr = OPAttr;
  949. ITEMROUTE2OP.RouteMGR = RouteMGR;
  950. ITEMROUTE2OPList.Add(ITEMROUTE2OP);
  951. }
  952. }
  953. #region 20190716
  954. // foreach (DataRow dr in dt.Rows)
  955. // //grvDetail.RowCount
  956. // {
  957. // string ROUTECODE = string.Empty;
  958. // string OPCODE = string.Empty;
  959. // int OPSEQ = 0;
  960. // ROUTECODE = dr["ROUTECODE"].ToString();
  961. // OPCODE = dr["OPCODE"].ToString();
  962. // OPSEQ = Int32.Parse(dr["OPSEQ"].ToString());
  963. // if (string.IsNullOrWhiteSpace(ROUTECODE))
  964. // {
  965. // ICSBaseSimpleCode.AppshowMessageBox("未获取到途程,请维护");
  966. // return;
  967. // }
  968. // if (string.IsNullOrWhiteSpace(OPCODE))
  969. // {
  970. // ICSBaseSimpleCode.AppshowMessageBox("未获取到工序,请维护");
  971. // return;
  972. // }
  973. // if (OPSEQ <= 0)
  974. // {
  975. // ICSBaseSimpleCode.AppshowMessageBox("工序次序不符合规则,请重新维护");
  976. // return;
  977. // }
  978. // string OPCONTROL = string.Empty;
  979. // string OPTIONALOP = string.Empty;
  980. // string IDMERGETYPE = string.Empty;
  981. // string IDMERGERULE = string.Empty;
  982. // string _sql_ = @"SELECT
  983. // OPCONTROL,
  984. // OPTIONALOP,
  985. // IDMERGETYPE,
  986. // IDMERGERULE
  987. // FROM
  988. // ICSITEMROUTE2OP
  989. // WHERE
  990. // ROUTECODE = '" + ROUTECODE + "' AND OPCODE = '" + OPCODE + "' AND OPSEQ = '" + OPSEQ + "'";
  991. // _sql_ = string.Format(_sql_);
  992. // DataTable _dt_ = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sql_).Tables[0];
  993. // if (_dt_ != null && _dt_.Rows.Count > 0)
  994. // {
  995. // OPCONTROL = _dt_.Rows[0][0].ToString();
  996. // OPTIONALOP = _dt_.Rows[0][1].ToString();
  997. // IDMERGETYPE = _dt_.Rows[0][2].ToString();
  998. // IDMERGERULE = _dt_.Rows[0][3].ToString();
  999. // }
  1000. // ICSITEMROUTE2OPLot ITEMROUTE2OP = new ICSITEMROUTE2OPLot();
  1001. // ITEMROUTE2OP.ITEMCODE = itemcode;
  1002. // ITEMROUTE2OP.LotNo = LotNO;
  1003. // ITEMROUTE2OP.ROUTECODE = ROUTECODE;
  1004. // ITEMROUTE2OP.OPCODE = OPCODE;
  1005. // ITEMROUTE2OP.OPSEQ = OPSEQ;
  1006. // ITEMROUTE2OP.OPCONTROL = OPCONTROL;
  1007. // ITEMROUTE2OP.OPTIONALOP = OPTIONALOP;
  1008. // ITEMROUTE2OP.IDMERGETYPE = IDMERGETYPE;
  1009. // ITEMROUTE2OP.IDMERGERULE = 0;
  1010. // ITEMROUTE2OP.MUSER = AppConfig.UserId;
  1011. // ITEMROUTE2OP.MUSERName = AppConfig.UserName;
  1012. // ITEMROUTE2OP.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  1013. // ITEMROUTE2OP.WorkPoint = AppConfig.WorkPointCode;
  1014. // ITEMROUTE2OP.EATTRIBUTE1 = null;
  1015. // ITEMROUTE2OPList.Add(ITEMROUTE2OP);
  1016. // }
  1017. #endregion
  1018. ICSMO2LotBLL.AddList(ITEMROUTE2OPList, AppConfig.AppConnectString);
  1019. #endregion
  1020. btnFalsh_Click(null, null);
  1021. ICSBaseSimpleCode.AppshowMessageBox("保存成功");
  1022. }
  1023. catch (Exception ex)
  1024. {
  1025. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1026. }
  1027. //}
  1028. }
  1029. private void repositoryItemButtonEdit1_BottonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  1030. {
  1031. ButtonEdit btn = (ButtonEdit)sender;
  1032. string sql = "select '新增' as 状态 union all select '使用' as 状态 union all select '停止' as 状态 WHERE 1=1";
  1033. //object obj = AppConfig.InvokeWebservice(AppConfig.BaseServiceUri, "WebBaseService", "BaseService", "GetHuaRongErpConnectString", new object[] { });
  1034. //if (obj == null)
  1035. //{
  1036. // ICSBaseSimpleCode.AppshowMessageBox(1, "ERP数据库连接取得失败!");
  1037. //}
  1038. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1039. FormDataRefer reForm = new FormDataRefer();
  1040. reForm.FormTitle = "批次状态";
  1041. DataTable menuData = data;
  1042. reForm.DataSource = menuData;
  1043. reForm.MSelectFlag = false;
  1044. reForm.RowIndexWidth = 35;
  1045. reForm.HideCols.Add("ID");
  1046. reForm.FormWidth = 500;
  1047. reForm.FormHeight = 500;
  1048. //reForm.FilterKey = btn.Text;
  1049. //grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString().Trim();
  1050. if (reForm.ShowDialog() == DialogResult.OK)
  1051. {
  1052. DataTable retData = reForm.ReturnData;
  1053. foreach (DataRow dr in retData.Rows)
  1054. {
  1055. if (grvDetail.FocusedColumn == colLOTStatus)
  1056. {
  1057. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colLOTStatus, dr["状态"].ToString());
  1058. }
  1059. }
  1060. }
  1061. }
  1062. private void txtLOTQTY_KeyDown(object sender, KeyEventArgs e)
  1063. {
  1064. try
  1065. {
  1066. if (e.KeyCode == Keys.Enter)
  1067. {
  1068. int lotqty = int.Parse(txtLOTQTY.Text.Trim());
  1069. int count = Convert.ToInt32(Math.Ceiling(monum * 1.0 / lotqty));
  1070. txtCount.Text = count.ToString();
  1071. }
  1072. }
  1073. catch (Exception ex)
  1074. {
  1075. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1076. }
  1077. }
  1078. private void txtCount_KeyDown(object sender, KeyEventArgs e)
  1079. {
  1080. try
  1081. {
  1082. if (e.KeyCode == Keys.Enter)
  1083. {
  1084. int count = int.Parse(txtCount.Text.Trim());
  1085. double lotqty = Math.Ceiling(monum * 1.0 / count);
  1086. txtLOTQTY.Text = lotqty.ToString();
  1087. }
  1088. }
  1089. catch (Exception ex)
  1090. {
  1091. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1092. }
  1093. }
  1094. }
  1095. }