127 lines
5.7 KiB
C#
127 lines
5.7 KiB
C#
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; }
|
||
//补说明记录
|
||
/// <summary>
|
||
/// PB数据压缩包生成和上传
|
||
/// </summary>
|
||
/// <param name="args">服务区编码|门店编码|收银机号|账期开始时间|账期结束时间
|
||
/// <para>示例:888888|042002|2238|20210812164608|20210824103647</para>
|
||
/// </param>
|
||
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}");
|
||
}
|
||
/// <summary>
|
||
/// 执行过程信息异步记录事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
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
|
||
}
|
||
}
|
||
}
|
||
}
|