601 lines
17 KiB
C#
601 lines
17 KiB
C#
using System;
|
||
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
using System.Threading;
|
||
|
||
|
||
namespace DeiNiu.Wms.CE
|
||
{
|
||
public partial class RepStockIn : basicForm
|
||
{
|
||
// // WmsOutPickRequestClient client { get; set; }
|
||
// WmsInRequestClient client { get; set; }
|
||
//v_stockOutBatchPickOrder4Wince
|
||
//v_stockOutBatchPickDetail4Wince
|
||
public RepStockIn()
|
||
{
|
||
setTitle();
|
||
InitializeComponent();
|
||
// client = new WmsOutPickRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsOutPickRequestService"));
|
||
// client = new WmsInRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsInRequestService"));
|
||
}
|
||
|
||
bool isAuto =false;
|
||
string flowNo = "";
|
||
string goodsId = "";
|
||
string goodsName = "";
|
||
string batch = "";
|
||
int skuId = 0;
|
||
string goodsType = "";
|
||
decimal count = 0m;
|
||
DataTable dtIns;
|
||
DataTable dtLocs;
|
||
int id;
|
||
string orderNo = "";
|
||
private void RepStockIn_Load(object sender, EventArgs e)
|
||
{
|
||
isAuto = rbAuto.Checked;
|
||
// bindBg1();
|
||
|
||
focusOn(txtFlow,"下架容器码");
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
private void dg1_DoubleClick(object sender, EventArgs e)
|
||
{
|
||
clear();
|
||
if (dg1.DataSource==null)
|
||
{
|
||
return;
|
||
}
|
||
if(dg1.CurrentRowIndex<0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
//string sale_order = dg1[dg1.CurrentRowIndex, 0].ToString();
|
||
|
||
//string custor_name = dg1[dg1.CurrentRowIndex, 1].ToString();
|
||
lbGoods.Text = dg1[dg1.CurrentRowIndex, 3].ToString();
|
||
lbCount.Text = dg1[dg1.CurrentRowIndex, 0].ToString();
|
||
tb1.SelectedIndex = 1;
|
||
|
||
}
|
||
|
||
private void tb1_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
|
||
if (tb1.SelectedIndex == 0)
|
||
{
|
||
bindBg1();
|
||
/*
|
||
dg1.TableStyles[0].GridColumnStyles["出库单"].Width = 80;
|
||
dg1.TableStyles[0].GridColumnStyles["客户"].Width = 140;
|
||
dg1.TableStyles[0].GridColumnStyles["状态"].Width = 60;
|
||
*/
|
||
}
|
||
else
|
||
{
|
||
setDetail();
|
||
}
|
||
}
|
||
|
||
private void dg1_CurrentCellChanged(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void bindBg1()
|
||
{
|
||
flowNo = txtFlow.Text;
|
||
dtIns = null;
|
||
if (String.IsNullOrEmpty(flowNo))
|
||
{
|
||
focusOn(txtFlow, "下架容器码");
|
||
return;
|
||
}
|
||
|
||
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
|
||
try
|
||
{
|
||
dtIns = client.repInDetailsByFlowNo(flowNo);
|
||
|
||
}
|
||
catch (Exception er)
|
||
{
|
||
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
||
MessageBox.Show("发生错误:" + er.Message);
|
||
|
||
|
||
}
|
||
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
||
|
||
|
||
|
||
DataGridTableStyle dgts = new DataGridTableStyle();
|
||
dgts.MappingName = dtIns.TableName;// dt.TableName; // 必须用 ds.TableName, dt.TableSpace 不行!!!!
|
||
dg1.DataSource = dtIns;
|
||
/*
|
||
for (int i = 0; i < dtIns.Columns.Count; i++)
|
||
{
|
||
DataGridColumnStyle ColStyle = new DataGridTextBoxColumn();
|
||
ColStyle.MappingName = dtIns.Columns[i].ColumnName.ToString();
|
||
ColStyle.HeaderText = dtIns.Columns[i].ColumnName.ToString();
|
||
ColStyle.Width = dtIns.Rows[0][i].ToString().Length * 7 - 1;
|
||
|
||
if (ColStyle.Width <25)
|
||
{
|
||
ColStyle.Width = 25;//设置列宽
|
||
}
|
||
if (i >= 7) //如果某个条件满足就执行该列是否隐藏
|
||
{
|
||
// ColStyle.Width = 0;//当宽度等于0的时候就可以隐藏这列
|
||
}
|
||
dgts.GridColumnStyles.Add(ColStyle);
|
||
|
||
}
|
||
*/
|
||
dg1.TableStyles.Clear();
|
||
dg1.TableStyles.Add(dgts);
|
||
dg1.TableStyles[0].GridColumnStyles["商品"].Width = 80;
|
||
dg1.TableStyles[0].GridColumnStyles["数量"].Width = 30;
|
||
dg1.TableStyles[0].GridColumnStyles["件"].Width = 20;
|
||
dg1.TableStyles[0].GridColumnStyles["商品类别"].Width = 50;
|
||
// dg1.TableStyles[0].GridColumnStyles["状态"].Width = 0;
|
||
// dg1.TableStyles[0].GridColumnStyles["货位"].Width = 0;
|
||
|
||
dgts = null;
|
||
GC.Collect();
|
||
if (dtIns.Rows.Count > 0)
|
||
{
|
||
focusOn(txtGoodId, "商品主条码");
|
||
}
|
||
else
|
||
{
|
||
focusOn(txtFlow, "下架容器码");
|
||
}
|
||
}
|
||
|
||
private void bindBg2()
|
||
{
|
||
if (string.IsNullOrEmpty(goodsId))
|
||
{
|
||
return;
|
||
}
|
||
|
||
Cursor.Current = Cursors.WaitCursor;
|
||
try
|
||
{
|
||
dtLocs = client.getLocations( skuId,"",goodsId, batch, count);
|
||
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Cursor.Current = Cursors.Default;
|
||
showErrorMsg(e);
|
||
return;
|
||
}
|
||
Cursor.Current = Cursors.Default;
|
||
|
||
if (dtLocs.Rows.Count == 0)
|
||
{
|
||
MessageBox.Show("没有发现空货位");
|
||
return;
|
||
}
|
||
|
||
|
||
DataGridTableStyle dgts = new DataGridTableStyle();
|
||
dgts.MappingName = dtLocs.TableName;// dt.TableName; // 必须用 ds.TableName, dt.TableSpace 不行!!!!
|
||
|
||
for (int i = 0; i < dtLocs.Columns.Count; i++)
|
||
{
|
||
DataGridColumnStyle ColStyle = new DataGridTextBoxColumn();
|
||
ColStyle.MappingName = dtLocs.Columns[i].ColumnName.ToString();
|
||
ColStyle.HeaderText = dtLocs.Columns[i].ColumnName.ToString();
|
||
ColStyle.Width = dtLocs.Rows[0][i].ToString().Length * 7 - 1;
|
||
|
||
if (ColStyle.Width < 50)
|
||
{
|
||
ColStyle.Width = 50;//设置列宽
|
||
}
|
||
if (i == 1) //如果某个条件满足就执行该列是否隐藏
|
||
{
|
||
// ColStyle.Width = 0;//当宽度等于0的时候就可以隐藏这列
|
||
}
|
||
dgts.GridColumnStyles.Add(ColStyle);
|
||
}
|
||
|
||
|
||
|
||
|
||
dg2.TableStyles.Clear();
|
||
|
||
dg2.TableStyles.Add(dgts);
|
||
dg2.DataSource = dtLocs;
|
||
dgts = null;
|
||
GC.Collect();
|
||
|
||
|
||
//dgts.GridColumnStyles[0].Width = 100;
|
||
//dgts.GridColumnStyles[1].Width = 100;
|
||
|
||
|
||
}
|
||
|
||
private void rbAuto_CheckedChanged(object sender, EventArgs e)
|
||
{
|
||
if (rbAuto.Checked)
|
||
{
|
||
setAuto();
|
||
}
|
||
}
|
||
|
||
|
||
void setAuto()
|
||
{
|
||
if (string.IsNullOrEmpty(goodsId))
|
||
{
|
||
return;
|
||
}
|
||
|
||
isAuto = rbAuto.Checked;
|
||
textBoxNum.Enabled = !isAuto;
|
||
btnOkay.Enabled = !isAuto;
|
||
textBoxNum.Text = "";
|
||
if (isAuto)
|
||
{
|
||
|
||
bindBg2();
|
||
|
||
}
|
||
else
|
||
{
|
||
textBoxNum.Text = count + "";
|
||
dg2.DataSource = null;
|
||
}
|
||
}
|
||
|
||
private void dg1_DoubleClick_1(object sender, EventArgs e)
|
||
{
|
||
|
||
// setDetail();
|
||
tb1.SelectedIndex = 1;
|
||
|
||
}
|
||
|
||
void setDetail()
|
||
{
|
||
clear();
|
||
|
||
if (dg1.DataSource == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
DataView dv = dtIns.DefaultView;
|
||
|
||
if (dg1.CurrentRowIndex < 0 || dv.Count <= 0 || dg1.CurrentRowIndex >= dv.Count)
|
||
|
||
{
|
||
return;
|
||
}
|
||
|
||
|
||
if (dv.Count > 0)
|
||
{
|
||
orderNo = dv[dg1.CurrentRowIndex]["pickOrderNo"].ToString();
|
||
goodsId = dv[dg1.CurrentRowIndex]["goodsId"].ToString();// dg1[dg1.CurrentRowIndex, 14].ToString();
|
||
goodsName = dv[dg1.CurrentRowIndex]["商品"].ToString();// dg1[dg1.CurrentRowIndex, 0].ToString();
|
||
batch = dv[dg1.CurrentRowIndex]["批号"].ToString();// dg1[dg1.CurrentRowIndex, 4].ToString();
|
||
skuId = Convert.ToInt16(dv[dg1.CurrentRowIndex]["skuId"].ToString());
|
||
count = Convert.ToDecimal(dv[dg1.CurrentRowIndex]["数量"].ToString()); //Convert.ToDecimal(dg1[dg1.CurrentRowIndex, 1].ToString());
|
||
goodsType = dv[dg1.CurrentRowIndex]["商品类别"].ToString(); //dg1[dg1.CurrentRowIndex, 6].ToString();
|
||
id = Convert.ToInt32(dv[dg1.CurrentRowIndex]["id"].ToString());
|
||
}
|
||
|
||
lbGoods.Text = goodsName;
|
||
lbBatch.Text = batch;
|
||
lbCount.Text = count+"";
|
||
lbType.Text = goodsType;
|
||
|
||
txtLocation.Text = "";
|
||
txtLocation.Focus();
|
||
|
||
|
||
}
|
||
void clear()
|
||
{
|
||
orderNo =
|
||
goodsId =
|
||
batch = "";
|
||
goodsName = "";
|
||
skuId = 0;
|
||
count = 0;
|
||
lbGoods.Text = goodsId;
|
||
lbBatch.Text = batch;
|
||
lbType.Text=lbCount.Text = "";
|
||
dg2.DataSource = null;
|
||
rbAuto.Checked = false;
|
||
radioButton2.Checked = true;
|
||
|
||
}
|
||
|
||
private void radioButton2_CheckedChanged(object sender, EventArgs e)
|
||
{
|
||
setAuto();
|
||
}
|
||
|
||
private void btnOkay_Click(object sender, EventArgs e)
|
||
{
|
||
repIn();
|
||
|
||
}
|
||
void repIn()
|
||
{
|
||
decimal inCount = 0;
|
||
try
|
||
{
|
||
inCount = Convert.ToDecimal(textBoxNum.Text.Trim());
|
||
|
||
if (inCount > count)
|
||
{
|
||
throw new Exception();
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
focusOn(textBoxNum, "正确的上架数量");
|
||
return;
|
||
}
|
||
|
||
string locId = txtLocation.Text;
|
||
if (string.IsNullOrEmpty(locId))
|
||
{
|
||
|
||
|
||
focusOn(txtLocation, "目标货位码");
|
||
txtLocation.Focus();
|
||
return;
|
||
}
|
||
|
||
if (putIn(locId, skuId,goodsId, batch, inCount, id))
|
||
{
|
||
count -= inCount;
|
||
if (count <= 0)
|
||
{
|
||
tb1.SelectedIndex = 0;
|
||
return;
|
||
}
|
||
lbCount.Text = count + "";
|
||
// setDetail();
|
||
|
||
txtLocation.Text = "";
|
||
textBoxNum.Text = "";
|
||
}
|
||
focusOn(txtLocation, "目标货位码");
|
||
|
||
}
|
||
|
||
bool putIn(string locId, int skuId, string goodsId, string batch, decimal count, int portId)
|
||
{
|
||
|
||
if (string.IsNullOrEmpty(goodsId) || string.IsNullOrEmpty(locId)
|
||
//|| string.IsNullOrEmpty(batch)
|
||
|| count <= 0 || portId <= 0)
|
||
{
|
||
MessageBox.Show("条件不符,不能入库");
|
||
focusOn(txtLocation,"目标货位码");
|
||
return false;
|
||
}
|
||
enumRepResult result = enumRepResult.成功;
|
||
Cursor.Current = Cursors.WaitCursor;
|
||
try
|
||
{
|
||
result = (enumRepResult)client.repItemIn(locId, goodsId,skuId, batch, count, portId, LoginInfo.UserId, LoginInfo.Token);
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Cursor.Current = Cursors.Default;
|
||
showErrorMsg(e);
|
||
return false;
|
||
}
|
||
Cursor.Current = Cursors.Default;
|
||
|
||
if (result != enumRepResult.成功)
|
||
{
|
||
MessageBox.Show("入库失败:" + result.ToString());
|
||
focusOn(txtLocation, "目标货位码");
|
||
return false;
|
||
}
|
||
return true;
|
||
|
||
|
||
}
|
||
|
||
private void textBox1_KeyUp(object sender, KeyEventArgs e)
|
||
{
|
||
if (!isAuto)
|
||
{
|
||
return;
|
||
}
|
||
|
||
|
||
if (e.KeyCode == Keys.Enter)
|
||
{
|
||
|
||
string locId = txtLocation.Text;
|
||
|
||
DataView dv = dtLocs.DefaultView;
|
||
dv.RowFilter = string.Format("推荐货位='{0}'", locId);
|
||
bool result = false;
|
||
decimal inCount = 0m;
|
||
if (dv.Count > 0)
|
||
{
|
||
foreach (DataRowView dr in dv)
|
||
{
|
||
inCount = Convert.ToDecimal(dr[1].ToString());
|
||
|
||
|
||
result = putIn(locId, skuId,goodsId, batch, inCount, id);
|
||
|
||
|
||
break;
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show(locId + "不是推荐货位或改货位已经扫描入库了,请扫描其它货位");
|
||
dv.RowFilter ="";
|
||
focusOn(txtLocation );
|
||
}
|
||
|
||
if (result)
|
||
{
|
||
count -= inCount;
|
||
if (count <= 0) //入库完毕
|
||
{
|
||
tb1.SelectedIndex = 0;
|
||
return;
|
||
}
|
||
dv.RowFilter = string.Format("推荐货位<>'{0}'", locId);
|
||
|
||
dtLocs = dv.ToTable("locs");
|
||
dg2.DataSource = dtLocs;
|
||
|
||
lbCount.Text = count + "";
|
||
// bindBg2();
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|
||
private void dg2_DoubleClick(object sender, EventArgs e)
|
||
{
|
||
if (dg2.DataSource == null)
|
||
{
|
||
return;
|
||
}
|
||
if (dg2.CurrentRowIndex < 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
//string sale_order = dg1[dg1.CurrentRowIndex, 0].ToString();
|
||
|
||
//string custor_name = dg1[dg1.CurrentRowIndex, 1].ToString();
|
||
txtLocation.Text = dg2[dg2.CurrentRowIndex, 0].ToString();
|
||
|
||
}
|
||
|
||
private void button1_Click(object sender, EventArgs e)
|
||
{
|
||
bindBg1();
|
||
}
|
||
|
||
private void textBoxGoods_KeyUp(object sender, KeyEventArgs e)
|
||
{
|
||
if (e.KeyCode == Keys.Enter)
|
||
{
|
||
flowNo = txtFlow.Text.Trim();
|
||
bindBg1();
|
||
|
||
}
|
||
|
||
}
|
||
|
||
private void btnComplete_Click(object sender, EventArgs e)
|
||
{
|
||
if (string.IsNullOrEmpty(goodsId))
|
||
{
|
||
return;
|
||
}
|
||
Message me = new Message();
|
||
me.title = "您确认此条补货已完成入库 ?";
|
||
if (me.ShowDialog() == DialogResult.Cancel)
|
||
{
|
||
focusOn(txtLocation);
|
||
return;
|
||
}
|
||
Cursor.Current = Cursors.WaitCursor;
|
||
try
|
||
{
|
||
//int i =0;
|
||
//while(i<50){
|
||
// i++;
|
||
client.finishBatchValidateItem(orderNo, id, LoginInfo.UserId,0, LoginInfo.Token);
|
||
|
||
// Thread.CurrentThread.Join(10);
|
||
//}
|
||
|
||
|
||
}
|
||
catch (Exception er)
|
||
{
|
||
|
||
MessageBox.Show("出错了:" +er.Message);
|
||
}
|
||
Cursor.Current = Cursors.Default;
|
||
|
||
tb1.SelectedIndex = 0;
|
||
|
||
}
|
||
|
||
private void textBoxNum_KeyUp(object sender, KeyEventArgs e)
|
||
{
|
||
|
||
|
||
|
||
if (e.KeyCode == Keys.Enter)
|
||
{
|
||
if (isAuto)
|
||
{
|
||
return;
|
||
}
|
||
repIn();
|
||
}
|
||
}
|
||
|
||
private void txtGoodId_KeyUp(object sender, KeyEventArgs e)
|
||
{
|
||
|
||
|
||
if (e.KeyCode == Keys.Enter)
|
||
{
|
||
string goodsBarcode = txtGoodId.Text;
|
||
|
||
if (string.IsNullOrEmpty(goodsBarcode))
|
||
{
|
||
txtGoodId.Focus();
|
||
return;
|
||
}
|
||
DataView dv = dtIns.DefaultView;
|
||
|
||
|
||
dv.RowFilter = string.Format("barcode='{0}'", goodsBarcode);
|
||
|
||
if (dv.Count >= 1)
|
||
{
|
||
tb1.SelectedIndex = 1;
|
||
focusOn(txtLocation,"目标货位码");
|
||
}
|
||
|
||
//dv.RowFilter = "";
|
||
txtGoodId.Text = "";
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
} |