宜昌华友原料库管理软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

901 lines
30 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Reflection;
namespace SiaSun.LMS.WPFClient.UC
{
/// <summary>
/// ucManagePosition.xaml 的交互逻辑
/// </summary>
public partial class ucManagePosition : UserControl
{
//判断是否加载完成
bool boolIsLoaded = false;
bool boolAllowChooseStartPosition = false;
bool boolAllowChooseEndPosition = false;
#region ------定义代理和事件
public delegate void U_StockBarcodeKeyDownHandler();
public event U_StockBarcodeKeyDownHandler U_StockBarcodeKeyDown;
/// <summary>
/// 输送位置更改
/// </summary>
public delegate void U_StartPositionValueChangedHandler();
//输送位置更改
public event U_StartPositionValueChangedHandler U_StartPositionChanged;
/// <summary>
/// 输送位置更改
/// </summary>
public delegate void U_EndPositionValueChangedHandler();
//输送位置更改
public event U_EndPositionValueChangedHandler U_EndPositionChanged;
/// <summary>
/// 货位规格类型更改
/// </summary>
public delegate void U_CellModelValueChangedHandler();
//货位规格类型更改
public event U_CellModelValueChangedHandler U_CellModelChanged;
#endregion
#region ------可在数据库表MANAGE_TYPE_PARAM中设备的属性
bool boolShowStockBarcode = true;
/// <summary>
/// 是否显示托盘条码
/// </summary>
public bool U_AllowShowStockBarcode
{
get { return boolShowStockBarcode; }
set
{
boolShowStockBarcode = value;
this.panelStockBarcode.Visibility = this.boolShowStockBarcode ? Visibility.Visible : System.Windows.Visibility.Collapsed;
}
}
bool boolAllowShowCellModel = true;
/// <summary>
/// 是否显示货位规格
/// </summary>
public bool U_AllowShowCellModel
{
get { return boolAllowShowCellModel; }
set { boolAllowShowCellModel = value; this.panelCellModel.Visibility = this.boolAllowShowCellModel ? Visibility.Visible : System.Windows.Visibility.Collapsed; }
}
bool boolShowStartPostion = true;
/// <summary>
/// 是否显示起始位置
/// </summary>
public bool U_AllowShowStartPosition
{
get { return boolShowStartPostion; }
set
{
boolShowStartPostion = value;
this.panelStartPosition.Visibility = value ? Visibility.Visible : System.Windows.Visibility.Collapsed;
}
}
bool boolShowEndPosition = true;
/// <summary>
/// 是否显示终止位置
/// </summary>
public bool U_AllowShowEndPosition
{
get { return boolShowEndPosition; }
set
{
boolShowEndPosition = value;
this.panelEndPosition.Visibility = value ? Visibility.Visible : System.Windows.Visibility.Collapsed;
}
}
string strAssembleResource = "1";
public string U_AssembleResource
{
get { return this.strAssembleResource; }
set { this.strAssembleResource = value; }
}
string strStartCellType = string.Empty;
public string U_StartCellType
{
get { return this.strStartCellType; }
set { this.strStartCellType = value; }
}
string strStartCellInOut = string.Empty;
public string U_StartCellInOut
{
get { return this.strStartCellInOut; }
set { this.strStartCellInOut = value; }
}
string strEndCellType = string.Empty;
public string U_EndCellType
{
get { return this.strEndCellType; }
set { this.strEndCellType = value; }
}
string strEndCellInOut = string.Empty;
public string U_EndCellInOut
{
get { return this.strEndCellInOut; }
set { this.strEndCellInOut = value; }
}
bool boolCheckStockExistStorage = false;
public bool U_CheckStockExistStorage
{
get { return this.boolCheckStockExistStorage; }
set { this.boolCheckStockExistStorage = value; }
}
bool boolAutoDownloadControlTask = false;
public bool U_AutoDownloadControlTask
{
get { return this.boolAutoDownloadControlTask; }
set { this.boolAutoDownloadControlTask = value; }
}
bool boolAutoCompleteTask = false;
public bool U_AutoCompleteTask
{
get { return this.boolAutoCompleteTask; }
set { this.boolAutoCompleteTask = value; }
}
bool boolAllowAutoStartPostion = false;
/// <summary>
/// 是否允许自动选择起始位置
/// </summary>
public bool U_AllowAutoStartPostion
{
get { return boolAllowAutoStartPostion; }
set { boolAllowAutoStartPostion = value; }
}
bool boolAllowAutoEndPostion = false;
/// <summary>
/// 是否允许自动选择终止位置
/// </summary>
public bool U_AllowAutoEndPostion
{
get { return boolAllowAutoEndPostion; }
set { boolAllowAutoEndPostion = value; }
}
int intStartPositionDefault = 0;
/// <summary>
///
/// </summary>
public int U_StartPositionDefault
{
get { return this.intStartPositionDefault; }
set
{
this.cmbStartPosition.IsEnabled = !(Convert.ToInt32(value) > 0);
this.intStartPositionDefault = value;
}
}
int intEndPositionDefault = 0;
/// <summary>
/// 设置目标位置是否可用
/// </summary>
public int U_EndPositionDefault
{
get { return this.intEndPositionDefault; }
set
{
this.cmbEndPosition.IsEnabled = !(Convert.ToInt32(value) > 0);
this.intEndPositionDefault = value;
}
}
string strCellModelDefault = string.Empty;
/// <summary>
/// 设置货位规格是否可用
/// </summary>
public string U_CellModelDefault
{
get { return strCellModelDefault; }
set
{
if (!String.IsNullOrEmpty(value))
{
this.cmbCellModel.IsEnabled = false;
this.strCellModelDefault = value;
}
}
}
string strWarehouseType = string.Empty;
/// <summary>
/// 加载货位选择时的仓库类型
/// </summary>
public string U_WarehouseType
{
get { return strWarehouseType; }
set { strWarehouseType = value; }
}
string strStartPositonCellStatus = string.Empty;
/// <summary>
/// 选择起始位置要求的货位状态
/// </summary>
public string U_StartPositionCellStatus
{
get { return strStartPositonCellStatus; }
set { strStartPositonCellStatus = value; }
}
string strEndPositonCellStatus = string.Empty;
/// <summary>
/// 选择起始位置要求的货位状态
/// </summary>
public string U_EndPositionCellStatus
{
get { return strEndPositonCellStatus; }
set { strEndPositonCellStatus = value; }
}
#endregion
/// <summary>
/// 货位规格
/// </summary>
public string U_CELL_MODEL
{
get { return this.cmbCellModel.SelectedValue == null ? string.Empty : this.cmbCellModel.SelectedValue.ToString(); }
set { if (value != null)this.cmbCellModel.SelectedValue = value; }
}
/// <summary>
/// 起始输送位置编号
/// </summary>
public int U_START_POSITION_ID
{
get { return cmbStartPosition.SelectedValue == null ? 0 : Convert.ToInt32(this.cmbStartPosition.SelectedValue); }
set { this.cmbStartPosition.SelectedValue = value; }
}
/// <summary>
/// 终止输送位置编号
/// </summary>
public int U_END_POSITION_ID
{
get { return cmbEndPosition.SelectedValue == null ? 0 : Convert.ToInt32(this.cmbEndPosition.SelectedValue); }
set { this.cmbEndPosition.SelectedValue = value; }
}
public string U_STOCK_BARCODE
{
get { return this.txtStockBarcode.Text.TrimEnd(); }
set { this.txtStockBarcode.Text = value; }
}
/// <summary>
/// 构造函数
/// </summary>
public ucManagePosition()
{
InitializeComponent();
}
/// <summary>
/// 初始化控件
/// </summary>
public void U_InitControl( int MANAGE_TYPE_ID)
{
IList<SiaSun.LMS.Model.MANAGE_TYPE_PARAM> lsMANAGE_TYPE_PARAM = MainApp._I_ManageService.ManageTypeParamGetList(MANAGE_TYPE_ID);
foreach (SiaSun.LMS.Model.MANAGE_TYPE_PARAM mMANAGE_TYPE_PARAM in lsMANAGE_TYPE_PARAM)
{
if (string.IsNullOrEmpty(mMANAGE_TYPE_PARAM.PARAM_VALUE))
{
continue;
}
PropertyInfo[] propertys_info = this.GetType().GetProperties();
foreach (PropertyInfo pi in propertys_info)
{
if (pi.Name.Equals(mMANAGE_TYPE_PARAM.PARAM_CODE, StringComparison.CurrentCultureIgnoreCase))
{
pi.SetValue(this, Convert.ChangeType( mMANAGE_TYPE_PARAM.PARAM_VALUE,pi.PropertyType), null);
}
}
}
this.boolIsLoaded = false;
//货位规格
this.CELL_MODEL_BIND();
this.START_POSITION_BIND();
this.END_POSITION_BIND();
//设置默认值
this.LoadDefaultValue();
//设置是否显示选择位置按钮
this.SetEnableChoosePositon();
}
/// <summary>
/// 设置是否允许设置显示选择位置按钮
/// </summary>
private void SetEnableChoosePositon()
{
try
{
this.boolAllowChooseStartPosition = this.U_StartCellType == Enum.CELL_TYPE.Cell.ToString();
this.btnStartPosition.Visibility = this.boolAllowChooseStartPosition ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
this.cmbStartPosition.IsEnabled = !this.boolAllowChooseStartPosition;
this.boolAllowChooseEndPosition = this.U_EndCellType == Enum.CELL_TYPE.Cell.ToString();
this.btnEndPosition.Visibility = this.boolAllowChooseEndPosition ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
this.cmbEndPosition.IsEnabled = !this.boolAllowChooseEndPosition;
this.checkBox1.IsEnabled = !this.boolAllowChooseEndPosition;
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
#region ------根据加载规则,加载起始库区和目标库区
/// <summary>
/// 清除数据绑定
/// </summary>
private void DataBindClear()
{
this.cmbStartPosition.ItemsSource = null;
this.cmbEndPosition.ItemsSource = null;
}
/// <summary>
/// 加载默认的库区
/// </summary>
private void LoadDefaultValue()
{
this.boolIsLoaded = false;
//CellModel
if (this.cmbCellModel.HasItems && this.cmbCellModel.SelectedValue == null)
{
if (!string.IsNullOrEmpty(this.strCellModelDefault))
this.cmbCellModel.SelectedValue = strCellModelDefault;
}
if (this.cmbStartPosition.HasItems && this.cmbStartPosition.SelectedValue == null)
{
if (this.intStartPositionDefault != 0)
this.cmbStartPosition.SelectedValue = this.intStartPositionDefault;
}
if (this.cmbEndPosition.HasItems && this.cmbEndPosition.SelectedValue == null)
{
if (this.intEndPositionDefault != 0)
this.cmbEndPosition.SelectedValue = this.intEndPositionDefault;
}
this.boolIsLoaded = true;
}
/// <summary>
/// 加载默认的库区
/// </summary>
public void U_Refresh()
{
this.boolIsLoaded = false;
this.txtStockBarcode.Text = string.Empty;
this.cmbCellModel.SelectedValue = null;
this.cmbStartPosition.SelectedValue = null;
this.cmbEndPosition.SelectedValue = null;
this.boolIsLoaded = true;
}
#endregion
#region ------CELL_MODEL绑定及变更
/// <summary>
/// 货位规格绑定
/// </summary>
private void CELL_MODEL_BIND()
{
try
{
IList<SiaSun.LMS.Model.SYS_ITEM_LIST> listITEM_LIST = MainApp._I_SystemService.ITEM_LIST_GetList_ITEM_CODE("CELL_MODEL");
this.cmbCellModel.DisplayMemberPath = "ITEM_LIST_NAME";
this.cmbCellModel.SelectedValuePath = "ITEM_LIST_CODE";
this.cmbCellModel.ItemsSource = listITEM_LIST;
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
/// <summary>
/// CELL_MODEL变更,更改其他流程属性
/// </summary>
private void cmbCellModel_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//如果没有加载完成,不处理
if (this.boolIsLoaded)
{
//默认值
this.LoadDefaultValue();
//激活注册事件
if (this.U_CellModelChanged != null)
{
this.U_CellModelChanged();
}
}
}
#endregion
#region ------START_POSITION绑定及变更
/// <summary>
/// 根据流程加载起始位置
/// </summary>
private void START_POSITION_BIND()
{
this.cmbStartPosition.DisplayMemberPath = "CELL_NAME";
this.cmbStartPosition.SelectedValuePath = "CELL_ID";
if (this.U_StartCellType != Enum.CELL_TYPE.Cell.ToString())
{
this.cmbStartPosition.ItemsSource = MainApp._I_BaseService.GetList(
string.Format("select * from wh_cell where 1=1 {0} {1} order by CELL_CODE",
this.U_StartCellType == string.Empty ? string.Empty : string.Format(" and cell_type like '%{0}%' ", this.U_StartCellType),
this.U_StartCellInOut == string.Empty ? string.Empty : string.Format(" and cell_flag =1 and cell_inout like '%{0}%' ", this.U_StartCellInOut))
).DefaultView;
}
//设置起始位置
this.SetStartPositionDefault();
//判断是否显示选择位置的按钮
btnStartPosition.Visibility = (this.boolAllowChooseStartPosition && cmbStartPosition.HasItems) ? Visibility.Visible : System.Windows.Visibility.Hidden;
}
/// <summary>
/// 设置默认起始位置值
/// </summary>
private void SetStartPositionDefault()
{
if (this.cmbStartPosition.HasItems && this.cmbStartPosition.SelectedValue == null)
{
//判断是否存在默认值
if (this.intStartPositionDefault > 0)
{
this.cmbStartPosition.SelectedValue = this.intStartPositionDefault;
}
}
}
/// <summary>
/// 起始位置变更
/// </summary>
private void cmbStartPosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.boolIsLoaded)
{
//判断是否注册相应的事件
if (this.U_StartPositionChanged != null)
{
this.U_StartPositionChanged();
}
}
}
#endregion
#region ------END_POSITION绑定及变更
/// <summary>
/// 根据流程加载目标位置
/// </summary>
private void END_POSITION_BIND()
{
this.cmbEndPosition.DisplayMemberPath = "CELL_NAME";
this.cmbEndPosition.SelectedValuePath = "CELL_ID";
if (this.U_EndCellType != Enum.CELL_TYPE.Cell.ToString())
{
if (this.checkBox1.IsChecked == false)
{
this.cmbEndPosition.ItemsSource = MainApp._I_BaseService.GetList(
string.Format("select * from wh_cell where 1=1 {0} {1} order by CELL_CODE",
this.U_EndCellType == string.Empty ? string.Empty : string.Format(" and cell_type like '%{0}%' ", this.U_EndCellType),
this.U_EndCellInOut == string.Empty ? string.Empty : string.Format(" and cell_flag=1 and cell_inout like '%{0}%' ", "Out"))
).DefaultView;
}
else
{
string sql = string.Format("select * from wh_cell where 1=1 {0} {1} ",
this.U_EndCellType == string.Empty ? string.Empty : string.Format(" and cell_type like '%{0}%' ", this.U_EndCellType),
this.U_EndCellInOut == string.Empty ? string.Empty : string.Format(" and cell_inout = '{0}' ", "InOut"));
this.cmbEndPosition.ItemsSource = MainApp._I_BaseService.GetList(sql
).DefaultView;
}
}
//设置目标位置
this.SetEndPositionDefault();
//判断是否显示选择位置的按钮
btnEndPosition.Visibility = (this.boolAllowChooseEndPosition && cmbEndPosition.Items.Count > 0) ? Visibility.Visible : System.Windows.Visibility.Hidden;
}
/// <summary>
/// 设置默认目标位置值
/// </summary>
private void SetEndPositionDefault()
{
if (this.cmbEndPosition.HasItems && this.cmbEndPosition.SelectedValue == null)
{
//判断是否存在默认值
if (this.intEndPositionDefault > 0)
{
this.cmbEndPosition.SelectedValue = this.intEndPositionDefault;
}
}
}
/// <summary>
/// 目标位置变更
/// </summary>
private void cmbEndPosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.boolIsLoaded)
{
//判断是否注册相应的事件
if (this.U_EndPositionChanged != null)
{
this.U_EndPositionChanged();
}
}
}
#endregion
#region ------选择起始位置、目标位置
/// <summary>
/// 按钮事件
/// </summary>
private void WrapPanel_Click(object sender, RoutedEventArgs e)
{
Button btn = e.OriginalSource as Button;
if (btn != null)
{
switch (btn.Name)
{
case "btnStartPosition":
this.SelectStartPosition();
break;
case "btnEndPosition":
this.SelectEndPosition();
break;
}
}
}
/// <summary>
/// 选择起始位置
/// </summary>
private void SelectStartPosition()
{
//判断可选择货位
try
{
//获得起始库区
//Model.WH_AREA mWH_AREA_Start = MainApp._I_CellService.AREA_GetModel(Convert.ToInt32(this.cmbStartArea.SelectedValue));
//获得选定的货位
Model.WH_CELL mWH_CELL_Selected = new Model.WH_CELL();// cmbStartPosition.SelectedValue == null ? null : MainApp._I_CellService.CELL_GetModel(Convert.ToInt32(cmbStartPosition.SelectedValue));
mWH_CELL_Selected.CELL_STATUS = this.U_StartPositionCellStatus;
WH.WAREHOUSE_CELL_SELECT window = new WH.WAREHOUSE_CELL_SELECT(this.U_WarehouseType, mWH_CELL_Selected);
if (window.ShowDialog() == true)
{
SiaSun.LMS.Model.WH_CELL mWH_CELL = window.U_WH_CELL;
if (mWH_CELL != null)
{
this.cmbStartPosition.ItemsSource = MainApp._I_BaseService.GetList(
string.Format("select * from wh_cell where cell_id={0}",
mWH_CELL.CELL_ID)
).DefaultView;
cmbStartPosition.SelectedValue = mWH_CELL.CELL_ID;
//判断是否正确
if (cmbStartPosition.SelectedValue == null)
{
MainApp._MessageDialog.Show("CheckStartPosition", null);
return;
}
else
{
//触发事件
if (this.U_StartPositionChanged != null)
{
this.U_StartPositionChanged();
}
}
}
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
/// <summary>
/// 选择目标位置
/// </summary>
private void SelectEndPosition()
{
try
{
//获得起始库区
//Model.WH_AREA mWH_AREA_End = MainApp._I_CellService.AREA_GetModel(Convert.ToInt32(this.cmbEndArea.SelectedValue));
//获得选定的货位
Model.WH_CELL mWH_CELL_Selected = new Model.WH_CELL();// MainApp._I_CellService.CELL_GetModel(Convert.ToInt32(cmbEndPosition.SelectedValue));
mWH_CELL_Selected.CELL_STATUS = this.U_EndPositionCellStatus;
WH.WAREHOUSE_CELL_SELECT window = new WH.WAREHOUSE_CELL_SELECT(this.U_WarehouseType, mWH_CELL_Selected);
if (window.ShowDialog() == true)
{
SiaSun.LMS.Model.WH_CELL mWH_CELL = window.U_WH_CELL;
if (mWH_CELL != null)
{
this.cmbEndPosition.ItemsSource = MainApp._I_BaseService.GetList(
string.Format("select * from wh_cell where cell_id={0}",
mWH_CELL.CELL_ID)
).DefaultView;
cmbEndPosition.SelectedValue = mWH_CELL.CELL_ID;
//判断是否正确
if (cmbEndPosition.SelectedValue == null)
{
MainApp._MessageDialog.Show(Enum.MessageConverter.CheckEndPosition);
return;
}
else
{
//触发事件
if (this.U_EndPositionChanged != null)
{
this.U_EndPositionChanged();
}
}
}
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
#endregion
#region -------设置各个属性值
/// <summary>
/// 设置货位规格值
/// </summary>
public void U_SetCellModel(string CELL_MODEL)
{
this.cmbCellModel.SelectedValue = CELL_MODEL;
}
#endregion
#region ------校验填写的值是否合法
//校验信息是否正确
public bool U_CHECK_WAREHOUSE()
{
Enum.MessageConverter messageType;
//货位规格
if (this.boolAllowShowCellModel && this.cmbCellModel.SelectedValue == null)
{
messageType = Enum.MessageConverter.CheckCellModel;
MainApp._MessageDialog.Show(messageType);
return false;
}
//起始位置
if (boolShowStartPostion && !boolAllowAutoStartPostion && cmbStartPosition.SelectedValue == null)
{
messageType = Enum.MessageConverter.CheckStartPosition;
MainApp._MessageDialog.Show(messageType);
return false;
}
//终止位置
if (boolShowEndPosition && !boolAllowAutoEndPostion && cmbEndPosition.SelectedValue == null)
{
messageType = Enum.MessageConverter.CheckEndPosition;
MainApp._MessageDialog.Show(messageType);
return false;
}
if (boolShowStockBarcode && !SiaSun.LMS.Common.RegexValid.GetCodeCheck(this.txtStockBarcode.Text, "StockCodeCheck"))
{
messageType = Enum.MessageConverter.CheckStockBarCode;
MainApp._MessageDialog.Show(messageType);
return false;
}
return true;
}
/// <summary>
/// 检查起始位置是否合法,检查货位编码是否等于设备编码
/// </summary>
public bool U_CheckStartPosition(string START_POSITION_CODE)
{
bool boolResult = false;
using (DataTable tableStartPosition = (this.cmbStartPosition.ItemsSource as DataView).Table)
{
if (tableStartPosition != null)
{
boolResult = tableStartPosition.Select(string.Format("DEVICE_CODE='{0}'", START_POSITION_CODE)).Length > 0;
}
}
return boolResult;
}
/// <summary>
/// 检查目标位置是否合法,检查货位编码是否等于设备编码
/// </summary>
public bool U_CheckEndPosition(string END_POSITION_CODE)
{
bool boolResult = false;
using (DataTable tableEndPosition = (this.cmbEndPosition.ItemsSource as DataView).Table)
{
if (tableEndPosition != null)
{
boolResult = tableEndPosition.Select(string.Format("DEVICE_CODE='{0}'", END_POSITION_CODE)).Length > 0;
}
}
return boolResult;
}
#endregion
/// <summary>
/// 刷新控件显示
/// </summary>
public void U_Update()
{
this.LoadDefaultValue();
}
/// <summary>
/// 清除操作
/// </summary>
public void U_Clear()
{
this.boolIsLoaded = false;
this.cmbCellModel.ItemsSource = null;
this.DataBindClear();
this.boolIsLoaded = true;
}
private void StockBarcode_KeyDown(object sender, KeyEventArgs e)
{
if (this.U_StockBarcodeKeyDown != null && e.Key == Key.Enter)
{
this.U_StockBarcodeKeyDown();
}
}
private void checkBox1_Click(object sender, RoutedEventArgs e)
{
this.END_POSITION_BIND();
}
private void CmbEndPosition_TextChanged(object sender, TextChangedEventArgs e)
{
cmbEndPosition.IsDropDownOpen = true;
}
}
}