using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Core.StlMes.Client.LgClassModel;
using CoreFS.CA06;
using Infragistics.Win;
using Infragistics.Win.Misc;
using Infragistics.Win.UltraWinGrid;
//using Core.Mes.Client.Comm;
using System.Collections;
using Core.Mes.Client.Comm;
using Core.Mes.Client.Comm.Server;
namespace Core.StlMes.Client.LgCommon
{
public delegate void SetHopperHandler(); //设置料仓后调用控件的SetHopperInfo
/* //##################################################################################################
* 名称:加料公用控件(大部分功能直接在设计器属性字段设置)
*
* 作者:肖桦军
*
* 完成日期:2012-10-09
*
* 关于调用:
*
* 1、在窗体上拖入此控件,设置相关属性(料仓个数、显示参数)
*
* 2、在窗体构造函数或者装载事件设置 ob、DEVICE_POSITION 属性
*
* 3、在设计器或者代码中(构造函数或者FormLoad)设置MtrlCategory、HpprCategory 属性
*
* 4、在构造函数或者窗体装载事件中设置SetHopper代理(处理设置料仓后刷新显示)
*
* 5、在窗体SetData线程中更新 HeatProcessNo 属性(实时的处理信息)
*
* 6、在窗体SetData线程中调用SetAdditiveData()填充数据
*/
//#####################################################################################################
public partial class ucAdditive : UserControl
{
private string _Caption = ""; //显示标题
private int _HopperNum = 20; //料斗数目
private int _ItemsPerRow = 2; //每行显示料斗数目
private bool _ExPanded = true; //是否展开
private bool _Expandable = false; //是否可收缩
private int _ExPandedHeight = 0; //展开高度
private bool _Editable = false; //数值可以修改
private bool _ShowCellButton = false; //显示编辑区域按钮
private UIElementBorderStyle _BorderStyle = UIElementBorderStyle.InsetSoft;
private int _ZoneValueWidth = 72; //料斗数值框宽度
private int _ZoneCaptionWidth = 72; //料斗标签框宽度
private int _VerticalSpacing = 1; //料斗垂直间距
private int _HorizontalSpacing = 1; //料斗水平间距
private int _LeftSpacing = 1; //料斗区域左边距
private int _RightSpacing = 1; //料斗区域右边距
private int _TopSpacing = 1; //料斗区域顶距
private int _BottomSpacing = 1; //料斗区域底距
private string _DEVICE_POSITION = ""; //设备位置
private string _HeatProcessNo = ""; //实时加热处理号
private OpeBase _ob;
private MaterialCategory _MtrlCategory = MaterialCategory.FL;
private HopperCategory _HpprCategory = HopperCategory.Automatic;
public SetHopperHandler SetHopper = null; //设置料仓后调用控件的SetHopperInfo
#region 属性
///
/// 设备位置
///
[Description("设备位置")]
public string DEVICE_POSITION
{
get { return _DEVICE_POSITION; }
set { if (value != _DEVICE_POSITION) _DEVICE_POSITION = value; }
}
[Browsable(false)]
public OpeBase ob
{
get { return _ob; }
set { if (value != _ob) _ob = value; }
}
///
/// 实时加热处理号
///
[Description("实时加热处理号")]
[Browsable(false)]
public string HeatProcessNo
{
get { return _HeatProcessNo; }
set { if (value != _HeatProcessNo) _HeatProcessNo = value; }
}
///
/// 物料类别
///
[Description("物料类别")]
public MaterialCategory MtrlCategory
{
get { return _MtrlCategory; }
set { if (value != _MtrlCategory) _MtrlCategory = value; }
}
///
/// 投料分类
///
[Description("投料分类")]
public HopperCategory HpprCategory
{
get { return _HpprCategory; }
set { if (value != _HpprCategory) _HpprCategory = value; }
}
///
/// 显示标题
///
[Description("显示标题")]
public string Caption
{
get { return _Caption; }
set
{
if (!value.Equals(_Caption))
{
_Caption = value;
MainContainer.Text = value;
}
}
}
///
/// 料斗数目(10 - 100)
///
[Description("料斗数目(10 - 100)")]
public int HopperNum
{
get { return _HopperNum; }
set
{
if (value < 10) value = 10;
else if (value > 100) value = 100;
if (value != _HopperNum)
{
_HopperNum = value;
if (_ItemsPerRow > value) _ItemsPerRow = value;
this.ResetLayout();
}
}
}
///
/// 每行显示料斗数目(1 - HopperNum)
///
[Description("料斗数目(每行显示料斗数目(1 - HopperNum))")]
public int ItemsPerRow
{
get { return _ItemsPerRow; }
set
{
if (value < 1) value = 1;
else if (value > _HopperNum) value = _HopperNum;
if (value != _ItemsPerRow)
{
_ItemsPerRow = value;
this.ResetLayout();
}
}
}
///
/// 展开状态
///
[Description("展开状态")]
public bool ExPanded
{
get { return _ExPanded; }
set
{
if (!value && !_Expandable) value = true;
if (value != _ExPanded)
{
_ExPanded = value;
MainContainer.Expanded = value;
}
}
}
///
/// 是否可收缩
///
[Description("是否可收缩")]
public bool Expandable
{
get { return _Expandable; }
set
{
if (value != _Expandable)
{
_Expandable = value;
if (!value)
{
MainContainer.ExpansionIndicator = GroupBoxExpansionIndicator.None;
MainContainer.HeaderClickAction = GroupBoxHeaderClickAction.None;
ExPanded = true;
}
else
{
MainContainer.ExpansionIndicator = GroupBoxExpansionIndicator.Far;
MainContainer.HeaderClickAction = GroupBoxHeaderClickAction.ToggleExpansion;
if (string.IsNullOrEmpty(_Caption)) Caption = "投料类别";
if (value) _ExPanded = MainContainer.Expanded;
}
MainContainer.Invalidate();
}
}
}
[Description("展开高度")]
public int ExPandedHeight
{
get { return _ExPandedHeight; }
}
///
/// 数值可以修改
///
[Description("数值可以修改")]
public bool Editable
{
get { return _Editable; }
set
{
if (value != _Editable)
{
if (!value)
{
ShowCellButton = false;
}
_Editable = value;
this.SetEditable(value);
}
}
}
///
/// 显示编辑区域按钮
///
[Description("显示编辑区域按钮")]
public bool ShowCellButton
{
get { return _ShowCellButton; }
set
{
if (!_Editable && value) value = false;
if (value != _ShowCellButton)
{
_ShowCellButton = value;
this.SetEditButton(value);
}
}
}
///
/// 料斗数值框宽度(20 - 200)
///
[Description("料斗数值框宽度(20 - 200)")]
public int ZoneValueWidth
{
get { return _ZoneValueWidth; }
set
{
if (value < 20) value = 20;
else if (value > 200) value = 200;
if (value != _ZoneValueWidth)
{
_ZoneValueWidth = value;
this.ResetLayout();
}
}
}
///
/// 料斗标签框宽度(20 - 200)
///
[Description("料斗标签框宽度(20 - 200)")]
public int ZoneCaptionWidth
{
get { return _ZoneCaptionWidth; }
set
{
if (value < 20) value = 20;
else if (value > 200) value = 200;
if (value != _ZoneCaptionWidth)
{
_ZoneCaptionWidth = value;
this.ResetLayout();
}
}
}
///
/// 料斗水平间距(0 - 100)
///
[Description("料斗水平间距(0 - 100)")]
public int HorizontalSpacing
{
get { return _HorizontalSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _HorizontalSpacing)
{
_HorizontalSpacing = value;
this.ResetLayout();
}
}
}
///
/// 料斗垂直间距(0 - 100)
///
[Description("料斗垂直间距(0 - 100)")]
public int VerticalSpacing
{
get { return _VerticalSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _VerticalSpacing)
{
_VerticalSpacing = value;
this.ResetLayout();
}
}
}
///
/// 料斗区域左边距(0 - 100)
///
[Description("料斗区域左边距(0 - 100)")]
public int LeftSpacing
{
get { return _LeftSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _LeftSpacing)
{
_LeftSpacing = value;
this.ResetLayout();
}
}
}
///
/// 料斗区域右边距(0 - 100)
///
[Description("料斗区域右边距(0 - 100)")]
public int RightSpacing
{
get { return _RightSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _RightSpacing)
{
_RightSpacing = value;
this.ResetLayout();
}
}
}
///
/// 料斗区域顶距(0 - 100)
///
[Description("料斗区域顶距(0 - 100)")]
public int TopSpacing
{
get { return _TopSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _TopSpacing)
{
_TopSpacing = value;
this.ResetLayout();
}
}
}
///
/// 料斗区域底距(0 - 100)
///
[Description("料斗区域底距(0 - 100)")]
public int BottomSpacing
{
get { return _BottomSpacing; }
set
{
if (value < 0) value = 0;
else if (value > 100) value = 100;
if (value != _BottomSpacing)
{
_BottomSpacing = value;
this.ResetLayout();
}
}
}
[Description("边框样式")]
public new UIElementBorderStyle BorderStyle
{
get { return _BorderStyle; }
set
{
if (value != _BorderStyle)
{
_BorderStyle = value;
MidContainer.BorderStyle = value;
}
}
}
#endregion
#region 构造函数
public ucAdditive()
{
InitializeComponent();
this.Caption = "投料类别";
this.SetDelegate();
this.ResetLayout();
}
#endregion
#region 重新生成框架
private void ResetSource()
{
try
{
ultraDataSource1.Rows.Clear();
ultraDataSource1.Band.Columns.Clear();
}
catch { }
}
private void ResetLayout()
{
try
{
ultraGrid1.BeginUpdate();
this.ResetSource();
for (int i = 0; i < _HopperNum; i++)
{
ultraDataSource1.Band.Columns.Add(Convert.ToString(i + 1), typeof(string));
}
int iOriginX = 0, iOriginY = 0;
for (int i = 0; i < _HopperNum; i++)
{
try
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = (_Editable ? Activation.AllowEdit : Activation.NoEdit);
if (_ShowCellButton) ultraGrid1.DisplayLayout.Bands[0].Columns[i].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton;
else ultraGrid1.DisplayLayout.Bands[0].Columns[i].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.Default;
}
catch { }
try
{
int iVerCount = (int)Math.Ceiling((float)_HopperNum / (float)_ItemsPerRow);
iOriginX = i % _ItemsPerRow;
iOriginY = i / _ItemsPerRow;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellAppearance.TextVAlign = VAlign.Middle;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Appearance.TextHAlign = HAlign.Left;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Appearance.TextVAlign = VAlign.Middle;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX = 2;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY = 1;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX = iOriginX * 2;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY = iOriginY;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.PreferredCellSize = new Size(_ZoneValueWidth, 0);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.PreferredLabelSize = new Size(_ZoneCaptionWidth, 0);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.LabelInsets.Left = (iOriginX == 0 ? _LeftSpacing : _HorizontalSpacing);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.LabelInsets.Top = (iOriginY == 0 ? _TopSpacing : _VerticalSpacing);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.CellInsets.Top = (iOriginY == 0 ? _TopSpacing : _VerticalSpacing);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.CellInsets.Right = (iOriginX == _ItemsPerRow - 1 ? _RightSpacing : 0);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.LabelInsets.Bottom = (iOriginY == iVerCount - 1 ? _BottomSpacing : 0);
ultraGrid1.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.CellInsets.Bottom = (iOriginY == iVerCount - 1 ? _BottomSpacing : 0);
}
catch { }
}
ClsControlPack.InitUltraDataSource(ultraDataSource1);
}
catch { }
finally
{
ultraGrid1.EndUpdate();
}
}
#endregion
#region 窗体调用(填充加料数据、读取并显示料斗设置)
///
/// 加料数据填充
///
/// 加料数据集
public void SetAdditiveData(CommonAdditive additiveBuffer)
{
try
{
string strKey = ""; //料仓ID
string strCode = ""; //某个料仓配置的物料编码
string strType = ""; //某个料仓配置的物料类别
bool Added = false; //表示某个料仓是否有加料
for (int idx = 0; idx < ultraDataSource1.Band.Columns.Count; idx++)
{
try
{
strKey = ultraDataSource1.Band.Columns[idx].Key;
if (additiveBuffer == null)
{
ultraDataSource1.Rows[0][strKey] = "";
continue;
}
strCode = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Tag);
strType = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Header.Tag);
if (strKey.Equals(strCode)) //料斗没有设置物料
{
ultraDataSource1.Rows[0][strKey] = "";
continue;
}
for (int i = 0; i < additiveBuffer.hList.Count; i++)
{
JOB_COMMON_ADDITIVES addt = (JOB_COMMON_ADDITIVES)additiveBuffer.hList[i];
if (_HpprCategory == HopperCategory.Automatic) //自动加料才判断物料类别
{
if (addt == null || addt.HOPPERNUMID != strKey || addt.JMTYPE != "1") continue; //加料类型为1表示自动加料、料仓号匹配
if (addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode) continue; //物料类别、物料编码匹配
if (_MtrlCategory == MaterialCategory.FL && addt.MATERIELTYPE != "FL") continue;
if (_MtrlCategory == MaterialCategory.HJ && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.WS && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.FL_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.HJ_WS && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
}
else if (_HpprCategory == HopperCategory.Manual)
{
if (addt == null || addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode || addt.JMTYPE != "2") continue;
}
try
{
ultraDataSource1.Rows[0][strKey] = addt.JMWGT;
Added = true;
break;
}
catch { }
}
}
catch { }
if (!Added) ultraDataSource1.Rows[0][strKey] = "";//没有加料
else if (Added) Added = false; //清除加料标志,跳转到下一料仓
}
}
catch { }
finally
{
ultraGrid1.UpdateData();
}
}
///
/// 读取并设置仓对应物料
///
/// 设置表
/// 物料基础表
public void SetHopperInfo(DataTable tblConfig, DataTable tblMaterial)
{
try
{
string HopperID = "";
string Filter = "";
DataRow[] rows = null;
if (_HpprCategory == HopperCategory.Automatic)
{
if (_MtrlCategory == MaterialCategory.FL) Filter = "MATERIELTYPE = 'FL'";
else if (_MtrlCategory == MaterialCategory.HJ) Filter = "MATERIELTYPE = 'HJ'";
else if (_MtrlCategory == MaterialCategory.WS) Filter = "MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.FL_HJ) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ'";
else if (_MtrlCategory == MaterialCategory.FL_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.HJ_WS) Filter = "MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.FL_HJ_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
else Filter = "MATERIELTYPE = '?'";
Filter = "(" + Filter + ") and JMTYPE = '1'";
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
if (tblConfig == null || tblConfig.Rows.Count == 0)
{
try
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
catch { }
break;
}
HopperID = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
rows = tblConfig.Select(Filter + " and MSNUMID = '" + HopperID + "'");
if (rows.Length > 0)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = Convert.ToString(rows[0]["MATERIELCODE"]); //保存物料编码
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = Convert.ToString(rows[0]["MATERIELFORSHORT"]); //保存物料简称
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = Convert.ToString(rows[0]["MATERIELTYPE"]); //保存物料类别
}
else
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
}
catch { }
}
}
else if (_HpprCategory == HopperCategory.Manual)
{
if (tblConfig == null || tblConfig.Rows.Count == 0 || tblMaterial == null)
{
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
catch { }
}
}
else
{
string strConfig = Convert.ToString(tblConfig.Rows[0]["CONFGCODE"]).Trim();
string[] strCode = strConfig.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
if (i >= strCode.Length)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
else
{
rows = tblMaterial.Select("MATERIELCODE = '" + strCode[i].Trim() + "'");
if (rows.Length > 0)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = Convert.ToString(rows[0]["MATERIELCODE"]); //保存物料编码
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = Convert.ToString(rows[0]["MATERIELFORSHORT"]); //保存物料简称
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = Convert.ToString(rows[0]["MATERIELTYPE"]); //保存物料类别
}
else
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
}
}
catch { }
}
}
}
}
catch { }
}
public void ResetData()
{
ClsControlPack.ResetUltraDataSource(ultraDataSource1);
}
#endregion
#region 相关属性设置响应
private void SetEditable(bool Editable)
{
try
{
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = (Editable ? Activation.AllowEdit : Activation.NoEdit);
}
catch { }
}
}
catch { }
}
private void SetEditButton(bool ShowEditButton)
{
try
{
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
if (ShowEditButton)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton;
}
else
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.Default;
}
}
catch { }
}
}
catch { }
}
#endregion
#region 事件
private void SetDelegate()
{
this.Resize += new System.EventHandler(this.ucAdditive_Resize);
this.MainContainer.ExpandedStateChanged += new System.EventHandler(this.ExpandedStateChanged);
this.ultraGrid1.DoubleClickHeader += new Infragistics.Win.UltraWinGrid.DoubleClickHeaderEventHandler(this.ultraGrid1_DoubleClickHeader);
this.ultraGrid1.DoubleClickCell += new Infragistics.Win.UltraWinGrid.DoubleClickCellEventHandler(this.ultraGrid1_DoubleClickCell);
this.ultraGrid1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ultraGrid1_KeyDown);
this.ultraGrid1.ClickCellButton += new Infragistics.Win.UltraWinGrid.CellEventHandler(this.ultraGrid1_ClickCellButton);
}
private void ucAdditive_Resize(object sender, EventArgs e)
{
try
{
if (_Expandable && !_ExPanded)
{
this.Height = MainContainer.Height; //可收缩,处于收缩状态,不允许修改大小
if (_ExPandedHeight == 0 && this.Parent != null) _ExPandedHeight = this.Parent.Height;
}
else if (_Expandable && _ExPanded) _ExPandedHeight = this.Height; //可收缩,处于展开状态,记录高度变化
else if (!Expandable) _ExPandedHeight = this.Height; //不可收缩,记录高度变化
}
catch { }
}
private void ExpandedStateChanged(object sender, EventArgs e)
{
try
{
ExPanded = MainContainer.Expanded;
if (MainContainer.Expanded) this.Height = _ExPandedHeight;
else this.Height = MainContainer.Height;
}
catch { }
}
private void ultraGrid1_DoubleClickHeader(object sender, DoubleClickHeaderEventArgs e)
{
try
{
if (_HpprCategory == HopperCategory.Automatic)
{
frmSetHopper frm = new frmSetHopper(_DEVICE_POSITION, ob);
frm.ShowDialog();
if (this.SetHopper != null)
this.Invoke(this.SetHopper);
}
else if (_HpprCategory == HopperCategory.Manual)
{
string strOriginal = ""; //原始物料编码
if (Convert.ToString(e.Header.Column.Tag) != e.Header.Column.Key)
strOriginal = Convert.ToString(e.Header.Column.Tag);
string strName = Convert.ToString(e.Header.Caption); //物料名称
frmSetMaterialName frm = new frmSetMaterialName(strName, "1", ob);
frm.ShowDialog();
if (frm.bChange)
{
string strMaterielCode = frm.m_szWLBM;
try
{
ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.StlAdditive.UpdateInterFaceConfig",
new object[]
{
new object[]
{
_DEVICE_POSITION, strOriginal, strMaterielCode
}
}, ob);
if (this.SetHopper != null)
this.Invoke(this.SetHopper);
}
catch (Exception ex)
{
if (ex is MESException)
{
}
else
MessageBox.Show("手投料物料配置失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
catch { }
}
private void ultraGrid1_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (!_Editable) return;
if (e.KeyCode != Keys.Enter || string.IsNullOrEmpty(_HeatProcessNo)) return; //回车、有生产任务
UltraGridCell cell = ultraGrid1.ActiveCell;
if (ultraGrid1.Rows.Count == 0 || cell == null || cell.Row.Index != 0) return; //行数异常
if (Convert.ToString(cell.Column.Tag) == cell.Column.Key) return; //没有设置物料编码
if (string.IsNullOrEmpty(cell.Column.Header.Caption)) return; //无物料名称
string Value = cell.Text.Trim(); //V6投料量
if (string.IsNullOrEmpty(Value))
{
MessageBox.Show("请输入消耗量!\n如果需要清空数据,请输入原有消耗量的负数。(如加料量为800,要清空此数值,请输入-800然后确认!)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
cell.Activated = true;
return;
}
if (!ClsDataAccessPack.CheckNumValidate(Value))
{
MessageBox.Show("不是有效的数值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
cell.Activated = true;
return;
}
string TableName = ClsBusinessPack.GetTableName(_HeatProcessNo.Substring(0, 1), TableSort.Feeding); //V1表名
string MaterielCode = Convert.ToString(cell.Column.Tag); //V3物料编码
string MaterielType = Convert.ToString(cell.Column.Header.Tag); //V4物料类型
string HopperID = cell.Column.Key; //V8料仓编号
string strMsg = "";
bool bSuccess = ClsBusinessPack.SaveAdditiveData(_HeatProcessNo, HopperID, MaterielType, MaterielCode, Value, _HpprCategory, out strMsg, ob);
if (!bSuccess)
{
MessageBox.Show("数据保存失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
}
}
catch { }
}
private void ultraGrid1_ClickCellButton(object sender, CellEventArgs e)
{
try
{
if (!_Editable || !_ShowCellButton || string.IsNullOrEmpty(_HeatProcessNo)) return;
UltraGridCell cell = e.Cell;
if (ultraGrid1.Rows.Count == 0 || cell == null || cell.Row.Index != 0) return; //行数异常
if (Convert.ToString(cell.Column.Tag) == cell.Column.Key) return; //没有设置物料编码
if (string.IsNullOrEmpty(cell.Column.Header.Caption)) return; //无物料名称
frmInputDecimal frm = new frmInputDecimal(Convert.ToString(cell.Value));
frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
if (frm.ShowDialog() == DialogResult.OK)
{
if (!frm.ValueChanged) return;
string Value = frm.Value; //V6投料量
if (string.IsNullOrEmpty(Value))
{
MessageBox.Show("请输入消耗量!\n如果需要清空数据,请输入原有消耗量的负数。(如加料量为800,要清空此数值,请输入-800然后确认!)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
cell.Activated = true;
return;
}
if (!ClsDataAccessPack.CheckNumValidate(Value))
{
MessageBox.Show("不是有效的数值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
cell.Activated = true;
return;
}
string TableName = ClsBusinessPack.GetTableName(_HeatProcessNo.Substring(0, 1), TableSort.Feeding); //V1表名
string MaterielCode = Convert.ToString(cell.Column.Tag); //V3物料编码
string MaterielType = Convert.ToString(cell.Column.Header.Tag); //V4物料类型
string HopperID = cell.Column.Key; //V8料仓编号
string strMsg = "";
bool bSuccess = ClsBusinessPack.SaveAdditiveData(_HeatProcessNo, HopperID, MaterielType, MaterielCode, Value, _HpprCategory, out strMsg, ob);
if (!bSuccess)
{
MessageBox.Show("数据保存失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
}
}
}
catch { }
}
#endregion
private void ultraGrid1_DoubleClickCell(object sender, DoubleClickCellEventArgs e)
{
try
{
if (_HeatProcessNo == "") return;
string strOriginal = ""; //原始物料编码
string HopperID = e.Cell.Column.Key.ToString(); //料斗号
if (Convert.ToString(e.Cell.Column.Header.Column.Tag) != e.Cell.Column.Header.Column.Key)
strOriginal = Convert.ToString(e.Cell.Column.Header.Column.Tag);
if (strOriginal == "") return;
string strName = Convert.ToString(e.Cell.Column.Header.Caption); //物料名称
frmSelectWeight frm = new frmSelectWeight(ob);
frm.HeatProcessNo = _HeatProcessNo;
frm.MaterName = strName;
frm.sWeight = e.Cell.Value.ToString();
frm.ShowDialog();
if (frm.flag)
{
string strErr = "";
string strSqlID = "";
//object[] sArgs = null;
if (frm.Weight == "") return;
//if (frm.isCancel)
//{
// strSqlID = "BofHJMater.Delete";
// sArgs = new object[3];
// sArgs[0] = frm.vProcessNo; //加热处理号
// sArgs[1] = strOriginal; //物料编码
// sArgs[2] = HopperID; //料斗号
//}
//else
//{
Hashtable ht = new Hashtable();
strSqlID = "STL_JOB0015";
ht.Add("I1", frm.vProcessNo); //加热处理号
ht.Add("I2", _HeatProcessNo.Substring(5, 8)); //炉号
ht.Add("I3", _HeatProcessNo.Substring(1, 2)); //岗位号
ht.Add("I4", _HeatProcessNo.Substring(3, 2)); //处理次数
ht.Add("I5", strOriginal); //物料编码
ht.Add("I6", strName); //物料名称
ht.Add("I7", frm.Weight); //物料重量
ht.Add("I8", frm.VDate); //加料时间
ht.Add("I9", HopperID); //料斗号
ht.Add("I10", frm.Weightno); //计量单号
ht.Add("I11", frm.isCancel?"2":"1"); //1为保存,2为取消
ht.Add("O1", "");
ht.Add("O2", "");
// }
try
{
//CommonClientToServer ccTs = new CommonClientToServer();
//ccTs.ob = ob;
//string strRCode = ccTs.ExecuteProcedureFunctions("Core.LgMes.Server.Common.ComDBProcedure",
// "ExecProcWithCollParam", strSqlID, sArgs, out strErr);
CommonClientToServer ccTs = new CommonClientToServer();
ccTs.ob = ob;
CoreClientParam ccp = ccTs.ExecuteProcedureFunctionsSqlID("Core.Mes.Server.Common.ComDataAccess",
"executeProcedure", strSqlID, 5, ht, out strErr);
if (strErr != "")
{
MessageBox.Show("操作失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
{
//strErr = "";
//strSqlID = "BofHJMater.StatusChange";
//object[] sArgs1 = new object[6];
//sArgs1[0] = frm.vProcessNo; //加热处理号
//sArgs1[1] = _HeatProcessNo.Substring(5, 8); //炉号
//sArgs1[2] = strOriginal; //物料编码
//sArgs1[3] = strName; //物料名称
//if (frm.isCancel)
//{
// sArgs1[4] = "2";
//}
//else
//{
// sArgs1[4] = "1";
//}
//sArgs1[5] = frm.Weightno; //计量编号
//CommonClientToServer ccts = new CommonClientToServer();
//ccts.ob = ob;
//string Code = ccts.ExecuteProcedureFunctions("Core.LgMes.Server.Common.ComDBMcmsQuery",
// "ExecProcWithCollParam", strSqlID, sArgs1, out strErr);
MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
catch { }
}
}
catch { }
}
}
///
/// 物料分类
///
public enum MaterialCategory
{
///
/// 辅料
///
FL,
///
/// 合金
///
HJ,
///
/// 喂丝
///
WS,
///
/// 辅料 + 合金
///
FL_HJ,
///
/// 辅料 + 喂丝
///
FL_WS,
///
/// 合金 + 喂丝
///
HJ_WS,
///
/// 辅料 + 合金 + 合金
///
FL_HJ_WS
}
///
/// 投料分类
///
public enum HopperCategory : int
{
///
/// 自动投料(系统采集)
///
Automatic = 1,
///
/// 手投料(人工录入)
///
Manual = 2
}
}