using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DeiNiu.Wms.CE.Util; namespace DeiNiu.Wms.CE { public partial class StockIn : basicForm { // WmsOutPickRequestClient client { get; set; } string id = string.Empty; int state = 1; string location = string.Empty; decimal count = 0m; bool canUp; string flowNo = string.Empty; bool showFinished = true; DataView dv1 =null; public StockIn() { InitializeComponent(); initialComBoxes(); setTitle(); focusOn(txtShelfId, "容器码"); // client = new WmsOutPickRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsOutPickRequestService")); } //先扫出库码,再扫货位 private void goodscode_txt_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { // if (state == 1) //已出库的自动清空数据,继续扫下一个出库码 //{ // clear(); // } string barCode = barcode_txt.Text; if (string.IsNullOrEmpty(barCode)) return; //判断货位号是否不为空 if ((canUp) && !string.IsNullOrEmpty(locationid_lab.Text)) { //扫描货位时,比较是否相同 if (location.ToUpper().Equals((barCode + "x").ToUpper())) { Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; enumRepResult result ; try { result = (enumRepResult)client.finishUpShelfItem(flowNo, Convert.ToInt32(id), count, barCode.ToUpper(), "", LoginInfo.UserId, LoginInfo.Token); Cursor.Current = System.Windows.Forms.Cursors.Default; if (result != enumRepResult.成功) { MessageBox.Show("入库失败:" + result); barcode_txt.Text = ""; // return ; } getTasks(flowNo); barcode_txt.Text = ""; //MessageBox.Show("!"); if (dv1!=null && dv1.Count == 1) { this.GetGoodsData(dg1[0, 8].ToString()); }else clear(); } catch(Exception er) { showErrorMsg(er, "上架失败!"); Cursor.Current = System.Windows.Forms.Cursors.Default; } } else { barcode_txt.Text = ""; MessageBox.Show("货位不符合"); } } else//为空,说明是扫描的出库码 { barcode_txt.Text = ""; //条件扫描的条码值 获取货位、商品信息 GetGoodsData(barCode); } focusOn(barcode_txt, "容器码"); } } private void GetGoodsData(string portId) { try { Convert.ToInt32(portId); } catch { MessageBox.Show("请先扫描输入上架流水号"); return; } try { Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; DataTable dt = client.getStockInPortDetail(Convert.ToInt32(portId)); Cursor.Current = System.Windows.Forms.Cursors.Default; if (dt.Rows.Count > 0) { name_lab.Text = dt.Rows[0]["goodsName"].ToString(); spec_lab.Text = dt.Rows[0]["spec"].ToString(); unit_lab.Text = dt.Rows[0]["unit"].ToString(); PCompany_lab.Text = dt.Rows[0]["manufacturer"].ToString(); owner.Text = dt.Rows[0]["owner"].ToString(); Stocknum_lab.Text = dt.Rows[0]["count"].ToString(); count = Convert.ToDecimal(Stocknum_lab.Text); locationid_lab.Text = dt.Rows[0]["locationId"].ToString(); location = locationid_lab.Text + "x"; batch_lab.Text = dt.Rows[0]["batch"].ToString(); product_date_lab.Text = dt.Rows[0]["productdate"].ToString(); save_date_lab.Text = dt.Rows[0]["validDate"].ToString(); order_id_lab.Text = dt.Rows[0]["orderNo"].ToString(); lbVender.Text = dt.Rows[0]["vender"].ToString(); id = dt.Rows[0]["id"].ToString(); state = Convert.ToInt16(dt.Rows[0]["state"].ToString()); enumInStockDetailStatus status = (enumInStockDetailStatus)state; label12.Text = status+""; // label12.Text = state == 1 ? "待上架" : state == 5 ? "已上架" : state == 6 ? "部分上架" :"其它"; bigcount_lab.Text = dt.Rows[0]["bigcount"].ToString(); // double intnum = Convert.ToDouble(Convert.ToDouble(dt.Rows[0]["count"].ToString()) / Convert.ToDouble(dt.Rows[0]["bigcount"].ToString())); // int_lab.Text = intnum.ToString(); int_lab.Text = dt.Rows[0]["box"].ToString(); canUp = status == enumInStockDetailStatus.部分上架 || status == enumInStockDetailStatus.已分配货位; barcode_txt.Enabled = canUp; txt_loc.Text = ""; if (canUp) { tabControl1.SelectedIndex = 1; } lbRecommand.Text = locationid_lab.Text; lbstatus.Text = label12.Text; btnUp.Enabled = canUp; txtCount.Text = count+""; } else { clear(); //code = ""; //row_lab.Text = ""; barcode_txt.Focus(); } #if DEBUG barcode_txt.Text = locationid_lab.Text; #endif } catch (Exception er) { showErrorMsg(er, "获取数据失败!"); // MessageBox.Show("获取数据失败!" + er.Message); } } /// /// 清除界面数据 /// private void clear() { name_lab.Text = spec_lab.Text = unit_lab.Text = PCompany_lab.Text = owner.Text = Stocknum_lab.Text = locationid_lab.Text = batch_lab.Text = product_date_lab.Text = save_date_lab.Text = int_lab.Text = order_id_lab.Text = bigcount_lab.Text = id = ""; state = 1; label12.Text = ""; location = ""; this.comboBox1.SelectedIndex = 0; txt_loc.Text = ""; txtCount.Text = ""; lbVender.Text = ""; lbstatus.Text = "无"; lbRecommand.Text = ""; btnUp.Enabled = barcode_txt.Enabled = false; chkNotfinished.Checked = showFinished; } private void initialComBoxes() { Utils.buildCombox(5003, this.comboBox1); } private void button1_Click(object sender, EventArgs e) { try { string locID = this.txt_loc.Text.ToString(); if (String.IsNullOrEmpty(locID)) { MessageBox.Show("请输入货位!"); txt_loc.Focus(); return; } decimal count = 0m; try { count = Convert.ToDecimal(txtCount.Text.ToString()); } catch { MessageBox.Show("请输入数量!"); txtCount.Focus(); return; } if (this.comboBox1.SelectedIndex == 0) { MessageBox.Show("请选择原因!"); comboBox1.Focus(); return; } Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; enumRepResult result ; try { result = (enumRepResult)client.finishUpShelfItem(flowNo, Convert.ToInt32(id), count, locID, this.comboBox1.Text, LoginInfo.UserId, LoginInfo.Token); Cursor.Current = System.Windows.Forms.Cursors.Default; if (result != enumRepResult.成功) { Cursor.Current = System.Windows.Forms.Cursors.Default; MessageBox.Show("上架失败:" + result); Cursor.Current = System.Windows.Forms.Cursors.Default; return ; }else { getTasks(flowNo); if (dv1 != null && dv1.Count == 1) { this.GetGoodsData(dg1[0, 8].ToString()); } else clear(); } } catch (Exception er) { showErrorMsg(er, "上架失败!"); //MessageBox.Show("上架失败!" + er.Message); } Cursor.Current = System.Windows.Forms.Cursors.Default; } catch (Exception er) { showErrorMsg(er, "出错了"); } Cursor.Current = System.Windows.Forms.Cursors.Default; } private void dg1_DoubleClick(object sender, EventArgs e) { } private void dg1_CurrentCellChanged(object sender, EventArgs e) { } private void txtShelfId_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { string barCode = this.txtShelfId .Text; if (string.IsNullOrEmpty(barCode)) { return; } try { flowNo = barCode ; getTasks( flowNo); } catch (Exception er) { MessageBox.Show("请输入正确的上架流水号"); txtShelfId.SelectAll(); txtShelfId.Focus(); return; } } } void getTasks(string flowNo) { //判断货位号是否不为空 Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; try { DataTable dt; dt = client.getPreValidResult("", flowNo); dv1 = dt.DefaultView; // dv1.RowFilter = "diffCount>0"; setRowfilter(); dv1.Sort = "diffCount desc"; dg1.DataSource = dv1; // DataView dv2 = dt.DefaultView; // dv2.RowFilter = "diffCount=0"; // dg2.DataSource = dv2; Cursor.Current = System.Windows.Forms.Cursors.Default; dg1.TableStyles.Clear(); DataGridTableStyle ts = new DataGridTableStyle(); ts.MappingName = dt.TableName; dg1.TableStyles.Add(ts); // dg2. TableStyles.Add(ts); // [商品名称] [上架数量] ,[预到数量] ,[验收数量] ,[温度],[车牌] ,[运单] ,[电话] ts.GridColumnStyles[0].Width = 65; ts.GridColumnStyles[1].Width = 85; ts.GridColumnStyles[2].Width = 35; ts.GridColumnStyles[3].Width = 35; ts.GridColumnStyles[4].Width = 0; ts.GridColumnStyles[5].Width = 0; ts.GridColumnStyles[6].Width = 0; ts.GridColumnStyles[7].Width = 0; ts.GridColumnStyles[8].Width = 0; clear(); tabControl1.SelectedIndex = 0; // if (dv1.Count == 1) { // this.GetGoodsData(dg1[0, 8].ToString()); } } catch (Exception er) { showErrorMsg(er); } Cursor.Current = System.Windows.Forms.Cursors.Default; } private void dg1_DoubleClick_1(object sender, EventArgs e) { if (dg1.DataSource == null || dg1.CurrentRowIndex < 0) { return; } this.GetGoodsData(dg1[dg1.CurrentRowIndex, 8].ToString()); this.tabControl1.SelectedIndex = 1; } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (tabControl1.SelectedIndex == 0) { txtShelfId.SelectAll(); txtShelfId.Focus(); } else if (tabControl1.SelectedIndex == 1) { barcode_txt.SelectAll(); barcode_txt.Focus(); } else if (tabControl1.SelectedIndex == 2) { txt_loc.SelectAll(); txt_loc.Focus(); } } private void chkNotfinished_Click(object sender, EventArgs e) { showFinished = chkNotfinished.Checked; setRowfilter(); } void setRowfilter() { if (dv1 != null) { dv1.RowFilter = showFinished ? "diffCount>0" : ""; } } } }