//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

相关文章: