|
|
using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using DevExpress.XtraEditors; using ICSSoft.Base.Config.AppConfig; using ICSSoft.Base.Config.DBHelper; using ICSSoft.Base.ReferForm.AppReferForm; using ICSSoft.Frame.Data.Entity; using ICSSoft.Frame.Data.BLL; namespace ICSSoft.Frame.APP { public partial class FormICSHeatTreatmentAddNew : DevExpress.XtraEditors.XtraForm { int flag; string ID; string Transno; string EQPCode; string OpCode; string Type=""; ICSITEMLot modelinfo; ICSOpFile entity = new ICSOpFile(); private DataTable dtNewRcards = null;
#region 构造函数
public FormICSHeatTreatmentAddNew() { InitializeComponent(); flag = 0; } public FormICSHeatTreatmentAddNew(string id, string transno,string eqpcode,string opcode) { InitializeComponent(); flag = 1; ID = id; EQPCode = eqpcode; Transno = transno; OpCode = opcode; }
public FormICSHeatTreatmentAddNew(string id,string eqpcode,string opcode,string type,string transno) { InitializeComponent(); flag = 2; ID = id; EQPCode = eqpcode; OpCode = opcode; Type = type; Transno = transno; SearchInfo(ID); } #endregion
#region 查询数据
private void SearchInfo(string guid) { string sql = @"SELECT a.LotNO,a.ItemCode,c.INVNAME,c.INVSTD,a.LOTQTY,c.INVUOM,
CONVERT(NUMERIC(10,3),(a.LOTQTY*a.EATTRIBUTE3)) AS num,c.INVEXPORTIMPORT,a.VenderLotNO as VenderLotNo, a.TransNO as MOCODE,a.TransLine as MOSEQ,d.EQPCode as EQPCODE,d.EATTRIBUTE3 as EQPName,d.EATTRIBUTE4 as OpCode FROM ICSITEMLot a LEFT JOIN ICSMO b ON a.TransNO=b.MOCODE AND a.TransLine=b.MOSEQ LEFT JOIN ICSINVENTORY c ON a.ItemCode=c.INVCODE LEFT JOIN (select b.LOTNOs,a.EQPCode,a.EATTRIBUTE3,a.EATTRIBUTE4 from ( SELECT LOTNOs=CONVERT(xml,'<root><v>'+REPLACE(LOTNOs, ';','</v><v>')+'</v></root>'),EQPCode,EATTRIBUTE3,EATTRIBUTE4 FROM ICSOpFile WHERE id ='{0}')a outer apply (select LOTNOs=C.v.value('.','nvarchar(100)') from a.LOTNOs.nodes('/root/v')C(v))b) d ON a.LotNO=d.LOTNOs WHERE a.LotNO in (select b.LOTNOs from ( SELECT LOTNOs=CONVERT(xml,'<root><v>'+REPLACE(LOTNOs, ';','</v><v>')+'</v></root>') FROM ICSOpFile WHERE id ='{0}')a outer apply (select LOTNOs=C.v.value('.','nvarchar(100)') from a.LOTNOs.nodes('/root/v')C(v))b) AND a.TYPE='工单'";
sql = string.Format(sql, guid); DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0]; if (dt != null) { gridControl1.DataSource = dt; gridView4.BestFitColumns(); dtNewRcards = dt; } } #endregion
#region 关闭 退出
private void btnClose_Click(object sender, EventArgs e) { this.Close(); } #endregion
#region 移动窗体
private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
//系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
//假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
//同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
//重写窗体,使窗体可以不通过自带标题栏实现移动
protected override void WndProc(ref Message m) {
//当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
//当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
//这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
//注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
switch (m.Msg) { case WM_NCHITTEST: base.WndProc(ref m); if ((int)m.Result == HTCLIENT) m.Result = (IntPtr)HTCAPTION; return; } //拦截双击标题栏、移动窗体的系统消息
if (m.Msg != 0xA3) { base.WndProc(ref m); }
} #endregion
#region 保存
private void save_Click(object sender, EventArgs e) { entity.MUSER = AppConfig.UserId; entity.MUSERName = AppConfig.UserName; entity.MTIME = Convert.ToDateTime(AppConfig.GetSeverDateTime("yyyy-MM-dd hh:mm:ss").ToString()); try { List<ICSOpFile> modelList = new List<ICSOpFile>(); ICSOpFile model = new ICSOpFile(); if (txtEQPCode.Text.Trim() == "") { ICSBaseSimpleCode.AppshowMessageBox("设备号不能为空!!!"); return; } if (txtCostCenter.Text.Trim() == "") { ICSBaseSimpleCode.AppshowMessageBox("工序不能为空!!!"); return; } if (!string.IsNullOrWhiteSpace(ID)&&gridView4.RowCount <= 0) { ICSBaseSimpleCode.AppshowMessageBox("产品跟踪单信息不能为空!!!"); return; } if (dtNewRcards.Rows.Count > 0) { #region 表中有值
for (int i = 0; i < dtNewRcards.Rows.Count; i++) { if (model.LOTNOs != null) { model.LOTNOs += gridView4.GetRowCellValue(i, colLotNO).ToString() + ";"; if (!model.MOCODE.Contains(dtNewRcards.Rows[i]["MOCODE"].ToString())) { model.MOCODE += gridView4.GetRowCellValue(i, colMOCODE).ToString() + ";"; } if (!model.MOSEQ.Contains(dtNewRcards.Rows[i]["MOSEQ"].ToString())) { model.MOSEQ += gridView4.GetRowCellValue(i, colMOSEQ).ToString() + ";"; } if (!model.EQPCode.Contains(dtNewRcards.Rows[i]["EQPCODE"].ToString())) { model.EQPCode += gridView4.GetRowCellValue(i, colEQPCode).ToString() + ";"; } if (!model.EATTRIBUTE2.Contains(dtNewRcards.Rows[i]["VenderLotNo"].ToString())) { model.EATTRIBUTE2 += gridView4.GetRowCellValue(i, gridColumn11).ToString() + ";"; } if (!model.EATTRIBUTE3.Contains(dtNewRcards.Rows[i]["EQPName"].ToString())) { model.EATTRIBUTE3 += gridView4.GetRowCellValue(i, colEQPName).ToString() + ";"; } if (!model.EATTRIBUTE4.Contains(dtNewRcards.Rows[i]["OpCode"].ToString())) { model.EATTRIBUTE4 += gridView4.GetRowCellValue(i, colOpCode).ToString() + ";"; } } else { model.MOCODE += gridView4.GetRowCellValue(i, colMOCODE).ToString() + ";"; model.MOSEQ += gridView4.GetRowCellValue(i, colMOSEQ).ToString() + ";"; model.EQPCode += gridView4.GetRowCellValue(i, colEQPCode).ToString() + ";"; model.EATTRIBUTE2 += gridView4.GetRowCellValue(i, gridColumn11).ToString() + ";"; model.EATTRIBUTE3 += gridView4.GetRowCellValue(i, colEQPName).ToString() + ";"; model.LOTNOs += gridView4.GetRowCellValue(i, colLotNO).ToString() + ";"; model.EATTRIBUTE4 += gridView4.GetRowCellValue(i, colOpCode).ToString() + ";"; } } #endregion
} else { model.EQPCode = txtEQPCode.Text.Trim(); model.EATTRIBUTE3= txtEQPName.Text.Trim(); model.EATTRIBUTE4 = txtCostCenter.Text.Trim(); } if (flag == 2) { model.ID = ID; } else { model.ID = AppConfig.GetGuid(); } model.MUSER = AppConfig.UserId; model.MUSERName = AppConfig.UserName; model.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss"); model.WorkPoint = AppConfig.WorkPointCode; model.EATTRIBUTE5 = txtNum.Text; modelList.Add(model);
if (modelList.Count <= 0) { ICSBaseSimpleCode.AppshowMessageBox("请选择数据!!!"); return; }
if (flag == 0 || Type.Equals("炉号")) { ICSHeatTreatmentBLL.AddList(modelList,Transno, AppConfig.AppConnectString); if (flag == 2) { ICSBaseSimpleCode.AppshowMessageBox("炉号修改成功!!!"); } else { ICSBaseSimpleCode.AppshowMessageBox("炉号新增成功!!!"); } this.Close(); this.DialogResult = DialogResult.Yes; } else if (flag == 1 || Type.Equals("试样号")) { ICSHeatTreatmentBLL.AddSample(modelList, ID, Transno,flag, AppConfig.AppConnectString); if (flag == 2) { ICSBaseSimpleCode.AppshowMessageBox("试样号修改成功!!!"); } else { ICSBaseSimpleCode.AppshowMessageBox("试样号新增成功!!!"); } this.Close(); this.DialogResult = DialogResult.Yes; } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } #endregion
#region 取消
private void can_Click(object sender, EventArgs e) { this.Close(); } #endregion
#region 页面加载
private void FormICSItenLotAdd_Load(object sender, EventArgs e) { init(); load(); //新增试样号,设备号不可选
if (!string.IsNullOrEmpty(EQPCode)) { txtEQPCode.Text = EQPCode; txtEQPCode.Enabled = false; txtCostCenter.Text = OpCode; txtCostCenter.Enabled = false; } txtEQPCode.Focus(); loadNum(); } #endregion
#region 初始化查询条件
private void init() { #region 设备
string sql = @"select EQPCode as 设备号,EQPName as 设备名称
from ICSEquipment";
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0]; txtEQPCode.Properties.ValueMember = "设备号"; txtEQPCode.Properties.DisplayMember = "设备号"; txtEQPCode.Properties.DataSource = dt; txtEQPCode.Properties.NullText = "";//空时的值
txtEQPCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
txtEQPCode.Properties.ValidateOnEnterKey = true;//回车确认
txtEQPCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
txtEQPCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
//自适应宽度
txtEQPCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; #endregion
#region 成本中心
string sqlop = "select OPCODE as 代码,opdesc as 描述 from ICSOP where OpFrom='热处理'"; DataTable dtop = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqlop).Tables[0]; txtCostCenter.Properties.ValueMember = "代码"; txtCostCenter.Properties.DisplayMember = "代码"; txtCostCenter.Properties.DataSource = dtop; txtCostCenter.Properties.NullText = "";//空时的值
txtCostCenter.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
txtCostCenter.Properties.ValidateOnEnterKey = true;//回车确认
txtCostCenter.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
txtCostCenter.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
//自适应宽度
txtCostCenter.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; #endregion
} #endregion
#region 加载方法
private void load() { if (flag == 0 || flag == 1) { string sql = @"SELECT '' as isSelect,a.LotNO,a.ItemCode,b.INVNAME,b.INVSTD,a.LOTQTY,b.INVUOM,CONVERT(NUMERIC(10,3),(a.LOTQTY*a.EATTRIBUTE3)) AS num,b.INVEXPORTIMPORT
,c.MOCODE,a.VenderLotNO as VenderLotNo,c.MOVER,a.EATTRIBUTE1 as EQPCODE,a.EATTRIBUTE2 as EQPName,c.MOSEQ,'' as OpCode FROM ICSITEMLot a INNER JOIN ICSINVENTORY b ON a.ItemCode=b.INVCODE LEFT JOIN ICSMO c ON a.TransNO=c.MOCODE AND a.TransLine=c.MOSEQ WHERE 1!=1 ORDER BY a.LotNO";
DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0]; dtNewRcards = dt; } else { SearchInfo(ID); } } #endregion
#region 设备号改变
private void txtEQPCode_EditValueChanged(object sender, EventArgs e) { try { string Code = txtEQPCode.Text.ToString(); string sql = @"select EQPCode as 设备号,EQPName as 设备名称
from ICSEquipment WHERE EQPCode='{0}'";
sql = string.Format(sql, Code); DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { txtEQPName.Text = dt.Rows[0]["设备名称"].ToString(); } //txtCostCenter.Focus();
} catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.ToString()); } } #endregion
#region 删除
private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { //gridView4.DeleteRow(gridView4.FocusedRowHandle);
//gridView4.RefreshEditor(true);
DataRow[] drs = dtNewRcards.Select("LotNO='" + gridView4.GetRowCellValue(gridView4.FocusedRowHandle, colLotNO).ToString() + "'"); foreach (DataRow dr in drs) { dtNewRcards.Rows.Remove(dr); } if (gridView4.RowCount <= 0) { txtCostCenter.Properties.ReadOnly = true; txtEQPCode.Properties.ReadOnly = true; } loadNum(); } #endregion
#region 绑定数据
private void DataBind(string lotno, string invcode, string invname, string invuom, string invstd, string num, string invexportimport,string mover, string mocode,string moseq,string eqpcode,string venderlotno ,string eqpname,string center) { //带出产品跟踪单信息
DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { _wait.Show(); if (gridView4.RowCount > 0) { DataRow[] isRow = dtNewRcards.Select("LotNO= '" + lotno + "'"); if (isRow == null || isRow.Length <= 0) { DataRow row = dtNewRcards.NewRow(); row["LotNO"] = lotno; row["ItemCode"] = invcode; row["INVNAME"] = invname; row["INVUOM"] = invuom; row["INVSTD"] = invstd; row["num"] = num; row["INVEXPORTIMPORT"] = mover; row["MOCODE"] = mocode; row["MOSEQ"] = moseq; row["EQPCODE"] = eqpcode; row["VenderLotNo"] = venderlotno; row["EQPName"] = eqpname; row["OpCode"] = center; dtNewRcards.Rows.InsertAt(row, 0); gridControl1.DataSource = dtNewRcards; gridView4.BestFitColumns(); txtLotNo.Focus(); txtLotNo.SelectAll(); } else { ICSBaseSimpleCode.AppshowMessageBox("产品跟踪单已扫描,不能重复扫描!"); txtLotNo.Focus(); txtLotNo.SelectAll(); _wait.Close(); return; } } else { DataTable dtNewRcard = new DataTable(); dtNewRcard.Columns.Add("LotNO", typeof(string));//产品跟踪单号
dtNewRcard.Columns.Add("ItemCode", typeof(string));//存货编码
dtNewRcard.Columns.Add("INVNAME", typeof(string));//存货名称
dtNewRcard.Columns.Add("INVUOM", typeof(string));//单位
dtNewRcard.Columns.Add("INVSTD", typeof(string));//规格型号
dtNewRcard.Columns.Add("num", typeof(string));//重量
dtNewRcard.Columns.Add("INVEXPORTIMPORT", typeof(string));//辅助单位
dtNewRcard.Columns.Add("MOCODE", typeof(string));//工单
dtNewRcard.Columns.Add("MOSEQ", typeof(string));//工单行
dtNewRcard.Columns.Add("EQPCODE", typeof(string));//设备
dtNewRcard.Columns.Add("VenderLotNo", typeof(string));//批次号
dtNewRcard.Columns.Add("EQPName", typeof(string));//设备名
dtNewRcard.Columns.Add("OpCode", typeof(string));//工序
DataRow row = dtNewRcard.NewRow(); row["LotNO"] = lotno; row["ItemCode"] = invcode; row["INVNAME"] = invname; row["INVUOM"] = invuom; row["INVSTD"] = invstd; row["num"] = num; row["INVEXPORTIMPORT"] = invexportimport; row["VenderLotNo"] = venderlotno; row["MOCODE"] = mocode; row["MOSEQ"] = moseq; row["EQPCODE"] = eqpcode; row["VenderLotNo"] = venderlotno; row["EQPName"] = eqpname; row["OpCode"] = center; dtNewRcard.Rows.Add(row); gridControl1.DataSource = dtNewRcard; dtNewRcards = dtNewRcard; gridView4.BestFitColumns(); txtLotNo.Focus(); txtLotNo.SelectAll(); txtCostCenter.Properties.ReadOnly = true; txtEQPCode.Properties.ReadOnly = true; } _wait.Close(); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); _wait.Close(); } } #endregion
#region 扫描产品跟踪单号
private void txtLotNo_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar != 13) { return; } if (txtEQPCode.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("设备编号不能为空,请选择设备!"); return; } if (txtCostCenter.Text=="") { ICSBaseSimpleCode.AppshowMessageBox("工序不能为空,请选择工序!"); return; } if (txtLotNo.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("产品跟踪单号不能为空!"); return; } string sql = @"SELECT a.LotNO,a.ItemCode,c.INVNAME,c.INVSTD,a.LOTQTY,c.INVUOM,
CONVERT(NUMERIC(10,3),(a.LOTQTY*a.EATTRIBUTE3)) AS num,c.INVEXPORTIMPORT,a.VenderLotNO as VenderLotNo, a.TransNO as 工单号,a.TransLine as 生产订单行号,c.INVNAME as 存货名称,b.MOPLANQTY as 工单数量, c.INVSTD as 规格型号,b.MOVER as 零件号,b.MOTYPE as 工单类型 FROM ICSITEMLot a LEFT JOIN ICSMO b ON a.TransNO=b.MOCODE AND a.TransLine=b.MOSEQ LEFT JOIN ICSINVENTORY c ON a.ItemCode=c.INVCODE WHERE a.LotNO='{0}' AND a.TYPE='工单'";
sql = string.Format(sql, txtLotNo.Text); DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { txtMOCode.Text = dt.Rows[0]["工单号"].ToString(); txtMORow.Text = dt.Rows[0]["生产订单行号"].ToString(); txtiQuantity.Text = dt.Rows[0]["工单数量"].ToString(); txtMoverCode.Text = dt.Rows[0]["VenderLotNo"].ToString(); txtMOType.Text = dt.Rows[0]["工单类型"].ToString(); txtCode.Text = dt.Rows[0]["ItemCode"].ToString();//存货编码
txtcInvName.Text = dt.Rows[0]["存货名称"].ToString(); txtcInvStd.Text = dt.Rows[0]["规格型号"].ToString(); DataBind(txtLotNo.Text, dt.Rows[0]["ItemCode"].ToString(), dt.Rows[0]["INVNAME"].ToString(), dt.Rows[0]["INVUOM"].ToString(), dt.Rows[0]["INVSTD"].ToString(), dt.Rows[0]["num"].ToString(), dt.Rows[0]["INVEXPORTIMPORT"].ToString(), dt.Rows[0]["零件号"].ToString(), dt.Rows[0]["工单号"].ToString(), dt.Rows[0]["生产订单行号"].ToString(), txtEQPCode.Text,dt.Rows[0]["VenderLotNo"].ToString(),txtEQPName.Text,txtCostCenter.Text ); loadNum(); } else { ICSBaseSimpleCode.AppshowMessageBox("产品跟踪单号不存在!"); txtLotNo.Focus(); txtLotNo.SelectAll(); return; } } #endregion
#region 工序
private void txtCostCenter_EditValueChanged(object sender, EventArgs e) { //txtLotNo.Focus();
//txtLotNo.SelectAll();
} #endregion
#region 统计跟踪单个数
private void loadNum() { try { txtNum.Text = gridView4.RowCount.ToString(); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); } } #endregion
} }
|