using ComponentFactory.Krypton.Toolkit;
using NXWMS.Client.Code.Converter;
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.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;
using static NXWMS.Client.FrmCustom.ColumnControl;
namespace NXWMS.Forms.Balance
{
public partial class frmBalanceDetailSearch : KryptonForm
{
///
/// 客户端字段排序列表
///
private List _clientFieldOrderList;
///
/// 库区
///
private List regionList;
///
/// 物料类型列表
///
private List materielTypeList;
///
/// 供应商列表
///
private List supplierList;
///
/// 调用窗体类型
///
public ExecFormType _execFormType;
///
/// 正在新增库存记录
///
public static List _alreadyAddIdList;
///
/// 限制库存状态
///
public int? _limitBalanceStatus;
public frmBalanceDetailSearch()
{
InitializeComponent();
}
private void frmBalanceDetailSearch_Shown(object sender, EventArgs e)
{
InitData();
InitControl();
_pageIndex = 1;
_pageSize = 20;
}
///
/// 控件初始化
///
private void InitControl()
{
CheckForIllegalCrossThreadCalls = false;
dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick);
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false);
cmbSearchRegionCode.DataSource = regionList;
cmbSearchRegionCode.DisplayMember = "REGION_NAME";
cmbSearchRegionCode.ValueMember = "REGION_CODE";
cmbSearchRegionCode.SelectedIndex = -1;
cmbSearchMaterielType.DataSource = materielTypeList;
cmbSearchMaterielType.DisplayMember = "MATERIEL_TYPE_NAME";
cmbSearchMaterielType.ValueMember = "MATERIEL_TYPE_CODE";
cmbSearchMaterielType.SelectedIndex = -1;
var fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" });
cmbSearchQualityStatus.DataSource = fieldList.GetFieldValueIdList();
cmbSearchQualityStatus.DisplayMember = "Name";
cmbSearchQualityStatus.ValueMember = "Id";
cmbSearchQualityStatus.SelectedIndex = -1;
fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" });
cmbSearchBalanceStatus.DataSource = fieldList.GetFieldValueIdList();
cmbSearchBalanceStatus.DisplayMember = "Name";
cmbSearchBalanceStatus.ValueMember = "Id";
cmbSearchBalanceStatus.SelectedIndex = -1;
fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" });
cmbSearchSupplier.DataSource = fieldList.GetFieldValueIdList(supplierList, "SUPPLIER_CODE", "SUPPLIER_NAME");
cmbSearchSupplier.DisplayMember = "Name";
cmbSearchSupplier.ValueMember = "Code";
cmbSearchSupplier.SelectedIndex = -1;
_pageIndex = 1;
_pageSize = 20;
switch (_execFormType)
{
case ExecFormType.Default:
kryptonButtonUnbund.Visible = true;
kryptonButtonConfirm.Visible = false;
panelBase.Visible = true;
btnSearchExtend.Visible = false;
break;
case ExecFormType.Select:
kryptonButtonConfirm.Visible = true;
kryptonButtonUnbund.Visible = false;
panelBase.Visible = false;
panelExtend.Visible = true;
cmbSearchBalanceStatus.Text = BalanceStatus.InStock.Description();
cmbSearchBalanceStatus.Enabled = false;
_limitBalanceStatus = (int)BalanceStatus.InStock;
break;
}
}
///
/// 数据初始化
///
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 materielTypeResult = BaseServices.materielTypeService.GetList(new MaterielTypeSearchCondition { IsUsed = true, ItemSQL = "MATERIEL_TYPE_CODE,MATERIEL_TYPE_NAME" });
if (materielTypeResult.Status == OperateStatus.Success)
{
materielTypeList = materielTypeResult.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 = "MaterielTypeCode", FieldDesc = "物料类型编码" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielTypeName", FieldDesc = "物料类型名称" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielCode", FieldDesc = "物料编码" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "MaterielName", FieldDesc = "物料名称" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UnitName", FieldDesc = "单位" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "QTY", FieldDesc = "数量" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BatchNo", FieldDesc = "批次号" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "WAREHOUSE_NAME", FieldDesc = "所在仓库" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "REGION_NAME", FieldDesc = "所在库区" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BinName", FieldDesc = "所在库位" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "TrayCode", FieldDesc = "所在组盘码" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "PalletCode", FieldDesc = "所在托盘" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ProductDate", FieldDesc = "生产日期" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "ExpDate", FieldDesc = "失效日期" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "QualityStatusName", FieldDesc = "库品状态" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "BalanceStatusName", FieldDesc = "库存状态" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CreateName", FieldDesc = "创建人" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "CREATE_TIME", FieldDesc = "创建时间" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UpdateName", FieldDesc = "更新人" });
_clientFieldOrderList.Add(new ClientFieldOrderResult { FieldName = "UPDATE_TIME", FieldDesc = "更新时间" });
}
private void btnSearch_Click(object sender, EventArgs e)
{
_pageIndex = 1;
var loadfrm = new frmLoading();
loadfrm.Show();
//pageTool.Initialize(LoadSearch, 0, _pageSize);
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)
{
var result = BalanceServices.balanceSearchService.GetDetailList(new BalanceDetailSearchCondition
{
OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
ExpBeginDate = dtpSearchExpBeginDate.GetDateTimeValue(),
ExpEndDate = dtpSearchExpEndDate.GetDateTimeValue(),
ProductBeginDate = dtpSearchProductBeginDate.GetDateTimeValue(),
ProductEndDate = dtpSearchProductEndDate.GetDateTimeValue(),
BalanceStatus = _limitBalanceStatus == null ?
cmbSearchBalanceStatus.SelectedValue.GetObjectToInt() : _limitBalanceStatus,
BatchNo = txtSearchBatchNo.Text,
BinInfo = txtSearchBinInfo.Text,
MaterielInfo = txtSearchMaterielInfo.Text,
MaterielType = cmbSearchMaterielType.SelectedValue.GetObjectToString(),
PalletInfo = txtSearchPalletInfo.Text,
QualityStatus = cmbSearchQualityStatus.SelectedValue.GetObjectToString(),
RegionCode = cmbSearchRegionCode.SelectedValue.GetObjectToString(),
SpecsModel = txtSearchSpecsModel.Text,
WarehouseInfo = txtSearchWarehouseInfo.Text,
PageIndex = pageIndex,
PageSize = pageSize,
SupplierCode = cmbSearchSupplier.SelectedValue.GetObjectToString(),
});
if (result.Status == OperateStatus.Success)
{
_totalCount = result.Data.TotalCount;
_pageIndex = pageIndex;
_pageSize = pageSize;
if (result.Data.RowData.Any())
{
dataGridView.Columns.Clear();
dataGridView.DataSource = result.Data.RowData.ToList();
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList));
}
else
{
if (dataGridView.DataSource != null)
{
dataGridView.DataSource = new List();
}
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), 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 kryptonButtonUnbund_Click(object sender, EventArgs e)
{
if (!_CheckRowIdList.Any())
{
KryptonMessageBox.Show($"请选择数据进行操作!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
foreach (DataGridViewRow row in dataGridView.Rows)
{
if (row.Cells["BALANCE_STATUS"].Value.ToString() == ((int)BalanceStatus.Relieve).ToString())
{
KryptonMessageBox.Show($"选中记录已存在状态等于解绑数据,请去除选择重新解绑!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
var selectIndex = dataGridView.CurrentRow.Index;
if (selectIndex >= 0)
{
var data = dataGridView.Rows[selectIndex];
if (KryptonMessageBox.Show($"确认解绑选中的数据吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
var editResult = BalanceServices.balanceOperateService.BalanceStatusChange(new BalanceStatusChangeCondition
{
OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
BalanceIds = string.Join(",", _CheckRowIdList),
BalanceStatus = BalanceStatus.Relieve,
});
if (editResult.Status == OperateStatus.Success)
{
KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
btnSearch_Click(null, null);
}
}
}
}
///
/// 选择行主键列表
///
public List _CheckRowIdList = new List();
///
/// 当前页面操作的主键
///
private string _PrimaryKey = "BALANCE_ID";
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == 0)
{
if (this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null)
{
if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
}
else if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
{
if (_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Remove(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
}
else
{
if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
}
}
}
private void kryptonButtonConfirm_Click(object sender, EventArgs e)
{
if (KryptonMessageBox.Show($"确认提交选中的记录至盘库明细中?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
_alreadyAddIdList = _alreadyAddIdList.Union(_CheckRowIdList).ToList();
DialogResult = DialogResult.Yes;
}
}
private void btnSearchExtend_Click(object sender, EventArgs e)
{
btnSearch_Click(null, null);
}
private void frmBalanceDetailSearch_Load(object sender, EventArgs e)
{
}
}
}