frmOperateBalanceInventory.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Code.Converter;
  3. using NXWMS.Client.Code.Extends;
  4. using NXWMS.Client.Model.AppModels.Condition;
  5. using NXWMS.Client.Model.AppModels.Condition.Balance;
  6. using NXWMS.Client.Model.AppModels.Condition.Base;
  7. using NXWMS.Client.Model.AppModels.Condition.SysSettings;
  8. using NXWMS.Client.Model.AppModels.Result;
  9. using NXWMS.Client.Model.AppModels.Result.Balance;
  10. using NXWMS.Client.Model.AppModels.Result.Base;
  11. using NXWMS.Client.Model.AppModels.Result.SysSettings;
  12. using NXWMS.Client.Model.CoreModels;
  13. using NXWMS.Client.String.Enums;
  14. using NXWMS.Commons;
  15. using NXWMS.Services;
  16. using System;
  17. using System.Collections.Generic;
  18. using System.ComponentModel;
  19. using System.Data;
  20. using System.Drawing;
  21. using System.Linq;
  22. using System.Runtime.InteropServices;
  23. using System.Text;
  24. using System.Threading;
  25. using System.Threading.Tasks;
  26. using System.Windows.Forms;
  27. namespace NXWMS.Forms.Balance.frmBalanceChild
  28. {
  29. public partial class frmOperateBalanceInventory : KryptonForm
  30. {
  31. /// <summary>
  32. /// 客户端字段排序列表
  33. /// </summary>
  34. // private List<ClientFieldOrderResult> _clientFieldOrderList;
  35. /// <summary>
  36. /// 界面功能类型
  37. /// </summary>
  38. public enum EnumFunctionType
  39. {
  40. Add,
  41. Edit,
  42. InventoryFirst,
  43. InventorySecond,
  44. ResultConfirm,
  45. }
  46. /// <summary>
  47. /// 界面功能类型
  48. /// </summary>
  49. public EnumFunctionType _FunctionType;
  50. private BindingList<InventoryDetailSearchResult> source = new BindingList<InventoryDetailSearchResult>();
  51. /// <summary>
  52. /// 传入单号
  53. /// </summary>
  54. public string _InventoryNo;
  55. /// <summary>
  56. /// 盘点主
  57. /// </summary>
  58. public InventoryMainSearchResult _MainInfo;
  59. /// <summary>
  60. /// 盘点子
  61. /// </summary>
  62. // public List<InventoryDetailSearchResult> _DetailList;
  63. public frmOperateBalanceInventory()
  64. {
  65. InitializeComponent();
  66. this.dataGridView.AutoGenerateColumns = false;
  67. }
  68. private void InitControl()
  69. {
  70. CheckForIllegalCrossThreadCalls = false;
  71. this.SetFormSizeLocation();
  72. //当前新增id列表
  73. frmBalanceDetailSearch._alreadyAddIdList = new List<string>();
  74. dataGridView.DataSource = new List<BalanceDetailSearchResult>();
  75. dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick);
  76. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false, true);
  77. var fieldList = new List<FieldValue>();
  78. cmbType.DataSource = fieldList.GetFieldValueIdList<InventoryType>();
  79. cmbType.DisplayMember = "Name";
  80. cmbType.ValueMember = "Id";
  81. cmbType.SelectedValue = ((int)InventoryType.WMS).ToString();
  82. fieldList = new List<FieldValue>();
  83. cmbInventoryMode.DataSource = fieldList.GetFieldValueIdList<InventoryMode>();
  84. cmbInventoryMode.DisplayMember = "Name";
  85. cmbInventoryMode.ValueMember = "Id";
  86. cmbInventoryMode.SelectedValue = ((int)InventoryMode.Select).ToString();
  87. this.dataGridView.DataSource = source;
  88. txtInventoryNo.Text = _InventoryNo;
  89. //不同结果类型
  90. switch (_FunctionType)
  91. {
  92. case EnumFunctionType.Add:
  93. this.Text = "盘点单-新增";
  94. txtInventoryNo.Enabled = true;
  95. this.ColumnActualInventoryQty.Visible = false;
  96. this.ColumnInventoryResultQty.Visible = false;
  97. this.ColumnDifferenceQty.Visible = false;
  98. break;
  99. case EnumFunctionType.Edit:
  100. this.Text = "盘点单-编辑";
  101. txtInventoryNo.Enabled = false;
  102. this.ColumnActualInventoryQty.Visible = false;
  103. this.ColumnInventoryResultQty.Visible = false;
  104. this.ColumnDifferenceQty.Visible = false;
  105. break;
  106. case EnumFunctionType.InventoryFirst:
  107. this.Text = "盘点单-盘点";
  108. txtInventoryNo.Enabled = false;
  109. this.ColumnActualInventoryQty.Visible = true;
  110. this.ColumnInventoryResultQty.Visible = true;
  111. break;
  112. case EnumFunctionType.InventorySecond:
  113. this.Text = "盘点单-差异盘点";
  114. txtInventoryNo.Enabled = false;
  115. this.ColumnActualInventoryQty.Visible = true;
  116. this.ColumnInventoryResultQty.Visible = true;
  117. break;
  118. case EnumFunctionType.ResultConfirm:
  119. this.Text = "盘点单-结果确认";
  120. this.ColumnInventoryResultQty.InheritedStyle.BackColor = Color.Red;
  121. this.ColumnInventoryResultQty.InheritedStyle.ForeColor = Color.Blue;
  122. this.ColumnActualInventoryQty.Visible = true;
  123. this.ColumnInventoryResultQty.Visible = true;
  124. txtInventoryNo.Enabled = false;
  125. btnAdd.Visible = false;
  126. break;
  127. }
  128. }
  129. private void InitData()
  130. {
  131. }
  132. private void btnAdd_Click(object sender, EventArgs e)
  133. {
  134. var detailForm = new frmBalanceDetailSearch();
  135. detailForm._execFormType = ExecFormType.Select;
  136. detailForm.Text = "选择库存记录";
  137. if (detailForm.ShowDialog() == DialogResult.Yes)
  138. {
  139. var ids = detailForm._CheckRowIdList;
  140. //查询当前库存库位中的详细库存数据
  141. var balanceResult = BalanceServices.balanceSearchService.GetDetailList(new BalanceDetailSearchCondition
  142. {
  143. BalanceStatus = ((int)BalanceStatus.InStock),
  144. Ids = string.Join(",", ids)
  145. });
  146. if (balanceResult.Status == OperateStatus.Success)
  147. {
  148. var addRows = balanceResult.Data.RowData.ToList();
  149. foreach (var item in addRows)
  150. {
  151. source.Add(new InventoryDetailSearchResult
  152. {
  153. BalanceId = item.BALANCE_ID,
  154. BatchNo = item.BatchNo,
  155. BinName = item.BIN_NAME,
  156. BinCode = item.BIN_CODE,
  157. Qty = item.QTY,
  158. MaterielCode = item.MaterielCode,
  159. MaterielTypeCode = item.MaterielTypeCode,
  160. MaterielName = item.MaterielName,
  161. UnitName = item.UnitName,
  162. TrayCode = item.TrayCode,
  163. PalletCode = item.PalletCode,
  164. });
  165. this.dataGridView.Refresh();
  166. }
  167. //var currentDataTable = ((List<BalanceDetailSearchResult>)dataGridView.DataSource);
  168. //var result = currentDataTable.Union(addRows);
  169. //dataGridView.DataSource = addRows.ToList();
  170. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  171. }
  172. }
  173. }
  174. /// <summary>
  175. /// 选择行索引列表
  176. /// </summary>
  177. private List<int> _CheckRowIndexList = new List<int>();
  178. private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
  179. {
  180. if (e.RowIndex >= 0 && e.ColumnIndex == 0)
  181. {
  182. if (this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null)
  183. {
  184. if (!_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  185. {
  186. _CheckRowIndexList.Add(e.RowIndex);
  187. }
  188. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  189. }
  190. else if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
  191. {
  192. if (_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  193. {
  194. _CheckRowIndexList.Remove(e.RowIndex);
  195. }
  196. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
  197. }
  198. else
  199. {
  200. if (!_CheckRowIndexList.Where(s => s == e.RowIndex).Any())
  201. {
  202. _CheckRowIndexList.Add(e.RowIndex);
  203. }
  204. this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
  205. }
  206. }
  207. }
  208. private void btnConfirm_Click(object sender, EventArgs e)
  209. {
  210. if (string.IsNullOrWhiteSpace(txtInventoryNo.Text))
  211. {
  212. KryptonMessageBox.Show($"请输入盘库单号!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  213. return;
  214. }
  215. if (string.IsNullOrWhiteSpace(cmbType.Text))
  216. {
  217. KryptonMessageBox.Show($"请选择盘库单据类型!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  218. return;
  219. }
  220. if (string.IsNullOrWhiteSpace(cmbInventoryMode.Text))
  221. {
  222. KryptonMessageBox.Show($"请选择盘库方式!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  223. return;
  224. }
  225. if (dataGridView.Rows.Count == 0)
  226. {
  227. KryptonMessageBox.Show($"请添加至少一条盘点明细记录!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  228. return;
  229. }
  230. var itemList = new List<InventoryAddDetailCondition>();
  231. foreach (var item in this.source)
  232. {
  233. itemList.Add(new InventoryAddDetailCondition
  234. {
  235. BalanceId = _FunctionType == EnumFunctionType.Add ? item.BalanceId : default(int?),
  236. BinCode = item.BinCode,
  237. MaterielBarCode = item.MaterielBarcode,
  238. MaterielCode = item.MaterielCode,
  239. InventoryDTLId = _FunctionType == EnumFunctionType.Add ? default(int?) : item.InventoryDtlId,
  240. InventoryDTLStatus = _FunctionType == EnumFunctionType.Add ? default(int?) : item.InventoryDtlStatus
  241. });
  242. }
  243. //for (int i = 0; i < dataGridView.Rows.Count; i++)
  244. //{
  245. // itemList.Add(new InventoryAddDetailCondition
  246. // {
  247. // BalanceId = _FunctionType == EnumFunctionType.Add ?
  248. // Convert.ToInt32(dataGridView.Rows[i].Cells["ColumBalanceId"].Value.ToString()) :
  249. // (int?)null,
  250. // BinCode = dataGridView.Rows[i].Cells["ColumColumBinCode"].Value.ToString(),
  251. // MaterielBarCode = _FunctionType == EnumFunctionType.Add ?
  252. // dataGridView.Rows[i].Cells["ColumMaterielCode"].Value.ToString() :
  253. // dataGridView.Rows[i].Cells["ColumMaterielCode"].Value.ToString(), //TODO 条码号暂时用物料号代替,后期要改!
  254. // MaterielCode = _FunctionType == EnumFunctionType.Add ?
  255. // dataGridView.Rows[i].Cells["ColumMaterielCode"].Value.ToString() :
  256. // dataGridView.Rows[i].Cells["ColumMaterielCode"].Value.ToString(),
  257. // InventoryDTLId = _FunctionType == EnumFunctionType.Add ? (int?)null :
  258. // Convert.ToInt32(dataGridView.Rows[i].Cells["ColumInventoryDtlId"].Value.ToString()),
  259. // InventoryDTLStatus = _FunctionType == EnumFunctionType.Add ? (int?)null :
  260. // Convert.ToInt32(dataGridView.Rows[i].Cells["ColumInventoryDtlStatus"].Value.ToString()),
  261. // });
  262. //}
  263. switch (_FunctionType)
  264. {
  265. case EnumFunctionType.Add:
  266. var addEntity = new InventoryOperateCondition
  267. {
  268. Describe = richDescibe.Text,
  269. InventoryBeginDate = dtpBeginTime.GetDateTimeValue(),
  270. InventoryEndDate = dtpEndTime.GetDateTimeValue(),
  271. InventoryMode = cmbInventoryMode.SelectedValue.GetObjectToInt().Value,
  272. InventoryNo = txtInventoryNo.Text,
  273. InventoryPercentage = (int)numPercentage.Value,
  274. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  275. InventoryType = cmbType.SelectedValue.GetObjectToInt().Value,
  276. InventoryAddDetailList = itemList,
  277. };
  278. var addResult = BalanceServices.balanceOperateService.AddInventory(addEntity);
  279. if (addResult.Status == OperateStatus.Success)
  280. {
  281. KryptonMessageBox.Show($"新增盘点单成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  282. dataGridView.ClearSelection();
  283. this.DialogResult = DialogResult.Yes;
  284. }
  285. else
  286. {
  287. KryptonMessageBox.Show($"操作失败!\r\n{addResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  288. }
  289. break;
  290. case EnumFunctionType.Edit:
  291. var editEntity = new InventoryOperateCondition
  292. {
  293. Describe = richDescibe.Text,
  294. InventoryBeginDate = dtpBeginTime.GetDateTimeValue(),
  295. InventoryEndDate = dtpEndTime.GetDateTimeValue(),
  296. InventoryMode = cmbInventoryMode.SelectedValue.GetObjectToInt().Value,
  297. InventoryNo = txtInventoryNo.Text,
  298. InventoryPercentage = (int)numPercentage.Value,
  299. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  300. InventoryType = cmbType.SelectedValue.GetObjectToInt().Value,
  301. InventoryAddDetailList = itemList,
  302. InventoryStatus = null,
  303. InventoryId = _MainInfo.InventoryId,
  304. };
  305. var editResult = BalanceServices.balanceOperateService.EditInventory(editEntity);
  306. if (editResult.Status == OperateStatus.Success)
  307. {
  308. KryptonMessageBox.Show($"编辑盘点单成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  309. dataGridView.ClearSelection();
  310. this.DialogResult = DialogResult.Yes;
  311. }
  312. else
  313. {
  314. KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  315. }
  316. break;
  317. case EnumFunctionType.InventoryFirst:
  318. var resultConfimEntity1 = new ResultConfirmInventoryCondition
  319. {
  320. InventoryNo = txtInventoryNo.Text,
  321. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  322. OperationTime = DateTime.Now,
  323. InventoryStatus = InventoryStatusEnum.FirstInventorComplate,
  324. ResultConfirmInventoryDetail = this.source.ToList().ConvertAll(m =>
  325. {
  326. return new ResultConfirmInventoryDetail()
  327. {
  328. InventoryDTLId = m.InventoryDtlId,
  329. InventoryResultQTY = m.InventoryResultQty,
  330. ActualInventoryQty = m.ActualInventoryQty
  331. };
  332. })
  333. };
  334. var info = BalanceServices.balanceOperateService.ConfirmInventory(resultConfimEntity1); ;
  335. if (info.Status == OperateStatus.Success)
  336. {
  337. KryptonMessageBox.Show($"一次盘点保存成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  338. dataGridView.ClearSelection();
  339. }
  340. else
  341. {
  342. KryptonMessageBox.Show($"操作失败!\r\n{info.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  343. }
  344. break;
  345. case EnumFunctionType.InventorySecond:
  346. var resultConfimEntity2 = new ResultConfirmInventoryCondition
  347. {
  348. InventoryNo = txtInventoryNo.Text,
  349. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  350. InventoryStatus = InventoryStatusEnum.TwoInventorComplate,
  351. OperationTime = DateTime.Now,
  352. ResultConfirmInventoryDetail = this.source.ToList().ConvertAll(m =>
  353. {
  354. return new ResultConfirmInventoryDetail()
  355. {
  356. InventoryDTLId = m.InventoryDtlId,
  357. InventoryResultQTY = m.InventoryResultQty,
  358. ActualInventoryQty = m.ActualInventoryQty
  359. };
  360. })
  361. };
  362. var _info = BalanceServices.balanceOperateService.ConfirmInventory(resultConfimEntity2); ;
  363. if (_info.Status == OperateStatus.Success)
  364. {
  365. KryptonMessageBox.Show($"一次盘点保存成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  366. dataGridView.ClearSelection();
  367. }
  368. else
  369. {
  370. KryptonMessageBox.Show($"操作失败!\r\n{_info.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  371. }
  372. break;
  373. case EnumFunctionType.ResultConfirm:
  374. var resultConfirmInventoryDetailList = new List<ResultConfirmInventoryDetail>();
  375. foreach (var item in this.source)
  376. {
  377. resultConfirmInventoryDetailList.Add(new ResultConfirmInventoryDetail
  378. {
  379. InventoryDTLId = item.InventoryDtlId,
  380. InventoryResultQTY = item.InventoryResultQty
  381. });
  382. }
  383. var resultConfimEntity = new ResultConfirmInventoryCondition
  384. {
  385. InventoryNo = txtInventoryNo.Text,
  386. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  387. ResultConfirmInventoryDetail = resultConfirmInventoryDetailList,
  388. };
  389. var confimResult = BalanceServices.balanceOperateService.ResultConfirmInventory(resultConfimEntity);
  390. if (confimResult.Status == OperateStatus.Success)
  391. {
  392. KryptonMessageBox.Show($"盘点单确认成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  393. dataGridView.ClearSelection();
  394. this.DialogResult = DialogResult.Yes;
  395. Close();
  396. }
  397. else
  398. {
  399. KryptonMessageBox.Show($"操作失败!\r\n{confimResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  400. }
  401. break;
  402. }
  403. }
  404. private void btnCancel_Click(object sender, EventArgs e)
  405. {
  406. if (KryptonMessageBox.Show($"确认退出新增盘点? \r\n退出后,当前所有操作数据全部清空!", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  407. {
  408. this.DialogResult = DialogResult.No;
  409. }
  410. }
  411. private void 删除选中行ToolStripMenuItem_Click(object sender, EventArgs e)
  412. {
  413. if (KryptonMessageBox.Show($"确认删除选中数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  414. {
  415. switch (_FunctionType)
  416. {
  417. case EnumFunctionType.Add:
  418. var addList = (List<BalanceDetailSearchResult>)dataGridView.DataSource;
  419. for (int i = 0; i < addList.Count; i++)
  420. {
  421. if (dataGridView.Rows[i].Cells[0].Value.ToString() == "1")
  422. {
  423. addList.RemoveAt(i);
  424. i--;
  425. }
  426. else
  427. {
  428. continue;
  429. }
  430. }
  431. dataGridView.DataSource = null;
  432. dataGridView.DataSource = addList;
  433. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  434. break;
  435. case EnumFunctionType.Edit:
  436. var editList = (List<InventoryDetailSearchResult>)dataGridView.DataSource;
  437. for (int i = 0; i < editList.Count; i++)
  438. {
  439. if (dataGridView.Rows[i].Cells[0].Value.ToString() == "1")
  440. {
  441. editList.RemoveAt(i);
  442. i--;
  443. }
  444. else
  445. {
  446. continue;
  447. }
  448. }
  449. dataGridView.DataSource = null;
  450. dataGridView.DataSource = editList;
  451. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  452. break;
  453. }
  454. }
  455. }
  456. private void 全部删除ToolStripMenuItem_Click(object sender, EventArgs e)
  457. {
  458. if (KryptonMessageBox.Show($"确认删除所有数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  459. {
  460. switch (_FunctionType)
  461. {
  462. case EnumFunctionType.Add:
  463. var addList = (List<BalanceDetailSearchResult>)dataGridView.DataSource;
  464. for (int i = 0; i < addList.Count; i++)
  465. {
  466. addList.RemoveAt(i);
  467. i--;
  468. }
  469. dataGridView.DataSource = null;
  470. dataGridView.DataSource = addList;
  471. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  472. break;
  473. case EnumFunctionType.Edit:
  474. var editList = (List<InventoryDetailSearchResult>)dataGridView.DataSource;
  475. for (int i = 0; i < editList.Count; i++)
  476. {
  477. editList.RemoveAt(i);
  478. i--;
  479. }
  480. dataGridView.DataSource = null;
  481. dataGridView.DataSource = editList;
  482. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  483. break;
  484. }
  485. }
  486. }
  487. private void dataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
  488. {
  489. if (_FunctionType != EnumFunctionType.ResultConfirm)
  490. {
  491. if (e.Button == MouseButtons.Right)
  492. {
  493. if (!_CheckRowIndexList.Any())
  494. {
  495. KryptonMessageBox.Show($"请选择记录操作!", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
  496. return;
  497. }
  498. contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
  499. }
  500. }
  501. }
  502. private void frmOperateBalanceInventory_Load(object sender, EventArgs e)
  503. {
  504. InitData();
  505. InitControl();
  506. if (_FunctionType != EnumFunctionType.Add)
  507. {
  508. //获取对应盘点单数据
  509. var mainResult = BalanceServices.balanceSearchService.GetMainInventoryList(new InventoryMainSearchCondition
  510. {
  511. InventoryNo = _InventoryNo
  512. });
  513. if (mainResult.Status == OperateStatus.Success)
  514. {
  515. _MainInfo = mainResult.Data.RowData.FirstOrDefault();
  516. txtInventoryNo.Text = _MainInfo.InventoryNo;
  517. cmbType.SelectedValue = _MainInfo.InventoryType.ToString();
  518. numPercentage.Value = Convert.ToDecimal(_MainInfo.InventoryPercentage);
  519. cmbInventoryMode.SelectedValue = _MainInfo.InventoryMode.ToString();
  520. if (_MainInfo.InventoryBeginTime != null)
  521. {
  522. dtpBeginTime.Checked = true;
  523. dtpBeginTime.Value = _MainInfo.InventoryBeginTime.Value;
  524. }
  525. if (_MainInfo.InventoryEndTime != null)
  526. {
  527. dtpEndTime.Checked = true;
  528. dtpEndTime.Value = _MainInfo.InventoryEndTime.Value;
  529. }
  530. richDescibe.Text = _MainInfo.Describe;
  531. }
  532. else
  533. {
  534. KryptonMessageBox.Show($"操作失败!\r\n{mainResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  535. }
  536. //获取对应盘点子数据
  537. var detailResult = BalanceServices.balanceSearchService.GetDetailInventoryList(new InventoryDetailSearchCondition
  538. {
  539. Id = _MainInfo.InventoryId
  540. });
  541. if (detailResult.Status == OperateStatus.Success)
  542. {
  543. var addRows = detailResult.Data.ToList();
  544. this.source.Clear();
  545. foreach (var item in addRows)
  546. {
  547. this.source.Add(item);
  548. }
  549. //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), true, true);
  550. }
  551. else
  552. {
  553. KryptonMessageBox.Show($"操作失败!\r\n{detailResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  554. }
  555. }
  556. }
  557. private void dataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
  558. {
  559. var num = Convert.ToDecimal(this.dataGridView.Rows[e.RowIndex].Cells["ColumnDifferenceQty"].Value);
  560. if (num < 0)
  561. {
  562. this.dataGridView.Rows[e.RowIndex].Cells["ColumnDifferenceQty"].Style.ForeColor = Color.Red;
  563. }
  564. else if (num == 0)
  565. {
  566. this.dataGridView.Rows[e.RowIndex].Cells["ColumnDifferenceQty"].Style.ForeColor = Color.Empty;
  567. }
  568. else
  569. {
  570. this.dataGridView.Rows[e.RowIndex].Cells["ColumnDifferenceQty"].Style.ForeColor = Color.Green;
  571. }
  572. }
  573. private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  574. {
  575. this.dataGridView.Refresh();
  576. }
  577. }
  578. }