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

664 lines
36 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

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

using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace ConnectPoint
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
#region
/// <summary>
/// 状态反馈主定时器
/// </summary>
private readonly DispatcherTimer WorkerTimer;
/// <summary>
/// 平台稽核结果校验线程定时器
/// </summary>
private readonly DispatcherTimer CheckAuditTimer;
/// <summary>
/// 数据传输接口地址
/// </summary>
private string WebServiceUrl { get; set; }
/// <summary>
/// 主支付通道接口地址
/// </summary>
private string PayServiceUrl { get; set; }
/// <summary>
/// 数据传输线程类
/// </summary>
GetHttpData.SDK.ThreadPool.ClientThread DataClientThread { get; set; }
#endregion
public MainWindow()
{
InitializeComponent();
#region
WorkerTimer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(60)
};
WorkerTimer.Tick += WorkerTimer_Tick;
WorkerTimer.Start();
#endregion
#region 10
CheckAuditTimer = new DispatcherTimer
{
Interval = TimeSpan.FromMinutes(10)
};
CheckAuditTimer.Tick += CheckAuditTimer_Tick;
CheckAuditTimer.Start();
#endregion
}
#region ->
/// <summary>
/// 主程序启动加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
#region
new Thread(() =>
{
int _FileCount = 0;
//清理程序根目录下过期日志文件
try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory, new string[] { ".log" }, false, false, 10, ref _FileCount); } catch { }
//清理错误日志文件夹中过期日志文件
try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory + "\\log", new string[] { ".log" }, false, false, 10, ref _FileCount); } catch { }
//清理流水日志文件
try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory + "\\selldata", new string[] { ".log" }, false, false, 60, ref _FileCount); } catch { }
//升级本地数据库表结构
try { ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate(); } catch { }
//清理采集的过期客群图像文件
try { ESSupport.Lib.DataBaseUpdate.ClearCustomerInfo(AppDomain.CurrentDomain.BaseDirectory + "\\CustomerInfo", 7); } catch { }
try
{
#region 60
//获取服务区编码
string _ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
//获取门店编码
string _ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
//获取数据保留时长
int _EffectiveDay = int.Parse(ESSupport.Pos.PosConfigInit.ConfigurationValues("effective_day", "60"));
//获取门店ID
string _ServerPartShopID = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT SERVERPARTSHOP_ID FROM T_SHOPMESSAGE
WHERE SERVERPARTCODE = '{_ServerPartCode}' AND
SHOPCODE = '{_ShopCode}'").Tables[0].Rows[0]["SERVERPARTSHOP_ID"].ToString();
//清理历史过期数据
//读取上次启动同步的时间
string _strLocalDate = ESSupport.Pos.PosConfigInit.ConfigurationValues("syncdtime", "2021/01/01 00:00:00");
if (DateTime.TryParse(_strLocalDate, out DateTime _LocalDate))
{
//本地时间与上次同步时间误差在3天内时启动数据库过期数据清理
if (DateTime.Now.Subtract(_LocalDate).TotalDays < 3 && DateTime.Now.Subtract(_LocalDate).TotalDays >= 0)
{
ESSupport.Lib.DataBaseUpdate.ClearData(_ServerPartCode, _ShopCode, _ServerPartShopID, _EffectiveDay);
}
}
#endregion
}
catch { }
//清理过期备份数据文件
try
{
#region
//读取上次启动同步的时间
string _strLocalDate = ESSupport.Pos.PosConfigInit.ConfigurationValues("syncdtime", "2021/01/01 00:00:00");
if (DateTime.TryParse(_strLocalDate, out DateTime _LocalDate))
{
//本地时间同步失败超过3天或本地时间小于上次同步时间不执行超时备份文件直接清理
if (DateTime.Now.Subtract(_LocalDate).TotalDays > 3 || DateTime.Now.Subtract(_LocalDate).TotalDays < 0)
{
ESSupport.Lib.DataBaseUpdate.ClearDataBackup(AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", 60, false);
}
else
{
ESSupport.Lib.DataBaseUpdate.ClearDataBackup(AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", 60, true);
}
}
#endregion
}
catch { }
})
{ IsBackground = true }.Start();
#endregion
this.Hide();
#region PB版本收银系统结账后立即关机导致版本信息未回传至服务器的问题
//程序启动时立即上报一次心跳数据解决PB版本收银系统结账后立即关机导致版本信息未回传至服务器的问题
try
{
if (ESSupport.Common.PosControl.StateFeedbackThread == null ||
!ESSupport.Common.PosControl.StateFeedbackThread.IsAlive)
{
ESSupport.Common.PosControl.StateFeedbackThread = new Thread(() =>
{
ESSupport.Pos.ThreadHelper.StateFeedbackUpload($"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("DataServicePort", "7080")}/DataServices/Service.asmx");
})
{
IsBackground = true
};
ESSupport.Common.PosControl.StateFeedbackThread.Start();
}
}
catch { }
#endregion
#region PB版本系统
try
{
if (ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "1") == "0")
{
//获取服务区编码
string _ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
//获取门店编码
string _ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
//h获取收银机号
string _MachineCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("machinecode", string.Empty);
if (!string.IsNullOrWhiteSpace(_ServerPartCode) && !string.IsNullOrWhiteSpace(_ShopCode) && !string.IsNullOrWhiteSpace(_MachineCode))
{
if (DataClientThread == null)
{
DataClientThread = new GetHttpData.SDK.ThreadPool.ClientThread();
}
Common.ConfigThread _ConfigThread = new Common.ConfigThread(_ServerPartCode);
DataClientThread.setConfiguration($"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("DataServicePort", "7080")}/DataServices/Service.asmx",
ESSupport.Pos.PosConfigInit.ConfigurationValues("authorization", string.Empty), _ServerPartCode, "",
_ShopCode, ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation(), _MachineCode, 400, 15, 20);
switch (ESSupport.Pos.PosConfigInit.ConfigurationValues("ProvinceCode", "330000"))
{
//使用旧数据源下发数据的业主单位
case "140000":
case "330200":
case "330300":
case "450000":
case "500000":
DataClientThread.IsDownload(true, new List<string>()
{
"T_SELLWORKER", "T_SHOPMESSAGE", "T_CONFIGURATION"
});
break;
//使用新数据源下发数据的业主单位
case "330000":
case "451200":
case "510000":
case "520000":
case "620000":
case "650000":
default:
DataClientThread.IsDownload(true, new List<string>()
{
"T_SELLWORKER_UNIT", "T_SELLWORKER_CLOUD",
"T_SHOPMESSAGE_EX", "T_CONFIGURATION"
});
break;
}
//PB系统数据传输
DataClientThread.IsUpload(true, new List<string>
{
"T_ENDACCOUNT",
"T_PERSONSELL",
"T_COMMODITYSALE",
"T_MOBILE_PAY",
"T_EXCEPTION",
"T_SELLDATA",
});
DataClientThread.setConfigThread(_ConfigThread);
DataClientThread.DownloadStringEvent += new GetHttpData.SDK.ThreadPool.ClientThread.OutputResultsDownArg(DownStringEvent);//监听下载事件
DataClientThread.UploadStringEvent += new GetHttpData.SDK.ThreadPool.ClientThread.OutputResultsUploadArg(UploadStringEvent);
DataClientThread.onState();
}
}
}
catch { }
#endregion
}
#endregion
#region ->
/// <summary>
/// 数据下载监听事件
/// </summary>
/// <param name="downResultInfo"></param>
/// <param name="resultString"></param>
private void DownStringEvent(GetHttpData.SDK.ThreadPool.DownResultInfo downResultInfo, string resultString)
{
}
/// <summary>
/// 数据上传监听事件
/// </summary>
/// <param name="uploadResultInfo"></param>
/// <param name="resultString"></param>
private void UploadStringEvent(GetHttpData.SDK.ThreadPool.UploadResultInfo uploadResultInfo, string resultString)
{
//if (!uploadResultInfo.StartToEnd)
//{
// //获取服务区编码
// string _ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
// //获取门店编码
// string _ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
// //h获取收银机号
// string _MachineCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("machinecode", string.Empty);
// ESSupport.Lib.LogHelper.WriteServiceLog("状态反馈工具原DataServices接口上传数据" + uploadResultInfo.TableDesc);
// try
// {
// #region 调用云端【/WebSocket/RecordLogToOracle】接口上报Socket消息通知执行结果到云端
// //文件上传耗时记录
// string str_HttpURL = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:7198/webApi_publish/WebSocket/RecordLogToOracle";
// string str_PostData = $"ServerpartCode={_ServerPartCode}&ShopCode={_ShopCode}&" +
// $"MachineCode={_MachineCode}&LogCentent={"状态反馈工具原DataServices接口上传数据" + uploadResultInfo.TableDesc}";
// ESSupport.Lib.HttpHelper.HttpPost(str_PostData, $"{str_HttpURL}?{str_PostData}");
// #endregion
// }
// catch (Exception ex)
// {
// ESSupport.Lib.LogHelper.WriteServiceLog("状态反馈工具原DataServices接口上传数据失败。原因" + ex.Message);
// }
//}
}
#endregion
#region ->
/// <summary>
/// 主定时器运行事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void WorkerTimer_Tick(object sender, EventArgs e)
{
#region 10
//初始化数据传输接口地址每隔10分钟重新设置检查一次避免接口连接失败导致心跳无法上报
if (string.IsNullOrWhiteSpace(WebServiceUrl) ||
(DateTime.Now - ESSupport.Common.PosControl.DataCollectionTime).Minutes % 10 == 0)
{
//心跳数据上报主接口地址,此地址正常访问时,心跳通过这个地址上报
string _ServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("DataServicePort", "7080")}/DataServices/Service.asmx";
//检查主数据传输接口是否可以正常访问,不能正常访问的话,使用备用接口
if (ESSupport.Lib.HttpHelper.UrlIsExist(_ServiceUrl))
{
WebServiceUrl = _ServiceUrl;
}
else
{
//心跳数据上报备用接口地址,当主接口地址无法访问时,心跳通过这个地址上报
WebServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("service_port", "7080")}/Service.asmx";
}
}
#endregion
#region
//初始化移动支付交易检测接口地址
if (string.IsNullOrWhiteSpace(PayServiceUrl))
{
PayServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("service_port", "7080")}/Service.asmx";
}
#endregion
#region 10
//记录十分钟营收统计首次启动时间后续每隔10分钟统计一次交易数据并上传到后台
if (ESSupport.Common.PosControl.DataCollectionTime == DateTime.MinValue)
{
ESSupport.Common.PosControl.DataCollectionTime = DateTime.Now.AddMilliseconds(-Environment.TickCount);
}
#endregion
#region 线
//收银机指令执行线程
if (ESSupport.Common.PosControl.CommodityMachineThread == null ||
!ESSupport.Common.PosControl.CommodityMachineThread.IsAlive)
{
ESSupport.Common.PosControl.CommodityMachineThread = new Thread(() =>
{
//ESSupport.Pos.ThreadHelper.CommodityMachine(WebServiceUrl);
ESSupport.Pos.ThreadHelper.InstructionExecute(WebServiceUrl);
ESSupport.Pos.ThreadHelper.License();
})
{
IsBackground = true
};
ESSupport.Common.PosControl.CommodityMachineThread.Start();
}
#endregion
#region 线5
//启动运行日志记录线程
if (ESSupport.Common.PosControl.RuningLogThread == null ||
!ESSupport.Common.PosControl.RuningLogThread.IsAlive)
{
ESSupport.Common.PosControl.RuningLogThread = new Thread(() =>
{
if (ESSupport.Pos.ThreadHelper.RuningLog(ESSupport.Common.PosControl.RuningTime))
{
ESSupport.Common.PosControl.RuningTime = DateTime.Now;
}
})
{
IsBackground = true
};
ESSupport.Common.PosControl.RuningLogThread.Start();
}
#endregion
#region 线
//定时启动实时交易统计线程
if (!ESSupport.Common.PosControl.DataCollectionRun &&
(DateTime.Now - ESSupport.Common.PosControl.DataCollectionTime).Minutes % 10 == 0)
{
if (ESSupport.Common.PosControl.DataCollectionThread == null ||
!ESSupport.Common.PosControl.DataCollectionThread.IsAlive)
{
ESSupport.Common.PosControl.DataCollectionThread = new Thread(() =>
{
ESSupport.Common.PosControl.DataCollectionRun = true;
ESSupport.Pos.ThreadHelper.DataCollectionUpload(WebServiceUrl);
ESSupport.Pos.ThreadHelper.NewSystemConfig();
})
{
IsBackground = true
};
ESSupport.Common.PosControl.DataCollectionThread.Start();
//Common.PosControl.DataCollectionTime = DateTime.Now.AddMinutes(10);
}
}
#endregion
#region 线10
if (ESSupport.Common.PosControl.DataCollectionRun &&
(DateTime.Now - ESSupport.Common.PosControl.DataCollectionTime).Minutes % 10 != 0)
{
ESSupport.Common.PosControl.DataCollectionRun = false;
}
#endregion
#region 10线
//定时启动移动支付交易校验、配置下发线程
if (DateTime.Now > ESSupport.Common.PosControl.MobilePayCheckTime)
{
if (ESSupport.Common.PosControl.MobilePayCheckThread == null ||
!ESSupport.Common.PosControl.MobilePayCheckThread.IsAlive)
{
ESSupport.Common.PosControl.MobilePayCheckThread = new Thread(() =>
{
//获取后台移动支付通道配置信息
//ESSupport.Pos.ThreadHelper.MobilePayConfigUpdate(ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty));
//对待确认的移动支付交易进行交易结果查询
ESSupport.Pos.ThreadHelper.MobilePayQueryCheck(PayServiceUrl, DateTime.Today.AddMinutes(-10));
})
{
IsBackground = true
};
ESSupport.Common.PosControl.MobilePayCheckThread.Start();
//每隔10分钟执行一次移动支付交易验证
ESSupport.Common.PosControl.MobilePayCheckTime = DateTime.Now.AddMinutes(10);
}
}
#endregion
#region 线
//定时启动状态反馈线程
if (DateTime.Now > ESSupport.Common.PosControl.StateFeedBackTime)
{
if (ESSupport.Common.PosControl.StateFeedbackThread == null ||
!ESSupport.Common.PosControl.StateFeedbackThread.IsAlive)
{
ESSupport.Common.PosControl.StateFeedbackThread = new Thread(() =>
{
//获取服务区编码
string _ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
//获取门店编码
string _ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
//获取收银机号
string _MachineCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("machinecode", string.Empty);
//获取新系统标识
bool _NewSystem = ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "0") == "1";
//初始化交易信息获取类(用于读取统一的实时交易数据)
ESSupport.Pos.DataStatistics _DataStatistics = new ESSupport.Pos.DataStatistics
{
ServerPartCode = _ServerPartCode,
ShopCode = _ShopCode,
MachineCode = _MachineCode
};
//心跳数据上传至区服接口
ESSupport.Pos.ThreadHelper.StateFeedbackUpload(WebServiceUrl, _DataStatistics);
////心跳数据上传至云端接口
//ESSupport.Pos.ThreadHelper.StateFeedbackUploadByCloud(PayServiceUrl, "http://user.eshangtech.com:7089/Service.asmx", _DataStatistics);
////日结数据上传至云端接口
//ESSupport.Pos.ThreadHelper.EndAccountUploadByCloud(PayServiceUrl, "http://user.eshangtech.com:7089/Service.asmx", _DataStatistics);
})
{
IsBackground = true
};
ESSupport.Common.PosControl.StateFeedbackThread.Start();
ESSupport.Common.PosControl.StateFeedBackTime = DateTime.Now.AddMinutes(1);
}
}
#endregion
#region 30线
//每隔30分钟运行一次收银机基础信息更新检测线程
if (DateTime.Now > ESSupport.Common.PosControl.BaseInfoFeedbackTime)
{
if (ESSupport.Common.PosControl.BaseInfoFeedbackThread == null ||
!ESSupport.Common.PosControl.BaseInfoFeedbackThread.IsAlive)
{
ESSupport.Common.PosControl.BaseInfoFeedbackThread = new Thread(() =>
{
////基础数据版本接口上报
//ESSupport.Pos.ThreadHelper.BaseInfoFeedbackUpload(WebServiceUrl);
////收银机器信息接口上报
//ESSupport.Pos.ThreadHelper.MachineInfoFeedbackUpload(WebServiceUrl);
try
{
//读取后台配置的更新服务地址
string _UpdateIP = ESSupport.Pos.PosConfigInit.ConfigurationValues("UpdateIP", string.Empty);
if (string.IsNullOrWhiteSpace(_UpdateIP))
{
//更新服务地址未配置时,默认同收银服务器地址
_UpdateIP = ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty);
}
//读取后台配置的更新服务端口默认11000
string _UpdatePort = ESSupport.Pos.PosConfigInit.ConfigurationValues("UpdatePort", "11000");
if (!string.IsNullOrWhiteSpace(_UpdateIP) && !string.IsNullOrWhiteSpace(_UpdatePort))
{
//检测更新站点是否存在,存在则更新配置文件
if (ESSupport.Lib.HttpHelper.UrlIsExist($"http://{_UpdateIP}:{_UpdatePort}/Update.asmx"))
{
//修改更新服务IP地址
if (ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "IP") != _UpdateIP)
{
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "IP", _UpdateIP);
}
//修改更新服务端口
if (ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port") != _UpdatePort)
{
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port", _UpdatePort);
}
}
}
//更新配置文件不存在端口号配置项时,写入默认端口
if (string.IsNullOrWhiteSpace(ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port")))
{
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port", "11000");
}
}
catch { }
#region 使
//try
//{
// //删除待生效商品表中已生效的商品数据
// ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
// @"DELETE FROM T_COMMODITYEX_INEFFECTIVE A
// WHERE EXISTS(SELECT 1 FROM T_COMMODITYEX B
// WHERE A.SERVERPARTCODE = B.SERVERPARTCODE AND
// A.COMMODITY_BARCODE = B.COMMODITY_BARCODE AND
// A.COMMODITY_CODE = B.COMMODITY_CODE AND
// A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID AND
// A.DOWNLOADDATE <= B.DOWNLOADDATE)");
// //将待生效商品表中已生效商品更新至正式商品表中
// ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
// @"UPDATE T_COMMODITYEX A
// SET A.COMMODITY_TYPE = B.COMMODITY_TYPE,
// A.COMMODITY_NAME = B.COMMODITY_NAME,
// A.COMMODITY_RULE = B.COMMODITY_RULE,
// A.COMMODITY_UNIT = B.COMMODITY_UNIT,
// A.COMMODITY_RETAILPRICE = B.COMMODITY_RETAILPRICE,
// A.COMMODITY_MEMBERPRICE = B.COMMODITY_MEMBERPRICE,
// A.CANCHANGEPRICE = B.CANCHANGEPRICE,A.ISVALID = B.ISVALID,
// A.COMMODITY_EN = B.COMMODITY_EN,A.ISBULK = B.ISBULK,
// A.METERINGMETHOD = B.METERINGMETHOD,
// A.DOWNLOADDATE = B.DOWNLOADDATE,A.FLAG = B.FLAG,
// A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL,
// A.COMMODITY_HOTKEY = B.COMMODITY_HOTKEY,
// A.USERDEFINEDTYPE_ID = B.USERDEFINEDTYPE_ID,
// A.REMINDER_DAY = B.REMINDER_DAY,
// A.GUARANTEE_DAY = B.GUARANTEE_DAY,
// A.COMMODITY_TYPECODE = B.COMMODITY_TYPECODE
// FROM T_COMMODITYEX_INEFFECTIVE B
// WHERE A.SERVERPARTCODE = B.SERVERPARTCODE AND
// A.COMMODITY_CODE = B.COMMODITY_CODE AND
// A.COMMODITY_BARCODE = B.COMMODITY_BARCODE AND
// A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID AND
// A.DOWNLOADDATE < B.DOWNLOADDATE AND B.DOWNLOADDATE < TODAY() + 1");
// //将待生效商品表中已生效的商品插入正式商品表
// ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
// @"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,REMINDER_DAY,GUARANTEE_DAY,
// COMMODITY_TYPECODE)
// SELECT A.COMMODITYEX_ID,A.SERVERPARTCODE,
// A.COMMODITY_TYPE,A.COMMODITY_CODE,
// A.COMMODITY_BARCODE,A.COMMODITY_NAME,
// A.COMMODITY_RULE,A.COMMODITY_UNIT,
// A.COMMODITY_RETAILPRICE,A.COMMODITY_MEMBERPRICE,
// A.CANCHANGEPRICE,A.ISVALID,A.COMMODITY_EN,
// A.ISBULK,A.METERINGMETHOD,A.DOWNLOADDATE,
// A.FLAG,A.BUSINESSTYPE,A.SERVERPARTSHOP_ID,
// A.PRINT_DATE,A.CONTAINER_CODE,A.COMMODITY_SYMBOL,
// A.COMMODITY_HOTKEY,A.USERDEFINEDTYPE_ID,
// A.TRANSFER_STATE,A.REMINDER_DAY,
// A.GUARANTEE_DAY,A.COMMODITY_TYPECODE
// FROM T_COMMODITYEX_INEFFECTIVE A
// WHERE A.DOWNLOADDATE < TODAY() + 1 AND
// NOT EXISTS (SELECT 1 FROM T_COMMODITYEX B
// WHERE A.SERVERPARTCODE = B.SERVERPARTCODE AND
// A.COMMODITY_BARCODE = B.COMMODITY_BARCODE AND
// A.COMMODITY_CODE = B.COMMODITY_CODE AND
// A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID )");
//}
//catch { }
#endregion
})
{
IsBackground = true
};
ESSupport.Common.PosControl.BaseInfoFeedbackThread.Start();
ESSupport.Common.PosControl.BaseInfoFeedbackTime = DateTime.Now.AddMinutes(30);
}
}
#endregion
#region PB区服传输指令通知检测程序启动
try
{
//检查是否存在未处理的PB传输指令
if (ESSupport.Lib.SyBaseHelper.QueryOdbc(
@"SELECT 1 FROM T_TRANSDATALOG
WHERE ISNULL(TRANSDATALOG_STATE,0) <> 1").Tables[0].Rows.Count > 0)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
//隐藏窗口
process.StartInfo.UseShellExecute = true;
//隐藏窗口
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//设置启动目录
process.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
//设置启动程序
process.StartInfo.FileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TransDataByPB.exe");
//运行收银端PB数据指令检测和通知程序
process.Start();
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"PB区服传输指令通知检测程序启动失败。原因{ex.Message}");
}
#endregion
}
#endregion
#region -> PB系统智能稽核平台校验记录获取线程定时器运行事件
/// <summary>
/// 平台稽核记录校验记录获取线程定时器运行事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CheckAuditTimer_Tick(object sender, EventArgs e)
{
//初始化移动支付交易检测接口地址
if (string.IsNullOrWhiteSpace(PayServiceUrl))
{
PayServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("service_port", "7080")}/Service.asmx";
}
//启动平台稽核反馈结果获取线程
if (ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread == null ||
!ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread.IsAlive)
{
ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread = new Thread(() =>
{
ESSupport.Pos.ThreadHelper.CheckAuditToPowerBuilder(PayServiceUrl);
})
{
IsBackground = true
};
ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread.Start();
}
}
#endregion
}
}