F_MST_1103.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. /*******************************************************************************
  2. * Copyright(c) 2016 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:F_MST_1103.cs
  5. * 2.功能描述:工艺配置
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 王鑫 2016/07/22 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Windows.Forms;
  14. using Dongke.IBOSS.PRD.Basics.BaseControls;
  15. using Dongke.IBOSS.PRD.Basics.BaseResources;
  16. using Dongke.IBOSS.PRD.Client.CommonModule;
  17. using Dongke.IBOSS.PRD.Client.Controls;
  18. using Dongke.IBOSS.PRD.WCF.DataModels;
  19. using Dongke.IBOSS.PRD.WCF.Proxys;
  20. namespace Dongke.IBOSS.PRD.Client.SystemModule
  21. {
  22. /// <summary>
  23. /// 工艺配置
  24. /// </summary>
  25. public partial class F_MST_1103 : FormBase
  26. {
  27. #region 成员变量
  28. // 配置ID
  29. private int _ptid = 0;
  30. //需要添加的成型线明细集合
  31. public List<GroutingLineDetailEntity> _addDetailList = new List<GroutingLineDetailEntity>();
  32. //需要添加的成型工号明细集合
  33. public List<GroutingLineUserEntity> _addDetailUserList = new List<GroutingLineUserEntity>();
  34. //
  35. private string _procedureNameValue; // 工序名称
  36. private string _perProcedureNameValue; // 前工序名称
  37. private string _inNameValue; // 工艺部门(入)
  38. private string _outNameValue; // 工艺部门(出)
  39. // 工序数据源
  40. private DataTable _dtProcedure = new DataTable();
  41. // 组织机构数据源
  42. private DataTable _dtOrganization = new DataTable();
  43. private bool _ShowFlag = true;
  44. #endregion
  45. #region 构造函数
  46. public F_MST_1103(int ptid)
  47. {
  48. InitializeComponent();
  49. if (ptid > 0)
  50. {
  51. this.Text = "编辑工艺配置";
  52. }
  53. else if (ptid < 0)
  54. {
  55. this.Text = "复制工艺配置";
  56. }
  57. else
  58. {
  59. this.Text = "新建工艺配置";
  60. }
  61. this.btnSave.Text = ButtonText.BTN_SAVE;
  62. this.btnCancel.Text = ButtonText.BTN_CLOSE;
  63. this.dgvTransferSetting.AutoGenerateColumns = false;
  64. this._ptid = ptid;
  65. }
  66. #endregion
  67. #region 事件
  68. /// <summary>
  69. /// 关闭窗体
  70. /// </summary>
  71. private void btnCancel_Click(object sender, EventArgs e)
  72. {
  73. this.Close();
  74. }
  75. /// <summary>
  76. /// 提交新建
  77. /// </summary>
  78. private void btnSave_Click(object sender, EventArgs e)
  79. {
  80. try
  81. {
  82. int ErrorId = ValidationText();
  83. if (ErrorId != Constant.INT_IS_ZERO)
  84. {
  85. string errorAddress = "";
  86. switch (ErrorId)
  87. {
  88. case 1:
  89. this.txtName.Focus();
  90. errorAddress = "配置名称";
  91. break;
  92. case 2:
  93. this.dkproductionLineSearchBox1.Focus();
  94. errorAddress = "生产线";
  95. break;
  96. case 3:
  97. this.txtDisplayNo.Focus();
  98. errorAddress = "显示顺序";
  99. break;
  100. default:
  101. break;
  102. };
  103. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, errorAddress),
  104. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
  105. return;
  106. }
  107. DataTable dtTransferSetting = this.dgvTransferSetting.DataSource as DataTable;
  108. dtTransferSetting.TableName = "dtTransferSetting";
  109. dtTransferSetting.AcceptChanges();
  110. if (dtTransferSetting.Rows.Count == Constant.INT_IS_ZERO)
  111. {
  112. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "配置明细"), this.Text,
  113. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  114. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  115. //this.tabControl1.SelectTab(0);
  116. return;
  117. }
  118. else
  119. {
  120. // 判断必埴项目是否都添写了
  121. bool isError = false;
  122. for (int i = 0; i < dtTransferSetting.Rows.Count; i++)
  123. {
  124. if (dtTransferSetting.Rows[i]["PROCEDUREID"].ToString() == "")
  125. {
  126. isError = true;
  127. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "工序名称"), this.Text,
  128. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  129. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  130. break;
  131. }
  132. if (dtTransferSetting.Rows[i]["INTECDEPID"].ToString() == "")
  133. {
  134. isError = true;
  135. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "工艺部门(入)"), this.Text,
  136. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  137. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  138. break;
  139. }
  140. if (dtTransferSetting.Rows[i]["DisplayNo"].ToString() == "")
  141. {
  142. isError = true;
  143. MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "显示顺序"), this.Text,
  144. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  145. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  146. break;
  147. }
  148. // wangx 2016-10-12
  149. DataRow[] dr = dtTransferSetting.Select("PROCEDUREID=" + dtTransferSetting.Rows[i]["PROCEDUREID"]);
  150. if (dr.Length == 1)
  151. {
  152. // 工序唯一,前置工序必须为空 PERPROCEDUREID
  153. if (dtTransferSetting.Rows[i]["PERPROCEDUREID"].ToString() != string.Empty)
  154. {
  155. isError = true;
  156. MessageBox.Show("【" + dtTransferSetting.Rows[i]["PROCEDURENAME"].ToString() + "】工序唯一,前置工序必须为空", this.Text,
  157. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  158. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  159. break;
  160. }
  161. }
  162. else if (dr.Length > 1)
  163. {
  164. // 多来源工序
  165. // 1先判断前置工序是否为空
  166. foreach (DataRow r in dr)
  167. {
  168. if (r["PERPROCEDUREID"].ToString() == string.Empty)
  169. {
  170. isError = true;
  171. MessageBox.Show("【" + r["PROCEDURENAME"].ToString() + "】工序不唯一,前置工序必须不为空", this.Text,
  172. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  173. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  174. break;
  175. }
  176. }
  177. /* delete by chenxy 潮州工序流程
  178. if (!isError)
  179. {
  180. // 2如果工艺出重复,提示错误消息
  181. int orgCount = dr.Length;//查出几条数据
  182. DataTable dtNew = dr.CopyToDataTable();
  183. DataView dv = dtNew.DefaultView;
  184. DataTable dtDiff = dv.ToTable(true, "OUTTECDEPID");
  185. if (dr.Length != dtDiff.Rows.Count)
  186. {
  187. isError = true;
  188. MessageBox.Show("多来源工序【" + dtTransferSetting.Rows[i]["PROCEDURENAME"].ToString() + "】的工艺部门(出)不能重复。", this.Text,
  189. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  190. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  191. break;
  192. }
  193. }
  194. */
  195. if (!isError)
  196. {
  197. // 3如果工艺入不一致,提示错误消息
  198. DataTable dtInNew = dr.CopyToDataTable();
  199. DataView dv2 = dtInNew.DefaultView;
  200. DataTable dtInDiff = dv2.ToTable(true, "INTECDEPID");
  201. if (dtInDiff.Rows.Count > 1)
  202. {
  203. isError = true;
  204. MessageBox.Show("多来源工序【" + dtTransferSetting.Rows[i]["PROCEDURENAME"].ToString() + "】的工艺部门(入)必须一致。", this.Text,
  205. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  206. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  207. break;
  208. }
  209. }
  210. }
  211. if (isError)
  212. {
  213. break;
  214. }
  215. // wangx 2016-10-12 end
  216. }
  217. if (isError)
  218. {
  219. return;
  220. }
  221. }
  222. TecDepEntity tecDepEntity = new TecDepEntity();
  223. tecDepEntity.PTID = this._ptid;
  224. tecDepEntity.Name = this.txtName.Text.Trim();
  225. tecDepEntity.LineID = Convert.ToInt32(this.dkproductionLineSearchBox1.ProductionLineID);
  226. tecDepEntity.DisplayNo = Convert.ToInt32(this.txtDisplayNo.Text);
  227. tecDepEntity.ValueFlag = chkVYes.Checked ? 1 : 0;
  228. tecDepEntity.Remarks = this.txtRemarks.Text.Trim();
  229. if (this.chkGdate.Checked)
  230. {
  231. tecDepEntity.GroutingDateBegin = this.dtpGdate.Value.Date;
  232. }
  233. if (tecDepEntity.TransferSetting == null)
  234. {
  235. tecDepEntity.TransferSetting = new DataSet();
  236. }
  237. tecDepEntity.TransferSetting.Tables.Add(dtTransferSetting.Copy());
  238. int myReturn = (int)DoAsync(new BaseAsyncMethod(() =>
  239. {
  240. return SystemModuleProxy.Service.SaveTransfer(tecDepEntity);
  241. }));
  242. if (myReturn > Constant.INT_IS_ZERO)
  243. {
  244. MessageBox.Show(string.Format(Messages.MSG_CMN_I001, "工艺配置", "保存"),
  245. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  246. this.DialogResult = DialogResult.OK;
  247. }
  248. else
  249. {
  250. MessageBox.Show(string.Format(Messages.MSG_CMN_W001, "工艺配置", "保存"),
  251. this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
  252. }
  253. }
  254. catch (Exception ex)
  255. {
  256. // 对异常进行共通处理
  257. ExceptionManager.HandleEventException(this.ToString(),
  258. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  259. }
  260. }
  261. /// <summary>
  262. /// 开始编辑事件
  263. /// </summary>
  264. /// <param name="sender"></param>
  265. /// <param name="e"></param>
  266. private void dgvTransferSetting_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
  267. {
  268. try
  269. {
  270. if (this.dkproductionLineSearchBox1.ProductionLineID == null)
  271. {
  272. this.dkproductionLineSearchBox1.Focus();
  273. e.Cancel = true;
  274. return;
  275. }
  276. else
  277. {
  278. //获取工序信息
  279. if (this._dtProcedure.Rows.Count == 0)
  280. {
  281. ProductionLineEntity line = new ProductionLineEntity();
  282. line.ProductionLineID = Convert.ToInt32(this.dkproductionLineSearchBox1.ProductionLineID);
  283. DataTable dt = PCModuleProxy.Service.SearchProductionLine(line).Tables[1];
  284. if (!dt.Columns.Contains("Sel"))
  285. {
  286. DataColumn column = new DataColumn();
  287. column.ColumnName = "Sel";
  288. column.DefaultValue = 0;
  289. column.DataType = typeof(int);
  290. dt.Columns.Add(column);
  291. }
  292. if (dt.Columns.Contains("displayno"))
  293. {
  294. dt.Columns.Remove("displayno");
  295. }
  296. this._dtProcedure = dt;
  297. }
  298. }
  299. if (this.dgvTransferSetting.Rows.Count <= 1)
  300. {
  301. return;
  302. }
  303. DataGridViewColumn columnItem = this.dgvTransferSetting.Columns[e.ColumnIndex];
  304. if ("ProcedureName".Equals(columnItem.Name))
  305. {
  306. _procedureNameValue = this.dgvTransferSetting.Rows[e.RowIndex].Cells[columnItem.Name].Value + "";
  307. }
  308. else if ("PerProcedureName".Equals(columnItem.Name))
  309. {
  310. _perProcedureNameValue = this.dgvTransferSetting.Rows[e.RowIndex].Cells[columnItem.Name].Value + "";
  311. }
  312. else if ("InName".Equals(columnItem.Name))
  313. {
  314. _inNameValue = this.dgvTransferSetting.Rows[e.RowIndex].Cells[columnItem.Name].Value + "";
  315. }
  316. else if ("outName".Equals(columnItem.Name))
  317. {
  318. _outNameValue = this.dgvTransferSetting.Rows[e.RowIndex].Cells[columnItem.Name].Value + "";
  319. }
  320. }
  321. catch (Exception ex)
  322. {
  323. // 对异常进行共通处理
  324. ExceptionManager.HandleEventException(this.ToString(),
  325. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  326. }
  327. }
  328. /// <summary>
  329. /// 单元格值改变事件
  330. /// </summary>
  331. /// <param name="sender"></param>
  332. /// <param name="e"></param>
  333. private void dgvTransferSetting_CellValueChanged(object sender, DataGridViewCellEventArgs e)
  334. {
  335. try
  336. {
  337. if (this.dgvTransferSetting.Rows.Count <= 1 || !_ShowFlag)
  338. {
  339. return;
  340. }
  341. DataGridViewRow rowItem = this.dgvTransferSetting.Rows[e.RowIndex];
  342. DataGridViewColumn columnItem = this.dgvTransferSetting.Columns[e.ColumnIndex];
  343. // 用工序名称获取信息
  344. if ("ProcedureName".Equals(columnItem.Name))
  345. {
  346. _ShowFlag = false;
  347. FormUtility.BindtTransferProcedureRowDataSource(this.dgvTransferSetting,
  348. e.RowIndex, columnItem.Name, _procedureNameValue, 1, _dtProcedure);
  349. // 设置可输入单元格的颜色
  350. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  351. }
  352. else if ("PerProcedureName".Equals(columnItem.Name))
  353. {
  354. _ShowFlag = false;
  355. FormUtility.BindtTransferProcedureRowDataSource(this.dgvTransferSetting,
  356. e.RowIndex, columnItem.Name, _perProcedureNameValue, 0, _dtProcedure);
  357. // 设置可输入单元格的颜色
  358. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  359. }
  360. else if ("outName".Equals(columnItem.Name))
  361. {
  362. _ShowFlag = false;
  363. FormUtility.BindtTransferOutOrganizationRowDataSource(this.dgvTransferSetting,
  364. e.RowIndex, columnItem.Name, _outNameValue, 0, _dtOrganization);
  365. // 设置可输入单元格的颜色
  366. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  367. }
  368. else if ("InName".Equals(columnItem.Name))
  369. {
  370. _ShowFlag = false;
  371. FormUtility.BindtTransferInOrganizationRowDataSource(this.dgvTransferSetting,
  372. e.RowIndex, columnItem.Name, _inNameValue, 0, _dtOrganization);
  373. // 设置可输入单元格的颜色
  374. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  375. }
  376. _ShowFlag = true;
  377. }
  378. catch (Exception ex)
  379. {
  380. //_ShowFlag = true;
  381. // 对异常进行共通处理
  382. ExceptionManager.HandleEventException(this.ToString(),
  383. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  384. }
  385. }
  386. /// <summary>
  387. /// 窗体加载事件
  388. /// </summary>
  389. /// <param name="sender"></param>
  390. /// <param name="e"></param>
  391. private void F_MST_1103_Load(object sender, EventArgs e)
  392. {
  393. try
  394. {
  395. bool isCopy = (this._ptid < 0);
  396. int ptid = this._ptid;
  397. if (isCopy)
  398. {
  399. ptid = 0 - ptid;
  400. this._ptid = 0;
  401. }
  402. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  403. this.txtName.BackColor = System.Drawing.SystemColors.Window;
  404. if (ptid > 0)
  405. {
  406. DataSet dsTransfer = (DataSet)DoAsync(new BaseAsyncMethod(() =>
  407. {
  408. return SystemModuleProxy.Service.GetTransferEditInfo(ptid);
  409. }));
  410. if (dsTransfer != null)
  411. {
  412. this.dgvTransferSetting.DataSource = dsTransfer.Tables[1];
  413. this.txtName.Text = dsTransfer.Tables[0].Rows[0]["Name"].ToString();
  414. this.txtDisplayNo.Text = dsTransfer.Tables[0].Rows[0]["DisplayNo"].ToString();
  415. this.chkVYes.Checked = Convert.ToBoolean(Convert.ToInt32(dsTransfer.Tables[0].Rows[0]["ValueFlag"]));
  416. this.txtRemarks.Text = dsTransfer.Tables[0].Rows[0]["Remarks"].ToString();
  417. this.dkproductionLineSearchBox1.ProductionLineID = Convert.ToInt32(dsTransfer.Tables[0].Rows[0]["LineID"]);
  418. this.dkproductionLineSearchBox1.Text = dsTransfer.Tables[0].Rows[0]["ProductionLineName"].ToString();
  419. object gdb = dsTransfer.Tables[0].Rows[0]["GroutingDateBegin"];
  420. if (gdb != null && gdb != DBNull.Value)
  421. {
  422. this.dtpGdate.Value = Convert.ToDateTime(gdb);
  423. this.chkGdate.Checked = true;
  424. }
  425. }
  426. }
  427. else
  428. {
  429. DataTable dtNew = new DataTable("table1");
  430. dtNew.Columns.Add("PROCEDUREID", typeof(int));
  431. dtNew.Columns.Add("PERPROCEDUREID", typeof(int));
  432. dtNew.Columns.Add("OUTTECDEPID", typeof(int));
  433. dtNew.Columns.Add("INTECDEPID", typeof(int));
  434. dtNew.Columns.Add("ProcedureName");
  435. dtNew.Columns.Add("PerProcedureName");
  436. dtNew.Columns.Add("outName");
  437. dtNew.Columns.Add("InName");
  438. dtNew.Columns.Add("DisplayNo", typeof(int));
  439. this.dgvTransferSetting.DataSource = dtNew;
  440. }
  441. DataTable dtOrganizaion = SystemModuleProxy.Service.GetAllTecDepInfo().Tables[0];
  442. DataView dv = dtOrganizaion.DefaultView;
  443. dv.RowFilter = "ValueFlag=1";
  444. this._dtOrganization = dv.ToTable();
  445. }
  446. catch (Exception ex)
  447. {
  448. // 对异常进行共通处理
  449. ExceptionManager.HandleEventException(this.ToString(),
  450. System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
  451. }
  452. }
  453. /// <summary>
  454. /// 窗体加载后显示事件
  455. /// </summary>
  456. /// <param name="sender"></param>
  457. /// <param name="e"></param>
  458. private void F_PC_0102_1_1_Shown(object sender, EventArgs e)
  459. {
  460. //dgvDetail.IsSetInputColumnsColor = true;
  461. dgvTransferSetting.IsSetInputColumnsColor = true;
  462. }
  463. /// <summary>
  464. /// 工号排序事件
  465. /// </summary>
  466. /// <param name="sender"></param>
  467. /// <param name="e"></param>
  468. private void dgvUser_Sorted(object sender, EventArgs e)
  469. {
  470. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  471. }
  472. /// <summary>
  473. /// 窗口切换事件
  474. /// </summary>
  475. /// <param name="sender"></param>
  476. /// <param name="e"></param>
  477. private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
  478. {
  479. this.dgvTransferSetting.IsSetInputColumnsColor = true;
  480. }
  481. private void chkGdate_CheckedChanged(object sender, EventArgs e)
  482. {
  483. this.dtpGdate.Enabled = this.chkGdate.Checked;
  484. }
  485. private void dgvTransferSetting_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
  486. {
  487. e.Row.Cells["DisplayNo"].Value = e.Row.Index + 1;
  488. }
  489. #endregion
  490. #region 私有方法
  491. /// <summary>
  492. /// 验证添加项
  493. /// </summary>
  494. protected int ValidationText()
  495. {
  496. int ErrorId = 0;
  497. if (this.txtName.Text.Trim() == string.Empty)
  498. {
  499. ErrorId = 1;
  500. return ErrorId;
  501. }
  502. if (this.dkproductionLineSearchBox1.ProductionLineID == null)
  503. {
  504. ErrorId = 2;
  505. return ErrorId;
  506. }
  507. if (this.txtDisplayNo.Text.Trim() == string.Empty)
  508. {
  509. ErrorId = 3;
  510. return ErrorId;
  511. }
  512. return ErrorId;
  513. }
  514. #endregion
  515. }
  516. }