frmOperateRule.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Code.Converter;
  3. using NXWMS.Client.Code.Extends;
  4. using NXWMS.Client.Code.Models;
  5. using NXWMS.Client.Model.AppModels.Condition.Rule;
  6. using NXWMS.Client.Model.AppModels.Result;
  7. using NXWMS.Client.Model.AppModels.Result.Rule;
  8. using NXWMS.Client.Model.CoreModels;
  9. using NXWMS.Client.String.Enums;
  10. using NXWMS.Commons;
  11. using NXWMS.Forms.Balance;
  12. using NXWMS.Services;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.ComponentModel;
  16. using System.Data;
  17. using System.Drawing;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Web.UI.WebControls;
  21. using System.Windows.Forms;
  22. using static NXWMS.Client.FrmCustom.ColumnControl;
  23. namespace NXWMS.Forms.Rule.frmRuleChild
  24. {
  25. public partial class frmOperateRule : Form
  26. {
  27. /// <summary>
  28. /// 客户端字段排序列表
  29. /// </summary>
  30. private List<TableFieldOrderResult> _tableFieldOrderResult;
  31. /// <summary>
  32. /// 规则编码
  33. /// </summary>
  34. public string _ruleCode;
  35. /// <summary>
  36. /// 界面功能类型
  37. /// </summary>
  38. public EnumFunctionType _FunctionType;
  39. /// <summary>
  40. /// 规则类型
  41. /// </summary>
  42. public RuleType _RuleType;
  43. /// <summary>
  44. /// 界面功能类型
  45. /// </summary>
  46. public enum EnumFunctionType
  47. {
  48. Add,
  49. Edit,
  50. }
  51. /// <summary>
  52. /// 主
  53. /// </summary>
  54. public RuleResult _MainInfo;
  55. /// <summary>
  56. /// 子
  57. /// </summary>
  58. public List<PutAwayRuleDetailResult> _DetailList;
  59. /// <summary>
  60. public frmOperateRule()
  61. {
  62. InitializeComponent();
  63. this.Load += new System.EventHandler(this.frmOperatePutAwayRule_Load);
  64. }
  65. private void frmOperatePutAwayRule_Load(object sender, EventArgs e)
  66. {
  67. InitData();
  68. InitControl();
  69. }
  70. private void InitData()
  71. {
  72. _tableFieldOrderResult = new List<TableFieldOrderResult>();
  73. _tableFieldOrderResult.Add(new TableFieldOrderResult
  74. {
  75. FieldName = "#SELECTED",
  76. FieldDesc = "选择",
  77. IsReadOnly = true,
  78. Width = 100,
  79. ColumnType = DataGridViewColumnType.CheckBox,
  80. });
  81. _tableFieldOrderResult.Add(new TableFieldOrderResult
  82. {
  83. FieldName = "RULE_DTL_ID",
  84. FieldDesc = "明细ID",
  85. IsReadOnly = false,
  86. ColumnType = DataGridViewColumnType.TextBox,
  87. IsShow = false,
  88. });
  89. _tableFieldOrderResult.Add(new TableFieldOrderResult
  90. {
  91. FieldName = "RULE_ITEM_CODE",
  92. FieldDesc = "规则代码",
  93. IsReadOnly = false,
  94. ColumnType = DataGridViewColumnType.TextBox,
  95. });
  96. _tableFieldOrderResult.Add(new TableFieldOrderResult
  97. {
  98. FieldName = "RULE_ITEM_DESC",
  99. FieldDesc = "规则描述",
  100. IsReadOnly = false,
  101. ColumnType = DataGridViewColumnType.TextBox,
  102. });
  103. _tableFieldOrderResult.Add(new TableFieldOrderResult
  104. {
  105. FieldName = "ParamFlagName",
  106. FieldDesc = "参数标识",
  107. IsReadOnly = true,
  108. ColumnType = DataGridViewColumnType.ComboBox,
  109. Data = ModelsConvert.ToDataTable(
  110. new List<FieldValue>()
  111. .GetFieldValueIdList<RuleParamFlag>()
  112. ),
  113. ConditionField = "Name",
  114. ResultField = "Id"
  115. });
  116. _tableFieldOrderResult.Add(new TableFieldOrderResult
  117. {
  118. FieldName = "RULE_ITEM_PARAM1",
  119. FieldDesc = "规则参数1",
  120. IsReadOnly = true,
  121. ColumnType = DataGridViewColumnType.TextBox,
  122. });
  123. _tableFieldOrderResult.Add(new TableFieldOrderResult
  124. {
  125. FieldName = "RULE_ITEM_PARAM2",
  126. FieldDesc = "规则参数2",
  127. IsReadOnly = true,
  128. ColumnType = DataGridViewColumnType.TextBox,
  129. });
  130. _tableFieldOrderResult.Add(new TableFieldOrderResult
  131. {
  132. FieldName = "RULE_ITEM_PARAM3",
  133. FieldDesc = "规则参数3",
  134. IsReadOnly = true,
  135. ColumnType = DataGridViewColumnType.TextBox,
  136. });
  137. _tableFieldOrderResult.Add(new TableFieldOrderResult
  138. {
  139. FieldName = "UsedFlagName",
  140. FieldDesc = "使用标识",
  141. IsReadOnly = false,
  142. ColumnType = DataGridViewColumnType.CheckBox,
  143. });
  144. _tableFieldOrderResult.Add(new TableFieldOrderResult
  145. {
  146. FieldName = "CreateName",
  147. FieldDesc = "创建人",
  148. IsReadOnly = true,
  149. ColumnType = DataGridViewColumnType.TextBox,
  150. });
  151. _tableFieldOrderResult.Add(new TableFieldOrderResult
  152. {
  153. FieldName = "CREATE_TIME",
  154. FieldDesc = "创建时间",
  155. IsReadOnly = true,
  156. ColumnType = DataGridViewColumnType.TextBox,
  157. });
  158. _tableFieldOrderResult.Add(new TableFieldOrderResult
  159. {
  160. FieldName = "UpdateName",
  161. FieldDesc = "更新人",
  162. IsReadOnly = true,
  163. ColumnType = DataGridViewColumnType.TextBox,
  164. });
  165. _tableFieldOrderResult.Add(new TableFieldOrderResult
  166. {
  167. FieldName = "UPDATE_TIME",
  168. FieldDesc = "更新时间",
  169. IsReadOnly = true,
  170. ColumnType = DataGridViewColumnType.TextBox,
  171. });
  172. switch (_RuleType)
  173. {
  174. //订单分配规则
  175. case RuleType.OrderDistribution:
  176. kryptonGroupBoxMain.Text = "订单分配规则主表";
  177. kryptonGroupBoxDetail.Text = "订单分配规则明细";
  178. kryptonLabelCode.Text = "订单分配规则编码";
  179. kryptonLabelName.Text = "订单分配规则名称";
  180. //不同结果类型
  181. switch (_FunctionType)
  182. {
  183. case EnumFunctionType.Add:
  184. this.Text = "订单分配规则-新增";
  185. txtRuleCode.Text = _ruleCode;
  186. txtRuleCode.Enabled = true;
  187. break;
  188. case EnumFunctionType.Edit:
  189. this.Text = "订单分配规则-编辑";
  190. txtRuleCode.Text = _ruleCode;
  191. txtRuleCode.Enabled = false;
  192. break;
  193. }
  194. break;
  195. //上架单规则
  196. case RuleType.PutAway:
  197. kryptonGroupBoxMain.Text = "上架单规则主表";
  198. kryptonGroupBoxDetail.Text = "上架单规则明细";
  199. kryptonLabelCode.Text = "上架单规则编码";
  200. kryptonLabelName.Text = "上架单规则名称";
  201. //不同结果类型
  202. switch (_FunctionType)
  203. {
  204. case EnumFunctionType.Add:
  205. this.Text = "上架单规则-新增";
  206. txtRuleCode.Text = _ruleCode;
  207. txtRuleCode.Enabled = true;
  208. break;
  209. case EnumFunctionType.Edit:
  210. this.Text = "上架单规则-编辑";
  211. txtRuleCode.Text = _ruleCode;
  212. txtRuleCode.Enabled = false;
  213. break;
  214. }
  215. break;
  216. }
  217. }
  218. /// <summary>
  219. /// 控件获取值
  220. /// </summary>
  221. /// <param name="selectColumn"></param>
  222. /// <param name="selectRow"></param>
  223. /// <param name="resultColumnName"></param>
  224. /// <returns></returns>
  225. public string ControlGetValueEvent(DataGridViewCell dataGridViewCell, object inData, OperationDataType operationDataType)
  226. {
  227. if (inData == null)
  228. {
  229. return string.Empty;
  230. }
  231. if (string.IsNullOrWhiteSpace(inData.ToString()))
  232. {
  233. return string.Empty;
  234. }
  235. //MessageBox.Show(inData.ToString());
  236. return "";
  237. }
  238. private void InitControl()
  239. {
  240. CheckForIllegalCrossThreadCalls = false;
  241. dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick);
  242. dataGridView.CellValidating += new DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
  243. //dataGridView.DataError += new DataGridViewDataErrorEventHandler(this.dataGridView_DataError);
  244. //dataGridView.NewRowNeeded += new DataGridViewRowEventHandler(this.dataGridView_NewRowNeeded);
  245. dataGridView.DataError += delegate (object sender, DataGridViewDataErrorEventArgs e) { };
  246. dataGridView.RowValidating += new DataGridViewCellCancelEventHandler(this.dataGridView_RowValidating);
  247. dataGridView.RowHeadersWidth = 200;
  248. dataGridView.VirtualMode = false;
  249. dataGridView.CausesValidation = true;
  250. dataGridView.ShowCellErrors = true;
  251. dataGridView.ShowCellToolTips = true;
  252. dataGridView.ShowRowErrors = true;
  253. dataGridView.ShowEditingIcon = true;
  254. dataGridView.ShowCellToolTips = true;
  255. dataGridView.BuildDataGridView(_tableFieldOrderResult);
  256. //columnControlCode.ControlGetValueEvent += new ControlGetValueHandler(ControlGetValueEvent);
  257. //不同结果类型
  258. switch (_RuleType)
  259. {
  260. //订单分配规则
  261. case RuleType.OrderDistribution:
  262. switch (_FunctionType)
  263. {
  264. case EnumFunctionType.Add:
  265. break;
  266. case EnumFunctionType.Edit:
  267. break;
  268. }
  269. break;
  270. //上架单规则
  271. case RuleType.PutAway:
  272. switch (_FunctionType)
  273. {
  274. case EnumFunctionType.Add:
  275. break;
  276. case EnumFunctionType.Edit:
  277. break;
  278. }
  279. break;
  280. }
  281. if (_FunctionType != EnumFunctionType.Add)
  282. {
  283. //获取对应盘点单数据
  284. var mainResult = RuleServices.putAwayRuleService.GetList(new PutAwayRuleSearchCondition
  285. {
  286. RuleCode=_ruleCode
  287. });
  288. if (mainResult.Status == OperateStatus.Success)
  289. {
  290. _MainInfo = mainResult.Data.RowData.FirstOrDefault();
  291. txtRuleCode.Text = _MainInfo.RULE_CODE;
  292. txtRuleName.Text = _MainInfo.RULE_NAME.ToString();
  293. chkUse.Checked = _MainInfo.USED_FLAG.GetObjectToBoolean();
  294. richDescibe.Text = _MainInfo.DESCRIBE;
  295. }
  296. else
  297. {
  298. KryptonMessageBox.Show($"操作失败!\r\n{mainResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  299. }
  300. //获取对应盘点子数据
  301. var detailResult = RuleServices.putAwayRuleService.GetDetailList(new PutAwayRuleDetailSearchCondition
  302. {
  303. RuleId= _MainInfo.RULE_ID,
  304. });
  305. if (detailResult.Status == OperateStatus.Success)
  306. {
  307. _DetailList = detailResult.Data.ToList();
  308. dataGridView.Columns.Clear();
  309. var addRows = detailResult.Data.ToList();
  310. dataGridView.SetDataGridViewData(_tableFieldOrderResult,ModelsConvert.ToDataTable(addRows));
  311. }
  312. else
  313. {
  314. KryptonMessageBox.Show($"操作失败!\r\n{detailResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  315. }
  316. }
  317. }
  318. /// <summary>
  319. /// 选择行索引列表
  320. /// </summary>
  321. private List<int> _CheckRowIndexList = new List<int>();
  322. /// <summary>
  323. /// 数据试图
  324. /// </summary>
  325. /// <param name="sender"></param>
  326. /// <param name="e"></param>
  327. private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
  328. {
  329. if (e.RowIndex >= 0 && e.ColumnIndex == 0)
  330. {
  331. if (this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null)
  332. {
  333. if (!_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  334. {
  335. _CheckRowIndexList.Add(e.RowIndex);
  336. }
  337. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  338. }
  339. else if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
  340. {
  341. if (_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  342. {
  343. _CheckRowIndexList.Remove(e.RowIndex);
  344. }
  345. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
  346. }
  347. else
  348. {
  349. if (!_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  350. {
  351. _CheckRowIndexList.Add(e.RowIndex);
  352. }
  353. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  354. }
  355. }
  356. }
  357. private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
  358. {
  359. var dataGrid = sender as DataGridView;
  360. var checkResult = IsCheckSuccess(dataGrid, e.RowIndex, e.ColumnIndex, e.FormattedValue);
  361. var columnName = dataGrid.Columns[e.ColumnIndex].Name;
  362. if (columnName == "ParamFlagName")
  363. {
  364. //如果是参数
  365. if (e.FormattedValue.ToString() == (RuleParamFlag.Have.Description()).ToString())
  366. {
  367. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM1"].ReadOnly = false;
  368. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM2"].ReadOnly = false;
  369. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM3"].ReadOnly = false;
  370. }
  371. else
  372. {
  373. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM1"].Value = "";
  374. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM2"].Value = "";
  375. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM3"].Value = "";
  376. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM1"].ReadOnly = true;
  377. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM2"].ReadOnly = true;
  378. dataGrid.Rows[e.RowIndex].Cells["RULE_ITEM_PARAM3"].ReadOnly = true;
  379. }
  380. }
  381. if(columnName == "UsedFlagName")
  382. {
  383. if (dataGrid.Rows[e.RowIndex].Cells["UsedFlagName"].Value == null)
  384. {
  385. dataGrid.Rows[e.RowIndex].Cells["UsedFlagName"].Value = 0;
  386. }
  387. }
  388. }
  389. private void dataGridView_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
  390. {
  391. var dataGrid = sender as DataGridView;
  392. if (!dataGrid.Rows[dataGrid.Rows.Count - 1].IsNewRow)
  393. {
  394. foreach (DataGridViewColumn item in dataGrid.Columns)
  395. {
  396. if (!IsCheckSuccess(dataGrid, e.RowIndex, item.Index, dataGrid.Rows[e.RowIndex].Cells[item.Name].FormattedValue.ToString()))
  397. {
  398. e.Cancel = true;
  399. break;
  400. }
  401. }
  402. }
  403. }
  404. /// <summary>
  405. /// 验证
  406. /// </summary>
  407. /// <param name="dataGrid"></param>
  408. /// <param name="rowIndex"></param>
  409. /// <param name="columnIndex"></param>
  410. /// <param name="cellValue"></param>
  411. /// <returns></returns>
  412. private bool IsCheckSuccess(DataGridView dataGrid, int rowIndex, int columnIndex, object cellValue)
  413. {
  414. var columnName = dataGrid.Columns[columnIndex].Name;
  415. var headerText = dataGrid.Columns[columnIndex].HeaderText;
  416. var value = cellValue.ToString();
  417. var errMessage = string.Empty;
  418. dataGridView.Rows[rowIndex].Cells[columnIndex].ErrorText = "";
  419. dataGridView.Rows[rowIndex].Cells[columnIndex].ToolTipText = "";
  420. dataGridView.Rows[rowIndex].HeaderCell.Value = "";
  421. dataGridView.Rows[rowIndex].HeaderCell.Tag = "";
  422. //空值验证
  423. if (columnName == "ParamFlagName" || columnName == "ParamFlagName" || columnName == "UsedFlagName")
  424. {
  425. if (string.IsNullOrWhiteSpace(value))
  426. {
  427. var tagModel = dataGridView.Columns[columnName].Tag as TableFieldOrderResult;
  428. switch (tagModel.ColumnType)
  429. {
  430. case DataGridViewColumnType.ComboBox:
  431. errMessage = "请选择" + headerText;
  432. break;
  433. case DataGridViewColumnType.DateTimePicker:
  434. errMessage = "请选择" + headerText;
  435. break;
  436. default:
  437. errMessage = "请输入" + headerText;
  438. break;
  439. }
  440. dataGridView.Rows[rowIndex].Cells[columnIndex].ErrorText = errMessage;
  441. dataGridView.Rows[rowIndex].Cells[columnIndex].ToolTipText = errMessage;
  442. dataGridView.Rows[rowIndex].HeaderCell.Value = errMessage;
  443. dataGridView.Rows[rowIndex].HeaderCell.Tag = errMessage;
  444. dataGridView.Rows[rowIndex].HeaderCell.Style.ForeColor = Color.Red;
  445. return false;
  446. }
  447. }
  448. //逻辑验证
  449. //重复编码
  450. if (columnName == "RULE_ITEM_CODE")
  451. {
  452. foreach (DataGridViewRow item in dataGrid.Rows)
  453. {
  454. if (item.Cells["RULE_ITEM_CODE"].FormattedValue.ToString() == value && item.Index != rowIndex)
  455. {
  456. errMessage = "规则编码不可重复!";
  457. dataGridView.Rows[rowIndex].Cells[columnIndex].ErrorText = errMessage;
  458. dataGridView.Rows[rowIndex].Cells[columnIndex].ToolTipText = errMessage;
  459. dataGridView.Rows[rowIndex].HeaderCell.Value = errMessage;
  460. dataGridView.Rows[rowIndex].HeaderCell.Style.ForeColor = Color.Red;
  461. return false;
  462. }
  463. }
  464. }
  465. //逻辑验证
  466. return true;
  467. }
  468. private void dataGridView_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
  469. {
  470. if (e.Button == MouseButtons.Right)
  471. {
  472. contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
  473. }
  474. }
  475. private void 删除选中行ToolStripMenuItem_Click(object sender, EventArgs e)
  476. {
  477. if (_CheckRowIndexList.Count == 0)
  478. {
  479. KryptonMessageBox.Show($"请选择数据进行删除!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  480. return;
  481. }
  482. if (KryptonMessageBox.Show($"确认删除选中数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  483. {
  484. switch (_FunctionType)
  485. {
  486. case EnumFunctionType.Add:
  487. for (int i = 0; i < _CheckRowIndexList.Count; i++)
  488. {
  489. if (dataGridView.Rows[_CheckRowIndexList[i]].Cells[0].FormattedValue.ToString() == "1")
  490. {
  491. dataGridView.Rows.RemoveAt(i);
  492. i--;
  493. }
  494. else
  495. {
  496. continue;
  497. }
  498. }
  499. dataGridView.DataSource = null;
  500. dataGridView.BuildDataGridView(_tableFieldOrderResult);
  501. break;
  502. case EnumFunctionType.Edit:
  503. for (int i = 0; i < _CheckRowIndexList.Count; i++)
  504. {
  505. if (dataGridView.Rows[_CheckRowIndexList[i]].Cells[0].FormattedValue.ToString() == "1")
  506. {
  507. dataGridView.Rows.RemoveAt(i);
  508. i--;
  509. }
  510. else
  511. {
  512. continue;
  513. }
  514. }
  515. break;
  516. }
  517. }
  518. _CheckRowIndexList = new List<int>();
  519. }
  520. private void 全部删除ToolStripMenuItem_Click(object sender, EventArgs e)
  521. {
  522. if (KryptonMessageBox.Show($"确认删除所有数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  523. {
  524. switch (_FunctionType)
  525. {
  526. case EnumFunctionType.Add:
  527. dataGridView.Rows.Clear();
  528. break;
  529. case EnumFunctionType.Edit:
  530. dataGridView.Rows.Clear();
  531. break;
  532. }
  533. _CheckRowIndexList = new List<int>();
  534. }
  535. }
  536. private void btnConfirm_Click(object sender, EventArgs e)
  537. {
  538. if (string.IsNullOrWhiteSpace(txtRuleCode.Text))
  539. {
  540. KryptonMessageBox.Show($"请输入规则编码!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  541. return;
  542. }
  543. if (string.IsNullOrWhiteSpace(txtRuleName.Text))
  544. {
  545. KryptonMessageBox.Show($"请输入规则名称!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  546. return;
  547. }
  548. for (int i = 0; i < dataGridView.RowCount; i++)
  549. {
  550. dataGridView_RowValidating(dataGridView, new DataGridViewCellCancelEventArgs(0, i));
  551. }
  552. if (!dataGridView.IsCheckHeaderValue())
  553. {
  554. KryptonMessageBox.Show($"请检查不符合要求数据!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  555. return;
  556. }
  557. var index = 0;
  558. foreach(DataGridViewRow item in dataGridView.Rows)
  559. {
  560. if (!item.IsNewRow)
  561. {
  562. index++;
  563. }
  564. }
  565. if (index == 0)
  566. {
  567. KryptonMessageBox.Show($"请添加至少一条明细记录!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  568. return;
  569. }
  570. switch (_RuleType)
  571. {
  572. case RuleType.PutAway:
  573. var itemList = new List<PutAwayRuleDetailCondition>();
  574. for (int i = 0; i < dataGridView.Rows.Count; i++)
  575. {
  576. if (!dataGridView.Rows[i].IsNewRow)
  577. {
  578. itemList.Add(new PutAwayRuleDetailCondition
  579. {
  580. RuleItemDescribe = dataGridView.Rows[i].Cells["RULE_ITEM_DESC"].GetObjectToString(),
  581. IsUsed = dataGridView.Rows[i].Cells["UsedFlagName"].Value.GetObjectToBoolean("已启用"),
  582. ParamFlag = dataGridView.Rows[i].Cells["ParamFlagName"].GetObjectToString() == "有参数" ? (int)RuleParamFlag.Have : (int)RuleParamFlag.NotHave,
  583. RuleItemCode = dataGridView.Rows[i].Cells["RULE_ITEM_CODE"].Value.GetObjectToString(),
  584. RuleItemId = dataGridView.Rows[i].Cells["RULE_DTL_ID"].Value.GetObjectToInt(),
  585. RuleItemParam1 = dataGridView.Rows[i].Cells["RULE_ITEM_PARAM1"].Value.GetObjectToString(),
  586. RuleItemParam2 = dataGridView.Rows[i].Cells["RULE_ITEM_PARAM2"].Value.GetObjectToString(),
  587. RuleItemParam3 = dataGridView.Rows[i].Cells["RULE_ITEM_PARAM3"].Value.GetObjectToString(),
  588. });
  589. }
  590. }
  591. switch (_FunctionType)
  592. {
  593. case EnumFunctionType.Add:
  594. var addEntity = new PutAwayRuleCondition
  595. {
  596. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  597. DetailList = itemList,
  598. RuleDescribe = richDescibe.Text,
  599. IsUsed = chkUse.Checked,
  600. RuleCode = txtRuleCode.Text,
  601. RuleName = txtRuleName.Text,
  602. };
  603. var addResult = RuleServices.putAwayRuleService.Add(addEntity);
  604. if (addResult.Status == OperateStatus.Success)
  605. {
  606. KryptonMessageBox.Show($"新增规则成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  607. dataGridView.ClearSelection();
  608. this.DialogResult = DialogResult.Yes;
  609. }
  610. else
  611. {
  612. KryptonMessageBox.Show($"操作失败!\r\n{addResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  613. }
  614. break;
  615. case EnumFunctionType.Edit:
  616. var editEntity = new PutAwayRuleCondition
  617. {
  618. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  619. DetailList = itemList,
  620. RuleDescribe = richDescibe.Text,
  621. IsUsed = chkUse.Checked,
  622. RuleCode = txtRuleCode.Text,
  623. RuleName = txtRuleName.Text,
  624. };
  625. var editResult = RuleServices.putAwayRuleService.Edit(editEntity);
  626. if (editResult.Status == OperateStatus.Success)
  627. {
  628. KryptonMessageBox.Show($"编辑规则成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  629. dataGridView.ClearSelection();
  630. this.DialogResult = DialogResult.Yes;
  631. }
  632. else
  633. {
  634. KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  635. }
  636. break;
  637. }
  638. break;
  639. case RuleType.OrderDistribution:
  640. break;
  641. }
  642. }
  643. private void btnCancel_Click(object sender, EventArgs e)
  644. {
  645. if (KryptonMessageBox.Show($"确认退出操作? \r\n退出后,当前所有操作数据全部清空!", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  646. {
  647. this.DialogResult = DialogResult.No;
  648. }
  649. }
  650. }
  651. }