//ps:txt导入文本格式
导入单号(判断),单号,数值,导入数量(判断)
CL2012110200416,MD132479864,0,20
#region 方法--扫描导入
/// <summary>
/// 方法--扫描导入
/// </summary>
private void Import()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
openFileDialog.Title = "信息导入---荣庆物流";
//openFileDialog.FileName = string.Format("BFD{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
DialogResult result = openFileDialog.ShowDialog();
if (result == DialogResult.OK)
{
#region 读取文本
string fileName = openFileDialog.FileName; //得到:文件路径+文件名+文件后缀名
string strName = fileName.Substring(fileName.LastIndexOf('\\') + 1); //得到:文件名+文件后缀名
strName = strName.Remove(strName.LastIndexOf(".")); //得到:文件名
if (fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower() != "txt")
{
MessageBox.Show("导入文件类型不正确,请导入TXT文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
/*if (strName != _frm.txtSchedulingBillCode.Text + "_UnLoad")//扫描文件与当前界面调度单对比
{
MessageBox.Show("请正确导入调度单扫描文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}*/
//读取文本信息
FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fs, Encoding.GetEncoding("GBK"));
streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
string strLine = streamReader.ReadLine();
List<ImportObject> list = new List<ImportObject>();
ImportObject obj;
//循环读取文本信息
while (!string.IsNullOrEmpty(strLine))
{
if (strLine.IndexOf(",") == -1)
{
MessageBox.Show("导入内容格式不正确,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
string[] arr = strLine.Split(','); //以逗号分割,添加到数组
if (arr.Length != 4)
{
MessageBox.Show("导入内容格式不正确,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
obj = new ImportObject();
if (arr.Length == 4) //判断读取文本中,是否有实际扫描数量
{
obj.Code = arr[0].Trim(); //作业单号
obj.Count = Convert.ToInt32(arr[3].Trim()); //实际扫描数量
list.Add(obj);
}
}
catch
{
MessageBox.Show("导入内容格式不正确,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
strLine = streamReader.ReadLine(); //循环读取下一行
}
fs.Close(); //关闭流
streamReader.Close();
//判断读取到的文本中,是否有重复的项
var linq = from s in list
group s by new { s.Code } into newGroup
where newGroup.Count() > 1
select newGroup;
if (linq.ToList().Count > 0)
{
MessageBox.Show("导入内容中有重复的项,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
#endregion
DataGridViewRow row;
int ii = 0;
foreach (DataGridViewRow drA in _frm.dgvA.Rows)
{
foreach (ImportObject ss in list)
{
if (drA.Cells["OperationBillCodeA"].Value.ToString() == ss.Code)
{
row = new DataGridViewRow();
_frm.dgvB.Rows.Add(row);
_frm.dgvB.Rows[ii].Cells["OperationBillCodeB"].Value = ss.Code;//作业单号
_frm.dgvB.Rows[ii].Cells["UnGoodsNumberB"].Value = ss.Count;//实际卸货数量
_frm.dgvB.Rows[ii].Cells["WayBillCodeB"].Value = drA.Cells["WayBillCodeA"].Value;//托运单号
if (ss.Count == Convert.ToInt32(drA.Cells["GoodsNumberA"].Value))//扫描数量==任务列表中计划数量
{
_frm.dgvB.Rows[ii].Cells["UnGrossWeightB"].Value = drA.Cells["GrossWeightA"].Value;//重量
_frm.dgvB.Rows[ii].Cells["UnGoodsSizeB"].Value = drA.Cells["GoodsSizeA"].Value;//体积
}
_frm.dgvB.Rows[ii].Cells["SurfaceCodeB"].Value = drA.Cells["SurfaceCodeA"].Value;//面单号
_frm.dgvB.Rows[ii].Cells["ShipperNameB"].Value = drA.Cells["ShipperNameA"].Value;//托运方
ii++;
break;//匹配数据后,跳出本次循环
}
}
}
//扫描导入成功后,清空手工表格(清空数据、货品缓存)
_frm.dgvC.Rows.Clear();
_frm.saveListObj=new List<Oper_LoadOrUnLoadDetailsObject>();
}
}
#endregion