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

699 lines
30 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Transmission.SDK.ThreadPool;
namespace DataTransferClient
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
#region ->
protected string TimerInterval = ConfigurationManager.AppSettings["Interval"];
protected string _ServerIp = ConfigurationManager.AppSettings["SERVERIP"];
protected string _ServerPort = ConfigurationManager.AppSettings["SERVERPORT"];
protected string _PassWord = ConfigurationManager.AppSettings["PASSWORD"];
protected string _UserName = ConfigurationManager.AppSettings["USERNAME"];
protected string _ConnName = ConfigurationManager.AppSettings["CONNNAME"];
protected string _CheckInterval = ConfigurationManager.AppSettings["CHECKINTERVAL"];
protected string _ServerPartCode = ConfigurationManager.AppSettings["SERVERPARTCODE"];
/// <summary>
/// 会员数据传输线程
/// </summary>
ClientThread MSPClientThread = new ClientThread();
/// <summary>
/// 会员数据传输配置
/// </summary>
ConfigThread MSPConfigThread = null;
/// <summary>
/// 经营数据传输线程
/// </summary>
ClientThread HWSClientThread = new ClientThread();
/// <summary>
/// 经营数据传输配置
/// </summary>
ConfigThread HWSConfigThread = null;
/// <summary>
/// 销售流水数据传输线程
/// </summary>
ClientThread ExClientThread = new ClientThread();
/// <summary>
/// 销售流水数据传输配置
/// </summary>
ConfigThread ExConfigThread = null;
/// <summary>
/// 传输客户端定时器
/// </summary>
DispatcherTimer CilentTimer = new DispatcherTimer();
/// <summary>
/// MOBILESERVICE_PLATFORM数据库连接类
/// </summary>
Transmission.SDK.OracleHelper MSPOracle;
/// <summary>
/// HIGHWAY_STORAGE数据库连接类
/// </summary>
Transmission.SDK.OracleHelper HWSOracle;
/// <summary>
/// HIGHWAY_EXCHANGE数据库连接类
/// </summary>
Transmission.SDK.OracleHelper ExOracle;
/// <summary>
/// 运行状态上报时间
/// </summary>
DateTime StateUploadTime;
/// <summary>
/// 运行状态上报线程
/// </summary>
Thread StateUploadThread;
/// <summary>
/// 运行日志记录
/// </summary>
DataTable TransResultTable;
/// <summary>
/// 是否首次执行
/// </summary>
bool IsFirstRun = true;
/// <summary>
/// 流水数据校验定时器
/// </summary>
DispatcherTimer CheckTimer = new DispatcherTimer();
/// <summary>
/// 流水数据校验线程
/// </summary>
Thread CheckThread;
#endregion
#region ->
public MainWindow()
{
InitializeComponent();
//绑定上传回调事件
MSPClientThread.UploadStringEvent += new ClientThread.OutputResultsUploadArg(ClientThread_UploadStringEvent);
HWSClientThread.UploadStringEvent += new ClientThread.OutputResultsUploadArg(ClientThread_UploadStringEvent);
ExClientThread.UploadStringEvent += new ClientThread.OutputResultsUploadArg(ClientThread_UploadStringEvent);
CilentTimer.Tick += CilentTimer_Tick;
double timeInterval = 0;
try
{
//if (!double.TryParse(TimerInterval, out timeInterval) || timeInterval < 1 || timeInterval > 60)
//{
// timeInterval = 5;
//}
timeInterval = double.Parse(TimerInterval);
}
catch
{
timeInterval = 5;
}
timeInterval = timeInterval * 60 * 1000;
CilentTimer.Interval = TimeSpan.FromMilliseconds(timeInterval);
CilentTimer.Start();
BtnTimerState.Content = "停止";
Title = "数据中台传输工具 DCTCv" + System.Windows.Forms.Application.ProductVersion;
int _FileCount = 0;
string[] _masks = { ".log" };
try
{
Transmission.SDK.LogHelper.DeleteFiles(
AppDomain.CurrentDomain.BaseDirectory + "\\log",
new string[] { ".log" }, false, false, ref _FileCount);
}
catch { }
//工具打开就启动程序
CilentTimer_Tick(null, null);
Double.TryParse(_CheckInterval,out double CheckInterval);
CheckTimer.Tick += CheckTimer_Tick;
CheckTimer.Interval = TimeSpan.FromMinutes(CheckInterval);
//CheckTimer.Start();
}
#endregion
#region ->
/// <summary>
/// 主窗体按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Click(object sender, RoutedEventArgs e)
{
Button _Button = (Button)sender;
switch (_Button.Name)
{
case "BtnTimerState":
if (CilentTimer != null)
{
if (CilentTimer.IsEnabled)
{
CilentTimer.Stop();
_Button.Content = "启动";
TransResultBeginInvoke(DateTime.Now, "数据传输定时器已停止");
}
else
{
CilentTimer.Start();
_Button.Content = "停止";
TransResultBeginInvoke(DateTime.Now, "数据传输定时器已启动");
}
}
else
{
TransResultBeginInvoke(DateTime.Now, "数据传输定时器初始化失败,请重启程序!");
}
break;
case "BtnClosed":
if (CilentTimer != null && CilentTimer.IsEnabled)
{
CilentTimer.Stop();
}
Close();
break;
}
}
#endregion
#region -> 线
/// <summary>
/// 主线程定时器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CilentTimer_Tick(object sender, EventArgs e)
{
try
{
if (MSPOracle == null || !MSPOracle.ConnTest())
{
string _MSPConnString = ConfigurationManager.AppSettings["MOBILESERVICE_PLATFORM"];
MSPOracle = new Transmission.SDK.OracleHelper(_MSPConnString.Split(',')[0], _MSPConnString.Split(',')[4],
_MSPConnString.Split(',')[1], _MSPConnString.Split(',')[2], _MSPConnString.Split(',')[3]);
}
if (HWSOracle == null || !HWSOracle.ConnTest())
{
string _HWSConnString = ConfigurationManager.AppSettings["HIGHWAY_STORAGE"];
HWSOracle = new Transmission.SDK.OracleHelper(_HWSConnString.Split(',')[0], _HWSConnString.Split(',')[4],
_HWSConnString.Split(',')[1], _HWSConnString.Split(',')[2], _HWSConnString.Split(',')[3]);
}
if (ExOracle == null || !ExOracle.ConnTest())
{
string _ExConnString = ConfigurationManager.AppSettings["HIGHWAY_EXCHANGE"];
ExOracle = new Transmission.SDK.OracleHelper(_ExConnString.Split(',')[0], _ExConnString.Split(',')[4],
_ExConnString.Split(',')[1], _ExConnString.Split(',')[2], _ExConnString.Split(',')[3]);
}
TransResultBeginInvoke(DateTime.Now, "正在预启动上传子线程......");
if (MSPConfigThreadConfigure())
{
if (MSPClientThread.onState(MSPOracle))
{
TransResultBeginInvoke(DateTime.Now, "会员数据上传线程预启动成功");
}
else
{
TransResultBeginInvoke(DateTime.Now, "会员数据上传线程预启动失败");
}
}
if (HWSConfigThreadConfigure())
{
if (HWSClientThread.onState(HWSOracle))
{
TransResultBeginInvoke(DateTime.Now, "经营数据上传线程预启动成功");
}
else
{
TransResultBeginInvoke(DateTime.Now, "经营数据上传线程预启动失败");
}
}
if (ExConfigThreadConfigure())
{
if (ExClientThread.onState(ExOracle))
{
TransResultBeginInvoke(DateTime.Now, "销售流水数据上传线程预启动成功");
}
else
{
TransResultBeginInvoke(DateTime.Now, "销售流水数据上传线程预启动失败");
}
}
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "传输启动失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("传输启动失败:" + ex.Message);
}
}
#endregion
#region ->
/// <summary>
/// 移动业务数据上传配置
/// </summary>
private bool MSPConfigThreadConfigure()
{
string _MobileServicePlatformDataUrl;
try
{
_MobileServicePlatformDataUrl = ConfigurationManager.AppSettings["MobileServicePlatformDataUrl"];
}
catch
{
_MobileServicePlatformDataUrl = "";
}
if (string.IsNullOrWhiteSpace(_MobileServicePlatformDataUrl))
{
TransResultBeginInvoke(DateTime.Now, $"会员数据上传线程启动失败。原因:参数[MobileServicePlatformDataUrl]未配置。");
return false;
}
if (MSPConfigThread == null)
{
MSPConfigThread = new ConfigThread("");
}
MSPClientThread.IsUpload(true, new List<string>
{
"T_MEMBERSHIP",
"T_MEMBERSHIPPOINTS",
"T_MALLORDER",
"T_CONSUMPTIONRECORD",
"T_MEMBERSHIPCOUPON"
});
MSPClientThread.IsDownload(false);
try
{
MSPClientThread.setConfiguration($"{_MobileServicePlatformDataUrl}", "", "888888", "", "", "", "", 50, 1);
MSPClientThread.setConfigThread(MSPConfigThread);
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "会员数据上传配置失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("会员数据上传配置失败:" + ex.Message);
}
return true;
}
#endregion
#region ->
/// <summary>
/// 普通业务数据上传配置
/// </summary>
private bool HWSConfigThreadConfigure()
{
string _HighwayStorageDataUrl;
try
{
_HighwayStorageDataUrl = ConfigurationManager.AppSettings["HighwayStorageDataUrl"];
}
catch
{
_HighwayStorageDataUrl = "";
}
if (string.IsNullOrWhiteSpace(_HighwayStorageDataUrl))
{
TransResultBeginInvoke(DateTime.Now, $"经营数据上传线程启动失败。原因:参数[HighwayStorageDataUrl]未配置。");
return false;
}
if (HWSConfigThread == null)
{
HWSConfigThread = new ConfigThread("");
}
HWSClientThread.IsUpload(true, new List<string>
{
"T_SERVERPARTSHOP",
"T_COMMODITY",
"T_REVENUE",
"T_COMPACT",
"T_CHECK"
});
HWSClientThread.IsDownload(false);
try
{
HWSClientThread.setConfiguration($"{_HighwayStorageDataUrl}", "", "888888", "", "", "", "", 50, 1);
HWSClientThread.setConfigThread(HWSConfigThread);
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "经营数据上传配置失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("经营数据上传配置失败:" + ex.Message);
}
return true;
}
#endregion
#region ->
/// <summary>
/// 销售流水数据上传配置
/// </summary>
private bool ExConfigThreadConfigure()
{
bool IsRunning = false;
if (!string.IsNullOrEmpty(_ServerIp) && !string.IsNullOrEmpty(_ServerPort) &&
!string.IsNullOrEmpty(_PassWord) && !string.IsNullOrEmpty(_UserName) &&
!string.IsNullOrEmpty(_ConnName))
{
OracleHelper _OracleHelper = new OracleHelper(
_ServerIp, _ServerPort, _ConnName, _UserName, _PassWord);
if (!string.IsNullOrEmpty(_ServerPartCode))
{
DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(
@"SELECT SERVERPARTCODE FROM HIGHWAY_EXCHANGE.T_SYSCODE").Tables[0];
foreach (DataRow _DataRow in _DataTable.Rows)
{
if (("," + _ServerPartCode + ",").Contains(_DataRow[0].ToString()))
{
IsRunning = true;
}
}
}
else
{
IsRunning = true;
}
}
else
{
IsRunning = true;
}
if (IsRunning)
{
string _ExchangeDataUrl;
try
{
_ExchangeDataUrl = ConfigurationManager.AppSettings["ExchangeDataUrl"];
}
catch
{
_ExchangeDataUrl = "";
}
if (string.IsNullOrWhiteSpace(_ExchangeDataUrl))
{
TransResultBeginInvoke(DateTime.Now, $"销售流水数据上传线程启动失败。原因:参数[ExchangeDataUrl]未配置。");
return false;
}
if (ExConfigThread == null)
{
ExConfigThread = new ConfigThread("");
}
ExClientThread.IsUpload(true, new List<string>
{
"T_SELLDATA",
"T_SELLMASTER"
});
ExClientThread.IsDownload(false);
try
{
ExClientThread.setConfiguration($"{_ExchangeDataUrl}", "", "888888", "", "", "", "", 50, 1);
ExClientThread.setConfigThread(ExConfigThread);
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "销售流水数据上传配置失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("销售流水数据上传配置失败:" + ex.Message);
}
return true;
}
else
{
TransResultBeginInvoke(DateTime.Now, "当前服务区未配置流水启动!");
Transmission.SDK.LogHelper.WriteServiceLog("当前服务区未配置流水启动!");
}
return false;
}
#endregion
#region ->
/// <summary>
/// 上传回调事件
/// </summary>
/// <param name="uploadResultInfo"></param>
/// <param name="resultString"></param>
private void ClientThread_UploadStringEvent(UploadResultInfo uploadResultInfo, string resultString)
{
if (uploadResultInfo.StartToEnd)
{
TransResultBeginInvoke(DateTime.Now, resultString);
}
else
{
TransResultBeginInvoke(DateTime.Now, string.Format("上传完成:[{0}]\n     总数{1};成功:{2};过滤:{3};失败:{5};耗时:{4}{6}",
uploadResultInfo.TableName, uploadResultInfo.TotalNumber, uploadResultInfo.SuccessNumber,
uploadResultInfo.FilterNumber, uploadResultInfo.Elapsed.TotalSeconds.ToString("F2") + "秒",
uploadResultInfo.TotalNumber - uploadResultInfo.SuccessNumber - uploadResultInfo.FilterNumber,
(string.IsNullOrWhiteSpace(uploadResultInfo.InterfaceError) ? "" : ("\n     接口错误" + uploadResultInfo.InterfaceError)) +
(string.IsNullOrWhiteSpace(uploadResultInfo.Error) ? "" : ("\n     本地错误" + uploadResultInfo.Error))));
if (!string.IsNullOrWhiteSpace(uploadResultInfo.InterfaceError) || !string.IsNullOrWhiteSpace(uploadResultInfo.Error))
{
Transmission.SDK.LogHelper.WriteServiceLog(string.Format("上传完成:[{0}]总数:{1};成功:{2};过滤:{3};失败:{5};耗时:{4}{6}",
uploadResultInfo.TableName, uploadResultInfo.TotalNumber, uploadResultInfo.SuccessNumber,
uploadResultInfo.FilterNumber, uploadResultInfo.Elapsed.TotalSeconds.ToString("F2") + "秒",
uploadResultInfo.TotalNumber - uploadResultInfo.SuccessNumber - uploadResultInfo.FilterNumber,
(string.IsNullOrWhiteSpace(uploadResultInfo.InterfaceError) ? "" : (";接口错误:" + uploadResultInfo.InterfaceError)) +
(string.IsNullOrWhiteSpace(uploadResultInfo.Error) ? "" : (";本地错误:" + uploadResultInfo.Error))));
}
}
}
#endregion
#region ->
private delegate void DelegateTransResult(DateTime triggerTime, string resultMessage);
private void TransResultBeginInvoke(DateTime triggerTime, string resultMessage)
{
Dispatcher.BeginInvoke(new DelegateTransResult(TransResult), new object[] { triggerTime, resultMessage });
}
/// <summary>
/// 运行日志呈现
/// </summary>
/// <param name="triggerTime">日志时间</param>
/// <param name="resultMessage">日志内容</param>
private void TransResult(DateTime triggerTime, string resultMessage)
{
if (TransResultTable == null)
{
TransResultTable = ResultTable();
}
foreach (DataRow _RowTemp in TransResultTable.Select(string.Format("TransDate < '{0}'", DateTime.Now.AddHours(-1))))
{
TransResultTable.Rows.Remove(_RowTemp);
}
TransResultTable.AcceptChanges();
DataRow _DataRow = TransResultTable.NewRow();
_DataRow["TransDate"] = triggerTime;
_DataRow["TransResult"] = resultMessage;
TransResultTable.Rows.InsertAt(_DataRow, 0);
DataTransResult.AutoGenerateColumns = false;
DataTransResult.SelectionMode = DataGridSelectionMode.Single;
DataTransResult.ItemsSource = TransResultTable.DefaultView;
}
/// <summary>
/// 运行日志记录表结构
/// </summary>
/// <returns></returns>
private DataTable ResultTable()
{
DataTable _DataTable = new DataTable();
_DataTable.Columns.Add("TransDate", typeof(DateTime));
_DataTable.Columns.Add("TransResult", typeof(string));
return _DataTable;
}
#endregion
#region ->
private void CheckTimer_Tick(object sender, EventArgs e)
{
if (CheckThread == null || !CheckThread.IsAlive)
{
CheckThread = new Thread(CheckSalesData)
{
IsBackground = true
};
CheckThread.Start();
}
}
private void CheckSalesData()
{
try
{
if (!string.IsNullOrEmpty(_ServerIp) && !string.IsNullOrEmpty(_ServerPort) &&
!string.IsNullOrEmpty(_PassWord) && !string.IsNullOrEmpty(_UserName) &&
!string.IsNullOrEmpty(_ConnName))
{
OracleHelper _OracleHelper = new OracleHelper(
_ServerIp, _ServerPort, _ConnName, _UserName, _PassWord);
string _UnionSql = "";
DataTable CheckTable = _OracleHelper.ExcuteSqlGetDataSet(
@"SELECT WM_CONCAT(ENDACCOUNT_CODE) AS ENDACCOUNT_CODE,ENDACCOUNT_TYPE
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNTCHECK GROUP BY ENDACCOUNT_TYPE").Tables[0];
if (CheckTable.Rows.Count > 0)
{
DataRow[] _DataRow = CheckTable.Select("ENDACCOUNT_TYPE = 0");
if (_DataRow.Length > 0)
{
_UnionSql += @"
UNION ALL
SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE,TOTALCOUNT AS TOTAL_COUNT,
TICKETCOUNT AS TICKET_COUNT,TOTALSELLAMOUNT AS TOTAL_AMOUNT,
ENDACCOUNT_STARTDATE AS STARTDATE,ENDACCOUNT_DATE AS ENDDATE,
SERVERPARTCODE || SHOPCODE || MACHINECODE || TO_CHAR(ENDACCOUNT_DATE,
'YYYYMMDDHH24MISS') AS ENDACCOUNT_CODE
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT
WHERE ENDACCOUNT_STATE = 1 AND SERVERPARTCODE || SHOPCODE || MACHINECODE
|| TO_CHAR(ENDACCOUNT_DATE,'YYYYMMDDHH24MISS') IN ('" +
_DataRow[0]["ENDACCOUNT_CODE"].ToString().Replace(",", "','") + "')";
}
_DataRow = CheckTable.Select("ENDACCOUNT_TYPE = 1");
if (_DataRow.Length > 0)
{
_UnionSql += @"
UNION ALL
SERVERPARTCODE,SHOPCODE,MACHINECODE,TOTAL_COUNT,
TICKET_COUNT,TOTAL_AMOUNT,STARTDATE,ENDDATE,ENDACCOUNT_CODE
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW
WHERE ENDACCOUNT_TYPE = 1 AND ENDACCOUNT_CODE IN ('" +
_DataRow[0]["ENDACCOUNT_CODE"].ToString().Replace(",", "','") + "')";
}
}
DataTable dataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(
@"SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE,TOTAL_COUNT,TYPES,
TICKET_COUNT,TOTAL_AMOUNT,STARTDATE,ENDDATE,ENDACCOUNT_CODE
FROM
(
SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE,TOTAL_COUNT,TICKET_COUNT,
TOTAL_AMOUNT,STARTDATE,ENDDATE,ENDACCOUNT_CODE,1 AS TYPES
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW
WHERE ENDDATE BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) - 1 AND ENDACCOUNT_TYPE = 1
UNION ALL
SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE,TOTALCOUNT AS TOTAL_COUNT,
TICKETCOUNT AS TICKET_COUNT,TOTALSELLAMOUNT AS TOTAL_AMOUNT,0 AS TYPES,
ENDACCOUNT_STARTDATE AS STARTDATE,ENDACCOUNT_DATE AS ENDDATE,
SERVERPARTCODE || SHOPCODE || MACHINECODE ||
TO_CHAR(ENDACCOUNT_DATE,'YYYYMMDDHH24MISS') AS ENDACCOUNT_CODE
FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT
WHERE ENDACCOUNT_DATE BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) - 1 AND ENDACCOUNT_STATE = 1
{0}
)", _UnionSql)).Tables[0];
string _StartDate = dataTable.Compute("MIN(STARTDATE)", "").ToString();
string _EndDate = dataTable.Compute("MAX(ENDDATE)", "").ToString();
DataTable _SaleDataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(
@"SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLDATA_DATE,FACTAMOUNT
FROM
(
SELECT
SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLDATA_DATE,FACTAMOUNT,0 AS TYPES
FROM
HIGHWAY_EXCHANGE.T_SELLDATA
WHERE
SELLDATA_DATE BETWEEN TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')
AND TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')
UNION ALL
SELECT
SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLMASTER_DATE AS SELLDATA_DATE,
SELLMASTER_AMOUNT AS FACTAMOUNT,1 AS TYPES
FROM
HIGHWAY_EXCHANGE.T_SELLMASTER
WHERE
SELLMASTER_DATE BETWEEN TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')
AND TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')
)", _StartDate, _EndDate)).Tables[0];
List<string> _SqlList = new List<string>();
_SqlList.Add("DELETE FROM HIGHWAY_EXCHANGE.T_ENDACCOUNTCHECK");
foreach (DataRow _DataRow in dataTable.Rows)
{
if (_DataRow["TYPES"].ToString() == "0")
{
decimal.TryParse(_DataRow["TOTAL_AMOUNT"].ToString(), out decimal TOTAL_AMOUNT);
decimal.TryParse(_SaleDataTable.Compute("SUM(FACTAMOUNT)", string.Format(
@"TYPES = 0 AND SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}'
AND SELLDATA_DATE BETWEEN '{3}' AND '{4}'",
_DataRow["SERVERPARTCODE"], _DataRow["SHOPCODE"], _DataRow["MACHINECODE"],
_DataRow["STARTDATE"], _DataRow["ENDDATE"])).ToString(), out decimal _FACTAMOUNT);
if (TOTAL_AMOUNT != _FACTAMOUNT)
{
_SqlList.Add(string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_ENDACCOUNTCHECK (
ENDACCOUNTCHECK_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE,ENDACCOUNT_DATE,ENDACCOUNT_TYPE)
VALUES (SEQ_ENDACCOUNTCHECK.NEXTVAL,'{0}','{1}','{2}',TO_DATE('{3}',
'YYYY/MM/DD HH24:MI:SS'),'{4}')", _DataRow["SERVERPARTCODE"],
_DataRow["SHOPCODE"], _DataRow["MACHINECODE"], _DataRow["ENDDATE"], _DataRow["TYPES"]));
}
}
else
{
decimal.TryParse(_DataRow["TOTAL_AMOUNT"].ToString(), out decimal TOTAL_AMOUNT);
decimal.TryParse(_SaleDataTable.Compute("SUM(FACTAMOUNT)", string.Format(
@"TYPES = 1 AND SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}'
AND SELLDATA_DATE BETWEEN '{3}' AND '{4}'",
_DataRow["SERVERPARTCODE"], _DataRow["SHOPCODE"], _DataRow["MACHINECODE"],
_DataRow["STARTDATE"], _DataRow["ENDDATE"])).ToString(), out decimal _FACTAMOUNT);
if (TOTAL_AMOUNT != _FACTAMOUNT)
{
_SqlList.Add(string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_ENDACCOUNTCHECK (
ENDACCOUNTCHECK_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE,ENDACCOUNT_DATE,ENDACCOUNT_TYPE)
VALUES (SEQ_ENDACCOUNTCHECK.NEXTVAL,'{0}','{1}','{2}',TO_DATE('{3}',
'YYYY/MM/DD HH24:MI:SS'),'{4}')", _DataRow["SERVERPARTCODE"],
_DataRow["SHOPCODE"], _DataRow["MACHINECODE"], _DataRow["ENDDATE"], _DataRow["TYPES"]));
}
}
}
try
{
_OracleHelper.ExecuteSqlTran(_SqlList);
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "流水校验失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("流水校验失败:" + ex.Message);
}
}
else
{
TransResultBeginInvoke(DateTime.Now, "流水校验启动失败,配置不完整!");
}
}
catch (Exception ex)
{
Transmission.SDK.LogHelper.WriteServiceLog("流水校验失败:" + ex.Message);
}
}
#endregion
}
}