using GetHttpData.SDK.ThreadPool; using System; using System.Collections.Generic; using System.Data; using System.Net; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Threading; using TouchCashier.Common; using TouchCashier.Utils; using TouchCashier.Parameter; using System.IO; namespace TouchCashier { /// /// MainWindow.xaml 的交互逻辑 /// /// 登录界面进行的操作: /// 1、启动数据库,进行数据库连接检测 /// 2、加载系统参数信息 /// 3.1、检测是否异常重启,异常重启的情况下进行自动登录 /// 3.2、用户输入账号及登录密码进行登录 /// 4、检测当前账期结算情况,记录账期开始信息、工班登录信息 /// 5、打开收银主操作界面,并启动自然日数据生成线程,对自然日数据进行检测上传 /// public partial class MainWindow : Window { #region 参数属性 private Thread LoginThread; private Thread _DataThread; private Thread LoadThread; private Thread DownDateThread; private ClientThread DownClientThread { get; set; } bool IsLogin = false; private int Downing { get; set; } #endregion #region 构造函数 -> 登陆界面 public MainWindow() { InitializeComponent(); } #endregion private void Window_Loaded(object sender, RoutedEventArgs e) { DownClientThread = new ClientThread(); DownClientThread.DownloadStringEvent += DownClientThread_DownloadStringEvent; tbVersion.Text = "系统版本:" + System.Windows.Forms.Application.ProductVersion; //启动本地数据库 try { System.Diagnostics.Process.Start(AppDomain.CurrentDomain.BaseDirectory + "dbsrv12.exe", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "datebase", "hydb.db") + " -os 10240k -m -c 8m -q -n " + Dns.GetHostName()); } catch { } ConnDetection _ConnDetection = new ConnDetection(); _ConnDetection.ShowDialog(); //启动加载 LoadThread = new Thread(Loading) { IsBackground = true }; //Grid_Load.Visibility = Visibility.Visible; LoadThread.Start(); } #region 系统加载 /// /// 系统加载 /// private void Loading() { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { tbUserName.IsEnabled = false; pwbUserPassword.IsEnabled = false; tbMessage.Text = "正在加载系统设置,请稍候......"; }); //获取参数信息 QualityHelper.GetConfiguration(); CheckUpdateConfig(); //获取版本信息并更新 string version = "YSv" + System.Windows.Forms.Application.ProductVersion; if (QualityHelper.version != version) { QualityHelper.version = version; //记录这次更新之后的版本号 QualityHelper.UpdateConfigUration("version", version); //记录这次更新的时间 QualityHelper.UpdateConfigUration("UpdateDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } try { _DataThread = new Thread(GetDate) { IsBackground = true }; _DataThread.Start(); } catch { } //QualityHelper.GetDate(); //与服务器校对时间 try { DateTime _ServerTime = ESSupport.Lib.HttpHelper.GetBeijingTime( $"http://{QualityHelper.dbip}:{QualityHelper.serviceport}/Service.asmx"); if (_ServerTime != DateTime.MinValue && _ServerTime > new DateTime(2021, 06, 01)) { SyTime.SetLocalTimeByStr(_ServerTime); QualityHelper.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } } catch { } #region 界面显示处理 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { //判断是否异常重启 if (QualityHelper.autologon == "1") { #region 异常重启收银机自动登录 try { DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT A.SELLWORKERCODE,A.SELLWORKERNAME, A.SELLWORKERPASSWORD FROM T_SELLWORKER A,T_PERSONSELL_NEW B WHERE A.SERVERPARTCODE = B.SERVERPARTCODE AND UPPER(A.SELLWORKERCODE) = UPPER(B.SELLWORKER_CODE) AND B.SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND B.SHOPCODE = '{QualityHelper.shopcode}' AND MACHINECODE = '{QualityHelper.machinecode}' AND ENDDATE IS NULL").Tables[0]; if (_DataTable.Rows.Count > 0) { tbUserName.Text = _DataTable.Rows[0]["SELLWORKERCODE"].ToString(); pwbUserPassword.Password = _DataTable.Rows[0]["SELLWORKERPASSWORD"].ToString(); ButtonLogin_Click(null, null); } else { DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); } } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog("异常重启自动登录失败。原因:" + ex.Message); LoginFail(); DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); } #endregion } else { #region 数据下载检查,更换门店或首次开机使用需要从服务器下载基本数据 DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); #endregion } tbUserName.IsEnabled = true; pwbUserPassword.IsEnabled = true; tbUserName.Focus(); tbMessage.Text = ""; }); #endregion } #endregion private void Window_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.F5) { StartDownload(); } if (e.SystemKey == Key.F4) { e.Handled = true; } } #region 事件 -> 收银工号输入框按键事件 /// /// 收银工号输入框按键事件 /// /// /// private void TextBoxUserName_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { //工号验证 ((TextBox)sender).Text = ((TextBox)sender).Text.PadLeft(4, '0'); //跳到密码输入框 pwbUserPassword.SelectAll(); pwbUserPassword.Focus(); } else if (e.Key == Key.F16) { //清空账号输入框 ((TextBox)sender).Text = ""; } } #endregion #region 事件 -> 密码输入框按键事件 private void PasswordBoxUserPassword_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { //登录 ButtonLogin_Click(null, null); } else if (e.Key == Key.F16) { //清空密码 ((PasswordBox)sender).Password = ""; } } #endregion #region 事件 -> 登录按钮 private void ButtonLogin_Click(object sender, RoutedEventArgs e) { #region 登录按钮 #region 登录的收银工号有效性验证 tbMessage.Text = ""; //非空判断 if (tbUserName.Text.Trim() == "") { tbMessage.Text = "用户名不能为空!"; tbUserName.Focus(); return; } if (pwbUserPassword.Password == "") { tbMessage.Text = "密码不能为空!"; pwbUserPassword.Focus(); return; } string _SelectSql; //验证登录的收银工号是否有效 try { #region 验证登录的收银工号是否有效 DataTable _SellWorker = ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT PROWERRIGHT,SELLWORKERCODE,SELLWORKERNAME,DISCOUNT_RATE FROM T_SELLWORKER WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND UPPER(SELLWORKERCODE)=UPPER('{tbUserName.Text}') AND SELLWORKERPASSWORD='{pwbUserPassword.Password}' AND VALID = 1").Tables[0]; if (_SellWorker.Rows.Count > 0) { QualityHelper.sellworkercode = _SellWorker.Rows[0]["SELLWORKERCODE"].ToString(); QualityHelper.sellworkername = _SellWorker.Rows[0]["SELLWORKERNAME"].ToString(); //验证销售权限 if (PosSystemHelper.SellWorkerAuthority(PosDictionary.AuthorityType.销售, _SellWorker.Rows[0]["PROWERRIGHT"].ToString()) != 0) { tbMessage.Text = "你没有销售权限!!"; tbUserName.Focus(); tbUserName.SelectAll(); return; } //更新权限串 PosControl.ProwerRight = _SellWorker.Rows[0]["PROWERRIGHT"].ToString(); //更新收银员最大折扣权限 if (decimal.TryParse(_SellWorker.Rows[0]["DISCOUNT_RATE"].ToString(), out decimal _DiscountRate)) { PosControl.DiscountRate = _DiscountRate > 0 && _DiscountRate <= 1 ? _DiscountRate : (decimal)0.01; } else { PosControl.DiscountRate = (decimal)0.01; } } else { tbMessage.Text = "账号或密码错误,请核对后重新输入!"; tbUserName.Focus(); tbUserName.SelectAll(); return; } #endregion } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog("收银工号登录异常。原因:" + ex.Message); tbUserName.Focus(); tbUserName.SelectAll(); return; } #endregion #region 24小时未结账验证,账期超过24小时要求立即进行结账操作 //判断结账校验 DataTable dt; string sqls = "select isnull(endaccount_day,1) from sys_globle where var_name = 'g_ver'"; DataTable _tables = ESSupport.Lib.SyBaseHelper.QueryOdbc(sqls).Tables[0]; _SelectSql = "select startdate from t_endaccount_new where serverpartcode='" + QualityHelper.serverpartcode + "' and shopcode = '" + QualityHelper.shopcode + "' and machinecode = '" + QualityHelper.machinecode + "' and enddate is null"; try { dt = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0]; } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog(ex.ToString()); tbUserName.Focus(); tbUserName.SelectAll(); return; } if (dt.Rows.Count > 0) { try { //24小时未结账,登录前进行结账操作 if (DateTime.Parse(dt.Rows[0][0].ToString()).AddDays(double.Parse(_tables.Rows[0][0].ToString())) < DateTime.Now && DateTime.Parse(dt.Rows[0][0].ToString()) < DateTime.Today.AddDays(double.Parse(_tables.Rows[0][0].ToString()) * -1)) { //弹出结账操作窗口 CommodityShift _CommodityShift = new CommodityShift("check", "0") { Owner = this }; _CommodityShift.ShowDialog(); if (_CommodityShift.DialogResult != true) { //GetValue(TxtMessage, "请先结账后登陆!", "#FF0000"); //Grid_User.Visibility = Visibility.Visible; //GridLoad.Visibility = Visibility.Collapsed; tbUserName.Focus(); tbUserName.SelectAll(); return; } } } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog(ex.ToString()); tbUserName.Focus(); tbUserName.SelectAll(); return; } } #endregion #region 上一个工班未退出检查,存在未交班的记录要求先交班再更换工号登录 //交班检测 string _SellWorkerCode = ""; string _SellWorkerName = ""; try { DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT A.PERSONSELL_ID,A.SELLWORKER_CODE,B.SELLWORKERNAME FROM T_PERSONSELL_NEW A LEFT JOIN T_SELLWORKER B ON UPPER(A.SELLWORKER_CODE) = UPPER(B.SELLWORKERCODE) AND B.SERVERPARTCODE = '{QualityHelper.serverpartcode}' WHERE A.ENDDATE IS NULL AND A.STARTDATE IS NOT NULL AND A.SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND A.SHOPCODE='{QualityHelper.shopcode}' AND A.MACHINECODE = '{QualityHelper.machinecode}' ORDER BY A.PERSONSELL_ID DESC").Tables[0]; if (_DataTable.Rows.Count > 0) { _SellWorkerCode = _DataTable.Rows[0]["SELLWORKER_CODE"].ToString().ToUpper(); _SellWorkerName = _DataTable.Rows[0]["SELLWORKERNAME"].ToString(); } } catch (Exception ex) { //GetValue(TxtMessage, "收银工班校验失败,请重试!", "#FF0000"); pwbUserPassword.Focus(); pwbUserPassword.SelectAll(); return; } if (tbUserName.Text.Trim().ToUpper() != _SellWorkerCode && !string.IsNullOrWhiteSpace(_SellWorkerCode)) { CommodityPrompt _CommodityPrompt = new CommodityPrompt("", $"收银员[{_SellWorkerCode}]{_SellWorkerName}未交班,是否交班并登陆?") { Owner = this }; _CommodityPrompt.ShowDialog(); if (_CommodityPrompt.DialogResult == false) { GetValue(tbMessage, $"收银员[{_SellWorkerName}]工号已登录,请先进行交班再登录其他收银员工号!", "#FF0000"); tbUserName.Text = _SellWorkerCode; pwbUserPassword.Password = ""; pwbUserPassword.Focus(); pwbUserPassword.SelectAll(); return; } else { CommodityShift _CommodityShift = new CommodityShift("shift", "1") { Owner = this }; _CommodityShift.ShowDialog(); if (_CommodityShift.DialogResult != true) { GetValue(tbMessage, $"收银员[{_SellWorkerName}]工号已登录,请先进行交班再登录其他收银员工号!", "#FF0000"); tbUserName.Text = _SellWorkerCode; pwbUserPassword.Password = ""; pwbUserPassword.Focus(); pwbUserPassword.SelectAll(); return; } } } #endregion //登录时的操作 GetValue(tbMessage, "", "#FF0000"); string UserName = tbUserName.Text.Trim().ToUpper(); string Pwd = pwbUserPassword.Password; tbUserName.IsEnabled = false; pwbUserPassword.IsEnabled = false; int Edition = 0; if ((LoginThread == null || !LoginThread.IsAlive) && !IsLogin) { IsLogin = true; //登录系统 LoginThread = new Thread(() => Login_User(UserName, Pwd, Edition)) { IsBackground = true }; LoginThread.Start(); } #endregion } #endregion private void ButtonSet_Click(object sender, RoutedEventArgs e) { ParameterPower _ParameterPower = new ParameterPower() { Owner = this }; _ParameterPower.ShowDialog(); if (_ParameterPower.DialogResult == true) { ParConfigtion _ParConfigtion = new ParConfigtion() { Owner = this }; _ParConfigtion.ShowDialog(); QualityHelper.GetConfiguration(); } } #region 事件 -> 关闭按钮 private void ButtonClose_Click(object sender, RoutedEventArgs e) { UpLoadSwitch _UpLoadSwitch = new UpLoadSwitch() { Owner = this }; if (_UpLoadSwitch.ShowDialog() == true) { DataUpload _DataUpload = new DataUpload() { Owner = this }; _DataUpload.ShowDialog(); } } #endregion #region 方法 -> Textblock加载内容 private void GetValue(TextBlock textBlock, string messageText, string colorString) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { textBlock.Text = messageText; }); } #endregion #region 方法 -> 用户登录系统 /// /// 用户登录系统 /// /// /// /// private void Login_User(string UserName, string Pwd, int Edition) { if (!LoginCheck()) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { LoginFail(); }); return; } if (string.IsNullOrWhiteSpace(QualityHelper.serverpartshop_id) || string.IsNullOrWhiteSpace(QualityHelper.businesstype)) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { //GetValue(TxtMessage, "门店信息初始化失败,请重试!", "#FF0000"); LoginFail(); }); return; } #region 登录工班信息处理 int _PersonResult = Currency.PersonLogin(UserName.Trim(), out string sellWorkerCode); if (_PersonResult != 0) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { //GetValue(TxtMessage, "账期数据插入失败,请重试!", "#FF0000"); LoginFail(); }); return; } #endregion PosControl.PosWokerCode = UserName; PosSystemHelper.PosSocket_NotifyEvent(null, new ESSupport.Model.Common.NotifyEventArgs { NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.登录通知, NotifyLoggerTime = DateTime.Now, NotifyLoggerMessage = $"【登录时间:{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}】" + $"工号:[{UserName}]{PosSystemHelper.QueryPersonName(QualityHelper.serverpartcode, UserName)} 登录成功;" + $"当前版本:{System.Windows.Forms.Application.ProductVersion}", NotifyUploadState = true }); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { ChildWindow.CommodityManage.CashierMain cm_CashierMain = new ChildWindow.CommodityManage.CashierMain(); cm_CashierMain.Show(); Close(); }); } #endregion #region 方法 -> 登录数据校验验证 /// /// 登录账期班期数据验证 /// /// 登录工号 /// private bool LoginCheck() { try { #region 检查收银机服务区、门店、机器号配置 //判断收银机配置 if (QualityHelper.serverpartcode == "" || QualityHelper.shopcode == "" || QualityHelper.machinecode == "") { //参数错误 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { tbUserName.Focus(); }); return false; } #endregion #region 联网校验收银机本地时间 //与服务器校对时间 try { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(tbMessage, "正在校准系统时间......", "#FF0000"); }); DateTime _ServerTime = ESSupport.Lib.HttpHelper.GetBeijingTime($"http://{QualityHelper.dbip}:{QualityHelper.serviceport}/Service.asmx"); if (_ServerTime != DateTime.MinValue && _ServerTime > new DateTime(2020, 06, 01)) { SyTime.SetLocalTimeByStr(_ServerTime); QualityHelper.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } } catch { } #endregion //判断门店状态 DataTable _ShopTable = ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT SERVERPARTSHOP_ID,SHOPNAME,BUSINESSTYPE,VALID FROM T_SHOPMESSAGE WHERE SHOPCODE = '{QualityHelper.shopcode}' AND SERVERPARTCODE = '{QualityHelper.serverpartcode}'").Tables[0]; if (_ShopTable.Rows.Count > 0) { QualityHelper.serverpartshop_id = _ShopTable.Rows[0]["SERVERPARTSHOP_ID"].ToString(); QualityHelper.shopname = _ShopTable.Rows[0]["SHOPNAME"].ToString(); QualityHelper.businesstype = _ShopTable.Rows[0]["BUSINESSTYPE"].ToString(); if (_ShopTable.Rows[0]["VALID"].ToString() != "1") { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(tbMessage, "门店已停业", "#FF0000"); tbUserName.Focus(); }); return false; } } else { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); tbUserName.Focus(); }); return false; } return true; } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog("登录验证异常:" + ex.Message); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { tbUserName.Focus(); }); return false; } } #endregion private void LoginFail() { tbUserName.IsEnabled = true; pwbUserPassword.IsEnabled = true; tbUserName.Focus(); tbUserName.SelectAll(); IsLogin = false; } #region 方法 -> 校验数据库 /// /// 数据库升级校验 /// private void GetDate() { try { ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate(); DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc("SELECT SERVERPARTSHOP_ID FROM T_SHOPMESSAGE " + "WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode + "' AND SHOPCODE = '" + QualityHelper.shopcode + "'").Tables[0]; if (_DataTable.Rows.Count > 0) { string _ServerPartShopID = _DataTable.Rows[0]["SERVERPARTSHOP_ID"].ToString(); //清理历史数据 ESSupport.Lib.DataBaseUpdate.ClearData(QualityHelper.serverpartcode, QualityHelper.shopcode, _ServerPartShopID, int.Parse(QualityHelper.effective_day)); } //清理历史备份文件 ESSupport.Lib.DataBaseUpdate.ClearDataBackup( AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", int.Parse(QualityHelper.effective_day), true); } catch { } } #endregion #region 方法 -> 检测数据是否存在并启动下发线程 /// /// 更换门店或首次安装开机的机器需要下载基础信息(方法重写用新的接口传输) /// private void CheckDate() { try { ESSupport.Lib.SyBaseHelper.ExecuteSqlTran($@"DELETE FROM T_SHOPMESSAGE WHERE SERVERPARTCODE <> '{QualityHelper.serverpartcode}' OR SHOPCODE <> '{QualityHelper.shopcode}'"); //删除错误工号数据 ESSupport.Lib.SyBaseHelper.ExecuteSqlTran("DELETE FROM T_SELLWORKER WHERE DATALENGTH(PROWERRIGHT) < 255"); //删除无条码的商品数据 ESSupport.Lib.SyBaseHelper.ExecuteSqlTran("DELETE FROM T_COMMODITYEX WHERE COMMODITY_BARCODE IS NULL"); ESSupport.Lib.SyBaseHelper.ExecuteSqlTran("DELETE FROM T_DOWNUPDATE "); } catch { } this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { StartDownload(); }); } private void StartDownload() { ConfigThread _ConfigThread = new ConfigThread(QualityHelper.serverpartcode); DownClientThread.setConfiguration("http://" + QualityHelper.dbip + ":" + QualityHelper.DataServicePort + "/DataServices/Service.asmx", QualityHelper.authorization, QualityHelper.serverpartcode, "", QualityHelper.shopcode, QualityHelper.macaddress, QualityHelper.machinecode, 400, 5, 20); List list_DownTable = new List() { "T_SELLWORKER_UNIT", "T_SELLWORKER_CLOUD", "T_SHOPMESSAGE_EX", "T_CONFIGURATION" }; DownClientThread.IsDownload(true, list_DownTable); DownClientThread.setConfigThread(_ConfigThread); Downing = 0; bool b = DownClientThread.onState(); this.IsEnabled = false; tbMessage.Text = "正在下载基础信息,请稍候..."; if (!b) { this.IsEnabled = true; } } private void DownClientThread_DownloadStringEvent(DownResultInfo downResultInfo, string resultString) { int _DownCount = DownClientThread.getStartDownTypes().Count; if (!downResultInfo.StartToEnd) { Downing++; this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { tbMessage.Text = "正在下载基础信息,请稍候..." + ((double)Downing / _DownCount).ToString("P0"); }); } if (Downing == _DownCount) { QualityHelper.GetConfiguration(); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { tbMessage.Text = "基础信息下载完成!"; this.IsEnabled = true; tbUserName.Focus(); tbUserName.SelectAll(); }); } } /// /// 更换门店或首次安装开机的机器需要下载基础信息 /// private void CashierDataDownload() { if (PosControl.DataTransThread == null || !PosControl.DataTransThread.IsAlive) { PosControl.DataTransThread = new Thread(() => { #region 初始化数据传输程序 //初始化数据传输程序 if (PosControl.PosDataDownload == null) { if (PosControl.PosDataDownload == null) { //测试当前网络是否可以直接访问公网 if (ESSupport.Lib.HttpHelper.UrlIsExist(PosControl.PosDataDownloadURL)) { //公网模式下,直接访问云端接口地址 PosControl.PosDataDownload = new ESSupport.Transfer.PosDataDownload(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, PosControl.PosDataDownloadURL); } else { //内网模式下,通过本地服务器Nginx代理访问云端接口 PosControl.PosDataDownload = new ESSupport.Transfer.PosDataDownload(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, $"http://{QualityHelper.dbip}:7198/webApi_publish"); } PosControl.PosDataDownload.NotifyEvent += PosSystemHelper.PosSocket_NotifyEvent; } } #endregion #region 启动基础数据下载更新 #region 收银配置下载 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { //Grid_Load.Visibility = Visibility.Visible; this.IsEnabled = false; tbMessage.Text = "正在下载基础配置信息,请稍候......"; }); PosControl.PosDataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueConfigurationToMachine, DateTime.Now); //this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate //{ // pbrDown.Value += 34; //}); #endregion #region 门店信息下载 PosSystemHelper.PosSocket_NotifyEvent(null, new ESSupport.Model.Common.NotifyEventArgs { NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.门店信息, NotifyLoggerTime = DateTime.Now, NotifyLoggerMessage = $"用户手动下载门店数据信息。" }); PosControl.PosDataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueShopInfoToMachine, DateTime.Now); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { //pbrDown.Value += 34; tbMessage.Text = "正在下载门店信息,请稍候......"; }); #endregion #region 收银工号下载 PosSystemHelper.PosSocket_NotifyEvent(null, new ESSupport.Model.Common.NotifyEventArgs { NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.收银工号, NotifyLoggerTime = DateTime.Now, NotifyLoggerMessage = $"用户手动下载收银工号数据信息。" }); PosControl.PosDataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueSellWorkerInfoToMachine, DateTime.Now); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { tbMessage.Text = "正在下载收银工号信息,请稍候......"; //pbrDown.Value += 34; }); #endregion #region 移动支付参数配置下载 PosSystemHelper.PosSocket_NotifyEvent(null, new ESSupport.Model.Common.NotifyEventArgs { NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.移动支付参数配置, NotifyLoggerTime = DateTime.Now, NotifyLoggerMessage = $"用户手动下载移动支付参数配置数据信息。" }); PosControl.PosDataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueMobileConfigToMachine, DateTime.Now); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { tbMessage.Text = "正在下载移动支付交易参数信息,请稍候......"; //pbrDown.Value += 34; }); #endregion //执行日志换行 PosSystemHelper.PosSocket_NotifyEvent(this, new ESSupport.Model.Common.NotifyEventArgs() { NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.公共通知, NotifyLoggerTime = DateTime.Now }); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { tbMessage.Text = "基础信息下载完成!"; //Grid_Load.Visibility = Visibility.Collapsed; //pbrDown.Value = 0; //GetValue(tbMessage, "基础信息下载完成!", "#FF0000"); this.IsEnabled = true; tbUserName.Focus(); tbUserName.SelectAll(); }); #endregion }) { IsBackground = true }; PosControl.DataTransThread.Start(); } } #endregion #region 方法 -> 检查更新Update.xml文件,避免出现因为Update.xml文件损坏导致的无法启动问题 /// /// 检查更新Update.xml文件,避免出现因为Update.xml文件损坏导致的无法启动问题 /// public static void CheckUpdateConfig() { #region 检查更新Update.xml文件,避免出现因为Update.xml文件损坏导致的无法启动问题 try { QualityHelper.UpdateConfigUration("NewSystem", "1"); string _ServerIP = QualityHelper.dbip; string _ServerPartCode = QualityHelper.serverpartcode; string _ShopCode = QualityHelper.shopcode; string _XmlPath = AppDomain.CurrentDomain.BaseDirectory + "update.xml"; string _KillApp = "TouchCashier.exe|cashier.exe|Stardb.exe|dbsyc.exe|GetMembership.exe|DataUpdate.exe|InvoicingTool.exe|ConnectPoint.exe"; string _KillAppConfig = ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "KillApp"); if (_KillAppConfig != _KillApp) { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "KillApp", _KillApp); } string _StartApp = "TouchCashier.exe|ConnectPoint.exe"; string _StartAppConfig = ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "StartApp"); if (_StartAppConfig != _StartApp) { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "StartApp", _StartApp); } if (ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "NewSystem") != "1") { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "NewSystem", "1"); } if (ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "IP") != _ServerIP && !string.IsNullOrWhiteSpace(_ServerIP)) { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "IP", _ServerIP); } if (ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "ServerPartCode") != _ServerPartCode && !string.IsNullOrWhiteSpace(_ServerPartCode)) { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "ServerPartCode", _ServerPartCode); } if (ESSupport.Lib.ConfigHelper.GetAppConfig(_XmlPath, "ShopCode") != _ShopCode && !string.IsNullOrWhiteSpace(_ShopCode)) { ESSupport.Lib.ConfigHelper.UpdateAppConfig(_XmlPath, "ShopCode", _ShopCode); } } catch (Exception ex) { ESSupport.Lib.LogHelper.WriteServiceLog("启动文件校验失败:" + ex.Message); } #endregion } #endregion } }