FrmProductName.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Server;
  3. using Core.Mes.Client.Comm.Tool;
  4. using CoreFS.CA06;
  5. using Infragistics.Win.UltraWinGrid;
  6. using System;
  7. using System.Collections;
  8. using System.Data;
  9. using System.Drawing;
  10. using System.Windows.Forms;
  11. namespace Core.StlMes.Client.Qcm
  12. {
  13. public partial class FrmProductName : FrmBase
  14. {
  15. private string _producCode = "";
  16. private int disWidth = 0;
  17. public FrmProductName()
  18. {
  19. InitializeComponent();
  20. ExceptionHelper.RegistException();
  21. }
  22. private void FrmProductName_Load(object sender, EventArgs e)
  23. {
  24. LoadData();
  25. cmbPType.ComboBox.SelectedIndex = 0;
  26. cmbIsP.SelectedIndex = 0;
  27. }
  28. protected override void OnLoad(EventArgs e)
  29. {
  30. base.OnLoad(e);
  31. cmbPType.ComboBox.AutoCompleteMode = Infragistics.Win.AutoCompleteMode.SuggestAppend;
  32. cmbProductType.ComboBox.AutoCompleteMode = Infragistics.Win.AutoCompleteMode.SuggestAppend;
  33. cmbProBigType.ComboBox.AutoCompleteMode = Infragistics.Win.AutoCompleteMode.SuggestAppend;
  34. }
  35. private bool _isPopup = false;
  36. public void PopupLoad(OpeBase ob)
  37. {
  38. this.ob = ob;
  39. _isPopup = true;
  40. this.OnLoad(EventArgs.Empty);
  41. }
  42. private void LoadData()
  43. {
  44. ClsBaseInfo.FillProduc_StyleInfo(cmbPType.ComboBox, this.ob, false);
  45. QcmBaseInfo.FillProductType(cmbProductType.ComboBox, false);
  46. QcmBaseQuery.NitializeProductBigType(cmbProBigType.ComboBox, false, ob);
  47. }
  48. /// <summary>
  49. /// 继承父类方法
  50. /// </summary>
  51. /// <param name="sender"></param>
  52. /// <param name="ToolbarKey"></param>
  53. public override void ToolBar_Click(object sender, string ToolbarKey)
  54. {
  55. switch (ToolbarKey)
  56. {
  57. case "doQuery":
  58. doQuery();
  59. break;
  60. case "doAdd":
  61. doAdd();
  62. break;
  63. case "doModify":
  64. doModify();
  65. break;
  66. case "doDelete":
  67. this.doDeleteOrResume(true);
  68. break;
  69. case "doResume":
  70. this.doDeleteOrResume(false);
  71. break;
  72. case "Export":
  73. Export();
  74. break;
  75. case "Link":
  76. DoLink();
  77. break;
  78. case "Refresh":
  79. {
  80. LoadData();
  81. cmbPType.ComboBox.SelectedIndex = 0;
  82. cmbIsP.SelectedIndex = 0;
  83. break;
  84. }
  85. case "Close":
  86. this.Close();
  87. break;
  88. }
  89. }
  90. private void Export()
  91. {
  92. GridHelper.ulGridToExcel(ultraGrid2, "品名管理");
  93. }
  94. /// <summary>
  95. /// 非空验证
  96. /// </summary>
  97. /// <returns></returns>
  98. private bool ValidInput(string producCode)
  99. {
  100. if (string.IsNullOrEmpty(txtName.Text.Trim()))
  101. {
  102. MessageBox.Show("品名描述不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  103. txtName.Focus();
  104. return false;
  105. }
  106. if (cmbPType.SelecteValue == null || cmbPType.SelecteValue.ToString() == "")
  107. {
  108. MessageBox.Show("品种大类不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  109. cmbPType.Focus();
  110. return false;
  111. }
  112. if (cmbProBigType.SelecteValue == null)
  113. {
  114. MessageUtil.ShowWarning("产品大类不能为空!");
  115. cmbProBigType.Focus();
  116. return false;
  117. }
  118. if (cmbProductType.SelecteValue == null)
  119. {
  120. MessageUtil.ShowWarning("品名类型不能为空!");
  121. cmbProductType.Focus();
  122. return false;
  123. }
  124. if (txtProductJX.Text.Trim() == "")
  125. {
  126. MessageUtil.ShowWarning("品名简称不能为空!");
  127. txtProductJX.Focus();
  128. return false;
  129. }
  130. ArrayList list = new ArrayList();
  131. list.Add(txtName.Text.Trim());
  132. list.Add(producCode);
  133. list.Add(producCode);
  134. list.Add(producCode);
  135. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.IsExist", new object[] { list }, this.ob);
  136. if (dt != null && dt.Rows[0][0].ToString() != "0")
  137. {
  138. MessageBox.Show("系统已经存在该品名描述-[" + txtName.Text.Trim() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  139. txtName.Focus();
  140. return false;
  141. }
  142. return true;
  143. }
  144. /// <summary>
  145. /// 获取Table中最大编号,自增1返回。
  146. /// </summary>
  147. /// <param name="dt"></param>
  148. /// <returns></returns>
  149. private string AutoCode()
  150. {
  151. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.QueryMaxCode", null, ob);
  152. if (dt == null || dt.Rows.Count == 0)
  153. {
  154. return "S000001";
  155. }
  156. int maxCode = 0;
  157. string maxCodeString = dt.Rows[0]["PRODUCCODE"].ToString();
  158. if (maxCodeString == "")
  159. {
  160. return "S000001";
  161. }
  162. maxCode = Convert.ToInt32(maxCodeString.Substring(1));
  163. maxCode += 1;
  164. return maxCodeString.Substring(0, 1) + maxCode.ToString().PadLeft(6, '0');
  165. }
  166. /// <summary>
  167. /// 新增
  168. /// </summary>
  169. private void doAdd()
  170. {
  171. if (ValidInput(""))
  172. {
  173. if (MessageUtil.ShowYesNoAndQuestion("是否确认新增?") == DialogResult.No)
  174. {
  175. return;
  176. }
  177. try
  178. {
  179. ArrayList parm = new ArrayList();
  180. //编号自动生成
  181. string modelCode = AutoCode();
  182. parm.Add(modelCode);
  183. parm.Add(txtName.Text.Trim());
  184. parm.Add(cmbPType.SelecteValue);
  185. parm.Add(cmbPType.Text.Trim());
  186. parm.Add(cmbIsP.Value);
  187. parm.Add(this.UserInfo.GetUserName());
  188. parm.Add(txtMemo.Text.Trim());
  189. parm.Add(txtProductJX.Text.Trim());
  190. parm.Add(txtProductEng.Text.Trim());
  191. parm.Add(cmbProductType.SelecteValue.ToString());
  192. parm.Add(cmbProBigType.SelecteValue.ToString());
  193. CoreClientParam ccp = new CoreClientParam();
  194. ccp.ServerName = "com.steering.pss.qcm.CoreProductName";
  195. ccp.MethodName = "doAdd";
  196. ccp.ServerParams = new object[] { parm };
  197. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  198. if (ccp.ReturnCode == -1) return;
  199. _producCode = modelCode;
  200. MessageUtil.ShowTips("新增数据成功!");
  201. doQuery();
  202. }
  203. catch (Exception ex)
  204. {
  205. MessageBox.Show("错误:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  206. }
  207. }
  208. }
  209. /// <summary>
  210. /// 修改
  211. /// </summary>
  212. private void doModify()
  213. {
  214. if (ultraGrid2.ActiveRow == null)
  215. {
  216. MessageBox.Show("请选择需要修改的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  217. return;
  218. }
  219. _producCode = ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString();
  220. if (ultraGrid2.ActiveRow.Cells["VALIDFLAG"].Value.ToString() == "0")
  221. {
  222. MessageBox.Show("已作废的数据不能再修改,请恢复后修改!", "提示",
  223. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  224. return;
  225. }
  226. //先把这里放开 用于测试录数据,正式上线将
  227. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.isRefrenced", new object[] { _producCode }, this.ob);
  228. if (dt != null && dt.Rows.Count > 0)
  229. {
  230. MessageUtil.ShowWarning("品名已被引用,不能修改!");
  231. return;
  232. }
  233. if (ValidInput(ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString()))
  234. {
  235. //确认修改吗?
  236. if (MessageBox.Show("是否确认修改选中的数据?", "提示", MessageBoxButtons.YesNo,
  237. MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
  238. {
  239. return;
  240. }
  241. ArrayList parm = new ArrayList();
  242. string modelCode = ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString();
  243. parm.Add(txtName.Text.Trim());
  244. parm.Add(cmbPType.SelecteValue.ToString());
  245. parm.Add(cmbPType.Text.Trim());
  246. parm.Add(cmbIsP.Value);
  247. parm.Add(this.UserInfo.GetUserName());
  248. parm.Add(txtMemo.Text.Trim());
  249. parm.Add(txtProductJX.Text.Trim());
  250. parm.Add(txtProductEng.Text.Trim());
  251. parm.Add(cmbProductType.SelecteValue.ToString());
  252. parm.Add(cmbProBigType.SelecteValue.ToString());
  253. parm.Add(modelCode);
  254. CoreClientParam ccp = new CoreClientParam();
  255. ccp.ServerName = "com.steering.pss.qcm.CoreProductName";
  256. ccp.MethodName = "doModify";
  257. ccp.ServerParams = new object[] { parm };
  258. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  259. if (ccp.ReturnCode == -1) return;
  260. MessageUtil.ShowTips("修改数据成功!");
  261. doQuery();
  262. //高亮显示新增的数据
  263. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  264. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  265. {
  266. row = ultraGrid2.Rows[i];
  267. if (row.Cells["PRODUCCODE"].Value.ToString().Equals(modelCode))
  268. {
  269. row.Activate();
  270. break;
  271. }
  272. }
  273. }
  274. }
  275. /// <summary>
  276. /// 查询
  277. /// </summary>
  278. private void doQuery()
  279. {
  280. bool validFlag = chkValid.Checked;
  281. string titleName = txtTitleName.Text.Trim();
  282. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.getLineList",
  283. new Object[] { validFlag, titleName }, this.ob);
  284. GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true);
  285. //不同颜色区分是否有效数据
  286. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  287. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  288. {
  289. row = ultraGrid2.Rows[i];
  290. if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
  291. {
  292. row.Appearance.ForeColor = Color.Red;
  293. }
  294. else
  295. {
  296. row.Appearance.ForeColor = Color.Black;
  297. }
  298. }
  299. //宽度自适应
  300. GridHelper.RefreshAndAutoSize(this.ultraGrid2);
  301. }
  302. /// <summary>
  303. /// GRID ROW激活时信息带至编辑区
  304. /// </summary>
  305. /// <param name="sender"></param>
  306. /// <param name="e"></param>
  307. private void ultraGrid2_AfterRowActivate(object sender, EventArgs e)
  308. {
  309. Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid2.ActiveRow;
  310. if (row != null)
  311. {
  312. txtName.Text = row.Cells["PRODUCNAME"].Value.ToString();
  313. cmbPType.SelecteValue = row.Cells["PRODUC_STYLE"].Value.ToString();
  314. cmbIsP.Value = row.Cells["HAVEJGCODE"].Value.ToString();
  315. txtMemo.Text = row.Cells["MEMO"].Value.ToString();
  316. txtProductJX.Text = row.Cells["PRODUC_JX"].Value.ToString();
  317. txtProductEng.Text = row.Cells["PRODUC_ENG"].Value.ToString();
  318. cmbProductType.SelecteValue = row.GetValue("PRODUC_TYPE");
  319. cmbProBigType.SelecteValue = row.GetValue("PRODUC_HEAD_CODE");
  320. string productCode = row.Cells["PRODUCCODE"].Value.ToString();
  321. if (!_isPopup)
  322. {
  323. ultraGrid1.BeginUpdate();
  324. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.getModel",
  325. new object[] { productCode }, this.ob);
  326. GridHelper.CopyDataToDatatable(ref dt, ref dataTable2, true);
  327. SortRows();
  328. ultraGrid1.EndUpdate();
  329. }
  330. ultraGrid1.UpdateData();
  331. }
  332. }
  333. /// <summary>
  334. /// 删除或恢复
  335. /// </summary>
  336. /// <param name="isDelete">true删除 false恢复</param>
  337. private void doDeleteOrResume(bool isDelete)
  338. {
  339. if (ultraGrid2.ActiveRow == null)
  340. {
  341. MessageBox.Show("请选择需要作废的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  342. return;
  343. }
  344. _producCode = ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString();
  345. if (isDelete == true && ultraGrid2.ActiveRow.Cells["VALIDFLAG"].Value.ToString() == "0")
  346. {
  347. MessageBox.Show("已作废的数据不能再作废!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  348. return;
  349. }
  350. else if (isDelete == false && ultraGrid2.ActiveRow.Cells["VALIDFLAG"].Value.ToString() == "1")
  351. {
  352. MessageBox.Show("已恢复的数据不能再恢复!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  353. return;
  354. }
  355. if (IsUsed(_producCode) == true)
  356. {
  357. MessageUtil.ShowWarning("该品名已被使用,不能作废!");
  358. return;
  359. }
  360. if (MessageBox.Show("是否" + (isDelete ? "作废" : "恢复") + "选中的数据?", "提示",
  361. MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
  362. == DialogResult.No) return;
  363. ArrayList param = new ArrayList();
  364. string producCode = ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString();
  365. param.Add(producCode);
  366. try
  367. {
  368. int count = ServerHelper.SetData("com.steering.pss.qcm.CoreProductName.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob);
  369. }
  370. catch
  371. {
  372. }
  373. MessageUtil.ShowTips((isDelete ? "作废" : "恢复") + "数据成功!");
  374. doQuery();
  375. }
  376. private bool IsUsed(string producCode)
  377. {
  378. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreProductName.isUsed",
  379. new object[] { producCode }, ob);
  380. if (dt.Rows[0][0].ToString() == "0")
  381. {
  382. return false;
  383. }
  384. else
  385. {
  386. return true;
  387. }
  388. }
  389. private void ultraGrid2_InitializeRow(object sender, InitializeRowEventArgs e)
  390. {
  391. if (e.Row.Cells["PRODUCCODE"].Value.ToString() == _producCode)
  392. {
  393. e.Row.Activate();
  394. }
  395. }
  396. private void txtName_TextChanged(object sender, EventArgs e)
  397. {
  398. txtProductJX.Text = txtName.Text.Trim();
  399. }
  400. private void ultraExpandableGroupBox2_ExpandedStateChanged(object sender, EventArgs e)
  401. {
  402. if (disWidth == 0)
  403. {
  404. disWidth = splitContainer1.SplitterDistance;
  405. }
  406. if (ultraExpandableGroupBox2.Expanded)
  407. {
  408. splitContainer1.SplitterDistance = disWidth;
  409. }
  410. else
  411. splitContainer1.SplitterDistance = this.Width;
  412. }
  413. private void DoLink()
  414. {
  415. ArrayList list = new ArrayList();
  416. ultraGrid1.UpdateData();
  417. foreach (UltraGridRow row1 in ultraGrid1.Rows)
  418. {
  419. if (row1.Cells["CHK"].Value.ToString().ToUpper() == "TRUE")
  420. {
  421. ArrayList al = new ArrayList();
  422. al.Add(row1.Cells["MODEL_CODE"].Value.ToString());
  423. al.Add(row1.Cells["MODEL_DESC"].Value.ToString());
  424. al.Add(UserInfo.GetUserName());
  425. list.Add(al);
  426. }
  427. }
  428. string pId = ultraGrid2.ActiveRow.Cells["PRODUCCODE"].Value.ToString();
  429. string pDesc = ultraGrid2.ActiveRow.Cells["PRODUCNAME"].Value.ToString();
  430. if (list.Count > 0)
  431. {
  432. if (MessageBox.Show("是否确认关联所选扣型?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  433. {
  434. return;
  435. }
  436. }
  437. else
  438. {
  439. if (MessageBox.Show("是否确认取消关联的扣型?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  440. {
  441. return;
  442. }
  443. }
  444. int count = ServerHelper.SetData("com.steering.pss.qcm.CoreProductName.doLink", new object[] { list, pId, pDesc }, this.ob);
  445. if (count > 0)
  446. {
  447. MessageUtil.ShowTips(" 数据关联成功!");
  448. doQuery();
  449. //高亮显示新增的数据
  450. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  451. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  452. {
  453. row = ultraGrid2.Rows[i];
  454. if (row.Cells["PRODUCCODE"].Value.ToString().Equals(pId))
  455. {
  456. row.Activate();
  457. break;
  458. }
  459. }
  460. }
  461. }
  462. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  463. {
  464. ultraGrid1.UpdateData();
  465. }
  466. private void SortRows()
  467. {
  468. DataTable sortDt = dataTable2.Copy();
  469. sortDt.DefaultView.Sort = "CHK DESC, MODEL_DESC ASC";
  470. GridHelper.CopyDataToDatatable(sortDt.DefaultView.ToTable(), dataTable2, true);
  471. }
  472. }
  473. }