public void ReadHeaderTest()
 {
     string file = @"F:\Working Folder\Project\CurrencyStore\4.Documents\项目参考资料\20130507.SVD";
     CurrencyFileReader target = new CurrencyFileReader(file); // TODO: Initialize to an appropriate value
     FileHeader actual;
     actual = target.FileHeader;
     Assert.IsNotNull(actual);
     var lst = target.Read(false).ToArray();
     Assert.IsTrue(actual.SumRecords == lst.Length);
     target.Dispose();
 }
        private UploadResult ImportDataFile(string fileName, bool isIgnoreAlreadyUpload)
        {
            UploadResult result = new UploadResult();

            using (CurrencyFileReader fileReader = new CurrencyFileReader(fileName))
            {
                FileHeader fileHeader = fileReader.FileHeader;
                IEnumerable<CurrencyInfo> dataList = fileReader.Read(isIgnoreAlreadyUpload).ToList();

                /**/

                IDeviceService deviceService = ServiceFactory.GetService<IDeviceService>();

                bool deviceExists = deviceService.CheckExists_Info(new DeviceInfo() { DeviceNumber = fileHeader.MachineSN });

                result.FileType = fileHeader.FileType;
                result.DeviceNumber = fileHeader.MachineSN;
                result.DeviceStatus = deviceExists ? "已入库" : "未入库";

                if (!deviceExists)
                {
                    DeviceInfo deviceInfo = new DeviceInfo()
                    {
                        OrgId = 0,
                        ModelCode = 0,
                        KindCode = 0,
                        DeviceNumber = fileHeader.MachineSN,
                        SoftwareVersion = fileHeader.SoftVersion,
                        OnLineTime = DateTime.Now,
                        DeviceStatus = 1,
                    };

                    deviceService.Save_Info(deviceInfo);
                }

                /**/

                result.TotalCount = fileHeader.SumRecords;
                result.AlreadyUploadCount = fileHeader.UploadRecord;

                if (isIgnoreAlreadyUpload)
                {
                    result.ShouldSaveCount = result.TotalCount - result.AlreadyUploadCount;
                }

                else
                {
                    result.ShouldSaveCount = result.TotalCount;
                }

                /**/

                ICurrencyService currencyService = ServiceFactory.GetService<ICurrencyService>();

                int bufferCount = 500;
                int maxCount = dataList.Count();
                List<CurrencyInfo> buffer = null;

                for (int i = 0; i <= maxCount / bufferCount; i++)
                {
                    buffer = dataList.Skip(i * bufferCount).Take(bufferCount).ToList();

                    if (buffer.Count() > 0)
                    {
                        currencyService.BatchSave_Info(buffer);
                    }
                }

                result.SuccessSaveCount = maxCount;
            }

            return result;
        }