using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Transmission.SDK; using Newtonsoft.Json; using System.IO; using System.Configuration; namespace DataConverter { public class Program { static string ServerpartCode { get; set; } static string ShopCode { get; set; } static string MachineCode { get; set; } //补说明记录 /// /// PB数据压缩包生成和上传 /// /// 服务区编码|门店编码|收银机号|账期开始时间|账期结束时间 /// 示例:888888|042002|2238|20210812164608|20210824103647 /// static void Main(string[] args) { //记录传入的参数 for (int i = 0; i < args.Length; i++) { LogHelper.WriteServiceLog($"接收到的第{i + 1}个传入参数:{args[i]}"); } #region 定义参数变量 string[] str_args = args[0].Split('|'); ServerpartCode = str_args[0]; ShopCode = str_args[1]; MachineCode = str_args[2]; #endregion #region 定义压缩文件上传服务站点地址 //读取文件上传地址配置 string str_FileUploadUrl = ConfigurationManager.AppSettings["FileUploadUrl"]; if (string.IsNullOrWhiteSpace(str_FileUploadUrl)) { //默认文件上传地址 str_FileUploadUrl = "http://pos.eshangtech.com:7083/PosDataUpload"; } #endregion #region 定义区服Oracle数据库连接参数 //读取本地数据库连接配置 string str_OracleConn = ConfigurationManager.AppSettings["OracleConnStr"]; if (string.IsNullOrWhiteSpace(str_OracleConn)) { //默认本地Oracle数据库连接配置 str_OracleConn = "localhost,orcl,highway_exchange,qrwl,1521"; } string[] str_OracleConns = str_OracleConn.Split(','); OracleHelper oracleHelper = new OracleHelper(str_OracleConns[0], str_OracleConns[4], str_OracleConns[1], str_OracleConns[2], str_OracleConns[3]); #endregion //解析开始时间(账期) DateTime date_Start = DateTime.ParseExact(str_args[3], "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture); //解析结束时间(账期) DateTime date_End = DateTime.ParseExact(str_args[4], "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture); //实例化PB数据压缩包上传类 BLL.PBDataZipFile dataZipFile = new BLL.PBDataZipFile( oracleHelper, str_args[0], str_args[1], str_args[2], str_FileUploadUrl); dataZipFile.NotifyEvent += DataZipFile_NotifyEvent; System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); //生成结账时间前一天的自然日流水压缩文件 dataZipFile.CreateDataZipFile(date_End.Date.AddDays(-1), date_End.Date, BLL.PBDataZipFile.DateType.NaturalDay); //生成账期数据压缩文件(这里生成指定账期时间的日结单品、移动支付、收银稽核数据文件压缩包) dataZipFile.CreateEndDataZipFile(str_args[0] + str_args[1] + str_args[2] + str_args[3], date_Start, date_End, BLL.PBDataZipFile.DateType.EndAccount); //上传生成的压缩文件(这里的传输结果记录传输的文件数量、消耗的时间) dataZipFile.UploadDataZipFile(); watch.Stop(); LogHelper.WriteServiceLog($"///-----------------------PB收银数据压缩文件传输结束,总耗时:{watch.Elapsed.TotalSeconds.ToString("F2")}秒-----------------------///{Environment.NewLine}"); } /// /// 执行过程信息异步记录事件 /// /// /// private static void DataZipFile_NotifyEvent(object sender, Transmission.SDK.Model.Common.NotifyEventArgs e) { //输出日志文本到窗口 Console.WriteLine(e.NotifyLoggerMessage); if (e.NotifyLoggerType != CommonDictionary.LoggerType.公共通知) { //在这里统一记录文本日志 LogHelper.WriteServiceLog(e.NotifyLoggerMessage); #region 调用云端【/WebSocket/RecordLogToOracle】接口上报Socket消息通知执行结果到云端 try { //只有通知上传状态为True的消息才上传到云端 if (e.NotifyUploadState) { //文件上传耗时记录 string str_HttpURL = "http://pos.eshangtech.com:7198/webApi_publish/WebSocket/RecordLogToOracle"; string str_PostData = $"ServerpartCode={ServerpartCode}&ShopCode={ShopCode}&" + $"MachineCode={MachineCode}&LogCentent={e.NotifyLoggerMessage}&TableName={(int)e.NotifyLoggerType}" + $"&OperateTime={e.NotifyLoggerTime.ToString("yyyyMMddHHmmss")}"; HttpDataHelper.OnPost( $"{str_HttpURL}?{str_PostData}", str_PostData); } } catch (Exception ex) { LogHelper.WriteServiceLog($"{e.NotifyLoggerType.ToString()}执行结果上报失败。原因:{ex.Message}"); } #endregion } } } }