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

925 lines
40 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 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
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
/// <remarks>登录界面进行的操作:
/// <para>1、启动数据库进行数据库连接检测</para>
/// <para>2、加载系统参数信息</para>
/// <para>3.1、检测是否异常重启,异常重启的情况下进行自动登录</para>
/// <para>3.2、用户输入账号及登录密码进行登录</para>
/// <para>4、检测当前账期结算情况记录账期开始信息、工班登录信息</para>
/// <para>5、打开收银主操作界面并启动自然日数据生成线程对自然日数据进行检测上传</para>
/// </remarks>
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
/// <summary>
/// 系统加载
/// </summary>
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 ->
/// <summary>
/// 收银工号输入框按键事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 2424
//判断结账校验
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 ->
/// <summary>
/// 用户登录系统
/// </summary>
/// <param name="UserName"></param>
/// <param name="Pwd"></param>
/// <param name="Edition"></param>
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 ->
/// <summary>
/// 登录账期班期数据验证
/// </summary>
/// <param name="person">登录工号</param>
/// <returns></returns>
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 ->
/// <summary>
/// 数据库升级校验
/// </summary>
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 -> 线
/// <summary>
/// 更换门店或首次安装开机的机器需要下载基础信息(方法重写用新的接口传输)
/// </summary>
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<string> list_DownTable = new List<string>() { "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();
});
}
}
/// <summary>
/// 更换门店或首次安装开机的机器需要下载基础信息
/// </summary>
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文件损坏导致的无法启动问题
/// <summary>
/// 检查更新Update.xml文件避免出现因为Update.xml文件损坏导致的无法启动问题
/// </summary>
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
}
}