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
{
///
/// MainWindow.xaml 的交互逻辑
///
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"];
///
/// 会员数据传输线程
///
ClientThread MSPClientThread = new ClientThread();
///
/// 会员数据传输配置
///
ConfigThread MSPConfigThread = null;
///
/// 经营数据传输线程
///
ClientThread HWSClientThread = new ClientThread();
///
/// 经营数据传输配置
///
ConfigThread HWSConfigThread = null;
///
/// 销售流水数据传输线程
///
ClientThread ExClientThread = new ClientThread();
///
/// 销售流水数据传输配置
///
ConfigThread ExConfigThread = null;
///
/// 传输客户端定时器
///
DispatcherTimer CilentTimer = new DispatcherTimer();
///
/// MOBILESERVICE_PLATFORM数据库连接类
///
Transmission.SDK.OracleHelper MSPOracle;
///
/// HIGHWAY_STORAGE数据库连接类
///
Transmission.SDK.OracleHelper HWSOracle;
///
/// HIGHWAY_EXCHANGE数据库连接类
///
Transmission.SDK.OracleHelper ExOracle;
///
/// 运行状态上报时间
///
DateTime StateUploadTime;
///
/// 运行状态上报线程
///
Thread StateUploadThread;
///
/// 运行日志记录
///
DataTable TransResultTable;
///
/// 是否首次执行
///
bool IsFirstRun = true;
///
/// 流水数据校验定时器
///
DispatcherTimer CheckTimer = new DispatcherTimer();
///
/// 流水数据校验线程
///
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 事件 -> 主窗体按钮事件
///
/// 主窗体按钮事件
///
///
///
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 事件 -> 主线程定时器
///
/// 主线程定时器
///
///
///
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 方法 -> 会员数据上传配置
///
/// 移动业务数据上传配置
///
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
{
"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 方法 -> 经营数据上传配置
///
/// 普通业务数据上传配置
///
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
{
"T_SERVERPARTSHOP",
"T_COMMODITYTYPE",
"T_COMMODITY",
"T_REVENUE",
"T_CHECK",
});
HWSClientThread.IsDownload(false);
try
{
HWSClientThread.setConfiguration($"{_HighwayStorageDataUrl}", "", "888888", "", "", "", "", 5, 10);
HWSClientThread.setConfigThread(HWSConfigThread);
}
catch (Exception ex)
{
TransResultBeginInvoke(DateTime.Now, "经营数据上传配置失败:" + ex.Message);
Transmission.SDK.LogHelper.WriteServiceLog("经营数据上传配置失败:" + ex.Message);
}
return true;
}
#endregion
#region 方法 -> 销售流水数据上传配置
///
/// 销售流水数据上传配置
///
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
{
"T_SALES",
"T_SALESDETAIL"
});
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 事件 -> 上传回调事件
///
/// 上传回调事件
///
///
///
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 });
}
///
/// 运行日志呈现
///
/// 日志时间
/// 日志内容
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;
}
///
/// 运行日志记录表结构
///
///
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 _SqlList = new List();
_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
}
}