using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.Code.Extends; using NXWMS.Client.Model.AppModels.Condition.Balance; using NXWMS.Client.Model.AppModels.Condition.Base; using NXWMS.Client.Model.AppModels.Result; using NXWMS.Client.Model.AppModels.Result.Balance; using NXWMS.Client.Model.AppModels.Result.Base; using NXWMS.Client.Model.CoreModels; using NXWMS.Client.String.Enums; using NXWMS.Commons; using NXWMS.Forms.Balance.frmBalanceChild; 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 { public partial class frmBalanceInventory : KryptonForm { /// /// 客户端字段排序列表 /// private List _clientFieldOrderList; /// /// 客户端字段排序列表 /// private List _clientDTLFieldOrderList; /// /// 界面最后执行操作 /// private EnumOperation _LastOperation; /// /// 库区 /// private List regionList; /// /// 供应商 /// private List supplierList; public frmBalanceInventory() { InitializeComponent(); this.dataGridView.AutoGenerateColumns = false; InitData(); InitControl(); } /// /// 控件初始化 /// private void InitControl() { CheckForIllegalCrossThreadCalls = false; dataGridView.AddColumnCheck(0, "Check", "选择"); //dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false); //dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick); //dataGridViewDTL.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientDTLFieldOrderList), false); var fieldList = new List().Add(new FieldValue { Code = "", Name = "全部" }); cmbSearchSupplier.DataSource = fieldList.GetFieldValueIdList(supplierList, "SUPPLIER_ID", "SUPPLIER_NAME"); cmbSearchSupplier.DisplayMember = "Name"; cmbSearchSupplier.ValueMember = "Id"; cmbSearchSupplier.SelectedIndex = -1; fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" }); cmbSearchType.DataSource = fieldList.GetFieldValueIdList(); cmbSearchType.DisplayMember = "Name"; cmbSearchType.ValueMember = "Id"; cmbSearchType.SelectedIndex = -1; fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" }); cmbSearchInventoryStatus.DataSource = fieldList.GetFieldValueIdList(); cmbSearchInventoryStatus.DisplayMember = "Name"; cmbSearchInventoryStatus.ValueMember = "Id"; cmbSearchInventoryStatus.SelectedIndex = -1; fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" }); cmbSearchInventoryMode.DataSource = fieldList.GetFieldValueIdList(); cmbSearchInventoryMode.DisplayMember = "Name"; cmbSearchInventoryMode.ValueMember = "Id"; cmbSearchInventoryMode.SelectedValue = -1; _pageIndex = 1; _pageSize = 20; } /// /// 数据初始化 /// private void InitData() { var regionResult = BaseServices.regionService.GetList(new RegionSearchCondition { IsUsed = true, ItemSQL = "REGION_CODE,REGION_NAME" }); if (regionResult.Status == OperateStatus.Success) { regionList = regionResult.Data.RowData.ToList(); } var supplierResult = BaseServices.supplierService.GetList(new SupplierSearchCondition { IsUsed = true, ItemSQL = "SUPPLIER_CODE,SUPPLIER_NAME" }); if (supplierResult.Status == OperateStatus.Success) { supplierList = supplierResult.Data.RowData.ToList(); } //_clientFieldOrderList = new List(); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryId", FieldDesc = "序号" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryNo", FieldDesc = "盘点单号" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryTypeName", FieldDesc = "单据类型" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryPercentage", FieldDesc = "随机盘点比例" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryModeName", FieldDesc = "盘点方式" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryBeginTime", FieldDesc = "盘点开始时间" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryEndTime", FieldDesc = "盘点结束时间" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryStatusName", FieldDesc = "盘点单状态" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ResultFlagName", FieldDesc = "盘点结果确认标识" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateName", FieldDesc = "创建人" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateTime", FieldDesc = "创建时间" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateName", FieldDesc = "更新人" }); //_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateTime", FieldDesc = "更新时间" }); _clientDTLFieldOrderList = new List(); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielCode", FieldDesc = "物料编码" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielName", FieldDesc = "物料名称" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielTypeCode", FieldDesc = "物料类型编码" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielTypeName", FieldDesc = "物料类型名称" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "SUPPLIER_NAME", FieldDesc = "供应商" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BatchNo", FieldDesc = "批次号" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "Qty", FieldDesc = "账面数量" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ActualInventoryQty", FieldDesc = "实际盘点数量" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryResultQty", FieldDesc = "盘点结果确认数量" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UnitName", FieldDesc = "单位" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "WarehouseName", FieldDesc = "仓库" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "RegionName", FieldDesc = "库区" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BinName", FieldDesc = "库位" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "TrayCode", FieldDesc = "组盘码" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "PalletCode", FieldDesc = "托盘号" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "InventoryDetailStatusName", FieldDesc = "明细状态" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateName", FieldDesc = "创建人" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateTime", FieldDesc = "创建时间" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateName", FieldDesc = "更新人" }); _clientDTLFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateTime", FieldDesc = "更新时间" }); } private void btnSearch_Click(object sender, EventArgs e) { //dataGridView.DataSource = new List(); //dataGridViewDTL.DataSource = new List(); //this.clearCkeck(); _pageIndex = 1; var loadfrm = new frmLoading(); loadfrm.Show(); var message = loadfrm.EventCalExec(LoadSearch, this.pageTool.PageIndex, this.pageTool.PageSize); pageTool.DataCount = _totalCount; if (!string.IsNullOrWhiteSpace(message)) { KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private int _pageSize; private int _pageIndex; private int _totalCount; private string LoadSearch(int pageIndex, int pageSize) { this.dataGridView.SelectionChanged -= this.dataGridView_SelectionChanged; var result = BalanceServices.balanceSearchService.GetMainInventoryList(new InventoryMainSearchCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, InventoryBeginFinishDate = dtpSearchInventoryBeginFinishDate.GetDateTimeValue(), InventoryBeginStartDate = dtpSearchInventoryBeginStartDate.GetDateTimeValue(), InventoryEndFinishDate = dtpSearchInventoryEndFinishDate.GetDateTimeValue(), InventoryEndStartDate = dtpSearchInventoryEndStartDate.GetDateTimeValue(), InventoryMode = cmbSearchInventoryMode.SelectedValue.GetObjectToString(), InventoryStatus = cmbSearchInventoryStatus.SelectedValue.GetObjectToInt(), InventoryType = cmbSearchType.SelectedValue.GetObjectToString(), PalletInfo = txtSearchPallet.Text, SupplierCode = cmbSearchSupplier.SelectedValue.GetObjectToString(), BatchNo = txtSearchBatch.Text, MaterielInfo = txtSearchMateriel.Text, PageIndex = pageIndex, PageSize = pageSize }); if (result.Status == OperateStatus.Success) { _totalCount = result.Data.TotalCount; _pageIndex = pageIndex; _pageSize = pageSize; if (result.Data.RowData.Any()) { dataGridView.DataSource = result.Data.RowData.ToList(); } else { if (dataGridView.DataSource != null) { dataGridView.DataSource = new List(); } } this.dataGridView.SelectionChanged += this.dataGridView_SelectionChanged; this.dataGridView_SelectionChanged(null, null); return string.Empty; } else { this.dataGridView.SelectionChanged += this.dataGridView_SelectionChanged; dataGridViewDTL.DataSource = null; return result.Message; } } private string LoadDTLSearch(int id, int pageIndex, int pageSize) { var result = BalanceServices.balanceSearchService.GetDetailInventoryList(new InventoryDetailSearchCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, Id = id, }); if (result.Status == OperateStatus.Success) { if (result.Data.Any()) { dataGridViewDTL.Columns.Clear(); dataGridViewDTL.DataSource = result.Data.ToList(); dataGridViewDTL.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientDTLFieldOrderList)); } else { if (dataGridViewDTL.DataSource != null) { dataGridViewDTL.DataSource = new List(); } dataGridViewDTL.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientDTLFieldOrderList), false); } return string.Empty; } else { return result.Message; } } private void btnSearchExport_Click(object sender, EventArgs e) { this.dataGridView.DataGridViewExport($"{AppConfig.CurrentMenu.FirstOrDefault().MenuName}列表" + DateTime.Now.ToString("yyyyMMddHH")); } private void btnAdd_Click(object sender, EventArgs e) { var form = new frmOperateBalanceInventory(); form._FunctionType = frmOperateBalanceInventory.EnumFunctionType.Add; if (form.ShowDialog() == DialogResult.Yes) { btnSearch_Click(null, null); } } /// /// 当前页面操作的主键 /// private string _PrimaryKey = "ColumInventoryId"; /// /// 当前页面操作单号 /// private string _PrimaryNo = "InventoryNo"; private void btnEdit_Click(object sender, EventArgs e) { //SelectInit(); if (this.dataGridView.SelectedRows.Count > 0) { var form = new frmOperateBalanceInventory(); form._FunctionType = frmOperateBalanceInventory.EnumFunctionType.Edit; form._InventoryNo = SelectedNO; if (form.ShowDialog() == DialogResult.Yes) { btnSearch_Click(null, null); } } else { KryptonMessageBox.Show($"请选择记录!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// /// 选择行主键列表 /// //private List _CheckRowIdList = new List(); private void clearCkeck() { for (var n = 0; n < this.dataGridView.Rows.Count; n++) { if ((bool)this.dataGridView.Rows[n].Cells["Check"].Value) { this.dataGridView.Rows[n].Cells["Check"].Value = false; } } } private IEnumerable _CheckRowIdList { get { var result = new List(); for (var n = 0; n < this.dataGridView.Rows.Count; n++) { if (Convert.ToBoolean(this.dataGridView.Rows[n].Cells["Check"].Value)) { result.Add(Convert.ToInt32(this.dataGridView.Rows[n].Cells[this._PrimaryKey].Value)); } } return result; } } private void btnRemove_Click(object sender, EventArgs e) { if (_CheckRowIdList.Count() == 0) { return; } if (KryptonMessageBox.Show($"确认删除选中数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { _LastOperation = EnumOperation.Remove; var editResult = BalanceServices.balanceOperateService.InventoryStatusChange(new InventoryStatusChangeCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, Ids = string.Join(",", _CheckRowIdList), InventoryStatus = InventoryStatusEnum.Deleted, }); if (editResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); btnSearch_Click(null, null); } else { KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } private void btnComplete_Click(object sender, EventArgs e) { if (this._CheckRowIdList.Count() == 0) { return; } if (_CheckRowIdList.Count() == 1) { if (KryptonMessageBox.Show($"确认强制完成选中盘点单数据吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { _LastOperation = EnumOperation.Remove; var editResult = BalanceServices.balanceOperateService.InventoryStatusChange(new InventoryStatusChangeCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, Ids = string.Join(",", _CheckRowIdList), InventoryStatus = InventoryStatusEnum.ForceEndInventor, InventoryModeMsg = "结束盘点" }); if (editResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); btnSearch_Click(null, null); } else { KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } else { KryptonMessageBox.Show($"只能选择一行盘点单数据!"); } } private void btnInventoryConfirm_Click(object sender, EventArgs e) { if (this._CheckRowIdList.Count() == 0) { return; } if (_CheckRowIdList.Count() == 1) { for (int i = 0; i < dataGridView.Rows.Count; i++) { if (dataGridView.Rows[i].Cells["InventoryStatus"].Value.ToString() == "已确认") { KryptonMessageBox.Show($"盘点单已进行过盘点结果确认操作!!"); return; } } var form = new frmOperateBalanceInventory(); form._FunctionType = frmOperateBalanceInventory.EnumFunctionType.ResultConfirm; form._InventoryNo = SelectedNO; if (form.ShowDialog() == DialogResult.Yes) { btnSearch_Click(null, null); } } else { KryptonMessageBox.Show($"只能选择一行盘点单数据!"); } } private void btnBeginInventory_Click(object sender, EventArgs e) { if (this._CheckRowIdList.Count() == 0) { return; } if (_CheckRowIdList.Count() == 1) { for (int i = 0; i < dataGridView.Rows.Count; i++) { if (Convert.ToBoolean(this.dataGridView.Rows[i].Cells["Check"].Value)) { //InventoryStatus if (Convert.ToInt32(this.dataGridView.Rows[i].Cells["InventoryStatus"].Value) >= 88) { KryptonMessageBox.Show($"盘点单已经进行过正常盘点操作,不能再次盘点!"); return; } } } FrmInventoryOperate frm = new FrmInventoryOperate(); frm.InventoryId = _CheckRowIdList.ToList()[0].ToString(); frm.InventoryModeMsg = "正常盘点"; if (frm.ShowDialog() == DialogResult.Yes) { btnSearch_Click(null, null); } } else { KryptonMessageBox.Show($"只能选择一行盘点单数据!"); } } private int SelectedID { get { if (this.dataGridView.SelectedRows.Count > 0) { return Convert.ToInt32(this.dataGridView.SelectedRows[0].Cells[_PrimaryKey].Value); } else { return -1; } } } private string SelectedNO { get { if (this.dataGridView.SelectedRows.Count > 0) { var no = this.dataGridView.SelectedRows[0].Cells[this._PrimaryNo].Value.ToString(); return no; } else { return ""; } } } private void btnDifferenceInventory_Click(object sender, EventArgs e) { if (this._CheckRowIdList.Count() == 0) { return; } if (_CheckRowIdList.Count() == 1) { for (int i = 0; i < dataGridView.Rows.Count; i++) { if (Convert.ToBoolean(this.dataGridView.Rows[i].Cells["Check"].Value)) { //InventoryStatus if (Convert.ToInt32(this.dataGridView.Rows[i].Cells["InventoryStatus"].Value) < 88) { KryptonMessageBox.Show($"盘点单未进行过正常盘点操作,不能直接进行差异盘点!"); return; } //InventoryStatus if (Convert.ToInt32(this.dataGridView.Rows[i].Cells["InventoryStatus"].Value) >= 99) { KryptonMessageBox.Show($"盘点单已经全部完成盘点操作,不能再次差异盘点!"); return; } } } FrmInventoryOperate frm = new FrmInventoryOperate(); frm.InventoryId = _CheckRowIdList.ToList()[0].ToString(); frm.InventoryModeMsg = "差异盘点"; if (frm.ShowDialog() == DialogResult.Yes) { btnSearch_Click(null, null); } } else { KryptonMessageBox.Show($"只能选择一行盘点单数据!"); } #region 20210219 孙亚龙舍弃旧代码 //if (SelectedID >= 0) //{ // var detailResult = BalanceServices.balanceSearchService.GetDetailInventoryList(new InventoryDetailSearchCondition // { // Id = SelectedID // }); // if (detailResult.Status == OperateStatus.Success) // { // if (detailResult.Data.Count > 0) // { // if (KryptonMessageBox.Show($"当前选中记录存在差异数量\r\n是否需要重新盘点?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) // { // var editResult = BalanceServices.balanceOperateService.InventoryStatusChange(new InventoryStatusChangeCondition // { // OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, // Ids = string.Join(",", _CheckRowIdList), // InventoryStatus = InventoryStatus.BeginInventory, // }); // if (editResult.Status == OperateStatus.Success) // { // var form = new frmOperateBalanceInventory(); // form._FunctionType = frmOperateBalanceInventory.EnumFunctionType.InventorySecond; // form._InventoryNo = SelectedNO; // if (form.ShowDialog() == DialogResult.Yes) // { // btnSearch_Click(null, null); // } // // KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // //btnSearch_Click(null, null); // } // else // { // KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // } // //var editResult = BalanceServices.balanceOperateService.InventoryStatusChange(new InventoryStatusChangeCondition // //{ // // OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, // // Ids = string.Join(",", _CheckRowIdList), // // InventoryStatus = InventoryStatus.BeginInventory, // //}); // //if (editResult.Status == OperateStatus.Success) // //{ // // KryptonMessageBox.Show($"已更新成开始盘点!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // // btnSearch_Click(null, null); // //} // //else // //{ // // KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // //} // } // } // else // { // KryptonMessageBox.Show($"当前选中记录不存在差异数量,不需要差异盘点!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // } // } // else // { // KryptonMessageBox.Show($"获取盘点差异失败!\r\n{detailResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); // } //} //else //{ // KryptonMessageBox.Show($"请选择记录!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); //} #endregion } private void dataGridView_SelectionChanged(object sender, EventArgs e) { if (dataGridView.SelectedRows.Count > 0) { //int rowIndec = dgv_WmsInArrival.CurrentCell.RowIndex; //int columnIndex = dgv_WmsInArrival.CurrentCell.RowIndex; //arrivalId = dgv_WmsInArrival.SelectedRows[0].Cells[1].Value.ToString(); int mainTableId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value); var message = frmLoading.ExecFun(() => { return this.LoadDTLSearch(this.SelectedID, 0, 0); }); // var message = loadfrm.EventCalExec(this.LoadDTLSearch,0,0); if (!string.IsNullOrWhiteSpace(message)) { KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } private void button1_Click(object sender, EventArgs e) { this.clearCkeck(); } private void frmBalanceInventory_Load(object sender, EventArgs e) { this.btnSearch_Click(null, null); } } }