2025-03-28 09:49:56 +08:00

127 lines
5.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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/RecordLogToOracleSocket消息通知执行结果到云端
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
}
}
}
}