Example #1
0
        public static string CreateCPUUploadFile(DateTime dt, string zip, List <YCTPaymentRecord> records, List <YCTBlacklist> blacks)
        {
            records = (from it in records
                       orderby it.PID ascending, it.PSN ascending
                       where !string.IsNullOrEmpty(it.TAC)                             //TAC字段不能为空
                       select it).ToList();                                            //按交易设备号和流水号排序
            string        prefix = Path.GetFileNameWithoutExtension(zip).Substring(2); //从压缩文件名中取出其它文件需要的相同部分,
            string        fjy    = string.Format("{0}{1}.txt", "JY", prefix);
            string        frz    = string.Format("{0}{1}.txt", "RZ", prefix);
            string        fmd    = string.Format("{0}{1}.txt", "MD", prefix);
            StringBuilder jy     = new StringBuilder();
            StringBuilder rz     = new StringBuilder();
            StringBuilder md     = new StringBuilder();

            for (int i = 0; i < records.Count; i++)
            {
                jy.Append(GetCPURecord(records[i]));
            }
            if (blacks != null)
            {
                foreach (YCTBlacklist b in blacks)
                {
                    md.Append(string.Format("{0}\t{1}\t{2}\r\n", b.FCN, b.LCN, b.Reason));
                }
            }
            rz.Append(string.Format("{0}\t{1}\t{2}\t{3}\r\n", "00001", fjy, records.Count.ToString().PadLeft(10, '0'), records.Sum(it => it.FEE).ToString().PadLeft(11, '0').Insert(9, ".")));
            string bc = blacks != null?blacks.Count.ToString() : "0";

            rz.Append(string.Format("{0}\t{1}\t{2}\t{3}\r\n", "00002", fmd, bc.PadLeft(10, '0'), "0".PadLeft(11, '0').Insert(9, ".")));

            string path = FTPFolderFactory.CreateUploadFolder();

            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }
            string localZip = Path.Combine(path, zip);

            try
            {
                using (ZipFileWriter writer = new ZipFileWriter(localZip))
                {
                    writer.WriteFile(fjy, ASCIIEncoding.ASCII.GetBytes(jy.ToString()));
                    writer.WriteFile(fmd, md.Length == 0 ? null : ASCIIEncoding.ASCII.GetBytes(md.ToString()));
                    writer.WriteFile(frz, ASCIIEncoding.ASCII.GetBytes(rz.ToString()));
                }
                return(localZip);
            }
            catch (Exception ex)
            {
                Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex);
            }
            return(null);
        }
Example #2
0
        private void SyncDownloadFiles(FtpClient ftp)
        {
            //原理: 将本地目录中不存在的ZIP文件从远程目录中下载回来
            string localFolder = FTPFolderFactory.CreateDownloadFolder();

            string[] files = Directory.GetFiles(localFolder);

            InsertMsg("定位到: " + _ReadFolder);
            ftp.SetWorkingDirectory(_ReadFolder);
            var remoteFiles = ftp.GetListing(_ReadFolder, FtpListOption.NoPath);

            if (remoteFiles == null || remoteFiles.Length == 0)
            {
                return;
            }
            foreach (var fi in remoteFiles)
            {
                if (fi.Type == FtpFileSystemObjectType.File && Path.GetExtension(fi.Name).ToUpper() == ".ZIP" && !files.Contains(Path.Combine(localFolder, fi.Name)))
                {
                    InsertMsg("下载文件 " + fi.Name);
                    string file     = Path.Combine(localFolder, fi.Name); //本地文件
                    string tempFile = Path.Combine(localFolder, fi.Name + ".temp.ZIP");
                    using (var fs = new FileStream(tempFile, FileMode.Create, FileAccess.Write))
                    {
                        ftp.Download(fi.Name, fs);
                    }
                    if (File.Exists(tempFile))
                    {
                        InsertMsg("解析文件 " + fi.Name);
                        ExtraFile(tempFile);
                        File.Copy(tempFile, file);
                        File.Delete(tempFile);
                    }
                }
            }
        }
Example #3
0
        public static string CreateM1UploadFile(DateTime dt, string zip, List <YCTPaymentRecord> records, List <YCTBlacklist> blacks)
        {
            records = (from it in records
                       orderby it.PID ascending, it.PSN ascending
                       select it).ToList();                                            //按交易设备号和流水号排序
            string        prefix = Path.GetFileNameWithoutExtension(zip).Substring(2); //从压缩文件名中取出其它文件需要的相同部分,
            string        fjy    = string.Format("{0}{1}.txt", "JY", prefix);
            string        fsy    = string.Format("{0}{1}.txt", "SY", prefix);
            string        frz    = string.Format("{0}{1}.txt", "RZ", prefix);
            string        fmd    = string.Format("{0}{1}.txt", "MD", prefix);
            StringBuilder jy     = new StringBuilder();
            StringBuilder rz     = new StringBuilder();
            StringBuilder sy     = new StringBuilder();
            StringBuilder md     = new StringBuilder();

            for (int i = 0; i < records.Count; i++)
            {
                jy.Append(GetM1Record(records[i]));
            }
            rz.Append(string.Format("{0}\t{1}\t{2}\t{3}\r\n", "0001", fjy, records.Count.ToString().PadLeft(10, '0'), records.Sum(it => it.FEE).ToString().PadLeft(9, '0').Insert(7, ".")));

            var groups = records.GroupBy(it => it.PID);
            int index  = 0;

            foreach (var group in groups)
            {
                string strSy = string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\r\n",
                                             index.ToString().PadLeft(5, '0'),
                                             group.Key.PadLeft(8, '0'),
                                             dt.ToString("yyyyMMddHHmmss"),
                                             "1",
                                             group.Count <YCTPaymentRecord>().ToString().PadLeft(8, '0'),
                                             "0".PadLeft(8, '0'),
                                             group.Sum(it => it.FEE).ToString().PadLeft(9, '0').Insert(7, "."),
                                             "0000000.00",
                                             group.Max(it => it.PSN).ToString().PadLeft(8, '0'),
                                             new string('0', 128));
                sy.Append(strSy);
                index++;
            }
            rz.Append(string.Format("{0}\t{1}\t{2}\t{3}\r\n", "0002", fsy, index.ToString().PadLeft(10, '0'), records.Sum(it => it.FEE).ToString().PadLeft(9, '0').Insert(7, ".")));

            if (blacks != null)
            {
                foreach (YCTBlacklist b in blacks)
                {
                    md.Append(string.Format("{0}\t{1}\t{2}\r\n", b.FCN, b.LCN, b.Reason));
                }
            }
            string bc = blacks != null?blacks.Count.ToString() : "0";

            rz.Append(string.Format("{0}\t{1}\t{2}\t{3}\r\n", "0003", fmd, bc.PadLeft(10, '0'), "0".PadLeft(9, '0').Insert(7, ".")));

            string path = FTPFolderFactory.CreateUploadFolder();

            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }
            string localZip = Path.Combine(path, zip);

            try
            {
                using (ZipFileWriter writer = new ZipFileWriter(localZip))
                {
                    writer.WriteFile(fjy, ASCIIEncoding.ASCII.GetBytes(jy.ToString()));
                    writer.WriteFile(fsy, ASCIIEncoding.ASCII.GetBytes(sy.ToString()));
                    writer.WriteFile(fmd, md.Length == 0 ? null : ASCIIEncoding.ASCII.GetBytes(md.ToString()));
                    writer.WriteFile(frz, ASCIIEncoding.ASCII.GetBytes(rz.ToString()));
                }
                return(localZip);
            }
            catch (Exception ex)
            {
                Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex);
            }
            return(null);
        }