using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.Model.AppModels.Condition.Balance; using NXWMS.Client.Model.AppModels.Result.Balance; using NXWMS.Client.Model.CoreModels; using NXWMS.Client.String.Enums; using NXWMS.Commons; using NXWMS.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace NXWMS.Forms.Balance.frmBalanceChild { public partial class FrmInventoryOperate : KryptonForm { public FrmInventoryOperate() { InitializeComponent(); var fieldList = new List(); cmbType.DataSource = fieldList.GetFieldValueIdList(); cmbType.DisplayMember = "Name"; cmbType.ValueMember = "Id"; cmbType.SelectedValue = ((int)InventoryType.WMS).ToString(); fieldList = new List(); cmbInventoryMode.DataSource = fieldList.GetFieldValueIdList(); cmbInventoryMode.DisplayMember = "Name"; cmbInventoryMode.ValueMember = "Id"; cmbInventoryMode.SelectedValue = ((int)InventoryMode.Select).ToString(); } public string InventoryId { get; set; } public string InventoryModeMsg { get; set; } /// /// 盘点单主表 /// public InventoryMainSearchResult _MainInfo; public List awitInventoryPalletData = new List(); public List awitInventoryPalletDtlData = new List(); #region 窗体按钮事件 private void FrmInventoryOperate_Load(object sender, EventArgs e) { try { //获取对应盘点单数据 var mainResult = BalanceServices.balanceSearchService.GetMainInventoryList(new InventoryMainSearchCondition { Id = Convert.ToInt32(InventoryId) }); if (mainResult.Status == OperateStatus.Success) { _MainInfo = mainResult.Data.RowData.FirstOrDefault(); txtInventoryNo.Text = _MainInfo.InventoryNo; cmbType.SelectedValue = _MainInfo.InventoryType.ToString(); numPercentage.Value = Convert.ToDecimal(_MainInfo.InventoryPercentage); cmbInventoryMode.SelectedValue = _MainInfo.InventoryMode.ToString(); if (_MainInfo.InventoryBeginTime != null) { dtpBeginTime.Checked = true; dtpBeginTime.Value = _MainInfo.InventoryBeginTime.Value; } if (_MainInfo.InventoryEndTime != null) { dtpEndTime.Checked = true; dtpEndTime.Value = _MainInfo.InventoryEndTime.Value; } txtInventoryNo.Enabled = false; cmbType.Enabled = false; numPercentage.Enabled = false; cmbInventoryMode.Enabled = false; dtpBeginTime.Enabled = false; dtpEndTime.Enabled = false; kryptonGroupBox3.Enabled = false; kbtn_CreateInventoryTask.Enabled = false; kbtn_Refresh.Enabled = false; kbtn_InventoryOperate.Enabled = false; if (_MainInfo.InventoryStatus >= 11 && InventoryModeMsg == "正常盘点")//盘点单的状态大于等于11(即开始盘点)时 { kbtn_StartInventory.Enabled = false; kbtn_CreateInventoryTask.Enabled = true; kbtn_Refresh.Enabled = true; kbtn_InventoryOperate.Enabled = true; } if (_MainInfo.InventoryStatus == 88 && InventoryModeMsg == "差异盘点") { kbtn_StartInventory.Enabled = false; kbtn_CreateInventoryTask.Enabled = true; kbtn_Refresh.Enabled = true; kbtn_InventoryOperate.Enabled = true; } LoadAwitInventoryPalletData(); } else { KryptonMessageBox.Show($"加载盘点单数据错误:【{mainResult.Message}】"); } this.Text = $"盘点操作 --- {InventoryModeMsg}"; } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private void kbtn_StartInventory_Click(object sender, EventArgs e) { try { if (KryptonMessageBox.Show($"确认将盘点单:【{_MainInfo.InventoryNo}】标记为开始盘点状态?如果点击确认,盘点单明细的所有托盘都将进行盘点出库,并且该部分托盘的库存将暂时锁定!!!请谨慎操作!!!", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { //修改盘点单状态为盘点中 //修改盘点单托盘明细的库存状态为盘点出库占用。 var editResult = BalanceServices.balanceOperateService.InventoryStatusChange(new InventoryStatusChangeCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, Ids = InventoryId, InventoryStatus = InventoryStatusEnum.BeginInventory, InventoryModeMsg = InventoryModeMsg }); if (editResult.Status == OperateStatus.Success) { kbtn_CreateInventoryTask.Enabled = true; kbtn_Refresh.Enabled = true; kbtn_InventoryOperate.Enabled = true; kbtn_StartInventory.Enabled = false; KryptonMessageBox.Show($"开始盘点操作成功!"); LoadAwitInventoryPalletData(); } else { KryptonMessageBox.Show($"开始盘点操作失败!\r\n【{editResult.Message}】"); } } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private void kbtn_CreateInventoryTask_Click(object sender, EventArgs e) { try { int rowsSelectedNum = 0; List trayCodeLst = new List(); int rowSelectIndex = 0; foreach (DataGridViewRow item in kdgv_WaitInventoryPalletLst.Rows) { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0]; object obj = checkCell.EditedFormattedValue; if (Convert.ToBoolean(obj)) { if (item.Cells[7].Value.ToString() != "未生成盘点任务") { KryptonMessageBox.Show($"托盘号:【{item.Cells[3].Value}】已经生成盘点任务,不允许重复生成!"); return; } rowsSelectedNum++; trayCodeLst.Add(item.Cells[2].Value.ToString()); rowSelectIndex = item.Index; } } if (rowsSelectedNum > 0) { string str = string.Empty; foreach (string item in trayCodeLst) { str += item + ","; } str = str.Substring(0, str.Length - 1); InventoryOperateCondition param = new InventoryOperateCondition { Describe = str, InventoryId = Convert.ToInt32(InventoryId), InventoryNo = _MainInfo.InventoryNo, OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, InventoryModeMsg = InventoryModeMsg }; var editResult = BalanceServices.balanceOperateService.CreateInventoryTask(param); if (editResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"{editResult.Message}"); } else { KryptonMessageBox.Show($"{editResult.Message}"); } LoadAwitInventoryPalletData(); } else { KryptonMessageBox.Show("请勾选待盘点托盘数据行!"); } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private void kbtn_Refresh_Click(object sender, EventArgs e) { LoadAwitInventoryPalletData(); } private void kbtn_InventoryOperate_Click(object sender, EventArgs e) { try { int rowsSelectedNum = 0; string trayCode = string.Empty; string palletCode = string.Empty; int rowSelectIndex = 0; foreach (DataGridViewRow item in kdgv_WaitInventoryPalletLst.Rows) { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0]; object obj = checkCell.EditedFormattedValue; if (Convert.ToBoolean(obj)) { if (item.Cells[7].Value.ToString() == "未生成盘点任务") { KryptonMessageBox.Show($"托盘号:【{item.Cells[3].Value}】未生成盘点任务,不允许进行盘点操作!"); return; } rowsSelectedNum++; trayCode = item.Cells[2].Value.ToString(); palletCode = item.Cells[3].Value.ToString(); rowSelectIndex = item.Index; } } if (rowsSelectedNum > 0) { if (rowsSelectedNum == 1) { //检测托盘是否到达盘点位置, //1、校验盘点下架是否完成 //2、校验盘点下架的大任务是否到达目标位置。 var editResult = BalanceServices.balanceOperateService.GetInventoryPallletOperateData(new WmsAwitInventoryPalletMd { INVENTORY_ID = Convert.ToInt32(InventoryId), TRAY_CODE = trayCode, PALLET_CODE = palletCode, BIN_NAME = InventoryModeMsg,//在这里使用BIN_NAME属性传入盘点方式的信息。 }); if (editResult.Status == OperateStatus.Success) { kryptonGroupBox3.Enabled = true; kryptonGroupBox2.Enabled = false; kdgv_InventoryingPalletDtlLst.Rows.Clear(); awitInventoryPalletDtlData = editResult.Data; foreach (var item in editResult.Data) { int index = kdgv_InventoryingPalletDtlLst.Rows.Add(); kdgv_InventoryingPalletDtlLst.Rows[index].Cells[0].Value = item.InventoryDtlId; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[1].Value = item.MaterielTypeCode; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[2].Value = item.MaterielTypeCode; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[3].Value = item.MaterielCode; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[4].Value = item.MaterielName; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[5].Value = item.Qty; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[6].Value = item.ActualInventoryQty; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[7].Value = item.UnitName; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[8].Value = item.TrayCode; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[9].Value = item.PalletCode; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[10].Value = item.SupplierName; kdgv_InventoryingPalletDtlLst.Rows[index].Cells[11].Value = item.BatchNo; } //加载正在盘点的托盘数据 KryptonMessageBox.Show($"加载盘点操作托盘明细数据成功!"); } else { KryptonMessageBox.Show($"{editResult.Message}"); } } else { KryptonMessageBox.Show("每次只允许一个托盘进行盘点操作!"); } } else { KryptonMessageBox.Show("请勾选盘点操作的托盘数据行!"); } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private void kbtn_ConfirmInventoryResult_Click(object sender, EventArgs e) { try { int rowIndex = 0; foreach (DataGridViewRow item in kdgv_InventoryingPalletDtlLst.Rows) { rowIndex++; if (Convert.ToDecimal(item.Cells[6].Value) == 0) { KryptonMessageBox.Show($"第:【{rowIndex}】托盘明细未录入盘点数量!"); return; } else { InventoryDetailSearchResult retDtlMd = awitInventoryPalletDtlData.FirstOrDefault(x => x.InventoryDtlId == Convert.ToInt32(item.Cells[0].Value)); retDtlMd.ActualInventoryQty = Convert.ToDecimal(item.Cells[6].Value); } } InventoryMainSearchResult retMd = new InventoryMainSearchResult { InventoryId = Convert.ToInt32(InventoryId), UpdateBy = AppConfig.UserLoginResult.UserInfo.UserId, InventoryNo = _MainInfo.InventoryNo, InventoryDtlLst = awitInventoryPalletDtlData, InventoryModeName = InventoryModeMsg, }; var editResult = BalanceServices.balanceOperateService.ConfirmInventoryPalletData(retMd); if (editResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"{editResult.Message}"); kryptonGroupBox3.Enabled = false; kryptonGroupBox2.Enabled = true; kdgv_InventoryingPalletDtlLst.Rows.Clear(); LoadAwitInventoryPalletData(); } else { KryptonMessageBox.Show($"{editResult.Message}"); } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private void kbtn_PalletReinventory_Click(object sender, EventArgs e) { kdgv_InventoryingPalletDtlLst.Rows.Clear(); kryptonGroupBox3.Enabled = false; LoadAwitInventoryPalletData(); } #endregion #region 事件方法 private void LoadAwitInventoryPalletData() { try { var resultLst = BalanceServices.balanceOperateService.GetAwitInventoryPalletLstData(new WmsAwitInventoryPalletMdCondition { InventoryModeMsg = InventoryModeMsg }); if (resultLst.Status == OperateStatus.Success) { kdgv_WaitInventoryPalletLst.Rows.Clear(); awitInventoryPalletData = resultLst.Data; foreach (WmsAwitInventoryPalletMd item in resultLst.Data) { int index = kdgv_WaitInventoryPalletLst.Rows.Add(); kdgv_WaitInventoryPalletLst.Rows[index].Cells[1].Value = item.INVENTORY_ID; kdgv_WaitInventoryPalletLst.Rows[index].Cells[2].Value = item.TRAY_CODE; kdgv_WaitInventoryPalletLst.Rows[index].Cells[3].Value = item.PALLET_CODE; kdgv_WaitInventoryPalletLst.Rows[index].Cells[4].Value = item.REGION_NAME; kdgv_WaitInventoryPalletLst.Rows[index].Cells[5].Value = item.BIN_NAME; if (item.INVENTORY_STATUS < 88) { if (item.BALANCE_STATUS == 55) { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "未开始盘点"; } else if (item.BALANCE_STATUS > 55) { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "正常盘点出库中"; } else { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "正常盘点入库中"; } } else { if (item.BALANCE_STATUS == 55) { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "未开始盘点"; } else if (item.BALANCE_STATUS > 55) { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "差异盘点出库中"; } else { kdgv_WaitInventoryPalletLst.Rows[index].Cells[6].Value = "差异盘点入库中"; } } if (item.PUTDOWN_STATUS < 99 && item.PUTDOWN_STATUS >= 0) { kdgv_WaitInventoryPalletLst.Rows[index].Cells[7].Value = "已生成盘点任务"; } else { kdgv_WaitInventoryPalletLst.Rows[index].Cells[7].Value = "未生成盘点任务"; } } } else { KryptonMessageBox.Show($"加载待盘点托盘数据错误:【{resultLst.Message}】"); } } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } #endregion private void kdgv_WaitInventoryPalletLst_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 0) { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)kdgv_WaitInventoryPalletLst.CurrentRow.Cells[0]; if (Convert.ToBoolean(checkCell.EditedFormattedValue)) { kdgv_WaitInventoryPalletLst.CurrentCell.Style.BackColor = Color.FromArgb(51, 153, 255); } else { kdgv_WaitInventoryPalletLst.CurrentCell.Style.BackColor = Color.Transparent; } } } private void FrmInventoryOperate_FormClosing(object sender, FormClosingEventArgs e) { } } }