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

1640 lines
75 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 _thread;
private Thread _DataThread;
private Thread LoadThread;
private Thread DownDateThread;
ClientThread _ClientThread = new ClientThread();
int Downing = 0;
bool IsLogin = false;
#endregion
#region
public MainWindow()
{
InitializeComponent();
//初始化
imgload.Image = Properties.Resources.;
imga.Image = Properties.Resources.load;
PictureFigr.Image = Properties.Resources.;
PictureFace.Image = Properties.Resources.;
//数据库连接检测
try
{
ESSupport.Lib.SyBaseHelper.QueryOdbc("SELECT * FROM DBA.SYS_GLOBLE");
}
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();
}
//启动加载
LoadThread = new Thread(Loading)
{
IsBackground = true
};
Grid_Load.Visibility = Visibility.Visible;
LoadThread.Start();
}
#endregion
#region
/// <summary>
/// 系统加载
/// </summary>
private 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();
//获取版本信息并更新
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"));
}
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 { }
//通过云端接口获取当前服务区门店对应的业主参数配置软件名称、扫码上传数据地址、业主单位名称、业主单位ID标识
ESSupport.Pos.ThreadHelper.ConfigurationByCloud($"http://{QualityHelper.dbip}:{QualityHelper.serviceport}/Service.asmx");
#region
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;
}
/*
* 直连云端接口获取门店信息
* 获取门店ID、门店名称、业态编码、业态名称、门店状态、是否统一定价门店、
* 是否上传营收数据、是否上传稽核数据、销售金额上限、销售数量上限、
* 是否记录优惠折扣、所属业主单位ID、所属业主单位名称
*/
bool b_DownLoad = PosControl.PosDataDownload.DataDownload(
ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueShopInfoToMachine, DateTime.MinValue);
#endregion
#region
ESSupport.Transfer.PosDataUpload DataUpload;
//未设置内网Nginx代理服务器时默认直接访问云端接口地址
//if (string.IsNullOrWhiteSpace(QualityHelper.DataTransferApi_IP))
if (ESSupport.Lib.HttpHelper.UrlIsExist(PosControl.PosDataUploadURL))
{
//公网模式下,直接访问云端接口地址
DataUpload = new ESSupport.Transfer.PosDataUpload(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, PosControl.PosDataUploadURL);
}
else
{
//内网模式下通过本地服务器Nginx代理访问云端接口
DataUpload = new ESSupport.Transfer.PosDataUpload(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, $"http://{QualityHelper.dbip}:7198/webApi_publish");
}
DataUpload.NotifyEvent += PosSystemHelper.PosSocket_NotifyEvent;
//上传收银机器信息到云端
DataUpload.DataUpload(ESSupport.Transfer.TransferDataDictionary.TableDataType.UploadMachineInfo, DateTime.Now);
//执行日志换行
PosSystemHelper.PosSocket_NotifyEvent(this, new ESSupport.Model.Common.NotifyEventArgs()
{
NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.,
NotifyLoggerTime = DateTime.Now
});
#endregion
QualityHelper.UpdateConfigUration("NewSystem", "1");
if (!QualityHelper.serverpartcode.StartsWith("14") && QualityHelper.serverpartcode != "888888")
{
QualityHelper.UpdateConfigUration("VideoSwitch", "0");
QualityHelper.VideoSwitch = "0";
}
#region 使
//检查是否更换收银机使用门店
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 { }
}
#endregion
#region
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 { }
}
#endregion
#region Update.xml文件
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 = "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");
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("启动文件校验失败:" + ex.Message);
}
#endregion
#region Socket通讯客户端
//启动Socket客户端连接线程
if (PosControl.PosSocket == null)
{
//未设置内网Nginx代理服务器时默认直接访问云端接口地址
// if (string.IsNullOrWhiteSpace(QualityHelper.DataTransferApi_IP))
if (ESSupport.Lib.HttpHelper.UrlIsExist(PosControl.PosDataDownloadURL))
{
PosControl.PosSocket = new ESSupport.Transfer.PosSuperSocketClient(
$"ws://pos.eshangtech.com:7199/?ServerpartCode={QualityHelper.serverpartcode}&" +
$"ShopCode={QualityHelper.shopcode}&MachineCode={QualityHelper.machinecode}",
QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, PosControl.PosDataDownloadURL);
}
else
{
PosControl.PosSocket = new ESSupport.Transfer.PosSuperSocketClient(
$"ws://{QualityHelper.dbip}:7199/?ServerpartCode={QualityHelper.serverpartcode}&" +
$"ShopCode={QualityHelper.shopcode}&MachineCode={QualityHelper.machinecode}",
QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, $"http://{QualityHelper.dbip}:7198/webApi_publish");
}
PosControl.PosSocket.NotifyEvent += PosSystemHelper.PosSocket_NotifyEvent;
}
if (!PosControl.PosSocket.ClientRuning)
{
PosControl.PosSocket.Start();
}
#endregion
//自然日数据生成和上传
Prints.LoginNaturalDayAccount();
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")}】收银系统启动成功,等待用户登录。",
NotifyUploadState = true
});
#region
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
TxtSoftwareName.Text = QualityHelper.softwarename;
#region
try
{
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;
}
}
catch (Exception ex)
{
}
#endregion
//显示软件版本
GetValue(TxtVersion, QualityHelper.version, "#000000");
//显示软件有效期
GetValue(TxtExpiryDate, _SoftExpiryDate == DateTime.MinValue ? "" :
((_strUsingType == "2000" ? "租赁有效期: " : "软件有效期: ") + _SoftExpiryDate.ToString("yyyy年MM月dd日")), "#000000");
#region Logo和软件名称
try
{
if (QualityHelper.softwarename.Contains("蜀越"))
{
img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/sc.png"));
img_logo.Visibility = Visibility.Collapsed;
}
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 if (QualityHelper.softwarename.Contains("驿达"))
{
img_logo.Source = new BitmapImage(new Uri("pack://application:,,,/Image/logo/ahyd.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")
{
#region
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)
{
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
}
TxtUserName.Focus();
});
#endregion
}
#endregion
#region ->
/// <summary>
/// 收银工号输入框按键事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
}
}
#endregion
#region ->
/// <summary>
/// 密码输入框按键事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TxtPwd_KeyDown(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 ->
/// <summary>
/// 按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Click(object sender, RoutedEventArgs e)
{
Button keybtn = sender as Button;
switch (keybtn.Name)
{
case "btn_login":
#region
#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
{
#region
DataTable _SellWorker = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT PROWERRIGHT,SELLWORKERCODE,SELLWORKERNAME,DISCOUNT_RATE
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();
//更新收银员最大折扣权限
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
{
GetValue(TxtMessage, "账号或密码错误,请核对后重新输入!", "#FF0000");
TxtUserName.Focus();
TxtUserName.SelectAll();
return;
}
#endregion
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("收银工号登录异常。原因:" + ex.Message);
GetValue(TxtMessage, "数据库连接异常,请重试!", "#FF0000");
Grid_User.Visibility = Visibility.Visible;
GridLoad.Visibility = Visibility.Collapsed;
TxtUserName.Focus();
TxtUserName.SelectAll();
return;
}
#endregion
#region 2424
//判断结账校验
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)
{
ESSupport.Lib.LogHelper.WriteServiceLog(ex.ToString());
GetValue(TxtMessage, "本地数据库连接错误,请重试!", "#FF0000");
TxtUserName.Focus();
TxtUserName.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;
TxtUserName.Focus();
TxtUserName.SelectAll();
return;
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog(ex.ToString());
TxtUserName.Focus();
TxtUserName.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");
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
//登录时的操作
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
CashierDataDownload();
#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, 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(100, 115, 100, 98), new Thickness(100, 0, 100, 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, 240, 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, 240, 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(100, 0, 100, 98), new Thickness(100, 115, 100, 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 ->
/// <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);
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;
}
#endregion
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)} 登录成功;" +
$"当前版本YSv{System.Windows.Forms.Application.ProductVersion}",
NotifyUploadState = true
});
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate ()
{
#region
//根据用户选择,打开键盘版或触屏版主操作界面
if (chk_log.IsChecked == true)
{
//键盘版操作界面
CommoditySaleCashier _CommoditySaleCashier = new CommoditySaleCashier(TxtUserName.Text.ToUpper());
_CommoditySaleCashier.Show();
Close();
}
else
{
//触屏版操作界面
CommoditySaleOther _CommoditySaleOther = new CommoditySaleOther(TxtUserName.Text.ToUpper());
_CommoditySaleOther.Show();
Close();
}
#endregion
});
}
#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 ->
/// <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 ()
{
GetValue(TxtMessage, "收银系统配置不正确,请前往参数页面修改!", "#FF0000");
Grid_User.Visibility = Visibility.Visible;
GridLoad.Visibility = Visibility.Collapsed;
TxtUserName.Focus();
});
return false;
}
#endregion
#region
//与服务器校对时间
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 { }
#endregion
#region
DateTime _DateTime = new DateTime(2021, 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;
}
}
#endregion
#region
//判断软件到期时间
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)
{
ESSupport.Lib.LogHelper.WriteServiceLog("软件有效期检测错误:" + ex.Message);
}
#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(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;
}
return true;
}
catch (Exception ex)
{
ESSupport.Lib.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;
}
#region ->
/// <summary>
/// 数据库升级校验
/// </summary>
private void GetDate()
{
try
{
ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate();
try
{
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(new List<string>
{
//补全单品表商品扫码传输标识
@"UPDATE T_COMMODITYSALE_NEW A
SET A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL
FROM T_COMMODITYEX B
WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND
ISNULL(A.COMMODITY_SYMBOL,'') = ''" ,
//补全流水表商品扫码传输标识、商品类别
@"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
ISNULL(A.COMMODITY_SYMBOL,'') = '' AND ISNULL(A.COMMODITY_TYPE,'') = ''",
//补全需要上传的异常交易明细(挂单后进行清单的商品明细)
@"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 { }
//定期清理数据
if (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 -> 线
/// <summary>
/// 更换门店或首次安装开机的机器需要下载基础信息(方法重写用新的接口传输)
/// </summary>
private void CheckDate()
{
try
{
try
{
//删除错误工号数据
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");
}
catch { }
DataTable _ShopMessageTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT SHOPMESSAGE_ID FROM T_SHOPMESSAGE
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}'").Tables[0];
DataTable _SellWorkerTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT 1 FROM T_SELLWORKER
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}'").Tables[0];
if (_ShopMessageTable.Rows.Count == 0 || _SellWorkerTable.Rows.Count == 0)
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate ()
{
CashierDataDownload();
});
}
}
catch
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate ()
{
CashierDataDownload();
});
}
}
/// <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
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
Grid_Load.Visibility = Visibility.Visible;
this.IsEnabled = false;
TxtLoad.Text = "正在下载基础数据信息,请稍候......";
});
PosControl.PosDataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueConfigurationToMachine, DateTime.Now);
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
pbrDown.Value += 34;
});
//PosSystemHelper.PosSocket_NotifyEvent(DateTime.Now, $"用户手动下载门店数据信息。", "3104");
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;
});
//PosSystemHelper.PosSocket_NotifyEvent(DateTime.Now, $"用户手动下载收银工号数据信息。", "3104");
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);
//执行日志换行
PosSystemHelper.PosSocket_NotifyEvent(this, new ESSupport.Model.Common.NotifyEventArgs()
{
NotifyLoggerType = ESSupport.Transfer.TransferDataDictionary.LoggerType.,
NotifyLoggerTime = DateTime.Now
});
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
pbrDown.Value += 34;
});
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();
});
#endregion
})
{
IsBackground = true
};
PosControl.DataTransThread.Start();
}
}
#endregion
}
}