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

1543 lines
87 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 Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace GetHttpData.SDK
{
public class ConcurrentThread
{
//上传
private static CancellationTokenSource _RunSellmasterCancell = null;
private static CancellationTokenSource _RunSelldetailsCancell = null;
private static CancellationTokenSource _RunCommoditysale_newCancell = null;
private static CancellationTokenSource _RunPersonsell_newCancell = null;
private static CancellationTokenSource _RunEndaccount_newCancell = null;
private static CancellationTokenSource _RunTransfer_saleCancell = null;
//下发
private static CancellationTokenSource _RunUserdefinedtypeCancell = null;
private static CancellationTokenSource _RunCommodityexCancell = null;
//上传
private static Thread _RunSellmasterThread = null;
private static Thread _RunSelldetailsThread = null;
private static Thread _RunCommoditysale_newThread = null;
private static Thread _RunPersonsell_newThread = null;
private static Thread _RunEndaccount_newThread = null;
private static Thread _RunTransfer_saleThread = null;
//下发
private static Thread _RunUserdefinedtypeThread = null;
private static Thread _RunCommodityexThread = null;
//--配置文件--//
private bool _IsUpload = false, _IsDownload = false;
private List<StartUpType> _StartUpTypes = null;
private List<StartDownType> _StartDownTypes = null;
private bool _IsUploadContinuousStart = false;
private string _IpAddress = null;
private string _CodeEndaccount = null;
private string _Serverpartcode = null;
private string _Serverpartshop_id = null;
private string _Machinecode = null;
private string _JsonString = null;
private string _InterfaceNameUpload = "UploadTableData";
private string _InterfaceNameDownload = "DownloadTableData";
#region ->
public ConcurrentThread()
{
return;
}
/// <summary>
/// 参数配置
/// </summary>
/// <param name="_IpAddress">接口地址</param>
/// <param name="_CodeEndaccount">授权码</param>
/// <param name="serverpartcode">服务区编码</param>
/// <param name="serverpartshop_id">门店ID</param>
/// <param name="machinecode">收银机编号</param>
/// <returns></returns>
public ConcurrentThread(string ipAddress, string codeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode)
{
//设置配置参数
setConfiguration(ipAddress, codeEndaccount, serverpartcode, serverpartshop_id, machinecode);
}
#endregion
#region ->
/// <summary>
/// 参数配置
/// </summary>
/// <param name="_IpAddress">接口地址</param>
/// <param name="_CodeEndaccount">授权码</param>
/// <param name="serverpartcode">服务区编码</param>
/// <param name="serverpartshop_id">门店ID</param>
/// <param name="machinecode">收银机编号</param>
/// <returns></returns>
public void setConfiguration(string ipAddress, string codeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode)
{
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrEmpty(codeEndaccount) ||
string.IsNullOrEmpty(serverpartcode) || string.IsNullOrEmpty(serverpartshop_id) ||
string.IsNullOrEmpty(machinecode))
{
//throw new Exception("接口地址、授权码、服务区编码、门店ID不可为空");
return;
}
_IpAddress = ipAddress;
_CodeEndaccount = codeEndaccount;
_Serverpartcode = serverpartcode;
_Serverpartshop_id = serverpartshop_id;
_Machinecode = machinecode;
_JsonString = "{SERVERPARTCODE:'" + serverpartcode +
"',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "'}";
}
#endregion
#region -> 线
/// <summary>
/// 是否开启上传线程
/// </summary>
/// <param name="isUpload">是否启动</param>
/// <param name="startType">默认所有</param>
/// <returns></returns>
public void IsUpload(bool isUpload = false, List<StartUpType> startUpTypes = null)
{
_IsUpload = isUpload;
_StartUpTypes = startUpTypes;
}
#endregion
#region -> 线
/// <summary>
/// 是否开启下发线程
/// </summary>
/// <param name="isDownload">是否启动</param>
/// <param name="startType">默认所有</param>
/// <returns></returns>
public void IsDownload(bool isDownload = false, List<StartDownType> startDownTypes = null)
{
_IsDownload = isDownload;
_StartDownTypes = startDownTypes;
}
#endregion
#region -> 线
/// <summary>
/// 是否开启上传线程持续执行
/// </summary>
/// <param name="isUploadContinuousStart">开启持续执行</param>
public void isUploadContinuousStart(bool isUploadContinuousStart = false)
{
_IsUploadContinuousStart = isUploadContinuousStart;
}
#endregion
#region -> 线
private void OpenThreadPoolMain()
{
#region 线
if (_IsUpload)
{
if (_StartUpTypes == null)
{
if (_RunSellmasterThread == null || !_RunSellmasterThread.IsAlive)
{
_RunSellmasterThread = new Thread(new ParameterizedThreadStart(delegate
{
RunSellmasterThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunSellmasterThread.IsBackground = true;
_RunSellmasterThread.Start();
}
if (_RunSelldetailsThread == null || !_RunSelldetailsThread.IsAlive)
{
_RunSelldetailsThread = new Thread(new ParameterizedThreadStart(delegate
{
RunSelldetailsThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunSelldetailsThread.IsBackground = true;
_RunSelldetailsThread.Start();
}
if (_RunCommoditysale_newThread == null || !_RunCommoditysale_newThread.IsAlive)
{
_RunCommoditysale_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunCommoditysale_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunCommoditysale_newThread.IsBackground = true;
_RunCommoditysale_newThread.Start();
}
if (_RunPersonsell_newThread == null || !_RunPersonsell_newThread.IsAlive)
{
_RunPersonsell_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunPersonsell_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunPersonsell_newThread.IsBackground = true;
_RunPersonsell_newThread.Start();
}
if (_RunEndaccount_newThread == null || !_RunEndaccount_newThread.IsAlive)
{
_RunEndaccount_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunEndaccount_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunEndaccount_newThread.IsBackground = true;
_RunEndaccount_newThread.Start();
}
if (_RunTransfer_saleThread == null || !_RunTransfer_saleThread.IsAlive)
{
_RunTransfer_saleThread = new Thread(new ParameterizedThreadStart(delegate
{
RunTransfer_saleThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunTransfer_saleThread.IsBackground = true;
_RunTransfer_saleThread.Start();
}
}
else
{
foreach (StartUpType _StartUpType in _StartUpTypes)
{
switch (_StartUpType)
{
case StartUpType.SELLMASTER:
if (_RunSellmasterThread == null || !_RunSellmasterThread.IsAlive)
{
_RunSellmasterThread = new Thread(new ParameterizedThreadStart(delegate
{
RunSellmasterThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunSellmasterThread.IsBackground = true;
_RunSellmasterThread.Start();
}
break;
case StartUpType.SELLDETAILS:
if (_RunSelldetailsThread == null || !_RunSelldetailsThread.IsAlive)
{
_RunSelldetailsThread = new Thread(new ParameterizedThreadStart(delegate
{
RunSelldetailsThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunSelldetailsThread.IsBackground = true;
_RunSelldetailsThread.Start();
}
break;
case StartUpType.COMMODITYSALE_NEW:
if (_RunCommoditysale_newThread == null || !_RunCommoditysale_newThread.IsAlive)
{
_RunCommoditysale_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunCommoditysale_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunCommoditysale_newThread.IsBackground = true;
_RunCommoditysale_newThread.Start();
}
break;
case StartUpType.PERSONSELL_NEW:
if (_RunPersonsell_newThread == null || !_RunPersonsell_newThread.IsAlive)
{
_RunPersonsell_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunPersonsell_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunPersonsell_newThread.IsBackground = true;
_RunPersonsell_newThread.Start();
}
break;
case StartUpType.ENDACCOUNT_NEW:
if (_RunEndaccount_newThread == null || !_RunEndaccount_newThread.IsAlive)
{
_RunEndaccount_newThread = new Thread(new ParameterizedThreadStart(delegate
{
RunEndaccount_newThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunEndaccount_newThread.IsBackground = true;
_RunEndaccount_newThread.Start();
}
break;
case StartUpType.TRANSFER_SALE:
if (_RunTransfer_saleThread == null || !_RunTransfer_saleThread.IsAlive)
{
_RunTransfer_saleThread = new Thread(new ParameterizedThreadStart(delegate
{
RunTransfer_saleThread(_IpAddress, _InterfaceNameUpload, _CodeEndaccount,
_Serverpartcode, _Serverpartshop_id, _Machinecode, _IsUploadContinuousStart);
}));
_RunTransfer_saleThread.IsBackground = true;
_RunTransfer_saleThread.Start();
}
break;
}
}
}
}
#endregion
#region 线
if (_IsDownload)
{
if (_StartDownTypes == null)
{
if (_RunUserdefinedtypeThread == null || !_RunUserdefinedtypeThread.IsAlive)
{
_RunUserdefinedtypeThread = new Thread(new ParameterizedThreadStart(delegate
{
RunUserdefinedtypeThread(_IpAddress, _InterfaceNameDownload, _CodeEndaccount, _JsonString);
}));
_RunUserdefinedtypeThread.IsBackground = true;
_RunUserdefinedtypeThread.Start();
}
if (_RunCommodityexThread == null || !_RunCommodityexThread.IsAlive)
{
_RunCommodityexThread = new Thread(new ParameterizedThreadStart(delegate
{
RunCommodityexThread(_IpAddress, _InterfaceNameDownload, _CodeEndaccount, _JsonString);
}));
_RunCommodityexThread.IsBackground = true;
_RunCommodityexThread.Start();
}
}
else
{
foreach (StartDownType _StartDownType in _StartDownTypes)
{
switch (_StartDownType)
{
case StartDownType.USERDEFINEDTYPE:
if (_RunUserdefinedtypeThread == null || !_RunUserdefinedtypeThread.IsAlive)
{
_RunUserdefinedtypeThread = new Thread(new ParameterizedThreadStart(delegate
{
RunUserdefinedtypeThread(_IpAddress, _InterfaceNameDownload, _CodeEndaccount, _JsonString);
}));
_RunUserdefinedtypeThread.IsBackground = true;
_RunUserdefinedtypeThread.Start();
}
break;
case StartDownType.COMMODITYEX:
if (_RunCommodityexThread == null || !_RunCommodityexThread.IsAlive)
{
_RunCommodityexThread = new Thread(new ParameterizedThreadStart(delegate
{
RunCommodityexThread(_IpAddress, _InterfaceNameDownload, _CodeEndaccount, _JsonString);
}));
_RunCommodityexThread.IsBackground = true;
_RunCommodityexThread.Start();
}
break;
}
}
}
}
#endregion
}
#endregion
#region -> 线
#region HIGHWAY_EXCHANGE.T_SELLMASTER
static void RunSellmasterThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
//耗时监听
Stopwatch sw = new Stopwatch();
sw.Start();
_RunSellmasterCancell = new CancellationTokenSource();
while (true)
{
if (_RunSellmasterCancell != null && _RunSellmasterCancell.Token.IsCancellationRequested)
{
//退出线程
_RunSellmasterCancell.Dispose();
_RunSellmasterCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc(
"SELECT * FROM T_SELLMASTER WHERE TRANSFER_STATE = 0 AND SELLMASTER_CODE IS NOT NULL AND SELLMASTER_DATE IS NOT NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
//最早操作时间
string _EndDate = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
try
{
if (string.IsNullOrEmpty(_EndDate))
{
DateTime.Parse(dr["SELLMASTER_DATE"].ToString());
_EndDate = dr["SELLMASTER_DATE"].ToString();
}
else
{
if (DateTime.Parse(_EndDate) > DateTime.Parse(dr["SELLMASTER_DATE"].ToString()))
{
_EndDate = dr["SELLMASTER_DATE"].ToString();
}
}
}
catch { }
}
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_SELLMASTER", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:'" + _EndDate + "'}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
string _SELLMASTER_CODEStr = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
_SELLMASTER_CODEStr += (string.IsNullOrEmpty(_SELLMASTER_CODEStr) ? "" : ",") +
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SELLMASTER_CODE"].ToString());
}
if (!string.IsNullOrEmpty(_SELLMASTER_CODEStr))
{
string sqlString = string.Format("UPDATE T_SELLMASTER SET TRANSFER_STATE = 1 WHERE SELLMASTER_CODE IN({0})", _SELLMASTER_CODEStr);
DBHelper.ExecuteSqlTran(new List<string> { sqlString });
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
sw.Stop();
System.Diagnostics.Debug.WriteLine(sw.Elapsed, "RunCommoditysale_newThread");
}
#endregion
#region HIGHWAY_EXCHANGE.T_SELLDETAILS
static void RunSelldetailsThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
_RunSelldetailsCancell = new CancellationTokenSource();
while (true)
{
if (_RunSelldetailsCancell != null && _RunSelldetailsCancell.Token.IsCancellationRequested)
{
//退出线程
_RunSelldetailsCancell.Dispose();
_RunSelldetailsCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc("SELECT * FROM T_SELLDETAILS WHERE TRANSFER_STATE = 0 AND SELLMASTER_CODE IS NOT NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_SELLDETAILS", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:''}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
string _SELLMASTER_CODEStr = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
_SELLMASTER_CODEStr += (string.IsNullOrEmpty(_SELLMASTER_CODEStr) ? "" : ",") +
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SELLMASTER_CODE"].ToString());
}
if (!string.IsNullOrEmpty(_SELLMASTER_CODEStr))
{
string sqlString = string.Format("UPDATE T_SELLDETAILS SET TRANSFER_STATE = 1 WHERE SELLMASTER_CODE IN({0})", _SELLMASTER_CODEStr);
DBHelper.ExecuteSqlTran(new List<string> { sqlString });
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
}
#endregion
#region HIGHWAY_EXCHANGE.T_COMMODITYSALE_NEW
static void RunCommoditysale_newThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
//耗时监听
Stopwatch sw = new Stopwatch();
sw.Start();
_RunCommoditysale_newCancell = new CancellationTokenSource();
while (true)
{
if (_RunCommoditysale_newCancell != null && _RunCommoditysale_newCancell.Token.IsCancellationRequested)
{
//退出线程
_RunCommoditysale_newCancell.Dispose();
_RunCommoditysale_newCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc("SELECT * FROM T_COMMODITYSALE_NEW WHERE TRANSFER_STATE = 0 AND ENDACCOUNT_CODE IS NOT NULL ").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_COMMODITYSALE_NEW", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:''}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
string _ENDACCOUNT_CODEStr = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
_ENDACCOUNT_CODEStr += (string.IsNullOrEmpty(_ENDACCOUNT_CODEStr) ? "" : ",") +
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["ENDACCOUNT_CODE"].ToString());
}
if (!string.IsNullOrEmpty(_ENDACCOUNT_CODEStr))
{
string sqlString = string.Format("UPDATE T_COMMODITYSALE_NEW SET TRANSFER_STATE = 1 WHERE ENDACCOUNT_CODE IN({0})", _ENDACCOUNT_CODEStr);
DBHelper.ExecuteSqlTran(new List<string> { sqlString });
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
sw.Stop();
System.Diagnostics.Debug.WriteLine(sw.Elapsed, "RunCommoditysale_newThread");
}
#endregion
#region HIGHWAY_EXCHANGE.T_PERSONSELL_NEW
static void RunPersonsell_newThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
_RunPersonsell_newCancell = new CancellationTokenSource();
while (true)
{
if (_RunPersonsell_newCancell != null && _RunPersonsell_newCancell.Token.IsCancellationRequested)
{
//退出线程
_RunPersonsell_newCancell.Dispose();
_RunPersonsell_newCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc(
"SELECT * FROM T_PERSONSELL_NEW WHERE TRANSFER_STATE = 0 AND ENDDATE IS NOT NULL AND ENDACCOUNT_CODE IS NOT NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
//最早操作时间
string _EndDate = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
try
{
if (string.IsNullOrEmpty(_EndDate))
{
DateTime.Parse(dr["ENDDATE"].ToString());
_EndDate = dr["ENDDATE"].ToString();
}
else
{
if (DateTime.Parse(_EndDate) > DateTime.Parse(dr["ENDDATE"].ToString()))
{
_EndDate = dr["ENDDATE"].ToString();
}
}
}
catch { }
}
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_PERSONSELL_NEW", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:'" + _EndDate + "'}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()) || "2".Equals(_JObject.Property("error").Value.ToString()))
{
if (_JObject.Property("rows") != null)
{
JArray _JsonArray = JArray.Parse(_JObject.Property("rows").Value.ToString());
string[] _ENDACCOUNT_CODES = new string[_JsonArray.Count];
for (int j = 0; j < _JsonArray.Count; j++)
{
JObject _Json = JObject.Parse(_JsonArray[i].ToString());
if (_Json.Property("ENDACCOUNT_CODE") != null)
{
_ENDACCOUNT_CODES[j] += _Json.Property("ENDACCOUNT_CODE").Value.ToString();
}
}
bool falg = true;
string _ENDACCOUNT_CODEStr = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
falg = true;
if ("2".Equals(_JObject.Property("error").Value.ToString()))
{
//不更新失败的
for (int z = 0; z < _ENDACCOUNT_CODES.Length; z++)
{
if (_ENDACCOUNT_CODES[z] != null && _ENDACCOUNT_CODES[z].Contains(dr["ENDACCOUNT_CODE"].ToString()))
{
falg = false;
break;
}
}
}
if (falg)
{
//更新
_ENDACCOUNT_CODEStr += (string.IsNullOrEmpty(_ENDACCOUNT_CODEStr) ? "" : ",") +
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["ENDACCOUNT_CODE"].ToString());
}
}
if (!string.IsNullOrEmpty(_ENDACCOUNT_CODEStr))
{
//更新
string sqlString = string.Format(
"UPDATE T_PERSONSELL_NEW SET TRANSFER_STATE = 1 WHERE ENDACCOUNT_CODE IN({0})", _ENDACCOUNT_CODEStr);
DBHelper.ExecuteSqlTran(new List<string> { sqlString });
}
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
}
#endregion
#region HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW
static void RunEndaccount_newThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
_RunEndaccount_newCancell = new CancellationTokenSource();
while (true)
{
if (_RunEndaccount_newCancell != null && _RunEndaccount_newCancell.Token.IsCancellationRequested)
{
//退出线程
_RunEndaccount_newCancell.Dispose();
_RunEndaccount_newCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc(
"SELECT * FROM T_ENDACCOUNT_NEW WHERE TRANSFER_STATE = 0 AND ENDDATE IS NOT NULL AND ENDACCOUNT_CODE IS NOT NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
//最早操作时间
string _EndDate = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
try
{
if (string.IsNullOrEmpty(_EndDate))
{
DateTime.Parse(dr["ENDDATE"].ToString());
_EndDate = dr["ENDDATE"].ToString();
}
else
{
if (DateTime.Parse(_EndDate) > DateTime.Parse(dr["ENDDATE"].ToString()))
{
_EndDate = dr["ENDDATE"].ToString();
}
}
}
catch { }
}
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:'" + _EndDate + "'}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()) || "2".Equals(_JObject.Property("error").Value.ToString()))
{
if (_JObject.Property("rows") != null)
{
JArray _JsonArray = JArray.Parse(_JObject.Property("rows").Value.ToString());
string[] _ENDACCOUNT_CODES = new string[_JsonArray.Count];
for (int j = 0; j < _JsonArray.Count; j++)
{
JObject _Json = JObject.Parse(_JsonArray[i].ToString());
if (_Json.Property("ENDACCOUNT_CODE") != null)
{
_ENDACCOUNT_CODES[j] += _Json.Property("ENDACCOUNT_CODE").Value.ToString();
}
}
bool falg = true;
string _ENDACCOUNT_CODEStr = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
falg = true;
if ("2".Equals(_JObject.Property("error").Value.ToString()))
{
//不更新失败的
for (int z = 0; z < _ENDACCOUNT_CODES.Length; z++)
{
if (_ENDACCOUNT_CODES[z] != null && _ENDACCOUNT_CODES[z].Contains(dr["ENDACCOUNT_CODE"].ToString()))
{
falg = false;
break;
}
}
}
if (falg)
{
//更新
_ENDACCOUNT_CODEStr += (string.IsNullOrEmpty(_ENDACCOUNT_CODEStr) ? "" : ",") +
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["ENDACCOUNT_CODE"].ToString());
}
}
if (!string.IsNullOrEmpty(_ENDACCOUNT_CODEStr))
{
//更新
string sqlString = string.Format(
"UPDATE T_ENDACCOUNT_NEW SET TRANSFER_STATE = 1 WHERE ENDACCOUNT_CODE IN({0})", _ENDACCOUNT_CODEStr);
DBHelper.ExecuteSqlTran(new List<string> { sqlString });
}
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
}
#endregion
#region HIGHWAY_EXCHANGE.T_TRANSFER_SALE
static void RunTransfer_saleThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount,
string serverpartcode, string serverpartshop_id, string machinecode, bool _IsContinuousStart = false)
{
_RunTransfer_saleCancell = new CancellationTokenSource();
while (true)
{
if (_RunTransfer_saleCancell != null && _RunTransfer_saleCancell.Token.IsCancellationRequested)
{
//退出线程
_RunTransfer_saleCancell.Dispose();
_RunTransfer_saleCancell = null;
return;
}
else
{
try
{
DataTable _DataTable = DBHelper.QueryOdbc(@"SELECT * FROM T_TRANSFER_SALE WHERE
TRANSFER_STATE = 0 AND TRANSFER_TWELFTHDATAS IS NOT NULL AND TRANSFER_ID IS NOT NULL AND ENDDATE IS NOT NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
DataSet _DataSet = SplitDataTable(_DataTable, 400);
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
try
{
if (_DataSet.Tables[i].Rows.Count > 0)
{
//最早操作时间
string _EndDate = string.Empty;
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
try
{
if (string.IsNullOrEmpty(_EndDate))
{
DateTime.Parse(dr["ENDDATE"].ToString());
_EndDate = dr["ENDDATE"].ToString();
}
else
{
if (DateTime.Parse(_EndDate) > DateTime.Parse(dr["ENDDATE"].ToString()))
{
_EndDate = dr["ENDDATE"].ToString();
}
}
}
catch { }
}
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_TRANSFER_SALE", _CodeEndaccount, JsonHelper.DataTableToJson(_DataSet.Tables[i]),
"{SERVERPARTCODE:'" + serverpartcode + "',SERVERPARTSHOP_ID:'" + serverpartshop_id +
"',MACHINECODE:'" + machinecode + "',ENDDATE:'" + _EndDate + "'}");
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
List<string> _list = new List<string>();
foreach (DataRow dr in _DataSet.Tables[i].Rows)
{
//更新
_list.Add(string.Format(@"UPDATE T_TRANSFER_SALE SET TRANSFER_STATE = 1 WHERE
TRANSFER_ID = {0} AND TRANSFER_TWELFTHDATAS = {1}",
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["TRANSFER_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["TRANSFER_TWELFTHDATAS"].ToString())));
}
if (_list.Count > 0)
{
DBHelper.ExecuteSqlTran(_list);
}
}
}
}
}
catch { }
}
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
if (!_IsContinuousStart) break;
}
}
#endregion
#endregion
#region -> 线
#region HIGHWAY_EXCHANGE.T_USERDEFINEDTYPE
static void RunUserdefinedtypeThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount, string _JsonString = "")
{
_RunUserdefinedtypeCancell = new CancellationTokenSource();
while (true)
{
if (_RunUserdefinedtypeCancell != null && _RunUserdefinedtypeCancell.Token.IsCancellationRequested)
{
//退出线程
_RunUserdefinedtypeCancell.Dispose();
_RunUserdefinedtypeCancell = null;
return;
}
else
{
try
{
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_USERDEFINEDTYPE", _CodeEndaccount, _JsonString);
if (!string.IsNullOrEmpty(_DataBack))
{
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null && _JObject.Property("msg") != null && _JObject.Property("rows") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
DataSet _DataSet = JsonHelper.JsonToDataSet(_JObject.Property("rows").Value.ToString());
DataSet _Data = DBHelper.QueryOdbc("SELECT * FROM T_USERDEFINEDTYPE");
List<string> _list = new List<string>();
foreach (DataRow dr in _DataSet.Tables[0].Rows)
{
DataRow[] _DataRows = _Data.Tables[0].Select(
string.Format(" SERVERPARTCODE = '{0}' AND SERVERPARTSHOP_ID = {1} AND USERDEFINEDTYPE_ID = {2}",
dr["SERVERPARTCODE"], dr["SERVERPARTSHOP_ID"], dr["USERDEFINEDTYPE_ID"]));
if (_DataRows != null && _DataRows.Length > 0)
{
if (
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["USERDEFINEDTYPE_ID"], dr["USERDEFINEDTYPE_ID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["USERDEFINEDTYPE_PID"], dr["USERDEFINEDTYPE_PID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["USERDEFINEDTYPE_NAME"], dr["USERDEFINEDTYPE_NAME"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["SERVERPARTCODE"], dr["SERVERPARTCODE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["SERVERPARTSHOP_ID"], dr["SERVERPARTSHOP_ID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["BUSINESSTYPE"], dr["BUSINESSTYPE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.DateTime, _DataRows[0]["USERDEFINEDTYPE_DATE"], dr["USERDEFINEDTYPE_DATE"])
)
{
//数据相同不更新
break;
}
//更新
_list.Add(string.Format(@"UPDATE T_USERDEFINEDTYPE SET
USERDEFINEDTYPE_ID = {0},USERDEFINEDTYPE_PID = {1},
USERDEFINEDTYPE_NAME = {2},SERVERPARTCODE = {3},
SERVERPARTSHOP_ID = {4},BUSINESSTYPE = {5},
USERDEFINEDTYPE_DATE = {6},TRANSFER_STATE = 1
WHERE USERDEFINEDTYPE_ID = {0} AND SERVERPARTCODE = {3} AND SERVERPARTSHOP_ID = {4}",
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_PID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["USERDEFINEDTYPE_NAME"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SERVERPARTCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["SERVERPARTSHOP_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["BUSINESSTYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.DateTime, dr["USERDEFINEDTYPE_DATE"].ToString())));
}
else
{
//增加
_list.Add(string.Format(@"INSERT INTO T_USERDEFINEDTYPE(USERDEFINEDTYPE_ID,
USERDEFINEDTYPE_PID,USERDEFINEDTYPE_NAME,SERVERPARTCODE,SERVERPARTSHOP_ID,
BUSINESSTYPE,USERDEFINEDTYPE_DATE,TRANSFER_STATE) VALUES({0},{1},{2},{3},{4},{5},{6},1)",
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_PID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["USERDEFINEDTYPE_NAME"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SERVERPARTCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["SERVERPARTSHOP_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["BUSINESSTYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.DateTime, dr["USERDEFINEDTYPE_DATE"].ToString())));
}
}
if (_list.Count > 0)
{
DBHelper.ExecuteSqlTran(_list);
}
//正常
return;
}
}
}
//错误
return;
}
catch (Exception ex)
{
//错误
ex.ToString();
return;
}
}
}
}
#endregion
#region HIGHWAY_EXCHANGE.T_COMMODITYEX
static void RunCommodityexThread(string _IpAddress, string _InterfaceName, string _CodeEndaccount, string _JsonString = "")
{
_RunCommodityexCancell = new CancellationTokenSource();
while (true)
{
if (_RunCommodityexCancell != null && _RunCommodityexCancell.Token.IsCancellationRequested)
{
//退出线程
_RunCommodityexCancell.Dispose();
_RunCommodityexCancell = null;
return;
}
else
{
try
{
string _DataBack = HttpDataHelper.InsertDataByJson(_IpAddress, _InterfaceName,
"HIGHWAY_EXCHANGE.T_COMMODITYEX", _CodeEndaccount, _JsonString);
if (!string.IsNullOrEmpty(_DataBack))
{
JObject _JObject = JObject.Parse(_DataBack);
if (_JObject.Property("error") != null && _JObject.Property("msg") != null && _JObject.Property("rows") != null)
{
if ("1".Equals(_JObject.Property("error").Value.ToString()))
{
DataSet _DataSet = JsonHelper.JsonToDataSet(_JObject.Property("rows").Value.ToString());
DataSet _Data = DBHelper.QueryOdbc("SELECT * FROM T_COMMODITYEX");
List<string> _list = new List<string>();
foreach (DataRow dr in _DataSet.Tables[0].Rows)
{
DataRow[] _DataRows = _Data.Tables[0].Select(
string.Format(" SERVERPARTCODE = '{0}' AND SERVERPARTSHOP_ID = {1} AND COMMODITYEX_ID = {2}",
dr["SERVERPARTCODE"], dr["SERVERPARTSHOP_ID"], dr["COMMODITYEX_ID"]));
if (_DataRows != null && _DataRows.Length > 0)
{
if (
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["COMMODITYEX_ID"], dr["COMMODITYEX_ID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["SERVERPARTCODE"], dr["SERVERPARTCODE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_TYPE"], dr["COMMODITY_TYPE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_CODE"], dr["COMMODITY_CODE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_BARCODE"], dr["COMMODITY_BARCODE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_NAME"], dr["COMMODITY_NAME"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_RULE"], dr["COMMODITY_RULE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_UNIT"], dr["COMMODITY_UNIT"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["COMMODITY_RETAILPRICE"], dr["COMMODITY_RETAILPRICE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["COMMODITY_MEMBERPRICE"], dr["COMMODITY_MEMBERPRICE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["CANCHANGEPRICE"], dr["CANCHANGEPRICE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["ISVALID"], dr["ISVALID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_EN"], dr["COMMODITY_EN"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["ISBULK"], dr["ISBULK"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["METERINGMETHOD"], dr["METERINGMETHOD"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.DateTime, _DataRows[0]["DOWNLOADDATE"], dr["DOWNLOADDATE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["FLAG"], dr["FLAG"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["BUSINESSTYPE"], dr["BUSINESSTYPE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["SERVERPARTSHOP_ID"], dr["SERVERPARTSHOP_ID"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["PRINT_DATE"], dr["PRINT_DATE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["CONTAINER_CODE"], dr["CONTAINER_CODE"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.String, _DataRows[0]["COMMODITY_SYMBOL"], dr["COMMODITY_SYMBOL"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["COMMODITY_HOTKEY"], dr["COMMODITY_HOTKEY"]) &&
DataCheckHelper.IsCheckValue(DataCheckHelper.CheckType.Decimal, _DataRows[0]["USERDEFINEDTYPE_ID"], dr["USERDEFINEDTYPE_ID"])
)
{
//数据相同不更新
break;
}
//更新
_list.Add(string.Format(@"UPDATE T_COMMODITYEX SET
COMMODITYEX_ID = {0},SERVERPARTCODE = {1},
COMMODITY_TYPE = {2},COMMODITY_CODE = {3},
COMMODITY_BARCODE = {4},COMMODITY_NAME = {5},
COMMODITY_RULE = {6},COMMODITY_UNIT = {7},
COMMODITY_RETAILPRICE = {8},COMMODITY_MEMBERPRICE = {9},
CANCHANGEPRICE = {10},ISVALID = {11},
COMMODITY_EN = {12},ISBULK = {13},
METERINGMETHOD = {14},DOWNLOADDATE = {15},
FLAG = {16},BUSINESSTYPE = {17},
SERVERPARTSHOP_ID = {18},PRINT_DATE = {19},
CONTAINER_CODE = {20},COMMODITY_SYMBOL = {21},
COMMODITY_HOTKEY = {22},USERDEFINEDTYPE_ID = {23},
TRANSFER_STATE = 1
WHERE COMMODITYEX_ID = {0} AND SERVERPARTCODE = {1} AND SERVERPARTSHOP_ID = {18}",
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITYEX_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SERVERPARTCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_TYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_CODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_BARCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_NAME"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_RULE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_UNIT"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_RETAILPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_MEMBERPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["CANCHANGEPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["ISVALID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_EN"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["ISBULK"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["METERINGMETHOD"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.DateTime, dr["DOWNLOADDATE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["FLAG"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["BUSINESSTYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["SERVERPARTSHOP_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["PRINT_DATE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["CONTAINER_CODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_SYMBOL"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_HOTKEY"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_ID"].ToString())));
}
else
{
//增加
_list.Add(string.Format(@"INSERT INTO T_COMMODITYEX(
COMMODITYEX_ID,SERVERPARTCODE,
COMMODITY_TYPE,COMMODITY_CODE,
COMMODITY_BARCODE,COMMODITY_NAME,
COMMODITY_RULE,COMMODITY_UNIT,
COMMODITY_RETAILPRICE,COMMODITY_MEMBERPRICE,
CANCHANGEPRICE,ISVALID,
COMMODITY_EN,ISBULK,
METERINGMETHOD,DOWNLOADDATE,
FLAG,BUSINESSTYPE,
SERVERPARTSHOP_ID,PRINT_DATE,
CONTAINER_CODE,COMMODITY_SYMBOL,
COMMODITY_HOTKEY,USERDEFINEDTYPE_ID,
TRANSFER_STATE)
VALUES({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},
{16},{17},{18},{19},{20},{21},{22},{23},1)",
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITYEX_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["SERVERPARTCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_TYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_CODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_BARCODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_NAME"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_RULE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_UNIT"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_RETAILPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_MEMBERPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["CANCHANGEPRICE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["ISVALID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_EN"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["ISBULK"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["METERINGMETHOD"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.DateTime, dr["DOWNLOADDATE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["FLAG"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["BUSINESSTYPE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["SERVERPARTSHOP_ID"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["PRINT_DATE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["CONTAINER_CODE"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.String, dr["COMMODITY_SYMBOL"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["COMMODITY_HOTKEY"].ToString()),
DataCheckHelper.IsArrayType(DataCheckHelper.ValueType.Int, dr["USERDEFINEDTYPE_ID"].ToString())));
}
}
if (_list.Count > 0)
{
DBHelper.ExecuteSqlTran(_list);
}
//正常
return;
}
}
}
//错误
return;
}
catch (Exception ex)
{
//错误
ex.ToString();
return;
}
}
}
}
#endregion
#region HIGHWAY_EXCHANGE.T_ICCARDINFO
#endregion
#endregion
#region ->
/// <summary>
/// 分解数据表
/// </summary>
/// <param name="originalTab">需要分解的表</param>
/// <param name="rowsNum">每个表包含的数据量</param>
/// <returns></returns>
private static DataSet SplitDataTable(DataTable originalTab, int rowsNum)
{
//获取所需创建的表数量
int tableNum = (int)Math.Ceiling((decimal)originalTab.Rows.Count / rowsNum);
//获取数据余数
int remainder = originalTab.Rows.Count % rowsNum;
DataSet ds = new DataSet();
//如果只需要创建1个表直接将原始表存入DataSet
//if (originalTab.Rows.Count <= rowsNum)
//{
// ds.Tables.Add(originalTab);
//}
//else
//{
DataTable[] tableSlice = new DataTable[tableNum];
//Save orginal columns into new table.
for (int c = 0; c < tableNum; c++)
{
tableSlice[c] = originalTab.Clone();
tableSlice[c].TableName = originalTab.TableName + c.ToString();
}
//Import Rows
for (int i = 0; i < tableNum; i++)
{
// if the current table is not the last one
//if (i != tableNum - 1)
//{
for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
{
if (j >= originalTab.Rows.Count)
{
break;
}
tableSlice[i].ImportRow(originalTab.Rows[j]);
}
//}
//else
//{
// for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
// {
// tableSlice[i].ImportRow(originalTab.Rows[k]);
// }
//}
}
//add all tables into a dataset
foreach (DataTable dt in tableSlice)
{
ds.Tables.Add(dt);
}
//}
return ds;
}
#endregion
#region ->
private bool ConnectState(string ConnectUrl)
{
try
{
// Creates an HttpWebRequest for the specified URL.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(ConnectUrl);
// 有些网站会阻止程序访问,需要加入下面这句
myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
myHttpWebRequest.Method = "GET";
// Sends the HttpWebRequest and waits for a response.
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
myHttpWebResponse.Close();
return true;
}
else
{
myHttpWebResponse.Close();
return false;
}
// Releases the resources of the response.
}
catch
{
return false;
}
}
#endregion
#region ->
public enum StopType
{
STOP_ALL = 0,
SELLMASTER = 1,
SELLDETAILS = 2,
COMMODITYSALE_NEW = 3,
PERSONSELL_NEW = 4,
ENDACCOUNT_NEW = 5,
TRANSFER_SALE = 6,
USERDEFINEDTYPE = 7,
COMMODITYEX = 8
}
#endregion
#region ->
public enum StartUpType
{
//START_ALL = 0,
SELLMASTER = 1,
SELLDETAILS = 2,
COMMODITYSALE_NEW = 3,
PERSONSELL_NEW = 4,
ENDACCOUNT_NEW = 5,
TRANSFER_SALE = 6
}
#endregion
#region ->
public enum StartDownType
{
//START_ALL = 0,
USERDEFINEDTYPE = 1,
COMMODITYEX = 2
}
#endregion
#region -> 线
/// <summary>
/// 启动线程
/// </summary>
/// <returns></returns>
public bool onState()
{
if (!string.IsNullOrEmpty(_IpAddress) && !string.IsNullOrEmpty(_InterfaceNameUpload) &&
!string.IsNullOrEmpty(_InterfaceNameDownload) && !string.IsNullOrEmpty(_CodeEndaccount) &&
!string.IsNullOrEmpty(_JsonString))
{
try
{
//检查网络是否畅通
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
byte[] buffer = Encoding.ASCII.GetBytes("");
int timeout = 1000;
PingReply reply = pingSender.Send(_IpAddress.Split(":")[0], timeout, buffer, options);
if (reply.Status == IPStatus.Success || ConnectState(_IpAddress.Split(":")[0]))
{
OpenThreadPoolMain();
return true;
}
}
catch { }
}
return false;
}
#endregion
#region -> 线
/// <summary>
/// 停止线程
/// </summary>
/// <param name="_StopType"></param>
/// <returns></returns>
public void onStop(StopType _StopType = StopType.STOP_ALL)
{
#region 退线
switch (_StopType)
{
case StopType.SELLMASTER:
if (_RunSellmasterCancell != null)
{
_RunSellmasterCancell.Cancel();
}
break;
case StopType.SELLDETAILS:
if (_RunSelldetailsCancell != null)
{
_RunSelldetailsCancell.Cancel();
}
break;
case StopType.COMMODITYSALE_NEW:
if (_RunCommoditysale_newCancell != null)
{
_RunCommoditysale_newCancell.Cancel();
}
break;
case StopType.PERSONSELL_NEW:
if (_RunPersonsell_newCancell != null)
{
_RunPersonsell_newCancell.Cancel();
}
break;
case StopType.ENDACCOUNT_NEW:
if (_RunEndaccount_newCancell != null)
{
_RunEndaccount_newCancell.Cancel();
}
break;
case StopType.TRANSFER_SALE:
if (_RunTransfer_saleCancell != null)
{
_RunTransfer_saleCancell.Cancel();
}
break;
case StopType.USERDEFINEDTYPE:
if (_RunUserdefinedtypeCancell != null)
{
_RunUserdefinedtypeCancell.Cancel();
}
break;
case StopType.COMMODITYEX:
if (_RunCommodityexCancell != null)
{
_RunCommodityexCancell.Cancel();
}
break;
default:
if (_RunSellmasterCancell != null)
{
_RunSellmasterCancell.Cancel();
}
if (_RunSelldetailsCancell != null)
{
_RunSelldetailsCancell.Cancel();
}
if (_RunCommoditysale_newCancell != null)
{
_RunCommoditysale_newCancell.Cancel();
}
if (_RunPersonsell_newCancell != null)
{
_RunPersonsell_newCancell.Cancel();
}
if (_RunEndaccount_newCancell != null)
{
_RunEndaccount_newCancell.Cancel();
}
if (_RunTransfer_saleCancell != null)
{
_RunTransfer_saleCancell.Cancel();
}
if (_RunUserdefinedtypeCancell != null)
{
_RunUserdefinedtypeCancell.Cancel();
}
if (_RunCommodityexCancell != null)
{
_RunCommodityexCancell.Cancel();
}
break;
}
#endregion
}
#endregion
}
}