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 的交互逻辑 /// public partial class MainWindow : Window { #region 初始化 private Thread _thread; private Thread _DataThread; private Thread LoadThread; private Thread DownDateThread; ClientThread _ClientThread = new ClientThread(); int Downing = 0; bool IsLogin = false; #endregion public MainWindow() { InitializeComponent(); //初始化 imgload.Image = Properties.Resources.登录状态; imga.Image = Properties.Resources.load; PictureFigr.Image = Properties.Resources.扫描指纹; PictureFace.Image = Properties.Resources.人脸识别; //数据库连接检测 string sql = "select * from dba.sys_globle"; try { DBHelper.QueryOdbc(sql); } catch (Exception ex) { //启动本地数据库 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(); //Grid_User.Visibility = Visibility.Collapsed; //GridLoad.Visibility = Visibility.Visible; //TxtMsg.Text = "正在连接数据库请稍候...."; } //启动加载 LoadThread = new Thread(Loading) { IsBackground = true }; Grid_Load.Visibility = Visibility.Visible; LoadThread.Start(); } void Loading() { try { if (!File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"))) { byte[] Save = Properties.Resources.config; FileStream fsObj = new FileStream(Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "config.ini"), FileMode.Create); fsObj.Write(Save, 0, Save.Length); fsObj.Close(); } } catch { } //升级本地数据库 //this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () //{ // TxtLoad.Text = "正在更新本地数据库......"; //}); //ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate(); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { TxtLoad.Text = "正在加载系统设置,请稍候......"; }); //获取参数信息 QualityHelper.GetConfiguration(); 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(2020, 06, 01)) { SyTime.SetLocalTimeByStr(_ServerTime); QualityHelper.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } } catch { } //获取版本信息并更新 string version = "YSv" + System.Windows.Forms.Application.ProductVersion.ToString(); if (QualityHelper.version != version) { QualityHelper.version = version; QualityHelper.UpdateConfigUration("version", version); QualityHelper.UpdateConfigUration("UpdateDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } QualityHelper.UpdateConfigUration("NewSystem", "1"); if (!QualityHelper.serverpartcode.StartsWith("14") && QualityHelper.serverpartcode != "888888") { QualityHelper.UpdateConfigUration("VideoSwitch", "0"); QualityHelper.VideoSwitch = "0"; } if ((!string.IsNullOrWhiteSpace(QualityHelper.ServerPartCodeNew) && QualityHelper.serverpartcode != QualityHelper.ServerPartCodeNew) || (!string.IsNullOrWhiteSpace(QualityHelper.ShopCodeNew) && QualityHelper.shopcode != QualityHelper.ShopCodeNew) || (!string.IsNullOrWhiteSpace(QualityHelper.MachineCodeNew) && QualityHelper.machinecode != QualityHelper.MachineCodeNew)) { try { if (ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT 1 FROM T_ENDACCOUNT_NEW WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND SHOPCODE = '{QualityHelper.shopcode}' AND MACHINECODE = '{QualityHelper.machinecode}' AND ENDDATE IS NULL").Tables[0].Rows.Count == 0) { if (QualityHelper.serverpartcode != QualityHelper.ServerPartCodeNew) { QualityHelper.serverpartcode = QualityHelper.ServerPartCodeNew; QualityHelper.UpdateConfigUration("serverpartcode", QualityHelper.ServerPartCodeNew); } if (QualityHelper.shopcode != QualityHelper.ShopCodeNew) { QualityHelper.shopcode = QualityHelper.ShopCodeNew; QualityHelper.UpdateConfigUration("shopcode", QualityHelper.ShopCodeNew); } if (QualityHelper.machinecode != QualityHelper.MachineCodeNew) { QualityHelper.machinecode = QualityHelper.MachineCodeNew; QualityHelper.UpdateConfigUration("machinecode", QualityHelper.MachineCodeNew); } } } catch { } } //if (QualityHelper.serverpartcode == "888888") { QualityHelper.VideoSwitch = "1"; } DateTime _SoftExpiryDate; string _strUsingType = QualityHelper.ConfigurationValues("using_type", "1000"); if (!DateTime.TryParse(QualityHelper.ConfigurationValues("expirydate", ""), out _SoftExpiryDate)) { try { _SoftExpiryDate = DateTime.Parse(DBHelper.QueryOdbc("SELECT EXPIRY_DATE " + "FROM SYS_GLOBLE WHERE VAR_NAME = 'g_ver'").Tables[0].Rows[0]["expiry_date"].ToString()); } catch { } } try { 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 = "Stardb.exe|TouchCashier.exe|GetMembership.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"); } } catch (Exception ex) { LogHelper.WriteServiceLog("启动文件校验失败:" + ex.Message); } //获取授权码 string _authorization = QualityHelper.ConfigurationValues("authorization", ""); string _strServerPartCode = QualityHelper.ConfigurationValues("serverpartcode", ""); string _strServerIP = QualityHelper.ConfigurationValues("server_ip", ""); if ((_strServerPartCode.StartsWith("51") || _strServerPartCode.StartsWith("36") || _strServerPartCode.StartsWith("65")) && !ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation().StartsWith("68:ED:A4")) //if (!_serverPartCode.StartsWith("33") && !ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation().StartsWith("68:ED:A4")) { string[] _strCodes; try { _strCodes = _authorization.ToDecrypt().Split('|'); } catch { _strCodes = new string[4]; } if (_strCodes.Length < 4 || ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation() != _strCodes[3] || DateTime.Parse(_strCodes[2]) < DateTime.Now || _strCodes[0] != _strServerPartCode) { OracleHelper _OracleHelper = new OracleHelper(QualityHelper.dbip, QualityHelper.dbport, QualityHelper.conname, QualityHelper.dbuser, QualityHelper.dbpass); try { _authorization = _OracleHelper.ExcuteSqlGetDataSet( $@"SELECT * FROM {QualityHelper.dbuser}.T_CONFIGURATION WHERE MACADDRESS = '{ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation()}' AND UPPER(CONFIGURATION_NAME) = UPPER('{"AUTHORIZATION"}')" ).Tables[0].Rows[0]["CONFIGURATION_VALUES"].ToString(); } catch (Exception ex) { LogHelper.WriteServiceLog("授权验证失败:" + ex.Message); } } } this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { if ((_strServerPartCode.StartsWith("51") || _strServerPartCode.StartsWith("36") || _strServerPartCode.StartsWith("65")) && !ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation().StartsWith("68:ED:A4") && !string.IsNullOrWhiteSpace(_strServerIP)) //if (!_serverPartCode.StartsWith("33") && !string.IsNullOrWhiteSpace(_strServerIP) && //!ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation().StartsWith("68:ED:A4")) { string[] _strCodes; try { _strCodes = _authorization.ToDecrypt().Split('|'); } catch { _strCodes = new string[4]; } if (_strCodes.Length < 4 || ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation() != _strCodes[3] || DateTime.Parse(_strCodes[2]) < DateTime.Now || _strCodes[0] != _strServerPartCode) { //if (MessageBox.Show("运行环境自检失败,无法启动。", "系统提示", // MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK, // MessageBoxOptions.ServiceNotification) == MessageBoxResult.OK) //{ // Environment.Exit(0); //} LogHelper.WriteServiceLog("启动初始化"); Environment.Exit(0); } } TxtSoftwareName.Text = QualityHelper.softwarename; #region try { //QualityHelper.GetDate(); switch (QualityHelper.IsTouch) { case "0": chk_other.IsChecked = true; chk_log.IsChecked = false; break; case "1": chk_other.IsChecked = false; chk_log.IsChecked = true; break; //case "2": // chk_other.IsChecked = false; // chk_log.IsChecked = false; // break; } } catch (Exception ex) { } #endregion GetValue(TxtVersion, QualityHelper.version, "#000000"); GetValue(TxtExpiryDate, _SoftExpiryDate == DateTime.MinValue ? "" : ((_strUsingType == "2000" ? "租赁有效期: " : "软件有效期: ") + _SoftExpiryDate.ToString("yyyy年MM月dd日")), "#000000"); #region 设置页面颜色和图片 try { if (QualityHelper.softwarename.Contains("蜀越")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/sc.png")); } else if (QualityHelper.softwarename.Contains("高速驿网")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/gsyw.png")); } else if (QualityHelper.softwarename.Contains("贵州")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/gz.png")); } else if (QualityHelper.softwarename.Contains("恒辉")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/jx.png")); } else if (QualityHelper.softwarename.Contains("恒信")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/gx.png")); } else if (QualityHelper.softwarename.Contains("骋客")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/ck.png")); } else if (QualityHelper.softwarename.Contains("驿佳")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/gs.png")); } else if (QualityHelper.softwarename.Contains("招商") || QualityHelper.softwarename.Contains("星程")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/ytw.png")); } else if (QualityHelper.softwarename.Contains("晋行晋驿")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/sx.png")); } else if (QualityHelper.softwarename.Contains("智驿")) { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/qhzy.png")); } else { img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/es.png")); } img_login.Source = new BitmapImage(new Uri("pack://application:,,,/Image/" + SkinPeeler.ImgSource + "/未登录头像.png")); img_uname.Source = new BitmapImage(new Uri("pack://application:,,,/Image/" + SkinPeeler.ImgSource + "/账号.png")); img_pwd.Source = new BitmapImage(new Uri("pack://application:,,,/Image/" + SkinPeeler.ImgSource + "/密码.png")); chk_log.Style = Resources["" + SkinPeeler.ResourcesSource + "CheckBoxStyle"] as Style; chk_other.Style = Resources["" + SkinPeeler.ResourcesSource + "CheckBoxStyle"] as Style; } catch (Exception ex) { } #endregion Grid_Load.Visibility = Visibility.Collapsed; //自动登录 if (QualityHelper.autologon == "1") { //QualityHelper.GetDate(); try { DataTable _DataTable = DBHelper.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) { TxtUserName.Text = _DataTable.Rows[0]["SELLWORKERCODE"].ToString(); TxtPwd.Password = _DataTable.Rows[0]["SELLWORKERPASSWORD"].ToString(); Grid_User.Visibility = Visibility.Collapsed; GridLoad.Visibility = Visibility.Visible; Button_Click(btn_login, null); } else { DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); } } catch (Exception ex) { LogHelper.WriteServiceLog("自动登录失败:" + ex.Message); LoginFail(); DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); } } else { DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); } TxtUserName.Focus(); }); } #region 事件 -> 绑定快捷键 private void TextBox_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { TxtUserName.Text = TxtUserName.Text.PadLeft(4, '0'); TxtPwd.SelectAll(); TxtPwd.Focus(); } else if (e.Key == Key.F16) { TxtUserName.Text = ""; return; } } private void TxtPwd_KeyDown_1(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { Button_Click(btn_login, null); return; } else if (e.Key == Key.F16) { TxtPwd.Password = ""; return; } } #endregion #region 事件 -> 按钮单击 private void Button_Click(object sender, RoutedEventArgs e) { Button keybtn = sender as Button; switch (keybtn.Name) { case "btn_login": #region 登录按钮 TxtMessage.Text = ""; //非空判断 if (TxtUserName.Text.Trim() == "") { GetValue(TxtMessage, "用户名不能为空!", "#FF0000"); TxtUserName.Focus(); return; } if (TxtPwd.Password == "") { GetValue(TxtMessage, "密码不能为空!", "#FF0000"); TxtPwd.Focus(); return; } string _SelectSql; //验证是否存在 try { DataTable _SellWorker = DBHelper.QueryOdbc( $@"SELECT PROWERRIGHT,SELLWORKERCODE,SELLWORKERNAME FROM T_SELLWORKER WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND UPPER(SELLWORKERCODE)=UPPER('{TxtUserName.Text}') AND SELLWORKERPASSWORD='{TxtPwd.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) { GetValue(TxtMessage, "你没有销售权限!!", "#FF0000"); TxtUserName.Focus(); TxtUserName.SelectAll(); return; } //更新权限串 PosControl.ProwerRight = _SellWorker.Rows[0]["PROWERRIGHT"].ToString(); } else { GetValue(TxtMessage, "用户名或密码错误!!", "#FF0000"); TxtUserName.Focus(); TxtUserName.SelectAll(); return; } } catch (Exception ex) { //MessageBox.Show(ex.ToString()); LogHelper.WriteServiceLog(ex.ToString()); GetValue(TxtMessage, "数据库连接异常,请重试!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); TxtUserName.SelectAll(); return; } #region 结账 //判断结账校验 DataTable dt; string sqls = "select isnull(endaccount_day,1) from sys_globle where var_name = 'g_ver'"; DataTable _tables = DBHelper.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 = DBHelper.QueryOdbc(_SelectSql).Tables[0]; } catch (Exception ex) { LogHelper.WriteServiceLog(ex.ToString()); GetValue(TxtMessage, "本地数据库连接错误,请重试!", "#FF0000"); TxtUserName.Focus(); TxtUserName.SelectAll(); return; } if (dt.Rows.Count > 0) { try { 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; TxtUserName.Focus(); TxtUserName.SelectAll(); return; } } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.ToString()); TxtUserName.Focus(); TxtUserName.SelectAll(); return; } } #endregion #region 交班 //交班检测 string _SellWorkerCode = ""; string _SellWorkerName = ""; try { DataTable _DataTable = DBHelper.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"); TxtPwd.Focus(); TxtPwd.SelectAll(); return; } if (TxtUserName.Text.Trim().ToUpper() != _SellWorkerCode && !String.IsNullOrWhiteSpace(_SellWorkerCode)) { CommodityPrompt _CommodityPrompt = new CommodityPrompt("", $"收银员[{_SellWorkerCode}]{_SellWorkerName}未交班,是否交班并登陆?") { Owner = this }; _CommodityPrompt.ShowDialog(); if (_CommodityPrompt.DialogResult == false) { GetValue(TxtMessage, $"收银员[{_SellWorkerName}]还未交班,不允许登录其他收银员!", "#FF0000"); TxtUserName.Text = _SellWorkerCode; TxtPwd.Password = ""; TxtPwd.Focus(); TxtPwd.SelectAll(); return; } else { CommodityShift _CommodityShift = new CommodityShift("shift", "1") { Owner = this }; _CommodityShift.ShowDialog(); if (_CommodityShift.DialogResult != true) { GetValue(TxtMessage, $"收银员[{_SellWorkerName}]还未交班,不允许登录其他收银员!", "#FF0000"); TxtUserName.Text = _SellWorkerCode; TxtPwd.Password = ""; TxtPwd.Focus(); TxtPwd.SelectAll(); return; } } } #endregion if (QualityHelper.NaturalDayAccount != "0") { if (ESSupport.Lib.SyBaseHelper.QueryOdbc( $@"SELECT 1 FROM T_ENDACCOUNT_NEW WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND SHOPCODE = '{QualityHelper.shopcode}' AND MACHINECODE = '{QualityHelper.machinecode}' AND STARTDATE = DATETIME('{DateTime.Today.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss")}') AND ENDDATE = DATETIME('{DateTime.Today.AddSeconds(-1).ToString("yyyy/MM/dd HH:mm:ss")}') AND ENDACCOUNT_TYPE = {(int)PosDictionary.EndaccountType.NaturalDayAccount}").Tables[0].Rows.Count == 0) { CommodityPrompt _CommodityPrompt = new CommodityPrompt("", $"系统正在生成{DateTime.Today.AddDays(-1).ToString("yyyy/MM/dd")}" + $"自然日结算报表\n是否打印自然日结算单?") { Owner = this }; _CommodityPrompt.ShowDialog(); bool b_Print = _CommodityPrompt.DialogResult.Value; PosReportHelper.CreateEndaccount(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, QualityHelper.sellworkercode, 0, DateTime.Today.AddDays(-1), DateTime.Today.AddSeconds(-1), PosDictionary.EndaccountType.NaturalDayAccount, b_Print); //CommodityShift _CommodityShift = new CommodityShift("NaturalDayAccount", "0") //{ // Owner = this //}; //_CommodityShift.ShowDialog(); //if (_CommodityShift.DialogResult != true) //{ // GetValue(TxtMessage, "请先进行自然日结算。", "#FF0000"); // Grid_User.Visibility = Visibility.Visible; // GridLoad.Visibility = Visibility.Collapsed; // TxtPwd.Focus(); // TxtPwd.SelectAll(); // return; //} } } //登录时的操作 GetValue(TxtLogin, "", "#FF0000"); Grid_wf.Visibility = Visibility.Visible; LostKeyboard(); stp_title.Visibility = Visibility.Collapsed; stp_name.Visibility = Visibility.Collapsed; stp_pwd.Visibility = Visibility.Collapsed; stp_img.Visibility = Visibility.Visible; btn_login.IsEnabled = false; btn_close.IsEnabled = false; btnParameter.IsEnabled = false; string UserName = TxtUserName.Text.Trim().ToUpper(); string Pwd = TxtPwd.Password; TxtUserName.IsEnabled = false; TxtPwd.IsEnabled = false; int Edition = 0; if (chk_log.IsChecked.Value == true) { Edition = 1; } if (chk_other.IsChecked.Value == true) { Edition = 2; } if ((_thread == null || !_thread.IsAlive) && !IsLogin) { IsLogin = true; _thread = new Thread(() => Login_User(UserName, Pwd, Edition)) { IsBackground = true }; _thread.Start(); } #endregion break; case "btnParameter": #region 参数 ParameterPower _ParameterPower = new ParameterPower() { Owner = this }; _ParameterPower.ShowDialog(); if (_ParameterPower.DialogResult == true) { //ParameterSetting _ParameterSetting = new ParameterSetting(); ParConfigtion _ParConfigtion = new ParConfigtion() { Owner = this }; _ParConfigtion.ShowDialog(); QualityHelper.GetConfiguration(); } #endregion break; case "btnScaveng": #region 扫码配置参数 ScavengConfig _ScavengConfig = new ScavengConfig() { Owner = this }; _ScavengConfig.ShowDialog(); #endregion break; case "btn_close": #region 取消 UpLoadSwitch _UpLoadSwitch = new UpLoadSwitch() { Owner = this }; if (_UpLoadSwitch.ShowDialog() == true) { DataUpload _DataUpload = new DataUpload() { Owner = this }; _DataUpload.ShowDialog(); } #endregion break; case "btnarport": #region 查看状态 CashRegisterInf _CashRegisterInf = new CashRegisterInf() { Owner = this }; _CashRegisterInf.ShowDialog(); #endregion break; case "btn_user": #region 账号登录 Grid_LoginUser.Visibility = Visibility.Visible; Grid_LoginFinger.Visibility = Visibility.Collapsed; Grid_LoginFace.Visibility = Visibility.Collapsed; gif_face.Visibility = Visibility.Collapsed; gif_finger.Visibility = Visibility.Collapsed; img_face.Visibility = Visibility.Visible; img_finger.Visibility = Visibility.Visible; TxtUserName.Focus(); TxtUserName.SelectAll(); if (Grid_keyboard.Margin == new Thickness(240, 453, 240, 0)) { GetKeyboard(); } #endregion break; case "btn_face": #region 人脸识别登录 LostKeyboard(); Grid_LoginUser.Visibility = Visibility.Collapsed; Grid_LoginFinger.Visibility = Visibility.Collapsed; Grid_LoginFace.Visibility = Visibility.Visible; gif_face.Visibility = Visibility.Collapsed; gif_finger.Visibility = Visibility.Collapsed; img_face.Visibility = Visibility.Visible; img_finger.Visibility = Visibility.Visible; TxtStateFace.Text = "正在连接识别器,请稍候.."; #endregion break; case "btn_finger": #region 指纹识别登录 LostKeyboard(); Grid_LoginUser.Visibility = Visibility.Collapsed; Grid_LoginFinger.Visibility = Visibility.Visible; Grid_LoginFace.Visibility = Visibility.Collapsed; gif_face.Visibility = Visibility.Collapsed; gif_finger.Visibility = Visibility.Collapsed; img_face.Visibility = Visibility.Visible; img_finger.Visibility = Visibility.Visible; TxtState.Text = "正在连接识别器,请稍候.."; #endregion break; case "btnDownDate": #region 基础信息下载 Start(); #endregion break; case "btn_report": new CommodityMenu("", 0, true) { Owner = this }.ShowDialog(); break; } } #endregion #region 方法 -> Textblock加载内容 private void GetValue(TextBlock _TextBlock, string txt, string colortxt) { GiveValue(_TextBlock, txt, colortxt); } void GiveValue(TextBlock _TextBlock, string txt, string colortxt) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { _TextBlock.Text = txt; _TextBlock.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString(colortxt)); //要执行的代码 }); } #endregion #region 事件 -> 键盘动画效果 private void TxtUserName_GotFocus_1(object sender, RoutedEventArgs e) { if (Grid_keyboard.Margin == new Thickness(240, 453, 240, 0)) { GetKeyboard(); } } private void GetKeyboard() { //键盘弹出 System.Windows.Media.Animation.Storyboard storyboard_action = new System.Windows.Media.Animation.Storyboard(); storyboard_action.Stop(); storyboard_action.Children.Clear(); //添加动画 System.Windows.Media.Animation.ThicknessAnimation stb_1 = new System.Windows.Media.Animation.ThicknessAnimation(new Thickness(240, 453, 240, 0), new Thickness(240, 205, 243, 0), new Duration (TimeSpan.FromSeconds(0.2))); System.Windows.Media.Animation.Storyboard.SetTarget(stb_1, Grid_keyboard); System.Windows.Media.Animation.Storyboard.SetTargetProperty(stb_1, new PropertyPath("Margin")); storyboard_action.Children.Add(stb_1); //添加动画2 System.Windows.Media.Animation.ThicknessAnimation stb_2 = new System.Windows.Media.Animation.ThicknessAnimation(new Thickness(265, 115, 263, 98), new Thickness(265, 0, 263, 98), new Duration (TimeSpan.FromSeconds(0.2))); System.Windows.Media.Animation.Storyboard.SetTarget(stb_2, Grid_User); System.Windows.Media.Animation.Storyboard.SetTargetProperty(stb_2, new PropertyPath("Margin")); storyboard_action.Children.Add(stb_2); storyboard_action.Begin(); } private void LostKeyboard() { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { //键盘收起 System.Windows.Media.Animation.Storyboard storyboard_action = new System.Windows.Media.Animation.Storyboard(); storyboard_action.Stop(); storyboard_action.Children.Clear(); //添加动画 System.Windows.Media.Animation.ThicknessAnimation stb_1 = new System.Windows.Media.Animation.ThicknessAnimation(new Thickness(240, 205, 243, 0), new Thickness(240, 453, 240, 0), new Duration (TimeSpan.FromSeconds(0.2))); System.Windows.Media.Animation.Storyboard.SetTarget(stb_1, Grid_keyboard); System.Windows.Media.Animation.Storyboard.SetTargetProperty(stb_1, new PropertyPath("Margin")); storyboard_action.Children.Add(stb_1); //添加动画2 System.Windows.Media.Animation.ThicknessAnimation stb_2 = new System.Windows.Media.Animation.ThicknessAnimation(new Thickness(265, 0, 263, 98), new Thickness(265, 115, 263, 98), new Duration (TimeSpan.FromSeconds(0.2))); System.Windows.Media.Animation.Storyboard.SetTarget(stb_2, Grid_User); System.Windows.Media.Animation.Storyboard.SetTargetProperty(stb_2, new PropertyPath("Margin")); storyboard_action.Children.Add(stb_2); storyboard_action.Begin(); } } #endregion #region 方法 -> 登录 private void Login_User(string UserName, string Pwd, int Edition) { if (!LoginCheck()) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { //GetValue(TxtMessage, "登录校验失败,请重试!", "#FF0000"); LoginFail(); }); return; } if (string.IsNullOrWhiteSpace(QualityHelper.serverpartshop_id) || string.IsNullOrWhiteSpace(QualityHelper.businesstype)) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "门店信息初始化失败,请重试!", "#FF0000"); LoginFail(); }); return; } int _PersonResult = Currency.PersonLogin(UserName.Trim(), out string sellWorkerCode); switch (_PersonResult) { case 0: break; case -1: this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "账期数据插入失败,请重试!", "#FF0000"); LoginFail(); }); return; case -2: this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "工班数据插入失败,请重试!", "#FF0000"); LoginFail(); }); return; case -3: this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "收银员[" + sellWorkerCode + "]未交班!", "#FF0000"); LoginFail(); }); return; case -4: this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "账期数据插入失败,请重试!", "#FF0000"); LoginFail(); }); return; case -5: this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "当前系统时间错误,请调整后重新登录!", "#FF0000"); LoginFail(); }); return; } if (QualityHelper.IsServerpart == "0") { try { if (DBHelper.QueryOdbc(@"SELECT 1 FROM T_ACTIVELOGGING WHERE DATE(LOGGING_DATE) = TODAY() AND LOGGING_TYPE = 1000").Tables[0].Rows.Count == 0) { int _Maxid = 0; try { _Maxid = int.Parse(DBHelper.QueryOdbc("select max(activelogging_id) from t_activelogging").Tables[0].Rows[0][0].ToString()); } catch { _Maxid = 0; } string _strInsert = String.Format("insert into t_activelogging (activelogging_id,serverpartcode,shopcode," + "machinecode,machinename,macaddress,logging_date,running_interval,logging_type) values " + "({0},'{1}','{2}','{3}','{4}','{5}',datetime('{6}'), 0, 1000)", _Maxid + 1, QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, Dns.GetHostName(), ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation(), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo)); DBHelper.ExecuteSqlTran(_strInsert); object[] _args = { QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode,"0", "0", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo), QualityHelper.shopname }; ESSupport.Lib.WSHelper.InvokeWebService(String.Format("http://{0}:{1}/service.asmx", "60.191.61.29", "7081"), "endaccountinfo", _args); } } catch (Exception ex) { LogHelper.WriteServiceLog("便利店登录推送:" + ex.Message); } } this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { //对页面元素的操作 if (QualityHelper.IsGrocery == "1") { QualityHelper.UpdateConfigUration("IsTouch", "1"); QualityHelper.IsTouch = "1"; CommoditySaleCashier _CommoditySaleCashier = new CommoditySaleCashier(TxtUserName.Text.ToUpper()); _CommoditySaleCashier.Show(); Close(); return; } else { if (chk_log.IsChecked == true) { CommoditySaleCashier _CommoditySaleCashier = new CommoditySaleCashier(TxtUserName.Text.ToUpper()); _CommoditySaleCashier.Show(); Close(); } else if (chk_other.IsChecked == true) { CommoditySaleOther _CommoditySaleOther = new CommoditySaleOther(TxtUserName.Text.ToUpper()); _CommoditySaleOther.Show(); Close(); } } }); } #endregion #region 事件 -> 收银员版获取焦点 private void chk_log_Click_1(object sender, RoutedEventArgs e) { if (chk_log.IsChecked == true) { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { LostKeyboard(); } chk_other.IsChecked = false; QualityHelper.UpdateConfigUration("IsTouch", "1"); QualityHelper.IsTouch = "1"; } else { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { LostKeyboard(); } chk_other.IsChecked = true; chk_log.IsChecked = false; QualityHelper.UpdateConfigUration("IsTouch", "0"); QualityHelper.IsTouch = "0"; } } #endregion #region 方法 -> 点击页面空余地方键盘自动收起 private void Window_MouseDown_1(object sender, MouseButtonEventArgs e) { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { LostKeyboard(); } txt_focus.Focus(); txt_focus.SelectAll(); } #endregion #region 事件 -> 其他版获取焦点 private void chk_other_Click_1(object sender, RoutedEventArgs e) { if (chk_other.IsChecked == true) { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { LostKeyboard(); } chk_log.IsChecked = false; QualityHelper.UpdateConfigUration("IsTouch", "0"); QualityHelper.IsTouch = "0"; } else { if (Grid_keyboard.Margin == new Thickness(240, 205, 243, 0)) { LostKeyboard(); } chk_log.IsChecked = true; chk_other.IsChecked = false; QualityHelper.UpdateConfigUration("IsTouch", "1"); QualityHelper.IsTouch = "1"; } } #endregion #region 方法 -> 获取最大编号 private int GetMaxCode(string StrSql) { //获取最大编号并加1 DataTable _DataTable = DBHelper.QueryOdbc(StrSql).Tables[0]; int MaxCode = 0; if (_DataTable.Rows.Count > 0) { try { MaxCode = int.Parse(_DataTable.Rows[0][0].ToString()) + 1; } catch { MaxCode = 1; } } else { MaxCode = 1; } return MaxCode; } #endregion #region 方法 -> 键盘快捷键 private void Window_KeyDown_1(object sender, KeyEventArgs e) { if (e.SystemKey == Key.F4) { e.Handled = true; } switch (e.Key) { case Key.Escape: Button_Click(btn_close, null); break; case Key.F1: Button_Click(btnarport, null); break; case Key.F2: if (chk_other.IsChecked == true) { chk_log.IsChecked = true; chk_log_Click_1(null, null); } else { chk_other.IsChecked = true; chk_other_Click_1(null, null); } break; case Key.F3: Button_Click(btnScaveng, null); break; case Key.F4: Button_Click(btnParameter, null); break; case Key.F5: Button_Click(btn_report, null); break; case Key.Down: TxtUserName.Focus(); if (Grid_keyboard.Margin == new Thickness(240, 453, 240, 0)) { GetKeyboard(); } break; } } #endregion #region 方法 -> 登录数据校验验证 /// /// 登录账期班期数据验证 /// /// 登录工号 /// private bool LoginCheck() { try { OracleHelper _OracleHelper = new OracleHelper(QualityHelper.dbip, QualityHelper.dbport, QualityHelper.conname, QualityHelper.dbuser, QualityHelper.dbpass); PosControl.OracleServer = new OracleHelper(QualityHelper.dbip, QualityHelper.dbport, QualityHelper.conname, QualityHelper.dbuser, QualityHelper.dbpass); //判断本地数据库连接 try { DataTable _DataTable = DBHelper.QueryOdbc("select * from dba.sys_globle").Tables[0]; } catch (Exception ex) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "本地数据库无法连接,请重试!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } //判断收银机配置 if (QualityHelper.serverpartcode == "" || QualityHelper.shopcode == "" || QualityHelper.machinecode == "") { //参数错误 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "收银系统配置不正确,请前往参数页面修改!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } //与服务器校对时间 try { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "正在校准系统时间......", "#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 { } //判断当前时间是否小于上次登录时间 DateTime _DateTime = new DateTime(2018, 01, 01, 00, 00, 00); string _strLocalDate = QualityHelper.ConfigurationValues("syncdtime", "2018/01/01 00:00:00"); DateTime _LocalDate; if (DateTime.TryParse(_strLocalDate, out _LocalDate)) { if (DateTime.Now >= _LocalDate) { QualityHelper.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } else { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "当前系统时间错误,请调整后重新登录!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } } else { //系统第一次启动,判断是否小于预设时间 if (DateTime.Now >= _DateTime) { QualityHelper.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); } else { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "当前系统时间错误,请调整后重新登录!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } } //判断软件到期时间 try { string _strUsingType = QualityHelper.ConfigurationValues("using_type", "1000"); decimal _WarnDay = 0; decimal.TryParse(QualityHelper.ConfigurationValues("expiry_day", "15"), out _WarnDay); if (_WarnDay == 0) { _WarnDay = 15; } DateTime _SoftExpiryDate; if (!DateTime.TryParse(QualityHelper.ConfigurationValues("expirydate", ""), out _SoftExpiryDate)) { try { _SoftExpiryDate = DateTime.Parse(DBHelper.QueryOdbc("SELECT EXPIRY_DATE " + "FROM SYS_GLOBLE WHERE VAR_NAME = 'g_ver'").Tables[0].Rows[0]["expiry_date"].ToString()); } catch { } } if (_SoftExpiryDate != DateTime.MinValue) { if (DateTime.Today > _SoftExpiryDate) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, (_strUsingType == "2000" ? "您租赁的设备已到期" : "您购买的设备软件版本已到期") + ",请及时续费!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } int _RemainingTime = (int)_SoftExpiryDate.Subtract(DateTime.Today).TotalDays; if (_RemainingTime <= _WarnDay) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, (_strUsingType == "2000" ? "您租赁的设备剩余【" : "您购买的设备软件版本剩余【") + _RemainingTime + "】天到期,请及时续费!", "#FF0000"); TxtUserName.Focus(); }); MessageBoxResult _Result = MessageBox.Show((_strUsingType == "2000" ? "您租赁的设备剩余【" : "您购买的设备软件版本剩余【") + _RemainingTime + "】天过期,请及时续费!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification); } } } catch (Exception ex) { LogHelper.WriteServiceLog("软件有效期检测错误:" + ex.Message); } //判断门店状态 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(TxtMessage, "该门店已停业", "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } } else { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, "门店信息未下载!", "#FF0000"); Grid_User.Visibility = Visibility.Visible; DownDateThread = new Thread(CheckDate) { IsBackground = true }; DownDateThread.Start(); TxtUserName.Focus(); }); return false; } if (QualityHelper.IsServerpart == "1") { try { //DataTable _ConfigTable = _OracleHelper.ExcuteSqlGetDataSet( // $@"SELECT CONFIGURATION_VALUES // FROM {QualityHelper.dbuser}.T_CONFIGURATION // WHERE MACADDRESS = '{ESSupport.Lib.PCHelper.GetMacAddressByNetworkInformation()}' AND // UPPER(CONFIGURATION_NAME) = 'MOBILEPAYOPERATORS'").Tables[0]; //if (_ConfigTable.Rows.Count == 0) //{ if (PosSystemHelper.MobilePayConfigUpdate(new string[] { string.Format("http://{0}:{1}/service.asmx", QualityHelper.dbip, QualityHelper.DataServicePort) }, QualityHelper.serverpartcode, QualityHelper.businesstype) == -1) { MessageBoxResult _Result = MessageBox.Show("服务端移动支付服务通道未配置,请联系系统管理员", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification); } //} } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); } } return true; } catch (Exception ex) { LogHelper.WriteServiceLog("登录验证异常:" + ex.Message); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { GetValue(TxtMessage, ex.Message, "#FF0000"); Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; TxtUserName.Focus(); }); return false; } } #endregion private void LoginFail() { btn_login.IsEnabled = true; btn_close.IsEnabled = true; btnParameter.IsEnabled = true; TxtUserName.IsEnabled = true; stp_name.Visibility = Visibility.Visible; stp_pwd.Visibility = Visibility.Visible; stp_img.Visibility = Visibility.Collapsed; stp_title.Visibility = Visibility.Visible; TxtPwd.IsEnabled = true; TxtUserName.Focus(); TxtUserName.SelectAll(); Grid_wf.Visibility = Visibility.Collapsed; Grid_User.Visibility = Visibility.Visible; GridLoad.Visibility = Visibility.Collapsed; IsLogin = false; } /// /// 下载监听回调 /// /// /// private void DownStringEvent(DownResultInfo downResultInfo, string resultString) { int _DownCount = _ClientThread.getStartDownTypes().Count; if (!downResultInfo.StartToEnd) { Downing++; this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { pbrDown.Value = (double)Downing / _DownCount; }); } if (Downing == _DownCount) { //QualityHelper.GetDate(); QualityHelper.GetConfiguration(); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate { Grid_Load.Visibility = Visibility.Collapsed; pbrDown.Value = 0; GetValue(TxtMessage, "基础信息下载完成!", "#FF0000"); this.IsEnabled = true; TxtUserName.Focus(); TxtUserName.SelectAll(); }); } } #region 方法 -> 校验数据库 /// /// 数据库升级校验 /// private void GetDate() { try { ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate(); try { ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(new List { @"UPDATE T_COMMODITYSALE_NEW A SET A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL FROM T_COMMODITYEX B WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND A.COMMODITY_SYMBOL IS NULL" , @"UPDATE T_SELLDETAILS A SET A.COMMODITY_TYPE = B.COMMODITY_TYPE, A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL FROM T_COMMODITYEX B WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND A.COMMODITY_SYMBOL IS NULL AND A.COMMODITY_TYPE IS NULL", @"UPDATE T_ABNORMALITY A SET A.TRANSFER_STATE = 0 WHERE A.TRANSFER_STATE = 2 AND EXISTS ( SELECT 1 FROM T_ABNORMALITY B WHERE A.ABNORMALITY_CODE = B.ABNORMALITY_PCODE AND B.ABNORMALITY_TYPE = 1099 )" }); } catch { } //ESSupport.Lib.OracleHelper _OracleHelper = new ESSupport.Lib.OracleHelper(QualityHelper.dbip, QualityHelper.dbport, // QualityHelper.conname, QualityHelper.dbuser, QualityHelper.dbpass); //ESSupport.Lib.DataBaseUpdate.ServerDataBaseUpdate(QualityHelper.dbname, _OracleHelper); if (QualityHelper.IsGrocery == "0" || QualityHelper.data_delete == "1") { DataTable _DataTable = DBHelper.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)); } } try { ESSupport.Lib.DataBaseUpdate.ClearDataBackup( AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", int.Parse(QualityHelper.effective_day), true); } catch { } } catch { } } #endregion #region 方法 -> 检测数据是否存在并启动下发线程 private void CheckDate() { try { string _SelectSql = String.Format("SELECT SELLWORKERCODE,COUNT(SELLWORKERCODE) " + "FROM T_SELLWORKER WHERE SERVERPARTCODE = '{0}' GROUP BY SELLWORKERCODE " + "HAVING COUNT(SELLWORKERCODE) > 1", QualityHelper.serverpartcode); //删除错误工号数据 try { DBHelper.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_COMMODITYEX_INEFFECTIVE WHERE COMMODITY_BARCODE IS NULL "); } catch { } _SelectSql = "SELECT SHOPMESSAGE_ID FROM T_SHOPMESSAGE WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode + "' AND SHOPCODE = '" + QualityHelper.shopcode + "'"; DataTable _ShopMessageTable = DBHelper.QueryOdbc(_SelectSql).Tables[0]; _SelectSql = String.Format("SELECT 1 FROM T_SELLWORKER WHERE SERVERPARTCODE = '{0}'", QualityHelper.serverpartcode); DataTable _SellWorkerTable = DBHelper.QueryOdbc(_SelectSql).Tables[0]; if (_ShopMessageTable.Rows.Count == 0 || _SellWorkerTable.Rows.Count == 0) { DBHelper.ExecuteSqlTran(new List { "DELETE FROM T_DOWNUPDATE", "DELETE FROM T_SELLWORKER", "DELETE FROM T_SHOPMESSAGE" }); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { Start(); }); } try { if (QualityHelper.HDModelSwitch != "1") { string _ServiceUrl = "http://" + QualityHelper.dbip + ":" + QualityHelper.DataServicePort + "/DataServices/Service.asmx"; System.Collections.Hashtable hashtable = new System.Collections.Hashtable { { "serverPartShop_id", QualityHelper.serverpartshop_id } }; DataTable _DataTable = ESSupport.Lib.JsonHelper.ToDataTable( ESSupport.Lib.SoapWSHelper.QuerySoapWebServiceString(_ServiceUrl, "CommodityDeduplication", hashtable)); if (_DataTable.Rows.Count > 0) { string _CommodityID = ""; for (int i = 0; i < _DataTable.Rows.Count; i++) { _CommodityID += (_CommodityID == "" ? "" : ",") + _DataTable.Rows[i]["COMMODITYEX_ID"].ToString(); } DBHelper.ExecuteSqlTran(string.Format("DELETE FROM T_COMMODITYEX WHERE COMMODITYEX_ID IN ({0})", _CommodityID)); } } } catch { } try { ESSupport.Lib.SyBaseHelper.ExecuteSqlTran( $@"DELETE FROM T_COMMODITYEX WHERE SERVERPARTCODE <> '{QualityHelper.serverpartcode}'"); } catch { } try { //启动时删除重复商品条码,并设置重新获取商品数据 ESSupport.Lib.SyBaseHelper.ExecuteSqlTran( @"DELETE FROM T_COMMODITYEX B WHERE B.ISVALID = 0 AND B.COMMODITY_BARCODE IN( SELECT A.COMMODITY_BARCODE FROM T_COMMODITYEX A --WHERE A.ISVALID = 1 GROUP BY A.SERVERPARTCODE,A.COMMODITY_BARCODE HAVING COUNT(COMMODITY_BARCODE) > 1)"); ESSupport.Lib.SyBaseHelper.ExecuteSqlTran("DELETE FROM T_DOWNUPDATE"); } catch { } } catch { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate () { Start(); }); } } private void Start() { GridLoad.Visibility = Visibility.Collapsed; ConfigThread _ConfigThread = new ConfigThread(QualityHelper.serverpartcode); _ClientThread.setConfiguration("http://" + QualityHelper.dbip + ":" + QualityHelper.DataServicePort + "/DataServices/Service.asmx", QualityHelper.authorization, QualityHelper.serverpartcode, "", QualityHelper.shopcode, QualityHelper.macaddress, QualityHelper.machinecode, 400, 5, 20); List _DownList = new List(); //if (QualityHelper.serverpartcode == "888888" || QualityHelper.serverpartcode.StartsWith("62")) //{ Enum.TryParse(QualityHelper.ProvinceCode, out PosDictionary.ProvinceName pn_ProvinceName); switch (pn_ProvinceName) { case PosDictionary.ProvinceName.sxti: case PosDictionary.ProvinceName.zjwzgs: case PosDictionary.ProvinceName.wzgszc: case PosDictionary.ProvinceName.bghxam: case PosDictionary.ProvinceName.cqhygs: case PosDictionary.ProvinceName.stig: _DownList = new List() { "T_SELLWORKER", "T_SHOPMESSAGE", "T_CONFIGURATION" }; break; case PosDictionary.ProvinceName.gsyw: case PosDictionary.ProvinceName.gxjtsy: case PosDictionary.ProvinceName.gzhd: case PosDictionary.ProvinceName.gshy: case PosDictionary.ProvinceName.qhzy: case PosDictionary.ProvinceName.gsywxj: default: _DownList = new List() { "T_SELLWORKER_UNIT", "T_SELLWORKER_CLOUD", "T_SHOPMESSAGE_EX", "T_CONFIGURATION" }; break; } //} //else //{ // _DownList = new List() { "T_SELLWORKER", "T_SELLWORKER_UNIT", "T_SELLWORKER_CLOUD", "T_SHOPMESSAGE", "T_SHOPMESSAGE_EX", "T_CONFIGURATION" }; //} //_ClientThread.IsDownload(true, new List() { "T_SELLWORKER", "T_SELLWORKER_EX", "T_SHOPMESSAGE", "T_SHOPMESSAGE_EX", "T_CONFIGURATION" }); _ClientThread.IsDownload(true, _DownList); _ClientThread.setConfigThread(_ConfigThread); _ClientThread.DownloadStringEvent += new ClientThread.OutputResultsDownArg(DownStringEvent);//监听上传事件 bool b = _ClientThread.onState(); Downing = 0; Grid_Load.Visibility = Visibility.Visible; this.IsEnabled = false; TxtLoad.Text = "正在下载基础信息,请稍候..."; if (!b) { Grid_Load.Visibility = Visibility.Collapsed; this.IsEnabled = true; } } #endregion } }