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; using Lib = ESSupport.Lib; 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 _StartUpTypes = null; private List _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; } /// /// 参数配置 /// /// 接口地址 /// 授权码 /// 服务区编码 /// 门店ID /// 收银机编号 /// public ConcurrentThread(string ipAddress, string codeEndaccount, string serverpartcode, string serverpartshop_id, string machinecode) { //设置配置参数 setConfiguration(ipAddress, codeEndaccount, serverpartcode, serverpartshop_id, machinecode); } #endregion #region 方法 -> 设置配置参数 /// /// 参数配置 /// /// 接口地址 /// 授权码 /// 服务区编码 /// 门店ID /// 收银机编号 /// 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 方法 -> 是否开启上传线程 /// /// 是否开启上传线程 /// /// 是否启动 /// 默认所有 /// public void IsUpload(bool isUpload = false, List startUpTypes = null) { _IsUpload = isUpload; _StartUpTypes = startUpTypes; } #endregion #region 方法 -> 是否开启下发线程 /// /// 是否开启下发线程 /// /// 是否启动 /// 默认所有 /// public void IsDownload(bool isDownload = false, List startDownTypes = null) { _IsDownload = isDownload; _StartDownTypes = startDownTypes; } #endregion #region 方法 -> 是否开启上传线程持续执行 /// /// 是否开启上传线程持续执行 /// /// 开启持续执行 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 = Lib.SyBaseHelper.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); Lib.SyBaseHelper.ExecuteSqlTran(new List { 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 = Lib.SyBaseHelper.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); Lib.SyBaseHelper.ExecuteSqlTran(new List { 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 = Lib.SyBaseHelper.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); Lib.SyBaseHelper.ExecuteSqlTran(new List { 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 = Lib.SyBaseHelper.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); Lib.SyBaseHelper.ExecuteSqlTran(new List { 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 = Lib.SyBaseHelper.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); Lib.SyBaseHelper.ExecuteSqlTran(new List { 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 = Lib.SyBaseHelper.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 _list = new List(); 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) { Lib.SyBaseHelper.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 = Lib.SyBaseHelper.QueryOdbc("SELECT * FROM T_USERDEFINEDTYPE"); List _list = new List(); 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) { Lib.SyBaseHelper.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 = Lib.SyBaseHelper.QueryOdbc("SELECT * FROM T_COMMODITYEX"); List _list = new List(); 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) { Lib.SyBaseHelper.ExecuteSqlTran(_list); } //正常 return; } } } //错误 return; } catch (Exception ex) { //错误 ex.ToString(); return; } } } } #endregion #region HIGHWAY_EXCHANGE.T_ICCARDINFO #endregion #endregion #region 方法 -> 分解数据表 /// /// 分解数据表 /// /// 需要分解的表 /// 每个表包含的数据量 /// 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 方法 -> 启动线程 /// /// 启动线程 /// /// 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 方法 -> 停止线程 /// /// 停止线程 /// /// /// 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 } }