|
|
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using ICSSoft.Base.Config.AppConfig; using System.Data.Linq; using System.Linq; using ICSSoft.Base.Language.Tool; using System.Reflection; using ICSSoft.Base.Report.GridReport; using ICSSoft.Base.Config.DBHelper; using ICSSoft.Base.ReferForm; using ICSSoft.Base.Report; using ICSSoft.Base.ReferForm.AppReferForm; using ICSSoft.Frame.Data.Entity; using ICSSoft.Frame.Data.BLL; using ICSSoft.Base.UserControl.FormControl; using ICSSoft.Base.Report.Filter; using DevExpress.XtraGrid.Views.BandedGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid; using System.Text.RegularExpressions;
namespace ICSSoft.Frame.APP { public partial class FormICSITEMLOTAdd : DevExpress.XtraEditors.XtraForm { DataRow rowGroup; private DataTable dataSource = null; private string sqltxt = ""; private string sqlconn = ""; Regex rex = new Regex(@"^\d+$|^\d+\.\d+$");
#region 系统
#region 构造函数
public FormICSITEMLOTAdd() { InitializeComponent(); } #endregion
#region 构造函数
public FormICSITEMLOTAdd(string receiptno,int receiptline) { InitializeComponent(); this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); this.WindowState = FormWindowState.Maximized; SearchItemLotInfo(receiptno, receiptline); } #endregion
private void SearchItemLotInfo(string receiptno, int receiptline) { btnSTNO.Text = receiptno; btnSTNO.Enabled = false; btnSTNO.Properties.ReadOnly = true; comNUM.Enabled = false; comNUM.Text = receiptline.ToString(); comNUM_SelectedIndexChanged(null,null); }
#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 操作权限
public DataTable RightOfExute() { DataTable rData = new DataTable(); rData.Columns.Add("BtnName"); rData.Columns.Add("ActionName"); //查看权限(必须有)
DataRow seeRow = rData.NewRow(); seeRow["BtnName"] = "see"; seeRow["ActionName"] = "查看"; rData.Rows.Add(seeRow);
List<Control> ControlList = new List<Control>(); ControlList.Add(btnCreate); ControlList.Add(btnModify); ControlList.Add(btnDel); ControlList.Add(btnOutPut); foreach (Control ctr in ControlList) {
if (ctr.GetType() == typeof(SimpleButton)) { DataRow dr = rData.NewRow(); dr["BtnName"] = ctr.Name; dr["ActionName"] = ctr.Text; rData.Rows.Add(dr); } }
rData.AcceptChanges(); return rData; } public DataTable RightOfData()// 数据权限
{ DataTable rData = new DataTable(); rData.Columns.Add("BodyName"); rData.Columns.Add("ControlName"); rData.Columns.Add("ControlCaption");
rData.AcceptChanges(); return rData; } #endregion
#region 列表
private void gridView3_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if (e.Info.IsRowIndicator && e.RowHandle >= 0) e.Info.DisplayText = (e.RowHandle + 1).ToString();
} private void gridView4_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if (e.Info.IsRowIndicator && e.RowHandle >= 0) e.Info.DisplayText = (e.RowHandle + 1).ToString(); } #endregion
#region 关闭
private void btnExit_Click(object sender, EventArgs e) { this.Close(); } private void simpleButton2_Click(object sender, EventArgs e) { this.Close(); } #endregion
#region 导出
private void btnOutPut_Click(object sender, EventArgs e) { FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail); foe.ShowDialog(); } #endregion
#region 刷新
private void btnRefresh_Click(object sender, EventArgs e) { DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { _wait.Show(); gridView3_Load(null, null); _wait.Close(); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); _wait.Close(); } } #endregion
#region 全选
private void btnSelectAll_Click(object sender, EventArgs e) { gv3.PostEditor(); this.Validate(); for (int i = 0; i < gv3.RowCount; i++) { gv3.SetRowCellValue(i, coSelect, "Y"); } } #endregion
#region 全消
private void btnCancelAll_Click(object sender, EventArgs e) { gv3.PostEditor(); this.Validate(); for (int i = 0; i < gv3.RowCount; i++) { gv3.SetRowCellValue(i, coSelect, ""); } } #endregion
#region 过滤方法
private void FormContainerManager_FormClosing(object sender, FormClosingEventArgs e) { AppConfig.DropTemTable(tempTableName); } #endregion
#region 绑定数据源
private void btnConfig_Click(object sender, EventArgs e) { if (AppConfig.UserCode.ToLower() != "demo") { ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!"); return; } FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name); fdata.ShowDialog(); } #endregion
#endregion
#region [入库单号]点击事件
private void btnSTNO_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { btnSTNO.Text = ""; ButtonEdit btn = (ButtonEdit)sender; string sql = @"select DISTINCT STNO as [入库单号] from ICSASNIQCDETAIL
where STDSTATUS='已检未入库' and CHECKSTATUS='合格' and WorkPoint='" + AppConfig.WorkPointCode + "'";
sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; FormDataRefer reForm = new FormDataRefer(); reForm.FormTitle = "入库单号信息"; DataTable menuData = data; reForm.DataSource = menuData; reForm.MSelectFlag = false; reForm.RowIndexWidth = 35; reForm.HideCols.Add("ID"); reForm.FormWidth = 800; reForm.FormHeight = 600; reForm.FilterKey = btn.Text; //gridView3.GetRowCellValue(gridView3.FocusedRowHandle, gridView3.FocusedColumn).ToString().Trim();
if (reForm.ShowDialog() == DialogResult.OK) { DataTable retData = reForm.ReturnData; foreach (DataRow dr in retData.Rows) { btnSTNO.Text = dr["入库单号"].ToString(); } } } #endregion
#region 选择入库单后,为行号下拉框添加项
private void btnSTNO_EditValueChanged(object sender, EventArgs e) { string sql = @"select STLINE from ICSASNIQCDETAIL
where STNO='" + btnSTNO.Text + "' and STDSTATUS='已检未入库' and CHECKSTATUS='合格' and WorkPoint='" + AppConfig.WorkPointCode + "'";
sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; comNUM.Items.Clear(); foreach (DataRow dr in data.Rows) { comNUM.Items.Add(dr[0].ToString()); } } #endregion
#region 选择行号后对后续box 赋值
private void comNUM_SelectedIndexChanged(object sender, EventArgs e) { string sql = @"select DISTINCT a.ITEMCODE,b.VENDORCODE,a.UNIT,b.INVCONTROLTYPE,c.QualifyQTY,a.MEMO from ICSASNIQCDETAIL as a,ICSINVENTORY as b,ICSINVReceiptDetail as c
where a.ITEMCODE=b.INVCODE and a.STNO=c.ReceiptNO and a.STLINE=c.ReceiptLine and a.STNO='" + btnSTNO.Text + "' and a.STLINE='" + comNUM.Text + "' and a.WorkPoint='" + AppConfig.WorkPointCode + "' and b.WorkPoint='" + AppConfig.WorkPointCode + "' and c.WorkPoint='" + AppConfig.WorkPointCode + "'";
sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; foreach(DataRow dr in data.Rows) { txtITEMCODE.Text=dr["ITEMCODE"].ToString(); txtVENDORCODE.Text=dr["VENDORCODE"].ToString(); txtUNIT.Text=dr["UNIT"].ToString(); txtINVCONTROLTYPE.Text = dr["INVCONTROLTYPE"].ToString(); txtQualifyQTY.Text = dr["QualifyQTY"].ToString(); txtMEMO.Text=dr["MEMO"].ToString(); }
int s = 0; //统计已维护过的[合格数量]的和
string str = "select LOTQTY from ICSITEMLot where TransNO='" + btnSTNO.Text + "' and TransLine='" + comNUM .Text+ "'"; str = string.Format(str); DataTable dat = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, str).Tables[0]; foreach (DataRow dr in dat.Rows) { s += int.Parse(dr[0].ToString().Split('.')[0].ToString()); } labMAIN.Text = s.ToString();
grdDetail.DataSource = ""; gridView3_Load(null,null);
if (txtINVCONTROLTYPE.Text == "单件管控") { NODE(null, 0); } } #endregion
#region 管控类型的值变化时
private void txtINVCONTROLTYPE_EditValueChanged(object sender, EventArgs e) { if (txtINVCONTROLTYPE.Text == "批次管控") { radNUM.Enabled = false; txtNUM.Enabled = false; radBEGNUM.Enabled = false; txtBEGNUM.Enabled = false; txtCOUNT.Enabled = false; btnSERIAL.Enabled = false; radLOGIN.Enabled = false; btnREFER.Enabled = false; btnModify.Enabled = true; radACOUNTMIN.Enabled = true; txtCOUNTMIN.Enabled = true; radBAGNUM.Enabled = true; txtBAGNUM.Enabled = true; } else if (txtINVCONTROLTYPE.Text == "单件管控") { radNUM.Enabled = true; txtNUM.Enabled = true; radBEGNUM.Enabled = true; txtBEGNUM.Enabled = true; txtCOUNT.Enabled = true; btnSERIAL.Enabled = true; radLOGIN.Enabled = true; btnREFER.Enabled = true; btnModify.Enabled = false; radACOUNTMIN.Enabled = false; txtCOUNTMIN.Enabled=false; radBAGNUM.Enabled=false; txtBAGNUM.Enabled = false; } } #endregion
#region gridview显示数据
//gridview中生成数据
private void btnNEW_Click(object sender, EventArgs e) { int i = 0, j = 0, m = 0, r = 0;// i,m-1 j,最后一行数量 m,项数
try { DataTable dd = new DataTable();
//除新增项外其他项的select变成false
for (int n = 0; n < dd.Rows.Count; n++) { dd.Rows[n]["coSelect"] = ""; }
if (txtQualifyQTY.Text != "" && txtCOUNTMIN.Text != ""&&radACOUNTMIN.Checked==true) { string[] txtqty = txtQualifyQTY.Text.Split('.'); string a = txtqty[0]; i = int.Parse(txtqty[0]) / int.Parse(txtCOUNTMIN.Text); j = int.Parse(txtqty[0]) % int.Parse(txtCOUNTMIN.Text); if (j != 0) { m = i + 1; } else { m = i; } } if(txtQualifyQTY.Text!=""&&txtBAGNUM.Text!=""&&radBAGNUM.Checked==true) { string[] txtqty = txtQualifyQTY.Text.Split('.'); string a = txtqty[0]; m = int.Parse(txtBAGNUM.Text); i=int.Parse(txtqty[0]) % int.Parse(txtBAGNUM.Text); r = int.Parse(txtqty[0]) / int.Parse(txtBAGNUM.Text); if ( i!= 0) { j = r + i; } else { j = r ; } }
//查询物料描述
string sql = @"select INVDESC from ICSINVENTORY where INVCODE='" + txtITEMCODE.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
//先给新建表赋值已存在的批号
DataTable ds = new DataTable(); dd = Dtable().Copy(); for (int n = 0; n < Dtable().Rows.Count;n++ ) { if (data.Rows[0][0].ToString() != "") { dd.Rows[n]["INVDESC"] = data.Rows[0][0].ToString(); } } //如果是 单件管控 只产生一行
if (txtINVCONTROLTYPE.Text == "单件管控") { m = 1; }
#region 表中行赋值
//再赋值自定义的批号
for (int n = 0; n < m; n++) {
//生成批次
string lotno = "LOT" + AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd"); lotno = AppConfig.GetSerialCode(AppConfig.FrameConnectString, AppConfig.WorkPointCode, "ICSWareHouseLotInfo", "LotNo", lotno, 4); //给新建表的行赋值
rowGroup = dd.NewRow(); rowGroup["ID"] = txtID.Text; rowGroup["coSelect"] = "Y"; rowGroup["LotNO"] = lotno; rowGroup["ItemCode"] = txtITEMCODE.Text;
if(radACOUNTMIN.Checked==true&&txtCOUNTMIN.Text!="") { if (n == m - 1 && j != 0) { rowGroup["LOTQTY"] = j; } else { rowGroup["LOTQTY"] = txtCOUNTMIN.Text; } }
if (radBAGNUM.Checked == true && txtBAGNUM.Text != "") { if (i == 0) { rowGroup["LOTQTY"] = j; } else { if (n == m - 1 && j != 0) { rowGroup["LOTQTY"] = j; } else { rowGroup["LOTQTY"] = r; } } }
//如果是单件管控 数量为0
if (txtINVCONTROLTYPE.Text != "") { if (txtINVCONTROLTYPE.Text=="单件管控") { rowGroup["LOTQTY"] = 0; } } rowGroup["PRODUCTDATE"] = Convert.ToDateTime("1991-1-1"); rowGroup["VENDORITEMCODE"] = ""; rowGroup["VenderLotNO"] = ""; if (data.Rows[0][0].ToString() != "") { rowGroup["INVDESC"] = data.Rows[0][0].ToString(); } rowGroup["MUSERName"] = AppConfig.UserName; rowGroup["MTIME"] = AppConfig.GetSeverDateTime("yyyy-MM-dd hh:mm:ss").ToString(); dd.Rows.Add(rowGroup);
} #endregion
grdDetail.DataSource = dd; if(txtINVCONTROLTYPE.Text=="单件管控") { btnModify_Click(null,null); } } catch(Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } #endregion
#region ICSITEMLot表中数据查询
public DataTable Dtable() { string sql = @"select '' as coSelect,INVDESC,a.* from ICSITEMLOT as a,ICSINVENTORY as b where a.TransNO='" + btnSTNO.Text + "' and a.TransLine='" + comNUM.Text + "' and a.ItemCode=b.INVCODE and a.WorkPoint='" + AppConfig.WorkPointCode + "' and b.WorkPoint='" + AppConfig.WorkPointCode + "' order by LotNO,LOTQTY"; sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; return data; } #endregion
#region 页面初始加载事件
private void gridView3_Load(object sender, EventArgs e) { grdDetail.DataSource = ""; grdDetail.DataSource=Dtable();
//统计已维护过的[合格数量]的和
if (btnSTNO.Text != "" && comNUM.Text!="") { int s = 0; string str = "select LOTQTY from ICSITEMLot where TransNO='" + btnSTNO.Text + "' and TransLine='" + comNUM.Text + "'"; str = string.Format(str); DataTable dat = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, str).Tables[0]; foreach (DataRow dr in dat.Rows) { s += int.Parse(dr[0].ToString().Split('.')[0].ToString()); } labMAIN.Text = s.ToString(); }
if (txtINVCONTROLTYPE.Text == "单件管控") { NODE(null, 0); } gv3.BestFitColumns(); } #endregion
#region [单件管控]生成序列号
private void simpleButton1_Click(object sender, EventArgs e) { if (radNUM.Checked == true && txtNUM.Text != "") { NODE(txtNUM.Text,0); gridView3_Load(null, null); } if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text!="") { NODE(txtBEGNUM.Text,int.Parse(txtCOUNT.Text)); gridView3_Load(null, null); } } #endregion
#region 保存
private void btnModify_Click(object sender, EventArgs e) { int h = 0; int s = int.Parse(labMAIN.Text); List<string> lotlist = new List<string>(); //统计所选项的[合格数量]的和
for (int n = 0; n < Dtable().Rows.Count; n++) { if (Dtable().Rows[n]["ItemCode"].ToString() == txtITEMCODE.Text) { if (txtQualifyQTY.Text != "") { h += int.Parse(Dtable().Rows[n]["LOTQTY"].ToString().Split('.')[0].ToString()); } } } if (s+h <= int.Parse(txtQualifyQTY.Text.Split('.')[0])) { if (txtINVCONTROLTYPE.Text == "单件管控") { lotlist.Add( gv3.GetRowCellValue(Dtable().Rows.Count,LotNO).ToString()); if (SaveBool(lotlist) == true) { Save(Dtable().Rows.Count); } } if (txtINVCONTROLTYPE.Text == "批次管控") { int l = 0; for (int n = 0; n < gv3.RowCount; n++) { if (gv3.GetRowCellValue(n, coSelect).ToString() == "Y") { lotlist.Add(gv3.GetRowCellValue(n, LotNO).ToString());
l += int.Parse(gv3.GetRowCellValue(n, LOTQTY).ToString().Split('.')[0].ToString()); }
} bool b=SaveBool(lotlist); if (b == true) { for (int n = 0; n < gv3.RowCount; n++) { if (gv3.GetRowCellValue(n, coSelect).ToString() == "Y") { Save(n); } } //修改到货单 入库数量
string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + l + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
ICSBaseSimpleCode.AppshowMessageBox("操作成功!"); gridView3_Load(null, null); } } } else { ICSBaseSimpleCode.AppshowMessageBox("该物料维护的数量已大于此物料的[合格数量]"); } }
public bool SaveBool(List<string> lotlist) { bool savebool = true; string st = "select LotNO from ICSITEMLot where WorkPoint='" + AppConfig.WorkPointCode + "' "; st = string.Format(st); DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0]; for (int i = 0; i < lotlist.Count; i++) { foreach (DataRow dr in dt.Rows) { string a = lotlist[i].ToString(); string b = dr[0].ToString(); if (lotlist[i].ToString() == dr[0].ToString()) { ICSBaseSimpleCode.AppshowMessageBox("序列号已存在!"); savebool = false; }
} } return savebool; }
public void Save(int n) { string sql = @"select ReceiptNO,ReceiptLine from ICSINVReceiptDetail where ITEMCODE='" + txtITEMCODE.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; //保存
ICSITEMLot itemlot = new ICSITEMLot(); itemlot.ID = AppConfig.GetGuid(); itemlot.LotNO = gv3.GetRowCellValue(n, LotNO).ToString(); itemlot.ItemCode = txtITEMCODE.Text; itemlot.TransNO = btnSTNO.Text; //itemlot.TransLine = int.Parse(comNUM.Text);
itemlot.TransLine = comNUM.Text; itemlot.VENDORITEMCODE = gv3.GetRowCellValue(n, VENDORITEMCODE).ToString(); itemlot.VenderLotNO = gv3.GetRowCellValue(n, VenderLotNO).ToString(); if (gv3.GetRowCellValue(n, PRODUCTDATE).ToString() != "") { itemlot.PRODUCTDATE = Convert.ToDateTime(gv3.GetRowCellValue(n, PRODUCTDATE).ToString()); } else { itemlot.PRODUCTDATE = Convert.ToDateTime("1900-1-1"); }
if (gv3.GetRowCellValue(n, LOTQTY).ToString() != "") { itemlot.LOTQTY = int.Parse(gv3.GetRowCellValue(n, LOTQTY).ToString().Split('.')[0].ToString()); } itemlot.ACTIVE = "Y"; itemlot.Exdate = Convert.ToDateTime("2999-12-31"); itemlot.WorkPoint = AppConfig.WorkPointCode; itemlot.MUSER = AppConfig.UserCode; itemlot.MUSERName = AppConfig.UserName; itemlot.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss"); ICSITEMLOTBLL.AddandEdit(itemlot, AppConfig.AppConnectString); } #endregion
#region 过滤
private string tempTableName = ""; private void btnFilter_Click(object sender, EventArgs e) { FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name)); filter.OldTempTableName = tempTableName; DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等..."); try { // string lotno = "LOT" + AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd");
// lotno = AppConfig.GetSerialCode(AppConfig.FrameConnectString, AppConfig.WorkPointCode, "ITEMLot", "LotNO", lotno, 4);
_wait.Show(); tempTableName = filter.NewTempTableName; sqltxt = filter.SqlText; sqlconn = filter.FilterConnectString; dataSource = filter.FilterData.Tables[0];
DataTable dt = new DataTable(); //DataRow dn = dm.NewRow();
foreach (DataRow dr in dataSource.Rows) { string sql = "select SERIALNO from ICSITEMLotDetail where WorkPoint='"+AppConfig.WorkPointCode+"' and LotNO='"+dr["LotNO"]+"'"; sql = string.Format(sql); DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; if (data.Rows.Count != 0) { dt.Rows.Add(dr); } }
// DATASET 中必须要有主表和子表
//filter.FilterData.Tables.Add(dt);
//建立主要和子表之间的关系列
DataRelation drl = new DataRelation("物料批号", new DataColumn[] { filter.FilterData.Tables[0].Columns["LotNO"] }, new DataColumn[] { filter.FilterData.Tables[1].Columns["PRONUM"] }); //new一个表关系,绑定2个表的键
filter.FilterData.Relations.Add(drl);
grdDetail.DataSource = dataSource; _wait.Close();
} catch (Exception ex) { MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error); _wait.Close(); }
}
#endregion
#region 删除
private void btnDel_Click(object sender, EventArgs e) { string lot = ""; List<int> count = new List<int>(); List<string> codeList = new List<string>(); List<string> node = new List<string>(); List<string> no = new List<string>();
for (int i = 0; i < gridView4.RowCount; i++) { if (gridView4.GetRowCellValue(i, colSelect).ToString() == "True") { node.Add(gridView4.GetRowCellValue(i, PRONUM).ToString()); no.Add(gridView4.GetRowCellValue(i, colLotNO).ToString()); } }
if (node.Count != 0) { if (node.Count == 0 || node == null) { ICSBaseSimpleCode.AppshowMessageBox("请选择数据"); return;
} if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该条物料追溯信息吗?信息删除后无法恢复,确定吗?") != DialogResult.OK) { btnCancelAll_Click(sender, e); return; } try { ICSITEMLOTBLL.Detaildelete(node, AppConfig.AppConnectString);
for (int i = 0; i < node.Count;i++ ) { string st = "update ICSITEMLot set LOTQTY-='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + no[i].ToString() + "'"; st = string.Format(st); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
SysSave(node[i],1);//删除Sys_Sys_HisSerailCodes表
string sql = @"update ICSINVReceiptDetail set ACTQTY-='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } }
for (int i = 0; i < gv3.RowCount; i++) { if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y") { codeList.Add(gv3.GetRowCellValue(i, ID).ToString()); lot = gv3.GetRowCellValue(i, LotNO).ToString(); string sql = @"select * from ICSITEMLotDetail where LotNO='" + lot + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); count.Add(DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0].Rows.Count); } } if (codeList.Count != 0) { if (codeList.Count == 0 || codeList == null) { ICSBaseSimpleCode.AppshowMessageBox("请选择数据"); return;
} foreach (int i in count) { if (i > 0) { ICSBaseSimpleCode.AppshowMessageBox("请先删除从表中的数据再删除主表!"); return; } } if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该条物料追溯信息吗?信息删除后无法恢复,确定吗?") != DialogResult.OK) { btnCancelAll_Click(sender, e); return; } try { ICSITEMLOTBLL.delete(codeList, AppConfig.AppConnectString);
for (int i = 0; i < gv3.RowCount; i++) { if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y") { lot = gv3.GetRowCellValue(i, LotNO).ToString(); int lotqty = int.Parse(gv3.GetRowCellValue(i, LOTQTY).ToString().Split('.')[0].ToString()); SysSave(lot, 1);//删除Sys_Sys_HisSerailCodes表
string sql = @"update ICSINVReceiptDetail set ACTQTY-='" + lotqty + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); } } } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); }
}
gridView3_Load(null, null); }
#endregion
#region 双击事件
private void gridControl1_DoubleClick(object sender, EventArgs e) { if (gv3.FocusedRowHandle < 0) { return; } if (gv3.FocusedColumn == coSelect) { string m = gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString(); if (gv3.GetRowCellValue(gv3.FocusedRowHandle, coSelect).ToString() == "") { gv3.SetRowCellValue(gv3.FocusedRowHandle, coSelect, "Y"); for (int i = 0; i < gridView4.RowCount; i++) { if (gridView4.GetRowCellValue(i, colLotNO).ToString() == gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString()) { gridView4.SetRowCellValue(i,colSelect,true); } }
} else { gv3.SetRowCellValue(gv3.FocusedRowHandle, coSelect, ""); for (int i = 0; i < gridView4.RowCount; i++) { if (gridView4.GetRowCellValue(i, colLotNO).ToString() == gv3.GetRowCellValue(gv3.FocusedRowHandle, LotNO).ToString()) { gridView4.SetRowCellValue(i, colSelect, false); } } }
}
}
#endregion
#region 获取焦点
private void radACOUNTMIN_CheckedChanged(object sender, EventArgs e) { if (radACOUNTMIN.Text == "True") { txtCOUNTMIN.Focus(); } }
private void radBEGNUM_CheckedChanged(object sender, EventArgs e) { if (radBEGNUM.Text == "True") { txtBAGNUM.Focus(); } }
private void radNUM_CheckedChanged(object sender, EventArgs e) { if (radNUM.Text == "True") { txtNUM.Focus(); } }
private void radBAGNUM_CheckedChanged(object sender, EventArgs e) { if (radBAGNUM.Text == "True") { txtBAGNUM.Focus(); } }
#endregion
#region 主子节点 显示 及 保存操作
public void NODE(string str,int count) { bool p; DataTable dt = new DataTable(); dt.TableName = "Sub"; dt.Columns.Add("colSelect"); dt.Columns["colSelect"].DataType=typeof(bool); dt.Columns.Add("PRONUM"); dt.Columns.Add("colLotNO"); dt.Columns["PRONUM"].Caption = "序列号"; dt.Columns["colSelect"].Caption = "选择"; dt.Columns["colLotNO"].Caption = "批次"; foreach (DataRow dr in Dtable().Rows) { string m = dr["LotNO"].ToString(); string st = "select SERIALNO,LotNO from ICSITEMLotDETAIL where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dr["LotNO"].ToString() + "' order by SERIALNO"; st = string.Format(st); DataTable da = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0]; for (int i = 0; i < da.Rows.Count;i++ ) { DataRow dn = dt.NewRow(); dn["colSelect"] = false; dn["PRONUM"] = da.Rows[i]["SERIALNO"]; dn["colLotNO"] = da.Rows[i]["LotNO"]; dt.Rows.Add(dn); } }
#region 选择数量 生成序列号
if (count != 0) { String id = ""; List<string> editList = new List<string>(); for (int i = 0; i < gv3.RowCount; i++) { if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y") { id = gv3.GetRowCellValue(i, LotNO).ToString(); editList.Add(id); } } if (editList.Count != 1) { ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!"); return; } try { string num = txtBEGNUM.Text; for (int i = 0; i < count; i++) {
string lotnum = id + num; DataRow dn = dt.NewRow(); dn["colSelect"] = true; dn["PRONUM"] = lotnum; dn["colLotNO"] = id; dt.Rows.Add(dn);
p=save(lotnum,id,txtITEMCODE.Text);//保存
num = (int.Parse(num) + 1).ToString().PadLeft(5, '0');//序列号递增
if (p == true) { SysSave(lotnum,0);//再次保存至Sys_Sys_HisSerailCodes表
string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql);
string st = "update ICSITEMLot set LOTQTY+='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dn["colLotNO"] + "'"; st = string.Format(st); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st); } gridView3_Load(null, null); }
} catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } } #endregion
#region 不选择数量 生成序列号
if(count==0 && str!=null) //不选择数量
{ String id = ""; List<string> editList = new List<string>(); for (int i = 0; i < gv3.RowCount; i++) { if (gv3.GetRowCellValue(i, coSelect).ToString() == "Y") { id = gv3.GetRowCellValue(i, LotNO).ToString(); editList.Add(id); } } if (editList.Count != 1) { ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!"); return; } try { DataRow dn = dt.NewRow(); dn["colSelect"] = true; dn["PRONUM"] = str; dn["colLotNO"] = id; dt.Rows.Add(dn);
p=save(str,id,txtITEMCODE.Text);
if (p == true) { SysSave(str,0);//再次保存至Sys_Sys_HisSerailCodes表
string st = "update ICSITEMLot set LOTQTY+='" + 1 + "' where WorkPoint='" + AppConfig.WorkPointCode + "' and LotNO='" + dn["colLotNO"] + "'"; st = string.Format(st); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st);
string sql = @"update ICSINVReceiptDetail set ACTQTY+='" + 1 + "' where ReceiptNO='" + btnSTNO.Text + "' and ReceiptLine='" + comNUM.Text + "' and WorkPoint='" + AppConfig.WorkPointCode + "'"; sql = string.Format(sql); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql); } gridView3_Load(null,null); } catch (Exception ex) { ICSBaseSimpleCode.AppshowMessageBox(ex.Message); } #endregion
} DataTable dm = new DataTable(); dm = Dtable().Copy();
// DATASET 中必须要有主表和子表
DataSet ds = new DataSet(); ds.Tables.Add(dm); ds.Tables.Add(dt);
//gridView3.DataSource = ds;
//建立主要和子表之间的关系列
DataRelation drl = new DataRelation("物料批号",new DataColumn[]{ds.Tables[0].Columns["LotNO"] },new DataColumn[]{ ds.Tables[1].Columns["colLotNO"]} ); //new一个表关系,绑定2个表的键
ds.Relations.Add(drl); grdDetail.DataSource = dm;
} #endregion
#region 按 回车键 显示及保存 序列号
private void txtNUM_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { if (radNUM.Checked == true && txtNUM.Text != "") { NODE(txtNUM.Text, 0); gridView3_Load(null,null); } } } private void txtCOUNT_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text != "") { NODE(txtBEGNUM.Text, int.Parse(txtCOUNT.Text)); gridView3_Load(null, null); } } }
private void txtBEGNUM_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { if (!rex.Match(txtBEGNUM.Text).Success || int.Parse(txtBEGNUM.Text) > 99999) { ICSBaseSimpleCode.AppshowMessageBox("[数量]是正整数!"); return; } if (radBEGNUM.Checked == true && txtBEGNUM.Text != "" && txtCOUNT.Text != "") { NODE(txtBEGNUM.Text, int.Parse(txtCOUNT.Text)); gridView3_Load(null, null); } }
} #endregion
#region 保存 子节点 数据
public bool save(string sertalno,string LotNO,string mcode) { if (radNUM.Checked == true) { if (txtNUM.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("不可为空!"); return false; } if (!rex.Match(txtNUM.Text).Success || int.Parse(txtNUM.Text) > 99999) { ICSBaseSimpleCode.AppshowMessageBox("[序列号]是小于六位的正整数!"); return false; } } if (radBEGNUM.Checked == true) { if (txtBEGNUM.Text == "" && txtCOUNT.Text == "") { ICSBaseSimpleCode.AppshowMessageBox("不可为空!"); return false; } if (!rex.Match(txtBEGNUM.Text).Success || int.Parse(txtCOUNT.Text) > 99999) { ICSBaseSimpleCode.AppshowMessageBox("[起始序列号]是小于六位正整数!"); return false; } if (!rex.Match(txtCOUNT.Text).Success) { ICSBaseSimpleCode.AppshowMessageBox("[数量]只能输入正整数!"); return false; } } string st = "select SERIALNO from ICSITEMLotDETAIL where WorkPoint='" + AppConfig.WorkPointCode + "' "; st = string.Format(st); DataTable dt= DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st).Tables[0]; foreach(DataRow dr in dt.Rows) { if (sertalno == dr[0].ToString()) { ICSBaseSimpleCode.AppshowMessageBox("序列号已存在!"); return false; } } ICSITEMLotDetail itemlotd = new ICSITEMLotDetail(); itemlotd.ID = AppConfig.GetGuid(); itemlotd.SERIALNO = sertalno; itemlotd.LotNO = LotNO; itemlotd.ItemCode = mcode; itemlotd.StorageCODE = ""; itemlotd.StackCODE = ""; itemlotd.SerialStatus = "不在库"; itemlotd.WorkPoint = AppConfig.WorkPointCode; itemlotd.MUSER = AppConfig.UserCode; itemlotd.MUSERName = AppConfig.UserName; itemlotd.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
ICSITEMLOTBLL.DetailAddandEdit(itemlotd,AppConfig.AppConnectString); return true; } #endregion
#region 页面编辑
private void gridView3_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if(e.Column.FieldName=="LotNO"||e.Column.FieldName=="ItemCode"||e.Column.FieldName=="MUSERName"||e.Column.FieldName=="MTIME"||e.Column.FieldName=="PRODUCTDATE" ||e.Column.FieldName=="INVDESC"|| e.Column.FieldName == "LOTQTY") { ICSBaseSimpleCode.AppshowMessageBox("此列不可编辑!"); gridView3_Load(null, null); } }
private void gridView3_ShowingEditor(object sender, CancelEventArgs e) { if (gv3.FocusedColumn.FieldName == "coSelect") { e.Cancel = true; } } #endregion
private void gridView3_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e) { gridView4 = gv3.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView; if (gridView4 != null) { gridView4.Columns["colLotNO"].Visible = false; //gridView4就是子View,设置LotNO 列为隐藏
gridView4.BestFitColumns(); } }
#region 保存数据至Sys_HisSerailCodes表
public void SysSave(string lotno,int n) { if (n == 0) { string st = "insert into Sys_HisSerailCodes values('" + AppConfig.GetGuid() + "','" + AppConfig.WorkPointCode + "','ICSITEMLotDETAIL','LotNO','" + lotno + "') "; st = string.Format(st); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st); } if (n == 1) { string st = "delete Sys_HisSerailCodes where FiledName='LotNO' and MValue='"+lotno+"' and WorkPointCode= '" + AppConfig.WorkPointCode + "' "; st = string.Format(st); DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, st); } } #endregion
} }
|