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