frmOperateImportTemplate.cs 30 KB

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