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

2166 lines
103 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. using System.Reflection;
  23. using DevExpress.XtraGrid.Views.Grid;
  24. using DevExpress.Data.Filtering;
  25. using DevExpress.XtraEditors.Repository;
  26. using System.Net;
  27. using System.IO;
  28. using ICSSoft.Entity.PU_AppVouch;
  29. using System.Configuration;
  30. using Newtonsoft.Json;
  31. using ICSSoft.Frame.Data.Entity.WWModel;
  32. namespace ICSSoft.Frame.APP
  33. {
  34. public partial class FormICSMO2UserSend : DevExpress.XtraEditors.XtraForm
  35. {
  36. static string APIURL = System.Configuration.ConfigurationSettings.AppSettings["APIURL"].ToString();
  37. static string DataCollectWW = APIURL + "APICreateInventory_PU_AppVouch";
  38. private string sqltxt = "";
  39. private string sqlconn = "";
  40. String guid = AppConfig.GetGuid();
  41. private DataTable dataUser = null;
  42. private DataTable data = null;
  43. private DataTable dtSend = null;
  44. private DataTable _dtSend = null;
  45. private bool isQueryCloseUp = false;
  46. private bool isQueryCloseUpEQP = false;
  47. //WorkPointBLL workBll = new WorkPointBLL();
  48. #region 构造函数
  49. public FormICSMO2UserSend(string MOID)
  50. {
  51. InitializeComponent();
  52. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  53. this.WindowState = FormWindowState.Maximized;
  54. txtPlanDate.Text = AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString();
  55. SearchMO(MOID);
  56. //SearchItemLotInfo(MOID);
  57. }
  58. #endregion
  59. #region 移动窗体
  60. private const int WM_NCHITTEST = 0x84;
  61. private const int HTCLIENT = 0x1;
  62. private const int HTCAPTION = 0x2;
  63. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  64. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  65. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  66. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  67. //重写窗体,使窗体可以不通过自带标题栏实现移动
  68. protected override void WndProc(ref Message m)
  69. {
  70. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  71. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  72. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  73. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  74. switch (m.Msg)
  75. {
  76. case WM_NCHITTEST:
  77. base.WndProc(ref m);
  78. if ((int)m.Result == HTCLIENT)
  79. m.Result = (IntPtr)HTCAPTION;
  80. return;
  81. }
  82. //拦截双击标题栏、移动窗体的系统消息
  83. if (m.Msg != 0xA3)
  84. {
  85. base.WndProc(ref m);
  86. }
  87. }
  88. #endregion
  89. #region SystemOptition
  90. /// <summary>
  91. /// 操作权限
  92. /// </summary>
  93. /// <returns></returns>
  94. public DataTable RightOfExute()
  95. {
  96. DataTable rData = new DataTable();
  97. rData.Columns.Add("BtnName");
  98. rData.Columns.Add("ActionName");
  99. //查看权限(必须有)
  100. DataRow seeRow = rData.NewRow();
  101. seeRow["BtnName"] = "see";
  102. seeRow["ActionName"] = "查看";
  103. rData.Rows.Add(seeRow);
  104. List<Control> ControlList = new List<Control>();
  105. ControlList.Add(btnSave);
  106. ControlList.Add(btnSelect);
  107. ControlList.Add(btnCanSelect);
  108. ControlList.Add(txtcancelSend);
  109. ControlList.Add(btnPrint);
  110. ControlList.Add(btnOutPut);
  111. ControlList.Add(btnFalsh);
  112. ControlList.Add(btnSavePRWW);
  113. ControlList.Add(btnExit);
  114. //ControlList.Add(btnDelLable);
  115. foreach (Control ctr in ControlList)
  116. {
  117. if (ctr.GetType() == typeof(SimpleButton))
  118. {
  119. DataRow dr = rData.NewRow();
  120. dr["BtnName"] = ctr.Name;
  121. dr["ActionName"] = ctr.Text;
  122. rData.Rows.Add(dr);
  123. }
  124. }
  125. rData.AcceptChanges();
  126. return rData;
  127. }
  128. /// <summary>
  129. /// 数据权限
  130. /// </summary>
  131. /// <returns></returns>
  132. public DataTable RightOfData()
  133. {
  134. DataTable rData = new DataTable();
  135. rData.Columns.Add("BodyName");
  136. rData.Columns.Add("ControlName");
  137. rData.Columns.Add("ControlCaption");
  138. rData.AcceptChanges();
  139. return rData;
  140. }
  141. #endregion
  142. #region 退出
  143. private void btnClose_Click(object sender, EventArgs e)
  144. {
  145. AppConfig.CloseFormShow(this.Text);
  146. this.Close();
  147. }
  148. private void btnExit_Click(object sender, EventArgs e)
  149. {
  150. AppConfig.CloseFormShow(this.Text);
  151. this.Close();
  152. }
  153. #endregion
  154. //#region 过滤
  155. //private string tempTableName = "";
  156. //private void btnFilter_Click(object sender, EventArgs e)
  157. //{
  158. // FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  159. // filter.OldTempTableName = tempTableName;
  160. // if (filter.ShowDialog() == DialogResult.OK)
  161. // {
  162. // DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  163. // try
  164. // {
  165. // _wait.Show();
  166. // tempTableName = filter.NewTempTableName;
  167. // sqltxt = filter.SqlText;
  168. // sqlconn = filter.FilterConnectString;
  169. // dataSource = filter.FilterData.Tables[0];
  170. // grdDetail.DataSource = dataSource;
  171. // grvDetail.BestFitColumns();
  172. // rptPage.RecordNum = dataSource.Rows.Count;
  173. // rptPage.PageSize = 500;
  174. // rptPage.PageIndex = 1;
  175. // rptPage.ReLoad();
  176. // _wait.Close();
  177. // }
  178. // catch (Exception ex)
  179. // {
  180. // MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  181. // _wait.Close();
  182. // }
  183. // }
  184. //}
  185. //#endregion
  186. #region 全选
  187. private void btnSelect_Click(object sender, EventArgs e)
  188. {
  189. for (int i = 0; i < gridView1.RowCount; i++)
  190. {
  191. gridView1.SetRowCellValue(i, colisSelect, "Y");
  192. }
  193. }
  194. #endregion
  195. #region 全消
  196. private void btnCanSelect_Click(object sender, EventArgs e)
  197. {
  198. for (int i = 0; i < gridView1.RowCount; i++)
  199. {
  200. gridView1.SetRowCellValue(i, colisSelect, "");
  201. }
  202. }
  203. #endregion
  204. #region 刷新
  205. private void btnFalsh_Click(object sender, EventArgs e)
  206. {
  207. FormICSFACTORY_Load(null, null);
  208. }
  209. #endregion
  210. #region 列表
  211. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  212. {
  213. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  214. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  215. }
  216. #endregion
  217. #region 双击选择
  218. private void gridView1_DoubleClick(object sender, EventArgs e)
  219. {
  220. if (gridView1.FocusedRowHandle < 0)
  221. {
  222. return;
  223. }
  224. if (gridView1.FocusedColumn == colisSelect)
  225. {
  226. if (gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colisSelect).ToString() == "")
  227. {
  228. gridView1.SetRowCellValue(gridView1.FocusedRowHandle, colisSelect, "Y");
  229. }
  230. else
  231. {
  232. gridView1.SetRowCellValue(gridView1.FocusedRowHandle, colisSelect, "");
  233. }
  234. }
  235. }
  236. #endregion
  237. //#region 绑定数据源
  238. //private void btnConfig_Click(object sender, EventArgs e)//绑定数据源
  239. //{
  240. // if (AppConfig.UserCode.ToLower() != "demo")
  241. // {
  242. // //ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
  243. // return;
  244. // }
  245. // FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
  246. // fdata.ShowDialog();
  247. //}
  248. //#endregion
  249. #region 加载
  250. private void FormICSFACTORY_Load(object sender, EventArgs e)
  251. {
  252. try
  253. {
  254. List<string> LotNo2 = new List<string>();
  255. string sql = @"SELECT '' AS [isSelect], LOTNO AS LOTNO, EATTRIBUTE7 AS VenderLotNO, EATTRIBUTE6 AS LotNo2
  256. FROM ICSITEMLot WHERE TransNO = '{0}' AND TransLine = '{1}' ORDER BY LOTNO ";
  257. sql = string.Format(sql, txtMOCODE.Text, txtMOSEQ.Text);
  258. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  259. #region add by summer 2020.06.17
  260. if (dt.Rows.Count > 0 && dt != null)
  261. {
  262. foreach (DataRow dr in dt.Rows)
  263. {
  264. if (dr["LotNo2"].ToString() != "")
  265. {
  266. if (LotNo2.Contains(dr["LotNo2"].ToString()))
  267. {
  268. throw new Exception("扫描批次栏位存在重复值,重复值:" + dr["LotNo2"].ToString());
  269. }
  270. else
  271. {
  272. LotNo2.Add(dr["LotNo2"].ToString());
  273. }
  274. }
  275. }
  276. }
  277. #endregion
  278. gridControl1.DataSource = dt;
  279. gridView1.BestFitColumns();
  280. BindCustomDrawRowIndicator(gridView1);
  281. string sql2 = "";
  282. #region
  283. // sql2 = @" SELECT
  284. // '' AS [isSelect],
  285. // '' AS ID,
  286. // c.OPCODE AS OPCODE,
  287. // c.OPSEQ AS OPSEQ,
  288. // d.OPDESC AS OPDESC,
  289. // '' AS USERCODE,
  290. // '' AS USERName,
  291. // '' AS EQPCode,
  292. // '' AS EQPName,
  293. // '' AS MUSERName,
  294. // '' AS MTIME,--e.EQPTypeCode AS EQPType,
  295. // getdate() AS StartPlanDate, getdate() AS EndPlanDate
  296. // FROM
  297. // ICSMO a
  298. // LEFT JOIN ICSMO2ROUTE b ON a.MOCODE=b.MOCODE
  299. // LEFT JOIN ICSITEMROUTE2OP c ON b.ROUTECODE=c.ROUTECODE and a.ITEMCODE=c.ITEMCODE
  300. // LEFT JOIN ICSOP d ON c.OPID = d.ID
  301. // --LEFT JOIN ICSEQPSTP e ON c.ITEMCODE=e.ITEMCODE AND c.OPCODE=e.OPCODE AND e.ISREF='是'
  302. // WHERE
  303. // a.MOCODE = '{0}' AND a.MOSEQ='{1}'
  304. // ORDER BY c.OPSEQ";
  305. #endregion
  306. //20190716ZM 是否委外
  307. sql2 = @" SELECT
  308. '' AS [isSelect],
  309. '' AS ID,
  310. c.OPCODE AS OPCODE,
  311. c.OPSEQ AS OPSEQ,
  312. d.OPDESC AS OPDESC,
  313. '' AS USERCODE,
  314. '' AS USERName,
  315. '' AS EQPCode,
  316. '' AS EQPName,
  317. '' AS MUSERName,
  318. '' AS MTIME,--e.EQPTypeCode AS EQPType,
  319. CAST(ISNULL(b.EATTRIBUTE1, 0) AS BIT) as EATTRIBUTE1,
  320. getdate() AS StartPlanDate, getdate() AS EndPlanDate
  321. FROM
  322. ICSMO a
  323. LEFT JOIN ICSMO2ROUTE b ON a.MOCODE=b.MOCODE
  324. LEFT JOIN ICSITEMROUTE2OP c ON b.ROUTECODE=c.ROUTECODE and a.ITEMCODE=c.ITEMCODE
  325. LEFT JOIN ICSOP d ON c.OPID = d.ID
  326. --LEFT JOIN ICSEQPSTP e ON c.ITEMCODE=e.ITEMCODE AND c.OPCODE=e.OPCODE AND e.ISREF='是'
  327. WHERE
  328. a.MOCODE = '{0}' AND a.MOSEQ='{1}'
  329. ORDER BY c.OPSEQ";
  330. sql2 = string.Format(sql2, txtMOCODE.Text, txtMOSEQ.Text);
  331. dtSend = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql2).Tables[0];
  332. #region
  333. // if (dtSend.Rows.Count != 0)
  334. // {
  335. // if (dtSend.Rows[0]["OPCODE"].ToString() == "")
  336. // {
  337. // sql2 = @" SELECT
  338. // '' AS [isSelect],
  339. // '' AS ID,
  340. // c.OPCODE AS OPCODE,
  341. // c.OPSEQ AS OPSEQ,
  342. // d.OPDESC AS OPDESC,
  343. // '' AS USERCODE,
  344. // '' AS USERName,
  345. // '' AS EQPCode,
  346. // '' AS EQPName,
  347. // '' AS MUSERName,
  348. // '' AS MTIME,f.EQPTypeCode AS EQPType,
  349. // getdate() AS SendPlanDate
  350. // FROM
  351. // ICSMO a
  352. // LEFT JOIN ICSMO2ROUTE b ON a.MOCODE=b.MOCODE
  353. // LEFT JOIN Base_Inventory e ON a.ITEMCODE=e.ItemCode
  354. // LEFT JOIN ICSMODELROUTE2OP c ON b.ROUTECODE=c.ROUTECODE and e.ItemMainCategoryCode=c.MODELCODE
  355. // LEFT JOIN ICSOP d ON c.OPID = d.ID
  356. // LEFT JOIN ICSEQPSTP f ON e.ITEMCODE=f.ITEMCODE AND c.OPCODE=f.OPCODE
  357. // AND f.ISREF='是'
  358. // WHERE
  359. // a.MOCODE = '{0}'
  360. // ORDER BY c.OPSEQ";
  361. // sql2 = string.Format(sql2, txtMOCODE.Text);
  362. // dtSend = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql2).Tables[0];
  363. // }
  364. // }
  365. #endregion
  366. //20190731ZM
  367. grdDetail.DataSource = null;// dtSend;
  368. grvDetail.BestFitColumns();
  369. //BoundData();
  370. BoundEQPData();
  371. BoundGridLookUpData();
  372. }
  373. catch (Exception ex)
  374. {
  375. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  376. }
  377. }
  378. #endregion
  379. #region 数据源
  380. private void SearchMO(string MOID)
  381. {
  382. try
  383. {
  384. string sql = @"
  385. SELECT A.MOCODE AS MOCODE, A.MOSEQ AS MOSEQ, '' AS SEGCODE,
  386. A.MOVER AS ProjectCode, A.MOPLANQTY AS MOPLANQTY, A.MOPLANSTARTDATE AS MOPLANSTARTDATE,
  387. A.MOPLANENDDATE AS MOPLANENDDATE, B.ROUTECODE AS RouteCode,
  388. A.ITEMCODE AS ITEMCODE, C.INVNAME AS ItemName FROM ICSMO A
  389. LEFT JOIN ICSMO2ROUTE B ON A.ID = B.MOID --LEFT JOIN ICSMO2ROUTE B ON A.MOCODE = B.MOCODE --BY SUMMER 2020.06.17
  390. LEFT JOIN ICSINVENTORY c ON a.ITEMCODE = c.INVCODE
  391. GROUP BY A.ID, A.MOCODE, A.MOSEQ, A.MOVER, A.MOPLANQTY, A.MOPLANSTARTDATE,
  392. A.MOPLANENDDATE, B.ROUTECODE, A.ITEMCODE, C.INVNAME
  393. HAVING A.ID = '{0}' ";
  394. sql = string.Format(sql, MOID);
  395. SqlDataReader rd = DBHelper.ExecuteReader(AppConfig.AppConnectString, CommandType.Text, sql);
  396. while (rd.Read())
  397. {
  398. txtMOSEQ.Text = rd["MOSEQ"].ToString();
  399. txtMOCODE.Tag = rd["MOCODE"].ToString();
  400. txtProjectCode.Tag = rd["SEGCODE"].ToString();
  401. txtMOCODE.Text = rd["MOCODE"].ToString();
  402. txtProjectCode.Text = rd["ProjectCode"].ToString();
  403. txtMOPLANQTY.Text = rd["MOPLANQTY"].ToString();
  404. txtMOPLANSTARTDATE.Text = rd["MOPLANSTARTDATE"].ToString();
  405. txtMOPLANENDDATE.Text = rd["MOPLANENDDATE"].ToString();
  406. txtRouteCode.Text = rd["RouteCode"].ToString();
  407. txtITEMCODE.Text = rd["ITEMCODE"].ToString();
  408. txtItemName.Text = rd["ItemName"].ToString();
  409. }
  410. }
  411. catch (Exception ex)
  412. {
  413. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  414. }
  415. }
  416. private void SearchItemLotInfo(string MOID)
  417. {
  418. try
  419. {
  420. string sql = @"select LOTNO,LOTQTY
  421. from ICSITEMLot a
  422. INNER JOIN ICSMO b ON a.TransNO=b.MOCODE AND a.TransLine=b.MOSEQ
  423. where b.ID = '{0}' order by LOTNO";
  424. sql = string.Format(sql, MOID);
  425. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  426. //txtLOTNO.DisplayMember = "LOTNO"; //显示名称
  427. //txtLOTNO.ValueMember = "LOTQTY"; //value 值
  428. //txtLOTNO.DataSource = data.DefaultView;
  429. //if (txtLOTNO.Items.Count > 0)
  430. //{
  431. // txtLOTNO.SelectedIndex = 0;
  432. //}
  433. }
  434. catch (Exception ex)
  435. {
  436. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  437. }
  438. }
  439. #endregion
  440. //20190807ZM
  441. RepositoryItem _disabledItem;
  442. private void grvDetail_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
  443. {
  444. //ONWIP
  445. //if (e.Column == OPSEQ || e.Column == OPCODE)
  446. if (e.Column == colEATTRIBUTE1)
  447. {
  448. if (_disabledItem == null)
  449. {
  450. _disabledItem = (RepositoryItem)e.RepositoryItem.Clone();
  451. _disabledItem.ReadOnly = true;
  452. _disabledItem.Enabled = false;
  453. }
  454. //满足条件,设置成只读
  455. if (Convert.ToBoolean(grvDetail.GetRowCellValue(e.RowHandle, colONWIP)))
  456. {
  457. e.RepositoryItem = _disabledItem;
  458. }
  459. }
  460. }
  461. #region 保存
  462. private void btnSave_Click(object sender, EventArgs e)
  463. {
  464. /*20190722ZM
  465. * 1
  466. * 2
  467. */
  468. string lotno = "";
  469. List<string> lotnoList = new List<string>();
  470. List<FormICSMO2UserUIModel> MO2UserInfoList = new List<FormICSMO2UserUIModel>();
  471. for (int i = 0; i < gridView1.RowCount; i++)
  472. {
  473. if (gridView1.GetRowCellValue(i, colisSelect).ToString() == "Y")
  474. {
  475. lotno = gridView1.GetRowCellValue(i, colLOTNO).ToString();
  476. lotnoList.Add(lotno);
  477. }
  478. }
  479. if (lotnoList.Count < 1)
  480. {
  481. ICSBaseSimpleCode.AppshowMessageBox("请选择需要下发的产品跟踪单号!!!");
  482. return;
  483. }
  484. List<string> strList = new List<string>();
  485. List<string> _strList = new List<string>();
  486. //20190722ZM
  487. if (lotnoList.Count > 0)
  488. {
  489. //string str0 = string.Empty;
  490. bool isEqually = false;
  491. string _str = string.Empty;
  492. foreach (var item in lotnoList)
  493. {
  494. string str = string.Empty;
  495. str = GetStrByLotNo(item);
  496. strList.Add(str);
  497. }
  498. if (strList != null && strList.Count > 0)
  499. {
  500. for (int i = 0; i < strList.Count; i++)
  501. {
  502. if (strList[0].CompareTo(strList[i]) == 0)
  503. {
  504. isEqually = true;
  505. }
  506. else
  507. {
  508. isEqually = false;
  509. _str += lotnoList[i].ToString() + " ";
  510. }
  511. }
  512. }
  513. if (!string.IsNullOrWhiteSpace(_str))
  514. {
  515. ICSBaseSimpleCode.AppshowMessageBox(_str + "批次关联工序不一致,不能批量保存!");
  516. return;
  517. }
  518. }
  519. //colEATTRIBUTE1委外
  520. if (lotnoList.Count > 0)
  521. {
  522. bool isEqually = false;
  523. string _str_ = string.Empty;
  524. foreach (var item in lotnoList)
  525. {
  526. string str = string.Empty;
  527. str = GetStrWWByLotNo(item);
  528. _strList.Add(str);
  529. }
  530. if (_strList != null && _strList.Count > 0)
  531. {
  532. for (int i = 0; i < _strList.Count; i++)
  533. {
  534. if (_strList[0].CompareTo(_strList[i]) == 0)
  535. {
  536. isEqually = true;
  537. }
  538. else
  539. {
  540. isEqually = false;
  541. _str_ += lotnoList[i].ToString() + " ";
  542. }
  543. }
  544. }
  545. if (!string.IsNullOrWhiteSpace(_str_))
  546. {
  547. ICSBaseSimpleCode.AppshowMessageBox(_str_ + "批次关联是否委外不一致,不能批量保存!");
  548. return;
  549. }
  550. }
  551. //只要考虑左侧的其中一个批次和右侧加载出的数据是否一致20190722ZM
  552. string strrr = string.Empty;
  553. strrr = GetStrByLotNo(lotnoList[0].ToString());
  554. string _strrr = string.Empty;
  555. for (int i = 0; i < grvDetail.RowCount; i++)
  556. {
  557. string _OPCODE = string.Empty;
  558. string _OPSEQ = string.Empty;
  559. _OPCODE = grvDetail.GetRowCellValue(i, colOPCODE).ToString();
  560. _OPSEQ = grvDetail.GetRowCellValue(i, colOPSEQ).ToString();
  561. _strrr += _OPCODE + _OPSEQ;
  562. }
  563. if (!string.IsNullOrWhiteSpace(strrr))
  564. {
  565. if (strrr.CompareTo(_strrr) != 0)
  566. {
  567. ICSBaseSimpleCode.AppshowMessageBox("批次关联工序和右侧列表工序不一致,不能保存!");
  568. return;
  569. }
  570. }
  571. for (int j = 0; j < lotnoList.Count; j++)
  572. {
  573. for (int i = 0; i < grvDetail.RowCount; i++)
  574. {
  575. FormICSMO2UserUIModel MO2UserInfo = new FormICSMO2UserUIModel();
  576. MO2UserInfo.ID = grvDetail.GetRowCellValue(i, colID).ToString();
  577. MO2UserInfo.MOCODE = txtMOCODE.Text.ToString();
  578. //MO2UserInfo.MOSEQ = Convert.ToInt32(txtMOCODE.Tag.ToString());
  579. MO2UserInfo.MOSEQ = Convert.ToInt32(txtMOSEQ.Text.ToString());
  580. MO2UserInfo.LOTNO = lotnoList[j];
  581. MO2UserInfo.SEGCODE = txtProjectCode.Tag.ToString();
  582. MO2UserInfo.RouteCode = txtRouteCode.Text.ToString();
  583. MO2UserInfo.OPCODE = grvDetail.GetRowCellValue(i, colOPCODE).ToString();
  584. MO2UserInfo.USERCODE = grvDetail.GetRowCellValue(i, colUSERCODE).ToString();
  585. MO2UserInfo.USERName = grvDetail.GetRowCellValue(i, colUSERName).ToString();
  586. MO2UserInfo.EQPCode = grvDetail.GetRowCellValue(i, colEQPCode).ToString();
  587. MO2UserInfo.EQPName = grvDetail.GetRowCellValue(i, colEQPName).ToString();
  588. MO2UserInfo.MUSER = AppConfig.UserCode;
  589. MO2UserInfo.MUSERName = AppConfig.UserName;
  590. MO2UserInfo.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  591. MO2UserInfo.WorkPoint = AppConfig.WorkPointCode;
  592. string colPRLine_ = grvDetail.GetRowCellValue(i, colPRLine).ToString();
  593. if (!string.IsNullOrWhiteSpace(colPRLine_))
  594. {
  595. if (colPRLine_ == "False" || colPRLine_ == "0")
  596. {
  597. MO2UserInfo.PRLineID = null;
  598. }
  599. else
  600. {
  601. string sql = @"select TOP 50 PRLineID,* from ICSMO2User where MOCODE='" + MO2UserInfo.MOCODE + "' AND LOTNO='" + lotnoList[j] + "' AND OPCODE='" + MO2UserInfo.OPCODE + "'";
  602. DataTable dtPRLine = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  603. if (dtPRLine != null && dtPRLine.Rows.Count > 0)
  604. {
  605. foreach (DataRow item in dtPRLine.Rows)
  606. {
  607. MO2UserInfo.PRLineID = item["PRLineID"].ToString();
  608. }
  609. }
  610. }
  611. }
  612. if (grvDetail.GetRowCellValue(i, colEATTRIBUTE1).ToString() == "True")
  613. {
  614. MO2UserInfo.EATTRIBUTE1 = "1";
  615. //2020.06.23 summer
  616. if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString()))
  617. {
  618. MO2UserInfo.StartPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString());
  619. }
  620. else
  621. {
  622. ICSBaseSimpleCode.AppshowMessageBox("预计开工日期不能为空");
  623. return;
  624. }
  625. if (!string.IsNullOrEmpty(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString()))
  626. {
  627. MO2UserInfo.EndPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString());
  628. }
  629. else
  630. {
  631. ICSBaseSimpleCode.AppshowMessageBox("预下机日期不能为空");
  632. return;
  633. }
  634. if (DateTime.Compare(Convert.ToDateTime(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString()).Date, Convert.ToDateTime(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString()).Date) > 0)
  635. {
  636. ICSBaseSimpleCode.AppshowMessageBox("下机时间不能早于开工时间");
  637. return;
  638. }
  639. //if (DateTime.Compare(Convert.ToDateTime(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString()).Date, DateTime.Now.Date) < 0)
  640. //{
  641. // ICSBaseSimpleCode.AppshowMessageBox("预开工时间不能早于当前时间");
  642. // return;
  643. //}
  644. }
  645. else
  646. {
  647. MO2UserInfo.EATTRIBUTE1 = "0";
  648. //2020.06.23 summer
  649. if (!string.IsNullOrWhiteSpace(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString()))
  650. MO2UserInfo.StartPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString());
  651. if (!string.IsNullOrWhiteSpace(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString()))
  652. MO2UserInfo.EndPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString());
  653. MO2UserInfo.PRLineID = null;
  654. }
  655. #region 2020.06.23 summer
  656. //MO2UserInfo.EATTRIBUTE1 = grvDetail.GetRowCellValue(i, colEATTRIBUTE1).ToString();//20190717ZM
  657. //if (!string.IsNullOrWhiteSpace(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString()))
  658. // MO2UserInfo.StartPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colStartPlanDate).ToString());
  659. //if (!string.IsNullOrWhiteSpace(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString()))
  660. // MO2UserInfo.EndPlanDate = Convert.ToDateTime(grvDetail.GetRowCellValue(i, colEndPlanDate).ToString());
  661. #endregion
  662. MO2UserInfoList.Add(MO2UserInfo);
  663. #region
  664. //if (string.IsNullOrEmpty(MO2UserInfo.EQPCode) || string.IsNullOrEmpty(MO2UserInfo.EQPName))
  665. //{
  666. // ICSBaseSimpleCode.AppshowMessageBox("设备编号、设备名称 均不能为空!");
  667. // return;
  668. //}
  669. #endregion
  670. }
  671. }
  672. try
  673. {
  674. ICSMO2UserBLL.Add(MO2UserInfoList, AppConfig.AppConnectString);
  675. ICSBaseSimpleCode.AppshowMessageBox(0, "保存成功");
  676. }
  677. catch (Exception ex)
  678. {
  679. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  680. }
  681. btnFalsh_Click(null, null);
  682. }
  683. #endregion
  684. #region 20190722ZM
  685. public static string GetStrByLotNo(string lotNo)
  686. {
  687. string str = string.Empty;
  688. DataTable _dtSend = null;
  689. string _sql = @"SELECT DISTINCT
  690. d.OPCODE AS OPCODE,
  691. d.OPSEQ AS OPSEQ
  692. FROM
  693. ICSMO a
  694. LEFT JOIN ICSMO2ROUTE b ON a.ID = b.MOID
  695. LEFT JOIN ICSITEMLot c ON a.MOCODE = c.TransNO
  696. AND a.MOSEQ = c.TransLine
  697. LEFT JOIN ICSITEMROUTE2OPLot d ON b.ROUTECODE = d.ROUTECODE
  698. AND c.LotNO = d.LotNo
  699. AND a.ITEMCODE = d.ITEMCODE
  700. WHERE
  701. c.LOTNO = '" + lotNo + "' ORDER BY d.OPSEQ ";
  702. _sql = string.Format(_sql);
  703. _dtSend = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sql).Tables[0];
  704. if (_dtSend != null && _dtSend.Rows.Count > 0)
  705. {
  706. foreach (DataRow item in _dtSend.Rows)
  707. {
  708. str += item["OPCODE"].ToString() + item["OPSEQ"].ToString();
  709. }
  710. }
  711. return str;
  712. }
  713. #endregion
  714. #region MyRegion
  715. public static string GetStrWWByLotNo(string lotNo)
  716. {
  717. string str = string.Empty;
  718. DataTable _dtSend = null;
  719. string _sql = @" SELECT DISTINCT
  720. CAST (
  721. ISNULL(f.EATTRIBUTE1, 0) AS BIT
  722. ) AS EATTRIBUTE1,
  723. d.OPCODE AS OPCODE
  724. FROM
  725. ICSMO a
  726. LEFT JOIN ICSMO2ROUTE b ON a.ID = b.MOID
  727. LEFT JOIN ICSITEMLot c ON a.MOCODE = c.TransNO
  728. AND a.MOSEQ = c.TransLine
  729. LEFT JOIN ICSITEMROUTE2OPLot d ON b.ROUTECODE = d.ROUTECODE AND c.LotNO=d.LotNo
  730. AND a.ITEMCODE = d.ITEMCODE
  731. LEFT JOIN ICSOP e ON d.OPCODE = e.OPCODE
  732. LEFT JOIN ICSMO2User f ON e.OPCODE = f.OPCODE
  733. AND c.LOTNO = f.LOTNO
  734. WHERE
  735. c.LOTNO = '"+lotNo+"' ORDER BY d.OPCODE ";
  736. _sql = string.Format(_sql);
  737. _dtSend = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, _sql).Tables[0];
  738. if (_dtSend != null && _dtSend.Rows.Count > 0)
  739. {
  740. foreach (DataRow item in _dtSend.Rows)
  741. {
  742. str += item["EATTRIBUTE1"].ToString() + item["OPCODE"].ToString();
  743. }
  744. }
  745. return str;
  746. }
  747. #endregion
  748. #region 删除
  749. private void btnDel_Click(object sender, EventArgs e)
  750. {
  751. //SimpleButton btntemp = (SimpleButton)sender;
  752. //if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  753. //{
  754. // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  755. // return;
  756. //}
  757. List<string> IDList = new List<string>();
  758. for (int i = 0; i < grvDetail.RowCount; i++)
  759. {
  760. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  761. {
  762. IDList.Add(grvDetail.GetRowCellValue(i, colID).ToString());
  763. }
  764. }
  765. if (IDList.Count == 0 || IDList == null)
  766. {
  767. ICSBaseSimpleCode.AppshowMessageBox("请选择数据");
  768. return;
  769. }
  770. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除吗?删除后无法恢复,确定吗?") != DialogResult.OK)
  771. {
  772. btnCanSelect_Click(sender, e);
  773. return;
  774. }
  775. ICSMO2UserBLL.deleteInfo(IDList, AppConfig.AppConnectString);
  776. ICSBaseSimpleCode.AppshowMessageBox("删除成功");
  777. btnFalsh_Click(null, null);
  778. }
  779. #endregion
  780. #region 导出
  781. private void btnOutPut_Click(object sender, EventArgs e)
  782. {
  783. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  784. foe.ShowDialog();
  785. }
  786. #endregion
  787. // #region 批号改变
  788. // private void txtLOTNO_SelectedIndexChanged(object sender, EventArgs e)
  789. // {
  790. // txtLOTQTY.Text = txtLOTNO.SelectedValue.ToString();
  791. // try
  792. // {
  793. // string sql = @" SELECT
  794. // '' AS [isSelect],
  795. // e.ID AS ID,
  796. // b.OPCODE AS OPCODE,
  797. // b.OPSEQ AS OPSEQ,
  798. // d.OPDESC AS OPDESC,
  799. // e.USERCODE AS USERCODE,
  800. // e.USERName AS USERName,
  801. // e.EQPCode AS EQPCode,
  802. // e.EQPName AS EQPName,
  803. // e.MUSERName AS MUSERName,
  804. // e.MTIME AS MTIME
  805. // FROM
  806. // ICSMO a
  807. // RIGHT JOIN ICSITEMROUTE2OP b ON a.ITEMCODE = b.ITEMCODE
  808. // LEFT JOIN ICSMO2Lot c ON a.MOCODE = c.MOCODE
  809. // LEFT JOIN ICSOP d ON b.OPID = d.ID
  810. // LEFT JOIN ICSMO2User e ON b.OPCODE = e.OPCODE
  811. // AND c.LOTNO = e.LOTNO
  812. // WHERE
  813. // c.LOTNO = '{0}'
  814. // ORDER BY b.OPSEQ";
  815. // sql = string.Format(sql, txtLOTNO.Text);
  816. // DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  817. // grdDetail.DataSource = dt;
  818. // sqltxt = sql;
  819. // sqlconn = AppConfig.AppConnectString;
  820. // }
  821. // catch (Exception ex)
  822. // {
  823. // MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  824. // }
  825. // }
  826. // #endregion
  827. #region 下发人员按钮
  828. private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  829. {
  830. string OPCODE = "";
  831. //if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "Y")
  832. //{
  833. OPCODE = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colOPCODE).ToString();
  834. //}
  835. //else
  836. //{
  837. // ICSBaseSimpleCode.AppshowMessageBox("请选择当前数据后再进行编辑!!!");
  838. // return;
  839. //}
  840. ButtonEdit btn = (ButtonEdit)sender;
  841. string sql = "select USERCODE as [人员代码],USERName as [人员名称] from dbo.ICSOP2User with(nolock) WHERE OPCODE='{0}'";
  842. sql = string.Format(sql, OPCODE);
  843. //object obj = AppConfig.InvokeWebservice(AppConfig.BaseServiceUri, "WebBaseService", "BaseService", "GetHuaRongErpConnectString", new object[] { });
  844. //if (obj == null)
  845. //{
  846. // ICSBaseSimpleCode.AppshowMessageBox(1, "ERP数据库连接取得失败!");
  847. //}
  848. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  849. FormDataRefer reForm = new FormDataRefer();
  850. reForm.FormTitle = "人员信息";
  851. DataTable menuData = data;
  852. reForm.DataSource = menuData;
  853. reForm.MSelectFlag = false;
  854. reForm.RowIndexWidth = 35;
  855. //reForm.HideCols.Add("设备ID");
  856. reForm.FormWidth = 500;
  857. reForm.FormHeight = 500;
  858. //reForm.FilterKey = btn.Text;
  859. //grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString().Trim();
  860. if (reForm.ShowDialog() == DialogResult.OK)
  861. {
  862. DataTable retData = reForm.ReturnData;
  863. foreach (DataRow dr in retData.Rows)
  864. {
  865. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, dr["人员代码"].ToString());
  866. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, dr["人员名称"].ToString());
  867. }
  868. }
  869. }
  870. #endregion
  871. #region 设备编号按钮
  872. private void repositoryItemButtonEdit2_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  873. {
  874. //if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() != "Y")
  875. //{
  876. // ICSBaseSimpleCode.AppshowMessageBox("请选择当前数据后再进行编辑!!!");
  877. // return;
  878. //}
  879. ButtonEdit btn = (ButtonEdit)sender;
  880. string sql = "select EQPCode as [设备编号],EQPName as [设备名称] from dbo.ICSEquipment with(nolock)";
  881. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  882. FormDataRefer reForm = new FormDataRefer();
  883. reForm.FormTitle = "设备信息";
  884. DataTable menuData = data;
  885. reForm.DataSource = menuData;
  886. reForm.MSelectFlag = false;
  887. reForm.RowIndexWidth = 35;
  888. //reForm.HideCols.Add("设备ID");
  889. reForm.FormWidth = 500;
  890. reForm.FormHeight = 500;
  891. //reForm.FilterKey = btn.Text;
  892. //grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString().Trim();
  893. if (reForm.ShowDialog() == DialogResult.OK)
  894. {
  895. DataTable retData = reForm.ReturnData;
  896. foreach (DataRow dr in retData.Rows)
  897. {
  898. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, dr["设备编号"].ToString());
  899. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, dr["设备名称"].ToString());
  900. }
  901. }
  902. }
  903. #endregion
  904. #region 详情按钮
  905. private void repositoryItemButtonEdit3_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  906. {
  907. string lotNO = "";
  908. lotNO = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colLOTNO).ToString();
  909. ButtonEdit btn = (ButtonEdit)sender;
  910. string sql = "";
  911. DataTable dt = null;
  912. sql = @" SELECT DISTINCT
  913. '' AS [isSelect],
  914. f.ID AS ID,
  915. d.OPCODE AS OPCODE,
  916. d.OPSEQ AS OPSEQ,
  917. e.OPDESC AS OPDESC,
  918. f.USERCODE AS USERCODE,
  919. f.USERName AS USERName,
  920. f.EQPCode AS EQPCode,
  921. f.EQPName AS EQPName,
  922. f.MUSERName AS MUSERName,
  923. CAST (
  924. ISNULL(f.EATTRIBUTE1, 0) AS BIT
  925. ) AS EATTRIBUTE1,
  926. f.MTIME AS MTIME,
  927. --g.EQPTypeCode AS EQPType,
  928. f.StartPlanDate,
  929. f.EndPlanDate,
  930. CAST(CASE WHEN M.LotNO IS NULL THEN '0' ELSE '1' END AS BIT) AS ONWIP,
  931. CAST(CASE WHEN (f.PRLineID IS NULL OR f.PRLineID='') THEN '0' ELSE '1' END AS BIT) AS PRLine
  932. FROM
  933. ICSMO a
  934. LEFT JOIN ICSMO2ROUTE b ON a.ID = b.MOID
  935. LEFT JOIN ICSITEMLot c ON a.MOCODE = c.TransNO
  936. AND a.MOSEQ = c.TransLine -- LEFT JOIN ICSITEMROUTE2OP d ON b.ROUTECODE=d.ROUTECODE and a.ITEMCODE=d.ITEMCODE
  937. LEFT JOIN ICSITEMROUTE2OPLot d ON b.ROUTECODE = d.ROUTECODE AND c.LotNO=d.LotNo
  938. AND a.ITEMCODE = d.ITEMCODE
  939. LEFT JOIN ICSOP e ON d.OPCODE = e.OPCODE
  940. LEFT JOIN ICSMO2User f ON e.OPCODE = f.OPCODE
  941. AND c.LOTNO = f.LOTNO
  942. LEFT JOIN ICSEquipment k ON f.EQPCode = k.EQPCode
  943. LEFT JOIN (SELECT LotNO,OPCODE FROM ICSLOTONWIP GROUP BY LotNO,OPCODE) M ON D.LotNO=M.LotNO AND D.OPCODE=M.OPCODE
  944. WHERE
  945. c.LOTNO = '{0}'
  946. ORDER BY
  947. d.OPSEQ ";
  948. sql = string.Format(sql, lotNO);
  949. dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  950. #region
  951. // if (dt.Rows.Count != 0)
  952. // {
  953. // if (dt.Rows[0]["OPCODE"].ToString() == "")
  954. // {
  955. // sql = @" SELECT
  956. // '' AS [isSelect],
  957. // f.ID AS ID,
  958. // d.OPCODE AS OPCODE,
  959. // d.OPSEQ AS OPSEQ,
  960. // e.OPDESC AS OPDESC,
  961. // f.USERCODE AS USERCODE,
  962. // f.USERName AS USERName,
  963. // f.EQPCode AS EQPCode,
  964. // f.EQPName AS EQPName,
  965. // f.MUSERName AS MUSERName,
  966. // f.MTIME AS MTIME,h.EQPTypeCode AS EQPType,
  967. // f.SendPlanDate as SendPlanDate
  968. // FROM
  969. // ICSMO a
  970. // LEFT JOIN ICSMO2ROUTE b ON a.MOCODE = b.MOCODE
  971. // LEFT JOIN ICSMO2Lot c ON a.MOCODE = c.MOCODE
  972. // LEFT JOIN Base_Inventory g ON a.ITEMCODE = g.ItemCode
  973. // LEFT JOIN ICSMODELROUTE2OP d ON b.ROUTECODE=d.ROUTECODE and g.ItemMainCategoryCode=d.MODELCODE
  974. //
  975. // LEFT JOIN ICSOP e ON d.OPCODE = e.OPCODE
  976. // LEFT JOIN ICSMO2User f ON e.OPCODE = f.OPCODE AND c.LOTNO = f.LOTNO
  977. // LEFT JOIN ICSEquipment k on f.EQPCode = k.EQPCode
  978. // LEFT JOIN ICSEQPSTP h ON g.ITEMCODE=h.ITEMCODE AND d.OPCODE=h.OPCODE And k.EType = h.EQPTypeCode
  979. // WHERE
  980. // c.LOTNO = '{0}'
  981. // ORDER BY d.OPSEQ";
  982. // sql = string.Format(sql, lotNO);
  983. // dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  984. // }
  985. // }
  986. #endregion
  987. grdDetail.DataSource = dt;
  988. grvDetail.BestFitColumns();
  989. }
  990. #endregion
  991. private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
  992. {
  993. List<string> lotList = new List<string>();
  994. string sql = @" SELECT LOTNO FROM ICSMO2User WHERE MOCODE='{0}' ";
  995. sql = string.Format(sql, txtMOCODE.Text);
  996. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  997. if (dt != null && dt.Rows.Count > 0)
  998. {
  999. foreach (DataRow dr1 in dt.Rows)
  1000. {
  1001. lotList.Add(dr1["LOTNO"].ToString());
  1002. }
  1003. }
  1004. int hand = e.RowHandle;
  1005. if (hand < 0)
  1006. return;
  1007. DataRow dr = this.gridView1.GetDataRow(hand);
  1008. if (dr == null)
  1009. return;
  1010. if (gridView1.GetRowCellValue(e.RowHandle, colLOTNO).ToString() != "")
  1011. {
  1012. if (lotList.Contains(gridView1.GetRowCellValue(e.RowHandle, colLOTNO).ToString()))
  1013. {
  1014. //e.Appearance.BackColor = Color.Blue;
  1015. e.Appearance.BackColor = Color.CornflowerBlue;
  1016. }
  1017. }
  1018. }
  1019. #region 打开的子窗体
  1020. //private void BoundData()
  1021. //{
  1022. // try
  1023. // {
  1024. // string OPCODEs = "";
  1025. // for (int i = 0; i < grvDetail.DataRowCount; i++)
  1026. // {
  1027. // string OPCODE = grvDetail.GetRowCellValue(i, colOPCODE).ToString();
  1028. // if (!string.IsNullOrEmpty(OPCODE))
  1029. // {
  1030. // OPCODEs += "'"+ OPCODE + "', ";
  1031. // }
  1032. // }
  1033. // string sql = "select OPCODE AS [工序代码], USERCODE as [人员代码],USERName as [人员名称] from dbo.ICSOP2User with(nolock)";
  1034. // if (!string.IsNullOrEmpty(OPCODEs))
  1035. // {
  1036. // OPCODEs = OPCODEs.Substring(0, OPCODEs.LastIndexOf(","));
  1037. // sql += " WHERE OPCODE IN (" + OPCODEs + ") ";
  1038. // }
  1039. // sql += " ORDER BY OPCODE,USERCODE";
  1040. // sql = string.Format(sql);
  1041. // dataUser = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1042. // if (dataUser != null)
  1043. // {
  1044. // int rows = dataUser.Rows.Count;
  1045. // //DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit repositoryItemLookUpEdit = new DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit();
  1046. // #region LookUpEdit
  1047. // repositoryItemLookUpEdit1.ValueMember = "人员代码";
  1048. // repositoryItemLookUpEdit1.DisplayMember = "人员代码";
  1049. // repositoryItemLookUpEdit1.DataSource = dataUser;
  1050. // repositoryItemLookUpEdit1.NullText = "";//空时的值
  1051. // repositoryItemLookUpEdit1.DropDownRows = 10;//下拉框行数
  1052. // repositoryItemLookUpEdit1.ImmediatePopup = true;//输入值是否马上弹出窗体
  1053. // repositoryItemLookUpEdit1.ValidateOnEnterKey = true;//回车确认
  1054. // repositoryItemLookUpEdit1.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.AutoFilter;//自动过滤掉不需要显示的数据,可以根据需要变化
  1055. // repositoryItemLookUpEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  1056. // repositoryItemLookUpEdit1.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  1057. // //自适应宽度
  1058. // repositoryItemLookUpEdit1.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  1059. // //填充列
  1060. // repositoryItemLookUpEdit1.PopulateColumns();
  1061. // //控制选择项的总宽度
  1062. // repositoryItemLookUpEdit1.PopupWidth = 300;
  1063. // //设置列属性
  1064. // //repositoryItemLookUpEdit1.Columns["工序代码"].Visible = false;
  1065. // //列格式设置
  1066. // repositoryItemLookUpEdit1.Columns[0].FormatString = "000000";
  1067. // ////实现用户自由输入
  1068. // repositoryItemLookUpEdit1.ProcessNewValue += LookUpEdit1_ProcessNewValue;
  1069. // #endregion
  1070. // }
  1071. // }
  1072. // catch (Exception ex)
  1073. // {
  1074. // ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1075. // }
  1076. //}
  1077. private void repositoryItemButtonEdit1_EditValueChanged(object sender, EventArgs e)
  1078. {
  1079. //ButtonEdit btn = (ButtonEdit)sender;
  1080. //string OPCODE = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colOPCODE).ToString();
  1081. //string UserCode = btn.Text.Trim();// grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString();
  1082. //string sql = "select USERCODE as [人员代码],USERName as [人员名称] from dbo.ICSOP2User with(nolock) WHERE OPCODE='{0}' AND USERCODE LIKE '%{1}%'";
  1083. //sql = string.Format(sql, OPCODE, UserCode);
  1084. //DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1085. //FormDataView reForm = new FormDataView(this);
  1086. //reForm.FormTitle = "人员信息";
  1087. //DataTable menuData = data;
  1088. //reForm.DataSource = menuData;
  1089. //reForm.MSelectFlag = false;
  1090. //reForm.RowIndexWidth = 35;
  1091. //reForm.FormWidth = 200;
  1092. //reForm.FormHeight = 200;
  1093. //Point p = Control.MousePosition;
  1094. //Control control = this.GetChildAtPoint(btn.Location); //检索位置指定位置的子控件
  1095. //Point clientPoint = control.PointToClient(System.Windows.Forms.Control.MousePosition); //将屏幕坐标点的位置计算称工作区域的位置
  1096. //Point screenPoint = control.PointToScreen(clientPoint); //将工作区域的位置计算吃呢个屏幕坐标的位置
  1097. //reForm.Location = pointToScreen(btn); //control.PointToClient(btn.Location);// System.Windows.Forms.Cursor.Position;
  1098. ////reForm.Show();
  1099. ////弹出图纸对话框
  1100. //ShowChildrenForm();
  1101. //reForm.HideCols.Add("选择");
  1102. //reForm.Show(this);
  1103. ////if (reForm.ShowDialog() == DialogResult.OK)
  1104. ////{
  1105. //// DataTable retData = reForm.ReturnData;
  1106. //// foreach (DataRow dr in retData.Rows)
  1107. //// {
  1108. //// grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, dr["人员代码"].ToString());
  1109. //// grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, dr["人员名称"].ToString());
  1110. //// }
  1111. ////}
  1112. }
  1113. /// <summary>
  1114. /// 实现用户自由输入
  1115. /// </summary>
  1116. /// <param name="sender"></param>
  1117. /// <param name="e"></param>
  1118. //private void LookUpEdit1_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e)
  1119. //{
  1120. // //DataRow Row;
  1121. // ////RepositoryItemLookUpEdit Edit = ((LookUpEdit)sender).Properties;
  1122. // //if (e.DisplayValue == null || this.repositoryItemLookUpEdit1.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue))
  1123. // // return;
  1124. // //Row = dataUser.NewRow();
  1125. // //Row["人员代码"] = e.DisplayValue;
  1126. // //dataUser.Rows.Add(Row);
  1127. // //e.Handled = true;
  1128. // if (!this.DesignMode)
  1129. // {
  1130. // DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit Edit = ((LookUpEdit)sender).Properties;
  1131. // string displayName = Edit.DisplayMember;
  1132. // string valueName = Edit.ValueMember;
  1133. // string display = e.DisplayValue.ToString();
  1134. // DataTable dtTemp = this.repositoryItemLookUpEdit1.DataSource as DataTable;
  1135. // if (dtTemp != null)
  1136. // {
  1137. // string OPCODE = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colOPCODE).ToString();
  1138. // DataRow[] selectedRows = dtTemp.Select(string.Format("{0}='{1}' AND {2}='{3}'", displayName, display.Replace("'", "‘"), "工序代码", OPCODE));
  1139. // if (selectedRows == null || selectedRows.Length == 0)
  1140. // {
  1141. // DataRow row = dtTemp.NewRow();
  1142. // row[displayName] = display;
  1143. // row[valueName] = display;
  1144. // dtTemp.Rows.Add(row);
  1145. // dtTemp.AcceptChanges();
  1146. // }
  1147. // }
  1148. // e.Handled = true;
  1149. // }
  1150. //}
  1151. //public void SetRowCellValue(DataTable retData)
  1152. //{
  1153. // foreach (DataRow dr in retData.Rows)
  1154. // {
  1155. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, dr["人员代码"].ToString());
  1156. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, dr["人员名称"].ToString());
  1157. // }
  1158. // //ShowChildrenForm();
  1159. //}
  1160. Point point = new Point(0, 0);
  1161. /// <summary>
  1162. /// 获取控件在屏幕中的位置
  1163. /// </summary>
  1164. /// <param name="control"></param>
  1165. /// <returns></returns>
  1166. private Point pointToScreen(Control control)
  1167. {
  1168. point.Offset(control.Location);
  1169. var parent = control.Parent;
  1170. if (parent is Form)
  1171. {
  1172. return point;
  1173. }
  1174. else
  1175. {
  1176. pointToScreen(parent);
  1177. }
  1178. point.Offset(0, 10);
  1179. return point;
  1180. }
  1181. #region 判断是否有打开的子窗体
  1182. public void ShowChildrenForm()
  1183. {
  1184. //foreach (Form f1 in this.OwnedForms)
  1185. //{
  1186. // if (f1 is FormDataView)
  1187. // f1.Close();
  1188. //}
  1189. }
  1190. #endregion
  1191. #endregion
  1192. private void BoundEQPData()
  1193. {
  1194. try
  1195. {
  1196. string sql = "select EQPCode as [设备编号],EQPName as [设备名称],Type as [设备类型] from dbo.ICSEquipment with(nolock) ORDER BY EQPCode";
  1197. sql = string.Format(sql);
  1198. data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1199. if (data != null)
  1200. {
  1201. int rows = data.Rows.Count;
  1202. repositoryItemGridLookUpEdit2.ValueMember = "设备编号";
  1203. repositoryItemGridLookUpEdit2.DisplayMember = "设备编号";
  1204. repositoryItemGridLookUpEdit2.DataSource = data;
  1205. repositoryItemGridLookUpEdit2.NullText = "";//空时的值
  1206. //repositoryItemGridLookUpEdit2.DropDownRows = 10;//下拉框行数
  1207. repositoryItemGridLookUpEdit2.ImmediatePopup = true;//输入值是否马上弹出窗体
  1208. repositoryItemGridLookUpEdit2.ValidateOnEnterKey = true;//回车确认
  1209. //repositoryItemGridLookUpEdit2.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.AutoFilter;//自动过滤掉不需要显示的数据,可以根据需要变化
  1210. repositoryItemGridLookUpEdit2.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  1211. repositoryItemGridLookUpEdit2.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  1212. //自适应宽度
  1213. repositoryItemGridLookUpEdit2.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  1214. }
  1215. }
  1216. catch (Exception ex)
  1217. {
  1218. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1219. }
  1220. }
  1221. private void BoundGridLookUpData()
  1222. {
  1223. try
  1224. {
  1225. string OPCODEs = "";
  1226. for (int i = 0; i < grvDetail.DataRowCount; i++)
  1227. {
  1228. string OPCODE = grvDetail.GetRowCellValue(i, colOPCODE).ToString();
  1229. if (!string.IsNullOrEmpty(OPCODE))
  1230. {
  1231. OPCODEs += "'" + OPCODE + "', ";
  1232. }
  1233. }
  1234. string sql = "select USERCODE as [人员代码],USERName as [人员名称] from Sys_User with(nolock)";
  1235. //string sql = "select OPCODE AS [工序代码], USERCODE as [人员代码],USERName as [人员名称] from dbo.ICSOP2User with(nolock)";
  1236. //if (!string.IsNullOrEmpty(OPCODEs))
  1237. //{
  1238. // OPCODEs = OPCODEs.Substring(0, OPCODEs.LastIndexOf(","));
  1239. // sql += " WHERE OPCODE IN (" + OPCODEs + ") ";
  1240. //}
  1241. //sql += " ORDER BY OPCODE,USERCODE";
  1242. //sql = string.Format(sql);
  1243. dataUser = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1244. if (dataUser != null)
  1245. {
  1246. int rows = dataUser.Rows.Count;
  1247. #region LookUpEdit
  1248. repositoryItemGridLookUpEdit1.ValueMember = "人员代码";
  1249. repositoryItemGridLookUpEdit1.DisplayMember = "人员代码";
  1250. repositoryItemGridLookUpEdit1.DataSource = dataUser;
  1251. repositoryItemGridLookUpEdit1.NullText = "";//空时的值
  1252. //repositoryItemGridLookUpEdit1.DropDownRows = 10;//下拉框行数
  1253. repositoryItemGridLookUpEdit1.ImmediatePopup = true;//输入值是否马上弹出窗体
  1254. repositoryItemGridLookUpEdit1.ValidateOnEnterKey = true;//回车确认
  1255. //repositoryItemGridLookUpEdit1.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.AutoFilter;//自动过滤掉不需要显示的数据,可以根据需要变化
  1256. repositoryItemGridLookUpEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  1257. repositoryItemGridLookUpEdit1.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  1258. //自适应宽度
  1259. repositoryItemGridLookUpEdit1.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  1260. #endregion
  1261. }
  1262. }
  1263. catch (Exception ex)
  1264. {
  1265. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1266. }
  1267. }
  1268. /// <summary>
  1269. /// 绑定过滤条件
  1270. /// </summary>
  1271. /// <param name="sender"></param>
  1272. private void FilterLookup(object sender)
  1273. {
  1274. try
  1275. {
  1276. GridLookUpEdit edit = sender as GridLookUpEdit;
  1277. if (edit == null)
  1278. return;
  1279. string OPCODE = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colOPCODE).ToString();
  1280. GridView gridView = edit.Properties.View as GridView;
  1281. FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
  1282. BinaryOperator op1 = new BinaryOperator("工序代码", OPCODE, BinaryOperatorType.Equal);
  1283. BinaryOperator op2 = new BinaryOperator("人员代码", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  1284. string filterCondition = new GroupOperator(GroupOperatorType.And, new CriteriaOperator[] { op1, op2 }).ToString();
  1285. ////BinaryOperator op3 = new BinaryOperator("Name", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  1286. //string filterCondition = new GroupOperator(GroupOperatorType.Or, new CriteriaOperator[] { op1, op2, op3 }).ToString();
  1287. fi.SetValue(gridView, filterCondition);
  1288. MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
  1289. mi.Invoke(gridView, null);
  1290. }
  1291. catch (Exception ex)
  1292. {
  1293. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1294. }
  1295. }
  1296. //每次输入字符都会触发(在自动关联后面的字符串的情况下)
  1297. private void repositoryItemGridLookUpEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
  1298. {
  1299. BeginInvoke(new MethodInvoker(delegate()
  1300. {
  1301. FilterLookup(sender);
  1302. }));
  1303. }
  1304. //对应的工序查询不到信息(输入框未自动关联后面的字符串)
  1305. private void repositoryItemGridLookUpEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
  1306. {
  1307. BeginInvoke(new MethodInvoker(delegate()
  1308. {
  1309. FilterLookup(sender);
  1310. }));
  1311. }
  1312. private void repositoryItemGridLookUpEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  1313. {
  1314. BeginInvoke(new MethodInvoker(delegate()
  1315. {
  1316. FilterLookup(sender);
  1317. }));
  1318. }
  1319. private void repositoryItemGridLookUpEdit1_EditValueChanged(object sender, EventArgs e)
  1320. {
  1321. try
  1322. {
  1323. GridLookUpEdit edit = sender as GridLookUpEdit;
  1324. if (isQueryCloseUp)
  1325. return;
  1326. if (edit.EditValue != null || edit.EditValue.ToString() != "" || edit.EditValue.ToString() != "nulltext")
  1327. {
  1328. var o = edit.Properties.GetRowByKeyValue(edit.EditValue);
  1329. if (o is DataRowView)
  1330. {
  1331. DataRowView RowView = o as DataRowView;
  1332. //string OPCODE = RowView.Row["工序代码"].ToString();
  1333. //string USERCODE = RowView.Row["人员代码"].ToString();
  1334. string USERNAME = RowView.Row["人员名称"].ToString();
  1335. //if(OPCODE.Equals(grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle,colOPCODE).ToString()))
  1336. //{
  1337. // //grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, USERCODE);
  1338. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, USERNAME);
  1339. //}
  1340. //else
  1341. //{
  1342. // // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, "");
  1343. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, "");
  1344. //}
  1345. }
  1346. else
  1347. {
  1348. //grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, "");
  1349. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, "");
  1350. }
  1351. }
  1352. }
  1353. catch (Exception ex)
  1354. {
  1355. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1356. }
  1357. }
  1358. private void repositoryItemGridLookUpEdit1_QueryCloseUp(object sender, CancelEventArgs e)
  1359. {
  1360. try
  1361. {
  1362. GridLookUpEdit edit = sender as GridLookUpEdit;
  1363. if (edit.EditValue != null || edit.EditValue.ToString() != "" || edit.EditValue.ToString() != "nulltext")
  1364. {
  1365. var o = edit.Properties.View.GetDataRow(edit.Properties.View.FocusedRowHandle);
  1366. if (o is DataRow)
  1367. {
  1368. DataRow RowView = o as DataRow;
  1369. string OPCODE = RowView["工序代码"].ToString();
  1370. string USERCODE = RowView["人员代码"].ToString();
  1371. string USERNAME = RowView["人员名称"].ToString();
  1372. if (OPCODE.Equals(grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colOPCODE).ToString()))
  1373. {
  1374. //grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, USERCODE);
  1375. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, USERNAME);
  1376. isQueryCloseUp = true;
  1377. }
  1378. else
  1379. {
  1380. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, "");
  1381. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, "");
  1382. }
  1383. }
  1384. else
  1385. {
  1386. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERCODE, "");
  1387. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colUSERName, "");
  1388. }
  1389. }
  1390. }
  1391. catch (Exception ex)
  1392. {
  1393. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1394. }
  1395. }
  1396. private void repositoryItemGridLookUpEdit2_EditValueChanged(object sender, EventArgs e)
  1397. {
  1398. try
  1399. {
  1400. GridLookUpEdit edit = sender as GridLookUpEdit;
  1401. if (isQueryCloseUpEQP)
  1402. return;
  1403. if (edit.EditValue != null || edit.EditValue.ToString() != "" || edit.EditValue.ToString() != "nulltext")
  1404. {
  1405. var o = edit.Properties.GetRowByKeyValue(edit.EditValue);
  1406. if (o is DataRowView)
  1407. {
  1408. DataRowView RowView = o as DataRowView;
  1409. string CODE = RowView.Row["设备类型"].ToString();
  1410. string EQPCode = RowView.Row["设备编号"].ToString();
  1411. string EQPName = RowView.Row["设备名称"].ToString();
  1412. //////grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, EQPCode);
  1413. ////grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, EQPName);
  1414. //////dtSend.Rows[grvDetail.FocusedRowHandle]["EQPCode"] = EQPCode;
  1415. //////dtSend.Rows[grvDetail.FocusedRowHandle]["EQPName"] = EQPName;
  1416. //string eqpcode = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colEQPType).ToString();
  1417. //if (string.IsNullOrWhiteSpace(eqpcode) || CODE.Equals(eqpcode))
  1418. //{
  1419. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, EQPName);
  1420. //}
  1421. //else
  1422. //{
  1423. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, "");
  1424. //}
  1425. }
  1426. else
  1427. {
  1428. //grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, "");
  1429. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, "");
  1430. //dtSend.Rows[grvDetail.FocusedRowHandle]["EQPName"] = "";
  1431. }
  1432. }
  1433. }
  1434. catch (Exception ex)
  1435. {
  1436. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1437. }
  1438. }
  1439. private void repositoryItemGridLookUpEdit1_QueryPopUp(object sender, CancelEventArgs e)
  1440. {
  1441. isQueryCloseUp = false;
  1442. }
  1443. private void btnPrint_Click(object sender, EventArgs e)
  1444. {
  1445. FormICSProductTrackingList form = new FormICSProductTrackingList(txtMOCODE.Text.Trim(), txtMOSEQ.Text.Trim());
  1446. form.Show();
  1447. }
  1448. //取消派工
  1449. private void txtcancelSend_Click(object sender, EventArgs e)
  1450. {
  1451. string lotno = "";
  1452. List<string> lotnoList = new List<string>();
  1453. List<FormICSMO2UserUIModel> MO2UserInfoList = new List<FormICSMO2UserUIModel>();
  1454. for (int i = 0; i < gridView1.RowCount; i++)
  1455. {
  1456. if (gridView1.GetRowCellValue(i, colisSelect).ToString() == "Y")
  1457. {
  1458. lotno = gridView1.GetRowCellValue(i, colLOTNO).ToString();
  1459. lotnoList.Add(lotno);
  1460. }
  1461. }
  1462. if (lotnoList.Count < 1)
  1463. {
  1464. ICSBaseSimpleCode.AppshowMessageBox("请选择需要取消派工的产品跟踪单号!!!");
  1465. return;
  1466. }
  1467. try
  1468. {
  1469. ICSMO2UserBLL.cancelSend(lotnoList, AppConfig.AppConnectString);
  1470. ICSBaseSimpleCode.AppshowMessageBox(0, "取消成功");
  1471. }
  1472. catch (Exception ex)
  1473. {
  1474. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1475. }
  1476. btnFalsh_Click(null, null);
  1477. }
  1478. /// <summary>
  1479. /// 绑定过滤条件
  1480. /// </summary>
  1481. /// <param name="sender"></param>
  1482. private void FilterLookupEQP(object sender)
  1483. {
  1484. try
  1485. {
  1486. GridLookUpEdit edit = sender as GridLookUpEdit;
  1487. if (edit == null)
  1488. return;
  1489. string CODE = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colEQPType).ToString();
  1490. GridView gridView = edit.Properties.View as GridView;
  1491. FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
  1492. BinaryOperator op1 = new BinaryOperator("设备类型", CODE, BinaryOperatorType.Equal);
  1493. BinaryOperator op2 = new BinaryOperator("设备编号", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  1494. string filterCondition = new GroupOperator(GroupOperatorType.And, new CriteriaOperator[] { op1, op2 }).ToString();
  1495. ////BinaryOperator op3 = new BinaryOperator("Name", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  1496. //string filterCondition = new GroupOperator(GroupOperatorType.Or, new CriteriaOperator[] { op1, op2, op3 }).ToString();
  1497. fi.SetValue(gridView, filterCondition);
  1498. MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
  1499. mi.Invoke(gridView, null);
  1500. }
  1501. catch (Exception ex)
  1502. {
  1503. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1504. }
  1505. }
  1506. private void repositoryItemGridLookUpEdit2_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  1507. {
  1508. BeginInvoke(new MethodInvoker(delegate()
  1509. {
  1510. FilterLookupEQP(sender);
  1511. }));
  1512. }
  1513. private void repositoryItemGridLookUpEdit2_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
  1514. {
  1515. BeginInvoke(new MethodInvoker(delegate()
  1516. {
  1517. FilterLookupEQP(sender);
  1518. }));
  1519. }
  1520. private void repositoryItemGridLookUpEdit2_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
  1521. {
  1522. BeginInvoke(new MethodInvoker(delegate()
  1523. {
  1524. FilterLookupEQP(sender);
  1525. }));
  1526. }
  1527. private void repositoryItemGridLookUpEdit2_QueryCloseUp(object sender, CancelEventArgs e)
  1528. {
  1529. try
  1530. {
  1531. GridLookUpEdit edit = sender as GridLookUpEdit;
  1532. if (edit.EditValue != null || edit.EditValue.ToString() != "" || edit.EditValue.ToString() != "nulltext")
  1533. {
  1534. var o = edit.Properties.View.GetDataRow(edit.Properties.View.FocusedRowHandle);
  1535. if (o is DataRow)
  1536. {
  1537. DataRow RowView = o as DataRow;
  1538. string CODE = RowView["设备类型"].ToString();
  1539. string EQPCODE = RowView["设备编号"].ToString();
  1540. string EQPNAME = RowView["设备名称"].ToString();
  1541. string eqpcode = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colEQPType).ToString();
  1542. if (string.IsNullOrWhiteSpace(eqpcode) || CODE.Equals(eqpcode))
  1543. {
  1544. //grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, EQPCODE);
  1545. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, EQPNAME);
  1546. isQueryCloseUpEQP = true;
  1547. }
  1548. else
  1549. {
  1550. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, "");
  1551. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, "");
  1552. }
  1553. }
  1554. else
  1555. {
  1556. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPCode, "");
  1557. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colEQPName, "");
  1558. }
  1559. }
  1560. }
  1561. catch (Exception ex)
  1562. {
  1563. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  1564. }
  1565. }
  1566. private void repositoryItemGridLookUpEdit2_QueryPopUp(object sender, CancelEventArgs e)
  1567. {
  1568. isQueryCloseUpEQP = false;
  1569. }
  1570. /// <summary>
  1571. /// 产生委外请购需求
  1572. /// </summary>
  1573. /// <param name="sender"></param>
  1574. /// <param name="e"></param>
  1575. private void btnSavePRWW_Click(object sender, EventArgs e)
  1576. {
  1577. try
  1578. {
  1579. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定产生委外请购单吗?") != DialogResult.OK)
  1580. {
  1581. return;
  1582. }
  1583. else
  1584. {
  1585. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在创建...请稍等...");
  1586. try
  1587. {
  1588. _wait.Show();
  1589. //工单工号
  1590. string MOCode = this.txtMOCODE.Text;
  1591. string ItemCode = this.txtITEMCODE.Text;
  1592. string MOSEQ = this.txtMOSEQ.Text;
  1593. //string sql = @"SELECT DISTINCT PRLineID from ICSMO2User WHERE MOCODE='" + MOCode + "' AND EATTRIBUTE1=1";
  1594. string lotNO = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colLOTNO).ToString();
  1595. string sql = @"SELECT DISTINCT PRLineID from ICSMO2User WHERE MOCODE='" + MOCode + "' AND LOTNO='" + lotNO + "' AND EATTRIBUTE1=1 and (PRLineID='' or PRLineID is null) ";
  1596. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  1597. if (dt != null && dt.Rows.Count > 0)
  1598. {
  1599. foreach (DataRow dr1 in dt.Rows)
  1600. {
  1601. string PRLineID = dr1["PRLineID"].ToString();
  1602. if (!string.IsNullOrWhiteSpace(PRLineID))
  1603. {
  1604. _wait.Close();
  1605. ICSBaseSimpleCode.AppshowMessageBox("该工单已经产生委外请购单,不能重复生成!!!");
  1606. return;
  1607. }
  1608. }
  1609. }
  1610. #region
  1611. // string sqlQty = @"SELECT
  1612. // a.MOCODE,
  1613. // b.ItemCode as ItemCode,
  1614. // a.OPCODE,
  1615. // COUNT (b.LOTQTY) AS PRQty
  1616. // FROM
  1617. // ICSMO2User a
  1618. // LEFT JOIN ICSITEMLot b ON a.LOTNO = b.LotNO
  1619. // WHERE
  1620. // a.MOCODE = '" + MOCode + "' AND b.ItemCode='" + ItemCode + "' AND a.MOSEQ='" + MOSEQ + "' AND a.EATTRIBUTE1 = 1 AND (a.PRLineID IS NULL or a.PRLineID='') GROUP BY a.MOCODE,a.OPCODE, b.ItemCode";
  1621. #endregion
  1622. #region 原SQL 2020.07.13 by summer
  1623. // string sqlQty = @"
  1624. //SELECT A.MOCODE, B.ItemCode AS ItemCode, A.OPCODE, D.OPDESC AS PRLineID, COUNT (B.LOTQTY) AS PRQty,
  1625. //ISNULL(A.StartPlanDate, GETDATE()) StartPlanDate, ISNULL(A.EndPlanDate, GETDATE()) EndPlanDate, A.LOTNO
  1626. //FROM ICSMO2User A LEFT JOIN ICSITEMLot B ON A.LOTNO = B.LotNO LEFT JOIN ICSOP D ON D.OPCODE = A.OPCODE
  1627. //WHERE A.MOCODE = '" + MOCode + "' AND B.ItemCode = '" + ItemCode + "' AND A.MOSEQ = '" + MOSEQ + @"' AND A.EATTRIBUTE1 = 1
  1628. //AND (A.PRLineID IS NULL OR A.PRLineID = '') GROUP BY A.MOCODE, A.OPCODE, B.ItemCode, D.OPDESC, A.StartPlanDate, A.EndPlanDate, A.LOTNO ";//UPDATE BY SUMMER 2020.06.17
  1629. #endregion
  1630. #region 现SQL 2020.07.13 by summer
  1631. string sqlQty = @"
  1632. SELECT A.MOCODE, B.ItemCode AS ItemCode, C.INVNAME, A.OPCODE, D.OPDESC AS PRLineID, COUNT (B.LOTQTY) AS PRQty,
  1633. ISNULL(MIN(A.StartPlanDate), GETDATE()) StartPlanDate, ISNULL(MAX(A.EndPlanDate), GETDATE()) EndPlanDate
  1634. FROM ICSMO2User A LEFT JOIN ICSITEMLot B ON A.LOTNO = B.LotNO LEFT JOIN ICSOP D ON D.OPCODE = A.OPCODE
  1635. LEFT JOIN ICSINVENTORY C ON B.ItemCode = C.INVCODE WHERE A.MOCODE = '" + MOCode + "' AND B.ItemCode = '" + ItemCode + @"'
  1636. AND A.MOSEQ = '" + MOSEQ + @"' AND A.EATTRIBUTE1 = 1 AND (A.PRLineID IS NULL OR A.PRLineID = '')
  1637. GROUP BY A.MOCODE, A.OPCODE, B.ItemCode, C.INVNAME, D.OPDESC ";//UPDATE BY SUMMER 2020.06.17
  1638. #endregion
  1639. DataTable dtQty = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlQty).Tables[0];
  1640. //ZM从配置中获取
  1641. string _EnumKey = "00010";
  1642. string sqlcInvCCode = @"SELECT DISTINCT EnumText from Sys_EnumValues WHERE EnumKey='" + _EnumKey + "' ";
  1643. DataTable dtcInvCCode = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlcInvCCode).Tables[0];
  1644. string _cInvCCode = string.Empty;
  1645. if (dtcInvCCode != null && dtcInvCCode.Rows.Count > 0)
  1646. {
  1647. _cInvCCode = dtcInvCCode.Rows[0][0].ToString();
  1648. }
  1649. List<PU_AppVouchs> contextsWWList = new List<PU_AppVouchs>();
  1650. List<PU_AppVouch> listcontextWW = new List<PU_AppVouch>();
  1651. if (dtQty != null && dtQty.Rows.Count > 0)
  1652. {
  1653. PU_AppVouch contextWW = new PU_AppVouch();
  1654. contextWW.UserCode = AppConfig.UserCode;
  1655. contextWW.UserName = AppConfig.UserName;
  1656. //contextWW.TargetAccount =AppConfig.GetDataBaseNameByConnectString(AppConfig.GetDataBaseConnectStringByKey("[]"));
  1657. contextWW.TargetAccount = ConfigurationManager.AppSettings["TargetAccountU8"];
  1658. foreach (DataRow _dr in dtQty.Rows)
  1659. {
  1660. PU_AppVouchs contextsWW = new PU_AppVouchs();
  1661. contextsWW.cInvCCode = _cInvCCode;//物料大类
  1662. contextsWW.cInvCode = _dr["ItemCode"].ToString();//料号
  1663. contextsWW.cInvName = _dr["INVNAME"].ToString();//料号名称
  1664. contextsWW.OPCode = _dr["OPCODE"].ToString();//工序
  1665. contextsWW.iQuantity = Decimal.Parse(_dr["PRQty"].ToString());
  1666. contextsWW.iNum = 0;// lotinfo.LOTQTY * Convert.ToDecimal(lotinfo.EATTRIBUTE3);
  1667. //contextsWW.cBatch = lotinfo.VenderLotNO;
  1668. contextsWW.MOCode = _dr["MOCODE"].ToString();//工单号
  1669. contextsWW.PRLine = _dr["PRLineID"].ToString();//工序
  1670. contextsWW.dArriveDate = Convert.ToDateTime(_dr["StartPlanDate"].ToString()).ToShortDateString();
  1671. contextsWW.dRequirDate = Convert.ToDateTime(_dr["EndPlanDate"].ToString()).ToShortDateString();
  1672. //contextsWW.LotNo = _dr["LOTNO"].ToString();//产品产品跟踪单号 2020.7.13 delete by summer
  1673. contextsWW.LotNo = "";//产品产品跟踪单号
  1674. contextsWWList.Add(contextsWW);
  1675. #region
  1676. //FormICSWWModel WWModel = new FormICSWWModel();
  1677. //WWModel.WWPRQty = Decimal.Parse(_dr["PRQty"].ToString());//委外的该工序所有的数量
  1678. ////WWModel.ItemCode = _dr["ItemCode"].ToString(); //料号
  1679. ////WWModel.OPCODE = _dr["OPCODE"].ToString();//工序
  1680. //WWModel.MCODEOPCODE = _dr["ItemCode"].ToString() + "_" + _dr["OPCODE"].ToString();
  1681. //list.Add(WWModel);
  1682. #endregion
  1683. }
  1684. contextWW.list = contextsWWList;
  1685. listcontextWW.Add(contextWW);
  1686. string WWPR = JsonConvert.SerializeObject(listcontextWW);
  1687. string iresultMO = HttpPost(DataCollectWW, WWPR);
  1688. U8Result INVINResultMO = new U8Result();
  1689. INVINResultMO = JsonConvert.DeserializeObject<U8Result>(iresultMO);
  1690. StringBuilder str = new StringBuilder();
  1691. str.AppendLine("创建U8委外请购单接口:" + WWPR);
  1692. str.AppendLine("接口返回结果:" + INVINResultMO.code);
  1693. str.AppendLine("接口返回数据:" + INVINResultMO.msg);
  1694. ICSMO2UserDAL.WriteLogFile(str.ToString(), "创建U8委外请购单接口");
  1695. if (INVINResultMO.code != "200")
  1696. {
  1697. //throw new Exception(INVINResultMO.msg);
  1698. _wait.Close();
  1699. ICSBaseSimpleCode.AppshowMessageBox(INVINResultMO.msg);
  1700. return;
  1701. }
  1702. List<PU_AppVouchs> _list = new List<PU_AppVouchs>();
  1703. if (!string.IsNullOrWhiteSpace(INVINResultMO.msg))
  1704. {
  1705. _list = JsonConvert.DeserializeObject<List<PU_AppVouchs>>(INVINResultMO.msg.ToString());
  1706. }
  1707. else
  1708. {
  1709. _wait.Close();
  1710. throw new Exception("未获取到请购单数据!");
  1711. }
  1712. #region add by summer 2020.10.22
  1713. string Lots = "";
  1714. string sqlLotNO = @"
  1715. SELECT A.MOCODE, B.ItemCode AS ItemCode, A.OPCODE, D.OPDESC AS PRLineID, COUNT (B.LOTQTY) AS PRQty,
  1716. ISNULL(A.StartPlanDate, GETDATE()) StartPlanDate, ISNULL(A.EndPlanDate, GETDATE()) EndPlanDate, A.LOTNO
  1717. FROM ICSMO2User A LEFT JOIN ICSITEMLot B ON A.LOTNO = B.LotNO LEFT JOIN ICSOP D ON D.OPCODE = A.OPCODE
  1718. WHERE A.MOCODE = '" + MOCode + "' AND B.ItemCode = '" + ItemCode + "' AND A.MOSEQ = '" + MOSEQ + @"' AND A.EATTRIBUTE1 = 1
  1719. AND (A.PRLineID IS NULL OR A.PRLineID = '') GROUP BY A.MOCODE, A.OPCODE, B.ItemCode, D.OPDESC, A.StartPlanDate, A.EndPlanDate, A.LOTNO ";
  1720. DataTable dtLotNO = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqlLotNO).Tables[0];
  1721. if (dtLotNO.Rows.Count > 0 && dtLotNO != null)
  1722. {
  1723. foreach (DataRow dr in dtLotNO.Rows)
  1724. {
  1725. if (Lots == "")
  1726. {
  1727. Lots = "'" + dr["LOTNO"].ToString() + "'";
  1728. }
  1729. else
  1730. {
  1731. Lots += ", '" + dr["LOTNO"].ToString() + "'";
  1732. }
  1733. }
  1734. }
  1735. //U8返回的PR单行ID回写ICSMO2User表中PRLineID
  1736. foreach (var item in _list)
  1737. {
  1738. string UpdateSql = @"UPDATE ICSMO2User SET PRLineID='" + item.PRLine + "' WHERE MOCODE = '" + item.MOCode + "' AND OPCODE = '" + item.OPCode + "' AND MOSEQ = '" + MOSEQ + "' AND EATTRIBUTE1 = 1 AND LOTNO IN (" + Lots + ") ";
  1739. UpdateSql = string.Format(UpdateSql);
  1740. DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, UpdateSql);
  1741. }
  1742. #endregion
  1743. #region delete by summer 2020.10.22
  1744. ////U8返回的PR单行ID回写ICSMO2User表中PRLineID
  1745. //foreach (var item in _list)
  1746. //{
  1747. // #region
  1748. // //string _MOCODE = string.Empty;
  1749. // //string _OPCODE = string.Empty;
  1750. // //if (!string.IsNullOrEmpty(item.MCODEOPCODE))
  1751. // //{
  1752. // // string[] sArray = item.MCODEOPCODE.Split('_');
  1753. // // _MOCODE = sArray[0];
  1754. // // _OPCODE = sArray[1];
  1755. // //}
  1756. // #endregion
  1757. // string UpdateSql = @"UPDATE ICSMO2User SET PRLineID='" + item.PRLine + "' WHERE MOCODE = '" + item.MOCode + "' AND OPCODE = '" + item.OPCode + "' AND MOSEQ = '" + MOSEQ + "' AND EATTRIBUTE1 = 1 ";//AND LOTNO = '" + item.LotNo + "' "; //update by summer 2020.07.13
  1758. // UpdateSql = string.Format(UpdateSql);
  1759. // DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, UpdateSql);
  1760. //}
  1761. #endregion
  1762. _wait.Close();
  1763. ICSBaseSimpleCode.AppshowMessageBox("产生委外请购单成功!");
  1764. btnFalsh_Click(null, null);
  1765. }
  1766. else
  1767. {
  1768. _wait.Close();
  1769. ICSBaseSimpleCode.AppshowMessageBox("没有委外的数据产生委外请购单!");
  1770. }
  1771. }
  1772. catch (Exception _ex)
  1773. {
  1774. _wait.Close();
  1775. throw new Exception(_ex.ToString());
  1776. }
  1777. }
  1778. }
  1779. catch (Exception ex)
  1780. {
  1781. throw new Exception(ex.ToString());
  1782. }
  1783. }
  1784. public static string HttpPost(string url, string body)
  1785. {
  1786. try
  1787. {
  1788. Encoding encoding = Encoding.UTF8;
  1789. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  1790. request.Method = "POST";
  1791. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  1792. request.ContentType = "application/json; charset=utf-8";
  1793. byte[] buffer = encoding.GetBytes(body);
  1794. request.ContentLength = buffer.Length;
  1795. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  1796. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  1797. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  1798. {
  1799. return reader.ReadToEnd();
  1800. }
  1801. }
  1802. catch (WebException ex)
  1803. {
  1804. var res = (HttpWebResponse)ex.Response;
  1805. StringBuilder sb = new StringBuilder();
  1806. StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
  1807. sb.Append(sr.ReadToEnd());
  1808. throw new Exception(sb.ToString());
  1809. }
  1810. }
  1811. #region 解除绑定按钮
  1812. private void repositoryItemButtonEdit4_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  1813. {
  1814. try
  1815. {
  1816. string lotNO = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colLOTNO).ToString();
  1817. string sql1 = @"SELECT * FROM ICSLOTONWIP WHERE 1=1 AND LOTNO = '{0}' ";
  1818. sql1 = string.Format(sql1, lotNO);
  1819. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1820. if (dt != null && dt.Rows.Count > 0)
  1821. {
  1822. ICSBaseSimpleCode.AppshowMessageBox("跟踪单有报过工,不能解除!!!");
  1823. return;
  1824. }
  1825. else
  1826. {
  1827. string sql = "UPDATE ICSITEMLot SET VenderLotNO = '', EATTRIBUTE7 = '', EATTRIBUTE6 = '' WHERE LotNO = '{0}' ";
  1828. sql = string.Format(sql, lotNO);
  1829. DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  1830. }
  1831. }
  1832. catch (Exception ex)
  1833. {
  1834. throw new Exception(ex.ToString());
  1835. }
  1836. btnFalsh_Click(null, null);
  1837. }
  1838. #endregion
  1839. //扫描批次回车事件
  1840. private void gridView1_KeyDown(object sender, KeyEventArgs e)
  1841. {
  1842. try
  1843. {
  1844. if (e.KeyCode == Keys.Enter)
  1845. {
  1846. ////sender as GridOptionsView
  1847. ////GridLookUpEdit edit = sender as GridLookUpEdit;
  1848. //GridLookUpEdit edit = sender as GridLookUpEdit;
  1849. //if (edit.EditValue != null || edit.EditValue.ToString() != "" || edit.EditValue.ToString() != "nulltext")
  1850. //{
  1851. // var o = edit.Properties.GetRowByKeyValue(edit.EditValue);
  1852. // if (o is DataRowView)
  1853. // {
  1854. // DataRowView RowView = o as DataRowView;
  1855. // string LotNo2 = RowView.Row["扫描批次"].ToString();
  1856. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colLotNo2, LotNo2);
  1857. // }
  1858. // else
  1859. // {
  1860. // grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colLotNo2, "");
  1861. // }
  1862. //}
  1863. if (gridView1.FocusedRowHandle < 0)
  1864. {
  1865. return;
  1866. }
  1867. if (gridView1.FocusedColumn == colLotNo2)
  1868. {
  1869. if (((DevExpress.XtraGrid.Views.Grid.GridView)(sender)).EditingValue != null)
  1870. {
  1871. string LotNo2 = ((DevExpress.XtraGrid.Views.Grid.GridView)(sender)).EditingValue.ToString();
  1872. //string LotNo2 = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colLotNo2).ToString();
  1873. string LotNo = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colLOTNO).ToString();
  1874. int LineNo = gridView1.FocusedRowHandle;
  1875. if (!string.IsNullOrWhiteSpace(LotNo2))
  1876. {
  1877. string sql1 = @"SELECT * FROM ICSWareHouseLotInfoLog WHERE 1=1 AND LotNO = '{0}' AND TransNO = '{1}' AND TransLine = '{2}' ";
  1878. sql1 = string.Format(sql1, LotNo2, txtMOCODE.Text, txtMOSEQ.Text);
  1879. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[0];
  1880. if (dt != null && dt.Rows.Count > 0)
  1881. {
  1882. }
  1883. else
  1884. {
  1885. ICSBaseSimpleCode.AppshowMessageBox("条码不属于这个工单!!!");
  1886. return;
  1887. }
  1888. string sql2 = @"SELECT VenderLotNO FROM ICSITEMLot WHERE LotNO='{0}' ";
  1889. sql2 = string.Format(sql2, LotNo2);
  1890. DataTable _dtSend = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql2).Tables[0];
  1891. string _VenderLotNO = string.Empty;
  1892. if (_dtSend != null && _dtSend.Rows.Count > 0)
  1893. {
  1894. _VenderLotNO = _dtSend.Rows[0]["VenderLotNO"].ToString();
  1895. gridView1.SetRowCellValue(LineNo, colVenderLotNO, _VenderLotNO);
  1896. }
  1897. if (!string.IsNullOrWhiteSpace(_VenderLotNO))
  1898. {
  1899. for (int i = 0; i < gridView1.RowCount; i++)
  1900. {
  1901. if (gridView1.GetRowCellValue(i, colLotNo2).ToString() == LotNo2 && i != LineNo)
  1902. {
  1903. ICSBaseSimpleCode.AppshowMessageBox("扫描批次栏位存在重复值!!!");
  1904. return;
  1905. }
  1906. }
  1907. string sql = @"UPDATE ICSITEMLot SET EATTRIBUTE6 = '{0}', EATTRIBUTE7 = '{2}', VenderLotNO = '{2}' WHERE LotNO = '{1}' ";
  1908. sql = string.Format(sql, LotNo2, LotNo, _VenderLotNO);
  1909. DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  1910. for (int i = 0; i <= LineNo; i++)
  1911. {
  1912. //SendKeys.Send("{Down}");//delete by summer 2020.11.18
  1913. }
  1914. //btnFalsh_Click(null, null);
  1915. }
  1916. else
  1917. {
  1918. ICSBaseSimpleCode.AppshowMessageBox("未获取到对应批次!!!");
  1919. return;
  1920. string sql = @"UPDATE ICSITEMLot SET EATTRIBUTE6='{0}' WHERE LotNO='{1}'";
  1921. sql = string.Format(sql, LotNo2, LotNo);
  1922. DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  1923. for (int i = 0; i <= LineNo; i++)
  1924. {
  1925. //SendKeys.Send("{Down}");//delete by summer 2020.11.18
  1926. }
  1927. //btnFalsh_Click(null, null);
  1928. //ICSBaseSimpleCode.AppshowMessageBox("未获取到对应零件号!!!");
  1929. //return;
  1930. }
  1931. }
  1932. else
  1933. {
  1934. ICSBaseSimpleCode.AppshowMessageBox("未获取到对应批次!!!");
  1935. return;
  1936. }
  1937. }
  1938. else
  1939. {
  1940. ICSBaseSimpleCode.AppshowMessageBox("警告⚠不要重复回车");
  1941. return;
  1942. }
  1943. }
  1944. //this.CommitEdit(DataGridViewDataErrorContexts.Commit);
  1945. //this.EndEdit();
  1946. }
  1947. }
  1948. catch (Exception ex)
  1949. {
  1950. throw new Exception(ex.ToString());
  1951. }
  1952. }
  1953. #region 行头自适应
  1954. public static void BindCustomDrawRowIndicator(DevExpress.XtraGrid.Views.Grid.GridView view)
  1955. {
  1956. view.IndicatorWidth = CalcIndicatorDefaultWidth(view);
  1957. view.CustomDrawRowIndicator += (s, e) =>
  1958. {
  1959. if (e.RowHandle >= 0)
  1960. {
  1961. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  1962. }
  1963. };
  1964. view.TopRowChanged += (s, e) =>
  1965. {
  1966. int width = CalcIndicatorBestWidth(view);
  1967. if ((view.IndicatorWidth - 4 < width || view.IndicatorWidth + 4 > width) && view.IndicatorWidth != width)
  1968. {
  1969. view.IndicatorWidth = width;
  1970. }
  1971. };
  1972. }
  1973. /// <summary>
  1974. /// 计算行头宽度
  1975. /// </summary>
  1976. /// <param name="sender"></param>
  1977. /// <returns></returns>
  1978. private static int CalcIndicatorBestWidth(DevExpress.XtraGrid.Views.Grid.GridView view)
  1979. {
  1980. Graphics graphics = new Control().CreateGraphics();
  1981. SizeF sizeF = new SizeF();
  1982. int count = view.TopRowIndex + ((DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)view.GetViewInfo()).RowsInfo.Count;
  1983. if (count == 0)
  1984. {
  1985. count = 30;
  1986. }
  1987. sizeF = graphics.MeasureString(count.ToString(), view.Appearance.Row.Font);
  1988. return Convert.ToInt32(sizeF.Width) + 20;
  1989. }
  1990. /// <summary>
  1991. /// 计算默认的宽度
  1992. /// </summary>
  1993. /// <param name="view"></param>
  1994. /// <returns></returns>
  1995. private static int CalcIndicatorDefaultWidth(DevExpress.XtraGrid.Views.Grid.GridView view)
  1996. {
  1997. var grid = view.GridControl;
  1998. Graphics graphics = new Control().CreateGraphics();
  1999. SizeF sizeF = new SizeF();
  2000. int rowHeight = 22;//22是Row的估计高度
  2001. if (view.RowHeight > 0)
  2002. {
  2003. rowHeight = view.RowHeight;
  2004. }
  2005. int count = grid != null ? grid.Height / rowHeight : 30;
  2006. sizeF = graphics.MeasureString(count.ToString(), view.Appearance.Row.Font);
  2007. return Convert.ToInt32(sizeF.Width) + 20;
  2008. }
  2009. #endregion
  2010. }
  2011. }