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

967 lines
36 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Linq;
  6. using System.Linq;
  7. using System.Drawing;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraGrid.Views.BandedGrid;
  12. using DevExpress.XtraGrid.Columns;
  13. using DevExpress.XtraGrid;
  14. using System.IO;
  15. using System.Threading;
  16. using ICSSoft.Base.Language.Tool;
  17. using ICSSoft.Base.Config.AppConfig;
  18. using ICSSoft.Base.UserControl.MessageControl;
  19. using ICSSoft.Base.Config.DBHelper;
  20. using ICSSoft.Base.Report.Filter;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.GridReport;
  23. using ICSSoft.Base.ReferForm.AppReferForm;
  24. using ICSSoft.Frame.Data.BLL;
  25. using ICSSoft.Frame.Data.Entity;
  26. using System.Runtime.InteropServices;
  27. using ICSSoft.Frame.DataConnect;
  28. using ICSSoft.Frame.DataCollect;
  29. using ICSSoft.Frame.DataConnect.Action;
  30. using System.Collections;
  31. using ICSSoft.Frame.Helper;
  32. namespace ICSSoft.Frame.APP
  33. {
  34. public partial class FormDataAcquise : DevExpress.XtraEditors.XtraForm
  35. {
  36. private FramDataContext _domainDataProvider = null;
  37. private ActionCheckStatus actionCheckStatus = new ActionCheckStatus();
  38. private ICSRES Resource;
  39. private DataSet dsone;
  40. private DataSet dstwo;
  41. private DataTable dtzhu;
  42. private DataTable dtone;
  43. private DataTable dttwo;
  44. private DataTable dtthree;
  45. //资源
  46. public string res = "";
  47. [DllImport("user32")]
  48. public static extern int SetParent(int hWndChild, int hWndNewParent);
  49. private ICSBaseModel _ICSBaseModel = null;
  50. private DataCollectFacade _DataCollectFacade = null;
  51. private ProductInfo product;
  52. private string sqltxt = "";
  53. private string sqlconn = "";
  54. String guid = AppConfig.GetGuid();
  55. private DataTable dataSource = null;
  56. FormDataShow datashow;
  57. private double iNG = 0;
  58. private Hashtable listActionCheckStatus = new Hashtable();
  59. #region 构造函数
  60. public FormDataAcquise()
  61. {
  62. InitializeComponent();
  63. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  64. this.WindowState = FormWindowState.Maximized;
  65. this.IsMdiContainer = true;
  66. dsone = new DataSet();
  67. dstwo = new DataSet();
  68. _domainDataProvider = new FramDataContext(AppConfig.AppConnectString);
  69. _DataCollectFacade = new DataCollectFacade(this._domainDataProvider);
  70. _ICSBaseModel = new ICSBaseModel(this._domainDataProvider);
  71. }
  72. public FormDataAcquise(string resource)
  73. {
  74. InitializeComponent();
  75. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  76. this.WindowState = FormWindowState.Maximized;
  77. this.IsMdiContainer = true;
  78. dsone = new DataSet();
  79. dstwo = new DataSet();
  80. res = resource;
  81. txtInfo.Text = "当前资源是:" + res;
  82. foreach (DevExpress.XtraGrid.Columns.GridColumn col in gridCK.Columns)
  83. {
  84. col.OptionsColumn.AllowEdit = col.Name == colActNum.Name || col.Name == colunQua.Name;
  85. }
  86. _domainDataProvider = new FramDataContext(AppConfig.AppConnectString);
  87. _DataCollectFacade = new DataCollectFacade(this._domainDataProvider);
  88. }
  89. #endregion
  90. #region 退出r0
  91. private void btnClose_Click(object sender, EventArgs e)
  92. {
  93. AppConfig.CloseFormShow(this.Text);
  94. this.Close();
  95. }
  96. private void btnExit_Click(object sender, EventArgs e)
  97. {
  98. datashow.Close();
  99. AppConfig.CloseFormShow(this.Text);
  100. this.Close();
  101. }
  102. #endregion[
  103. #region 移动窗体
  104. private const int WM_NCHITTEST = 0x84;
  105. private const int HTCLIENT = 0x1;
  106. private const int HTCAPTION = 0x2;
  107. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  108. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  109. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  110. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  111. //重写窗体,使窗体可以不通过自带标题栏实现移动
  112. protected override void WndProc(ref System.Windows.Forms.Message m)
  113. {
  114. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  115. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  116. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  117. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  118. switch (m.Msg)
  119. {
  120. case WM_NCHITTEST:
  121. base.WndProc(ref m);
  122. if ((int)m.Result == HTCLIENT)
  123. m.Result = (IntPtr)HTCAPTION;
  124. return;
  125. }
  126. //拦截双击标题栏、移动窗体的系统消息
  127. if (m.Msg != 0xA3)
  128. {
  129. base.WndProc(ref m);
  130. }
  131. }
  132. #endregion
  133. #region 列表
  134. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  135. {
  136. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  137. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  138. }
  139. #endregion
  140. #region 分页
  141. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  142. {
  143. //DataTable data = AppConfig.GetPageData(dataSource, rptPage.PageIndex, rptPage.PageSize).Copy();
  144. ////DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  145. //grdDetail.DataSource = data;
  146. }
  147. #endregion
  148. private void FormDataAcquise_Load(object sender, EventArgs e)
  149. {
  150. try
  151. {
  152. FormResourceLogin frl = new FormResourceLogin(this);
  153. frl.ShowDialog();
  154. txtInfo.Text = "当前登陆资源是:" + res;
  155. Resource = this._domainDataProvider.ICSRES.SingleOrDefault(a => a.RESCODE == this.res && a.WorkPoint == AppConfig.WorkPointCode);
  156. }
  157. catch (Exception ex)
  158. {
  159. throw ex;
  160. }
  161. }
  162. private void txtRcard_KeyPress(object sender, KeyPressEventArgs e)
  163. {
  164. if (e.KeyChar == '-')
  165. e.Handled = true;
  166. if (e.KeyChar == 13)
  167. {
  168. this.Validate();
  169. if (txtRCard.Text.Trim() == string.Empty)
  170. {
  171. txtMo.Text = String.Empty;
  172. txtItemCode.Text = String.Empty;
  173. txtItemName.Text = String.Empty;
  174. txtRCard.Focus();
  175. return;
  176. }
  177. else
  178. {
  179. //根据产品序列号找到工单,产品信息
  180. if (GetMoItem())
  181. {
  182. string sql = @"select OPCODE
  183. from ICSOP2RES
  184. where RESCODE='" + res + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  185. sql = string.Format(sql);
  186. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  187. string op = data.Rows[0]["OPCODE"].ToString();
  188. txtOP.Text = "工序是:" + op;
  189. string sql2 = @"select ROUTECODE
  190. from ICSMO2ROUTE
  191. where MOCODE='" + txtMo.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  192. sql2 = string.Format(sql2);
  193. DataTable data2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql2).Tables[0];
  194. string route = data2.Rows[0]["ROUTECODE"].ToString();
  195. txtRoute.Text = "途程是:" + route;
  196. //绑定显示当前工单生产信息
  197. Blindone();
  198. }
  199. }
  200. }
  201. }
  202. private bool GetMoItem()
  203. {
  204. string sql = @"select b.MOCODE as mocode,b.ITEMCODE as itemcode,c.INVNAME as itemdesc,a.RCARD
  205. from ICSMO2RCARD a
  206. left join ICSMO b on a.MOCODE=b.MOCODE
  207. left join ICSINVENTORY c on b.ITEMCODE=c.INVCODE
  208. where RCARD='" + txtRCard.Text.Trim() + "' ";
  209. sql = string.Format(sql);
  210. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  211. if (dt != null && dt.Rows.Count > 0)
  212. {
  213. if (dt.Rows[0]["mocode"].ToString() != "")
  214. {
  215. txtMo.Text = dt.Rows[0]["mocode"].ToString();
  216. }
  217. if (dt.Rows[0]["itemcode"].ToString() != "")
  218. {
  219. txtItemCode.Text = dt.Rows[0]["itemcode"].ToString();
  220. }
  221. if (dt.Rows[0]["itemdesc"].ToString() != "")
  222. {
  223. txtItemName.Text = dt.Rows[0]["itemdesc"].ToString();
  224. }
  225. SetMsg(Color.White, "");
  226. return true;
  227. }
  228. else
  229. {
  230. SetMsg(Color.Red, "序列号不存在,请重新输入!");
  231. this.txtRCard.Text = "";
  232. this.txtRCard.Focus();
  233. return false;
  234. }
  235. }
  236. private void txtRcard_Validated(object sender, EventArgs e)
  237. {
  238. }
  239. private void Blindone()
  240. {
  241. //绑定
  242. if (dsone!=null)
  243. {
  244. dsone.Reset();
  245. }
  246. dtzhu = null;
  247. dtone = null;
  248. dtzhu = MainTable().Copy();
  249. dtone = OneTable().Copy();
  250. dtzhu.TableName = "one";
  251. dtone.TableName = "two";
  252. if (dsone != null)
  253. {
  254. dsone.Tables.Add(dtzhu);
  255. dsone.Tables.Add(dtone);
  256. }
  257. DataRelation dr = new DataRelation("Level1", new DataColumn[] { dsone.Tables[0].Columns["CKGROUP"] }, new DataColumn[] { dsone.Tables[1].Columns["CKGROUP"] });
  258. dsone.Relations.Add(dr);
  259. grdDetail.DataSource = dtzhu;
  260. grvCKGView.BestFitColumns();
  261. gridERGDetail.BestFitColumns();
  262. }
  263. private void Blindtwo()
  264. {
  265. //绑定
  266. if (dstwo != null)
  267. {
  268. dstwo.Reset();
  269. }
  270. dttwo = null;
  271. dtthree = null;
  272. dttwo = TwoTable().Copy();
  273. dtthree = ThreeTable().Copy();
  274. dttwo.TableName = "three";
  275. dtthree.TableName = "four";
  276. if (dstwo != null)
  277. {
  278. dstwo.Tables.Add(dttwo);
  279. dstwo.Tables.Add(dtthree);
  280. }
  281. DataRelation dr = new DataRelation("Level2", new DataColumn[] { dstwo.Tables[0].Columns["ECGCODE"] }, new DataColumn[] { dstwo.Tables[1].Columns["ECGCODE"] });
  282. dstwo.Relations.Add(dr);
  283. gridERDetail.DataSource = dttwo;
  284. gridERGDetail.BestFitColumns();
  285. gridER.BestFitColumns();
  286. }
  287. #region 检验类型
  288. public DataTable MainTable()
  289. {
  290. string sql = @"select
  291. cast( 0 as bit) as isSelect,
  292. a.CKGROUP,
  293. b.CKGROUPDESC
  294. from ICSMODELOP2CKGROUP a
  295. left join ICSOQCCKGROUP b on a.CKGROUP=b.CKGROUP
  296. where a.ITEMCODE='{0}' and a.OPCODE in(select OPCODE from ICSOP2RES where RESCODE='{1}')";
  297. sql = string.Format(sql,txtItemCode.Text,res);
  298. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  299. return data;
  300. }
  301. #endregion
  302. #region 检验项目
  303. public DataTable OneTable()
  304. {
  305. string sql = @"select cast( 0 as bit) as XuHao,cast( 0 as bit) as unQua,cast(0 as decimal(18,2)) as ActNum,a.CKITEMCODE,a.CKITEMDESC,a.SetValueMin,a.SetValueMax,b.CKGROUP as CKGROUP
  306. from ICSOQCCKLIST a
  307. left join ICSOQCCKGROUP2LIST b on a.CKITEMCODE=b.CKITEMCODE
  308. where b.CKGROUP in(select a.CKGROUP
  309. from ICSMODELOP2CKGROUP a
  310. left join ICSOQCCKGROUP b on a.CKGROUP=b.CKGROUP
  311. where a.ITEMCODE='{0}' and a.OPCODE in(select OPCODE from ICSOP2RES where RESCODE='{1}'))";
  312. sql = string.Format(sql, txtItemCode.Text, res);
  313. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  314. return data;
  315. }
  316. #endregion
  317. #region 不良代码组
  318. public DataTable TwoTable()
  319. {
  320. string sql = @"select cast( 0 as bit) as selectone,a.ECGCODE as ECGCODE,b.ECGDESC as ECGDESC
  321. from ICSMODEL2ECG a
  322. left join ICSECG b on a.ECGCODE=b.ECGCODE
  323. where a.MODELCODE in (select INVCLASS from ICSINVENTORY where INVCODE='{0}') ";
  324. sql = string.Format(sql, txtItemCode.Text);
  325. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  326. return data;
  327. }
  328. #endregion
  329. #region 不良代码
  330. public DataTable ThreeTable()
  331. {
  332. string sql = @"select cast( 0 as bit) as selecttwo,a.ECGCODE as ECGCODE,b.ECODE as ECODE,b.ECDESC as ECDESC
  333. from ICSECG2EC a
  334. left join ICSEC b on a.ECODE=b.ECODE
  335. where a.ECGCODE in (select ECGCODE
  336. from ICSMODEL2ECG
  337. where MODELCODE in (select INVCLASS from ICSINVENTORY where INVCODE='{0}'))";
  338. sql = string.Format(sql, txtItemCode.Text);
  339. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  340. return data;
  341. }
  342. #endregion
  343. private void txtbuliang_CheckedChanged(object sender, EventArgs e)
  344. {
  345. Blindtwo();
  346. }
  347. private void txtliang_CheckedChanged(object sender, EventArgs e)
  348. {
  349. dstwo.Reset();
  350. dttwo = null;
  351. dtthree = null;
  352. }
  353. private void grvDetail_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
  354. {
  355. if (e.Column == colisSelect)
  356. {
  357. if (e.Value == null)
  358. { return; }
  359. bool? isSelect = e.Value as bool?;
  360. string ckgroup = grvCKGView.GetRowCellValue(grvCKGView.FocusedRowHandle, colCKGROUP).ToString();
  361. DataRow[] drs = dtone.Select("CKGROUP = '" + ckgroup + "'");
  362. foreach (DataRow dr in drs)
  363. {
  364. dr["XuHao"] = isSelect;
  365. }
  366. }
  367. }
  368. private void txtUnLiang_KeyPress(object sender, KeyPressEventArgs e)
  369. {
  370. if (e.KeyChar == 13)
  371. this.Validate();
  372. }
  373. private void txtUnLiang_Validated(object sender, EventArgs e)
  374. {
  375. string buLiang = txtERSCode.Text.Trim();
  376. if (!buLiang.Equals(""))
  377. {
  378. DataRow[] drs = dtthree.Select("ECSCODE='" + buLiang + "'");
  379. if (!(drs.Count() == 0))
  380. {
  381. foreach (DataRow dr in drs)
  382. {
  383. dr["selecttwo"] = 1;
  384. }
  385. }
  386. }
  387. }
  388. private void txtMo_EditValueChanged(object sender, EventArgs e)
  389. {
  390. }
  391. private void btnExit_Click_1(object sender, EventArgs e)
  392. {
  393. this.Close();
  394. }
  395. private void btnSave_Click(object sender, EventArgs e)
  396. {
  397. #region 保存按钮的主逻辑
  398. Messages messages = new Messages();
  399. try
  400. {
  401. int m = 0;
  402. for (int i = 0; i < gridCK.RowCount; i++)
  403. {
  404. string sel = gridCK.GetRowCellValue(i, colXuHao).ToString();
  405. if (sel == "True")
  406. {
  407. m++;
  408. }
  409. }
  410. if (m == 0)
  411. {
  412. ICSBaseSimpleCode.AppshowMessageBox("无可要保存的良品数据,请选择数据!");
  413. return;
  414. }
  415. this._domainDataProvider.Connection.Open();
  416. this._domainDataProvider.Transaction = this._domainDataProvider.Connection.BeginTransaction();
  417. ActionOnLineHelper onLine = new ActionOnLineHelper(this._domainDataProvider);
  418. string rCard = this.txtRCard.Text.Trim();
  419. messages.AddMessages(CheckProduct(rCard));
  420. actionCheckStatus = new ActionCheckStatus();
  421. actionCheckStatus.ProductInfo = product;
  422. if (actionCheckStatus.ProductInfo != null)
  423. {
  424. actionCheckStatus.ProductInfo.Resource = Resource;
  425. }
  426. string strMoCode = this.txtMo.Text.Trim();
  427. actionCheckStatus.MO = this._domainDataProvider.ICSMO.SingleOrDefault(a => a.MOCODE == strMoCode && a.WorkPoint == AppConfig.WorkPointCode);
  428. if (listActionCheckStatus.ContainsKey(strMoCode))
  429. {
  430. actionCheckStatus = (ActionCheckStatus)listActionCheckStatus[strMoCode];
  431. actionCheckStatus.ProductInfo = product;
  432. actionCheckStatus.ActionList = new ArrayList();
  433. }
  434. else
  435. {
  436. actionCheckStatus.NeedUpdateSimulation = false;
  437. actionCheckStatus.NeedFillReport = false;
  438. listActionCheckStatus.Add(strMoCode, actionCheckStatus);
  439. }
  440. //判断检验项目选中后是否填入测试值
  441. if (!CheckIsDoAllCheckList())
  442. {
  443. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, "填入测试值"));
  444. }
  445. if (messages.IsSuccess())
  446. {
  447. messages.AddMessages(CheckInfo());
  448. }
  449. if (!messages.IsSuccess())
  450. {
  451. throw new Exception(messages.ToString());
  452. }
  453. //良品采集
  454. if (messages.IsSuccess() && this.rdGood.Checked)
  455. {
  456. messages.AddMessages(GetProduct(rCard));
  457. messages.AddMessages(RunGood(actionCheckStatus, this.GetTestData().ToArray(), rCard));
  458. }
  459. else
  460. {
  461. if (!messages.IsSuccess())
  462. {
  463. throw new Exception(messages.ToString());
  464. }
  465. }
  466. //不良品采集
  467. if (messages.IsSuccess() && this.rdNG.Checked)
  468. {
  469. messages.AddMessages(CheckErrorCodes());
  470. if (messages.IsSuccess())
  471. {
  472. messages.AddMessages(GetProduct(rCard));
  473. messages.AddMessages(RunNG(actionCheckStatus, this.GetTestData().ToArray(), rCard));
  474. }
  475. }
  476. else
  477. {
  478. if (!messages.IsSuccess())
  479. {
  480. throw new Exception(messages.ToString());
  481. }
  482. }
  483. this._domainDataProvider.SubmitChanges();
  484. this._domainDataProvider.Transaction.Commit();
  485. this._domainDataProvider.Connection.Close();
  486. SetMsg(Color.Blue, "序列号:" + rCard + "采集成功!");
  487. }
  488. catch (Exception ex)
  489. {
  490. this._domainDataProvider.Transaction.Rollback();
  491. this._domainDataProvider.Connection.Close();
  492. SetMsg(Color.Red, ex.Message);
  493. }
  494. #endregion
  495. }
  496. private Messages CheckInfo()
  497. {
  498. Messages messages = new Messages();
  499. //判断是否是第一道工序,如果是则做归属工单 如果不是则做过站操作
  500. ICSITEMROUTE2OP itemRoute2Op = _DataCollectFacade.GetMORouteFirstOperation(this.txtMo.Text.Trim());
  501. //根据资源找到对应的工序
  502. ICSOP2RES op2res = _ICSBaseModel.GetOperationByResource(res);
  503. if (itemRoute2Op.OPCODE == op2res.OPCODE)
  504. {
  505. //先判断是不良品回流,如果是,则不走GOMO,如果不是则走GOMO
  506. if ((CheckIsExistInICSTS(txtRCard.Text) == null))
  507. {
  508. messages.AddMessages(RunGOMO(actionCheckStatus, this.txtRCard.Text.Trim()));
  509. if (!messages.IsSuccess())
  510. {
  511. listActionCheckStatus.Clear();
  512. }
  513. }
  514. else if (CheckIsExistInICSTS(txtRCard.Text).TSSTATUS != "tsstatus_reflow")
  515. {
  516. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("当前工序未完成维修")));
  517. }
  518. }
  519. else
  520. {
  521. if (GetSimulationByRCard(txtRCard.Text) == null)
  522. {
  523. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("该序列号未归属工单")));
  524. }
  525. //当前工序如果不是第一站工序
  526. //判断是否有不良品回流
  527. if (CheckIsExistInICSTS(txtRCard.Text) != null)
  528. {
  529. if (op2res.OPCODE == CheckIsExistInICSTS(txtRCard.Text).FRMOPCODE)
  530. {
  531. if (CheckIsExistInICSTS(txtRCard.Text).TSSTATUS != "tsstatus_reflow")
  532. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("当前工序未完成维修")));
  533. //return;
  534. }
  535. if ((GetSimulationByRCard(txtRCard.Text).OPCODE != op2res.OPCODE) && CheckIsExistInICSTS(txtRCard.Text).FRMOPCODE ==
  536. GetSimulationByRCard(txtRCard.Text).OPCODE && (CheckIsExistInICSTS(txtRCard.Text).TSSTATUS != "tsstatus_reflow"))
  537. {
  538. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("工序" + CheckIsExistInICSTS(txtRCard.Text).FRMOPCODE + "未完成维修")));
  539. //return;
  540. }
  541. }
  542. }
  543. return messages;
  544. }
  545. #region 处理函数
  546. //获得产品信息
  547. private Messages GetProduct(string rcard)
  548. {
  549. Messages productmessages = new Messages();
  550. ActionOnLineHelper dataCollect = new ActionOnLineHelper(this._domainDataProvider);
  551. productmessages.AddMessages(dataCollect.GetIDInfo(rcard));
  552. if (productmessages.IsSuccess())
  553. {
  554. product = (ProductInfo)productmessages.GetData().Values[0];
  555. }
  556. else
  557. {
  558. product = new ProductInfo();
  559. }
  560. return productmessages;
  561. }
  562. //获得产品信息
  563. private Messages GetProduct()
  564. {
  565. Messages productmessages = new Messages();
  566. ActionOnLineHelper dataCollect = new ActionOnLineHelper(this._domainDataProvider);
  567. //获取转换后序列号
  568. string runingCard = _DataCollectFacade.GetRuningCard(this.txtRCard.Text.Trim().ToUpper(), string.Empty);
  569. productmessages.AddMessages(dataCollect.GetIDInfo(runingCard));
  570. if (productmessages.IsSuccess())
  571. {
  572. product = (ProductInfo)productmessages.GetData().Values[0];
  573. }
  574. else
  575. {
  576. product = new ProductInfo();
  577. }
  578. return productmessages;
  579. }
  580. // 根据产品信息,决定部分控件的状态
  581. private Messages CheckProduct(string rcard)
  582. {
  583. Messages messages = new Messages();
  584. try
  585. {
  586. messages.AddMessages(GetProduct(rcard));
  587. if (product.LastSimulation != null)
  588. {
  589. btnSave.Enabled = true;
  590. }
  591. }
  592. catch (Exception e)
  593. {
  594. messages.Add(new ICSSoft.Frame.DataConnect.Message(e));
  595. }
  596. return messages;
  597. }
  598. // GOOD指令采集
  599. private Messages RunGood(ActionCheckStatus actionCheckStatus, object[] testDataObjectList, string rCard)
  600. {
  601. Messages messages = new Messages();
  602. IAction dataCollectModule = new ActionFactory(this._domainDataProvider).CreateAction(ActionType.DataCollectAction_GOOD);
  603. messages.AddMessages(((IActionWithStatus)dataCollectModule).Execute(new ActionEventArgs(ActionType.DataCollectAction_GOOD, rCard,
  604. AppConfig.UserCode,
  605. this.res, product, testDataObjectList), actionCheckStatus));
  606. if (messages.IsSuccess())
  607. {
  608. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("$CS_GOODSUCCESS,$CS_Param_ID: {0}", rCard)));
  609. }
  610. return messages;
  611. }
  612. // NG指令采集
  613. private Messages RunNG(ActionCheckStatus actionCheckStatus, object[] testDataObjectList, string rCard)
  614. {
  615. Messages messages = new Messages();
  616. object[] ErrorCodes = GetNGData().ToArray();//取不良代码组+不良代码
  617. IAction dataCollectModule = new ActionFactory(this._domainDataProvider).CreateAction(ActionType.DataCollectAction_NG);
  618. messages.AddMessages(((IActionWithStatus)dataCollectModule).Execute(
  619. new TSActionEventArgs(ActionType.DataCollectAction_NG,
  620. rCard,
  621. AppConfig.UserCode,
  622. this.res,
  623. product,
  624. ErrorCodes,
  625. null,
  626. "", testDataObjectList), actionCheckStatus));
  627. if (messages.IsSuccess())
  628. {
  629. iNG = iNG + 1;
  630. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, string.Format("$CS_NGSUCCESS,$CS_Param_ID: {0}", rCard)));
  631. }
  632. return messages;
  633. }
  634. //工单归属采集
  635. private Messages RunGOMO(ActionCheckStatus actionCheckStatus, string rCard)
  636. {
  637. Messages messages = new Messages();
  638. ActionOnLineHelper onLine = new ActionOnLineHelper(this._domainDataProvider);
  639. actionCheckStatus.ProductInfo = product;
  640. //参数定义
  641. GoToMOActionEventArgs args = new GoToMOActionEventArgs(ActionType.DataCollectAction_GoMO,rCard.Trim(),
  642. AppConfig.UserCode,
  643. this.res, product, this.txtMo.Text.Trim());
  644. //Laws Lu,执行工单采集并收集返回信息
  645. if (messages.IsSuccess())
  646. {
  647. messages.AddMessages(onLine.Action(args, actionCheckStatus));
  648. }
  649. if (messages.IsSuccess())
  650. {
  651. messages.Add(new ICSSoft.Frame.DataConnect.Message(MessageType.Success, "$CS_GOMOSUCCESS $CS_Param_ID:" + rCard.Trim().ToString()));
  652. this.txtRCard.SelectAll();
  653. this.txtRCard.Focus();
  654. }
  655. return messages;
  656. }
  657. //判断是否是最后一道工序
  658. private bool IsLastOP(string moCode, string routeCode, string opCode)
  659. {
  660. if (routeCode == string.Empty)
  661. return false;
  662. return _DataCollectFacade.OPIsMORouteLastOP(moCode, routeCode, opCode);
  663. }
  664. //判断是否所有的检验项目都勾选,并设置结果
  665. private bool CheckIsDoAllCheckList()
  666. {
  667. //for (int i = 0; i < this.grvCKGView.row.Count; i++)
  668. //{
  669. // if (this.ultraGridCheckList.Rows[i].HasChild(false))
  670. // {
  671. // for (int j = 0; j < this.ultraGridCheckList.Rows[i].ChildBands[0].Rows.Count; j++)
  672. // {
  673. // if (this.ultraGridCheckList.Rows[i].ChildBands[0].Rows[j].Cells["Checked"].Value == "false")
  674. // {
  675. // return false;
  676. // }
  677. // }
  678. // }
  679. //}
  680. return true;
  681. }
  682. public ICSTS CheckIsExistInICSTS(string rcard)
  683. {
  684. string sql2 = @"select *
  685. from ICSTS
  686. where RCARD='" + rcard + "' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  687. var objs = this._domainDataProvider.ExecuteQuery<ICSTS>(sql2).ToList();
  688. if (objs == null || objs.Count < 1)
  689. return null;
  690. else
  691. return (ICSTS)objs[0];
  692. }
  693. // private bool tsstatus_reflow()
  694. // {
  695. // string sql2 = @"select *
  696. // from ICSTS
  697. // where RCARD='" + txtRCard.Text + "' and TSSTATUS='tsstatus_reflow' and WorkPoint='" + AppConfig.WorkPointCode + "'";
  698. // sql2 = string.Format(sql2);
  699. // DataTable data2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql2).Tables[0];
  700. // if (data2.Rows.Count > 0)
  701. // {
  702. // return true;
  703. // }
  704. // return false;
  705. // }
  706. public ICSSimulation GetSimulationByRCard(string rCard)
  707. {
  708. string sql = @"select * from ICSSimulation
  709. where RCARD = '" + rCard + "' order by MTIME desc";
  710. var objs = this._domainDataProvider.ExecuteQuery<ICSSimulation>(sql).ToList();
  711. if (objs == null || objs.Count < 1)
  712. return null;
  713. else
  714. return (ICSSimulation)objs[0];
  715. }
  716. private Messages CheckErrorCodes()
  717. {
  718. Messages megs = new Messages();
  719. //if (ucErrorCodeSelectNew.GetSelectedErrorCodeList() == null || ucErrorCodeSelectNew.GetSelectedErrorCodeList().Length == 0)
  720. // megs.Add(new UserControl.Message(MessageType.Error, "$CS_Please_Select_ErrorCode"));
  721. return megs;
  722. }
  723. private List<ICSTESTDATA> GetTestData()
  724. {
  725. List<ICSTESTDATA> datalist = new List<ICSTESTDATA>();
  726. #region 测试数据
  727. for (int i = 0; i < gridCK.RowCount; i++)
  728. {
  729. int shiftDay = 0;
  730. string sel = gridCK.GetRowCellValue(i, colXuHao).ToString();
  731. if (sel == "True")
  732. {
  733. ICSBaseModel model = new ICSBaseModel(this._domainDataProvider);
  734. ICSRES res1 = (ICSRES)model.GetResource(res);
  735. if (res != null)
  736. {
  737. ICSTP currTimePeriod = (ICSTP)model.GetTimePeriod(res1.SHIFTTYPECODE, FormatHelper.TODateInt(AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss")));
  738. shiftDay = model.GetShiftDay(currTimePeriod, DateTime.Now);
  739. }
  740. ICSTESTDATA test = new ICSTESTDATA();
  741. test.GUID = AppConfig.GetGuid();
  742. test.RCARD = txtRCard.Text;
  743. test.MOCODE = txtMo.Text;
  744. test.SHIFTDAY = shiftDay;
  745. test.ITEMCODE = txtItemCode.Text;
  746. test.ICSMESEntityList_serial = "0";
  747. test.DEVICENO = "";
  748. test.CKGROUP = gridCK.GetRowCellValue(i, colziCKGROUP).ToString();
  749. test.CKITEMCODE = gridCK.GetRowCellValue(i, colCKITEMCODE).ToString();
  750. test.PARAM = "";
  751. test.USL = Convert.ToDecimal(gridCK.GetRowCellValue(i, colSetValueMax).ToString());
  752. test.LSL = Convert.ToDecimal(gridCK.GetRowCellValue(i, colSetValueMin).ToString());
  753. test.TESTINGVALUE = gridCK.GetRowCellValue(i, colActNum).ToString();
  754. test.TESTINGRESULT = gridCK.GetRowCellValue(i, colunQua).ToString();
  755. test.TESTINGTIME = DateTime.Now;
  756. test.MUSER = AppConfig.UserCode;
  757. test.MUSERName = AppConfig.UserName;
  758. test.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  759. test.WorkPoint = AppConfig.WorkPointCode;
  760. datalist.Add(test);
  761. }
  762. }
  763. #endregion
  764. return datalist;
  765. }
  766. private List<ICSTESTDATA> GetSelectedErrorCodeList()
  767. {
  768. return new List<ICSTESTDATA>();
  769. }
  770. #endregion
  771. private void SetMsg(Color color, string Msg)
  772. {
  773. txtMessages.Text = Msg;
  774. txtMessages.ForeColor = color;
  775. }
  776. private void ClearPageData()
  777. {
  778. txtMo.Text = String.Empty;
  779. txtItemCode.Text = String.Empty;
  780. txtItemName.Text = String.Empty;
  781. }
  782. //不良品选中数据
  783. private List<ICSECG2EC> GetNGData()
  784. {
  785. List<ICSECG2EC> datalist = new List<ICSECG2EC>();
  786. for (int i = 0; i < gridER.RowCount; i++)
  787. {
  788. if (gridER.GetRowCellValue(i, colselecttwo).ToString() == "True")
  789. {
  790. ICSECG2EC data = new ICSECG2EC();
  791. data.ECODE = gridER.GetRowCellValue(i, colECSCODE).ToString();
  792. data.ECGCODE = gridER.GetRowCellValue(i,colECSGCODEZI).ToString();
  793. datalist.Add(data);
  794. }
  795. }
  796. return datalist;
  797. }
  798. private void grvCKGView_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)
  799. {
  800. gridCK = grvCKGView.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;
  801. }
  802. private void gridERGDetail_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)
  803. {
  804. gridER = gridERGDetail.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;
  805. }
  806. private void gridERGDetail_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
  807. {
  808. if (e.Column == colselectone)
  809. {
  810. if (e.Value == null)
  811. { return; }
  812. bool? isSelect = e.Value as bool?;
  813. string ckgroup = gridERGDetail.GetRowCellValue(gridERGDetail.FocusedRowHandle, colECGCODE).ToString();
  814. DataRow[] drs = dtthree.Select("ECGCode = '" + ckgroup + "'");
  815. foreach (DataRow dr in drs)
  816. {
  817. dr["selecttwo"] = isSelect;
  818. }
  819. }
  820. }
  821. }
  822. }