|
|
using CentralControl.BaseData;
|
|
|
using CommonFunc;
|
|
|
using CommonFunc.Tools;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Data;
|
|
|
using System.Diagnostics;
|
|
|
using System.IO;
|
|
|
using System.Reflection;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Documents;
|
|
|
using System.Windows.Input;
|
|
|
using XGL.Data;
|
|
|
using XGL.Data.DBService;
|
|
|
using XGL.Models;
|
|
|
using XGLFinishPro.FormItem;
|
|
|
|
|
|
namespace XGLFinishPro
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// LoginPage.xaml 的交互逻辑
|
|
|
/// </summary>
|
|
|
public partial class LoginPage : Window
|
|
|
{
|
|
|
userDB usdb = new userDB();
|
|
|
FormingMachineService formingMachineService = new FormingMachineService();
|
|
|
private BackgroundWorker bw = new BackgroundWorker();
|
|
|
private UserLogin ul;
|
|
|
Main main;
|
|
|
public static string team = "";
|
|
|
public static LoginPage loginpage;
|
|
|
List<ShiftInfoModel> listShift;
|
|
|
List<DatasourceModel> listFactory;
|
|
|
List<BaseEquipment> listDevice;
|
|
|
|
|
|
public LoginPage()
|
|
|
{
|
|
|
//读取配置文件
|
|
|
Common.ReadConfig();
|
|
|
//初始化
|
|
|
InitializeComponent();
|
|
|
InitProgress();
|
|
|
InitVersion();
|
|
|
InitFactory();
|
|
|
InitDevice();
|
|
|
InitShiftInfo();
|
|
|
}
|
|
|
|
|
|
private void InitProgress()
|
|
|
{
|
|
|
bw.WorkerReportsProgress = true;
|
|
|
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
|
|
|
//进度改变事件
|
|
|
bw.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgessChanged);
|
|
|
//进度完成事件
|
|
|
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
|
|
|
}
|
|
|
|
|
|
private void InitVersion()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
string fileName = "vsion.txt"; // 指定要操作的文件名
|
|
|
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 构建完整的文件路径
|
|
|
string fileContent = File.ReadAllText(filePath);
|
|
|
lbVersion.Content = fileContent;
|
|
|
LoginUser.Version = fileContent;
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static List<DatasourceModel> GetFactory()
|
|
|
{
|
|
|
string sql = $"SELECT CASE WHEN pool_name LIKE 'ds_%' THEN STUFF( pool_name, 1, 3, '' ) ELSE pool_name END AS pool_name , db_url, park_name FROM sys_datasource WHERE db_url is not null and del_flag=0 ORDER BY pool_name asc";
|
|
|
DataTable dt = Utils.cloudDBHelper.getDataSet(sql).Tables[0];
|
|
|
return Utils.ToDataList<DatasourceModel>(dt);
|
|
|
}
|
|
|
|
|
|
public static List<BaseEquipment> GetBaseEquipment()
|
|
|
{
|
|
|
string sql = $"SELECT equipment_code as EquipmentCode,equipment_name as EquipmentName FROM base_equipment WHERE del_flag=0 and equipment_type_code='equ_type_bzx' ORDER BY equipment_id asc";
|
|
|
DataTable dt = Utils.netClientDBHelper.getDataSet(sql).Tables[0];
|
|
|
return Utils.ToDataList<BaseEquipment>(dt);
|
|
|
}
|
|
|
|
|
|
private void InitFactory()
|
|
|
{
|
|
|
//读取所有工厂数据
|
|
|
listFactory= GetFactory();
|
|
|
//绑定
|
|
|
comboBoxFactory.ItemsSource = listFactory;
|
|
|
comboBoxFactory.SelectedValuePath = "pool_name";
|
|
|
comboBoxFactory.DisplayMemberPath = "park_name";
|
|
|
//添加默认值
|
|
|
comboBoxFactory.SelectedValue= Utils.GetAppSetting("SiteCode");
|
|
|
//添加选择变更事件
|
|
|
comboBoxFactory.SelectionChanged += factory_Changed;
|
|
|
//是否启用工厂选择
|
|
|
comboBoxFactory.IsEnabled = bool.Parse(Utils.GetAppSetting("EnabledSwitchFactory"));
|
|
|
}
|
|
|
|
|
|
|
|
|
public void InitDevice()
|
|
|
{
|
|
|
//读取所有设备数据
|
|
|
listDevice = GetBaseEquipment();
|
|
|
//绑定
|
|
|
comboBoxDeviceCode.ItemsSource = listDevice;
|
|
|
comboBoxDeviceCode.SelectedValuePath = "EquipmentCode";
|
|
|
comboBoxDeviceCode.DisplayMemberPath = "EquipmentCode";
|
|
|
//添加默认值
|
|
|
comboBoxDeviceCode.SelectedValue = Utils.GetAppSetting("DeviceCode");
|
|
|
}
|
|
|
|
|
|
public void InitShiftInfo()
|
|
|
{
|
|
|
DataTable dt = formingMachineService.GetShiftList();
|
|
|
if (dt == null)
|
|
|
{
|
|
|
CustomMessageBox.Show("没有查询到班次信息,请联系管理员!", CustomMessageBoxIcon.Warning);
|
|
|
return;
|
|
|
}
|
|
|
listShift = Utils.ToDataList<ShiftInfoModel>(dt);
|
|
|
//绑定
|
|
|
comboBoxShift.ItemsSource = listShift;
|
|
|
comboBoxShift.SelectedValuePath = "shift_id";
|
|
|
comboBoxShift.DisplayMemberPath = "shift_desc";
|
|
|
}
|
|
|
|
|
|
|
|
|
private void factory_Changed(object sender, EventArgs e)
|
|
|
{
|
|
|
if (comboBoxFactory.SelectedValue == null)
|
|
|
{
|
|
|
listShift = new List<ShiftInfoModel>();
|
|
|
return;
|
|
|
}
|
|
|
string factoryCode = comboBoxFactory.SelectedValue.ToString();
|
|
|
if (factoryCode == Utils.GetAppSetting("SiteCode"))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
comboBoxShift.SelectedValue = null;
|
|
|
comboBoxDeviceCode.SelectedValue = null;
|
|
|
listShift = new List<ShiftInfoModel>();
|
|
|
listDevice = new List<BaseEquipment>();
|
|
|
Utils.SetAppSetting("SiteCode", factoryCode);
|
|
|
Utils.ResetNetClientDBHelper();
|
|
|
InitShiftInfo();
|
|
|
InitDevice();
|
|
|
}
|
|
|
|
|
|
private void comboBoxDeviceCode_KeyUp(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
|
|
|
List<BaseEquipment> mylist = new List<BaseEquipment>();
|
|
|
mylist = listDevice.FindAll(delegate (BaseEquipment s) { return s.EquipmentCode.Contains(comboBoxDeviceCode.Text.Trim()); });
|
|
|
comboBoxDeviceCode.ItemsSource = mylist;
|
|
|
comboBoxDeviceCode.IsDropDownOpen = true;
|
|
|
}
|
|
|
|
|
|
|
|
|
private void showLoading()
|
|
|
{
|
|
|
//遮罩层可见
|
|
|
dldh.Visibility = Visibility.Visible;
|
|
|
zzdl.Visibility = Visibility.Visible;
|
|
|
}
|
|
|
|
|
|
private void closeLoading()
|
|
|
{
|
|
|
//遮罩层不可见
|
|
|
dldh.Visibility = Visibility.Collapsed;
|
|
|
zzdl.Visibility = Visibility.Collapsed;
|
|
|
}
|
|
|
|
|
|
private void btnlogin_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
showLoading();
|
|
|
if (string.IsNullOrEmpty(datepickerWorkDate.Text))
|
|
|
{
|
|
|
CustomMessageBox.Show("登录失败,请选择工作日期", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
datepickerWorkDate.Focus();
|
|
|
return;
|
|
|
}
|
|
|
if (comboBoxShift.SelectedValue == null || string.IsNullOrEmpty(comboBoxShift.SelectedValue.ToString()))
|
|
|
{
|
|
|
CustomMessageBox.Show("登录失败,请选择班次", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
comboBoxShift.Focus();
|
|
|
return;
|
|
|
}
|
|
|
if (comboBoxDeviceCode.SelectedValue == null || string.IsNullOrEmpty(comboBoxDeviceCode.SelectedValue.ToString()))
|
|
|
{
|
|
|
CustomMessageBox.Show("登录失败,设备号不存在", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
comboBoxShift.Focus();
|
|
|
return;
|
|
|
}
|
|
|
Utils.SetAppSetting("SiteCode", comboBoxFactory.SelectedValue.ToString());
|
|
|
Utils.SetAppSetting("DeviceCode", comboBoxDeviceCode.SelectedValue.ToString());
|
|
|
var lst = listShift.FindLast(t => t.shift_id == Convert.ToInt32(comboBoxShift.SelectedValue.ToString()));
|
|
|
team = comboBoxShift.SelectedValue.ToString();
|
|
|
ul = new UserLogin
|
|
|
{
|
|
|
username = username.Text.Trim(),
|
|
|
pwd = userpwd.Password.Trim(),
|
|
|
IsChecked = rememberpwd.IsChecked,
|
|
|
shiftID = comboBoxShift.SelectedValue.ToString(),
|
|
|
workDate = datepickerWorkDate.Text,
|
|
|
startTime = lst.Shift_Start_Time,
|
|
|
endTime = lst.Shift_End_Time
|
|
|
};
|
|
|
main = new Main();
|
|
|
bw.RunWorkerAsync();
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LogHelper.instance.log.Error( "登陆异常:" + ex.Message);
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
closeLoading();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void bw_DoWork(object sender, DoWorkEventArgs e)
|
|
|
{
|
|
|
JudgeLogin();
|
|
|
}
|
|
|
private int LoginStatus = 0;
|
|
|
private int JudgeLogin()
|
|
|
{
|
|
|
|
|
|
DateTime dt1 = DateTime.Now;
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(ul.username))
|
|
|
{
|
|
|
LoginStatus = -3;
|
|
|
return LoginStatus;
|
|
|
}
|
|
|
if (string.IsNullOrEmpty(ul.pwd))
|
|
|
{
|
|
|
LoginStatus = -2;
|
|
|
return LoginStatus;
|
|
|
}
|
|
|
bw.ReportProgress(1);
|
|
|
bool islogin = usdb.Login(ul.username, ul.pwd, ul.shiftID,ul.teamID,ul.workDate, ul.startTime, ul.endTime);
|
|
|
Utils.userList = usdb.GetUserList();
|
|
|
if (islogin)
|
|
|
{
|
|
|
usdb.UpdateWorkDate(Utils.GetAppSetting("DeviceCode"), ul.shiftID,ul.workDate);
|
|
|
if (ul.IsChecked == true)
|
|
|
{
|
|
|
Common.IniWriteValue("登录明细", "loginUser", ul.username);
|
|
|
Common.IniWriteValue("登录明细", "loginpwd", ul.pwd);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Common.IniWriteValue("登录明细", "loginUser", "");
|
|
|
Common.IniWriteValue("登录明细", "loginpwd", "");
|
|
|
}
|
|
|
bw.ReportProgress(3);
|
|
|
LoginStatus = 200;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
LoginStatus = -1;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LoginStatus = -5;
|
|
|
LogHelper.instance.log.Error("登录异常:" + ex.Message);
|
|
|
}
|
|
|
DateTime dt2 = DateTime.Now;
|
|
|
TimeSpan ts1 = dt2.Subtract(dt1);
|
|
|
LogHelper.instance.log.Info("登录时间差:" + ts1.Seconds);
|
|
|
return LoginStatus;
|
|
|
}
|
|
|
|
|
|
private void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
|
|
|
{
|
|
|
if (e.ProgressPercentage == 1)
|
|
|
{
|
|
|
zzdl.Content = "校验用户";
|
|
|
}
|
|
|
if (e.ProgressPercentage == 2)
|
|
|
{
|
|
|
zzdl.Content = "正在加载菜单";
|
|
|
}
|
|
|
if (e.ProgressPercentage == 3)
|
|
|
{
|
|
|
zzdl.Content = "校验成功,正在登陆";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
|
{
|
|
|
switch (LoginStatus)
|
|
|
{
|
|
|
case 200:
|
|
|
main.Show();
|
|
|
this.Close();
|
|
|
break;
|
|
|
case 0:
|
|
|
CustomMessageBox.Show("登录失败", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
case -1:
|
|
|
CustomMessageBox.Show("账号或密码错误", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
case -2:
|
|
|
CustomMessageBox.Show("请输入密码", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
case -3:
|
|
|
CustomMessageBox.Show("请输入账号", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
case -4:
|
|
|
CustomMessageBox.Show("加载菜单异常,请重试", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
case -5:
|
|
|
CustomMessageBox.Show("登录异常,请重试", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Error);
|
|
|
break;
|
|
|
}
|
|
|
this.dldh.Visibility = Visibility.Hidden;//遮罩层可见
|
|
|
zzdl.Visibility = Visibility.Collapsed;
|
|
|
}
|
|
|
|
|
|
|
|
|
private void btnloginout_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
Environment.Exit(0);
|
|
|
Application.Current.Shutdown();
|
|
|
}
|
|
|
|
|
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
btnCheckUpdate_Click(null, null);
|
|
|
username.Focus();
|
|
|
this.dldh.Visibility = Visibility.Hidden;//遮罩层可见
|
|
|
zzdl.Visibility = Visibility.Collapsed;
|
|
|
string name = Common.IniReadValue("登录明细", "loginUser");
|
|
|
username.Text = name;
|
|
|
string pwd = Common.IniReadValue("登录明细", "loginpwd");
|
|
|
userpwd.Password = pwd;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
MethodInfo method = (MethodInfo)MethodBase.GetCurrentMethod();
|
|
|
Common.Log.Error(method.DeclaringType.FullName + "-" + method.Name + "\r\n" + ex.Message + "\r\n" + ex.StackTrace);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void Window_Closing(object sender, CancelEventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
|
{
|
|
|
this.DragMove();//窗体可移动
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新按钮
|
|
|
/// </summary>
|
|
|
/// <param name="sender"></param>
|
|
|
/// <param name="e"></param>
|
|
|
private void btnCheckUpdate_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
userDB usdb = new userDB();
|
|
|
var sresu = usdb.vsion();
|
|
|
string fileName = "vsion.txt"; // 指定要操作的文件名
|
|
|
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 构建完整的文件路径
|
|
|
if (File.Exists(filePath))
|
|
|
{
|
|
|
string fileContent = File.ReadAllText(filePath);
|
|
|
if (sresu != fileContent)
|
|
|
{
|
|
|
if (MessageBox.Show("检测到有新版本,是否更新?", "温馨提示", MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.OK)
|
|
|
{
|
|
|
// 设置要启动的应用程序名称和参数
|
|
|
string appName = "WPFupdate.exe"; // 替换为你的目标控制台应用程序的名称
|
|
|
string appArguments = sresu + "," + Process.GetCurrentProcess().MainModule.ModuleName;//sresu;// 替换为你的应用程序需要的参数
|
|
|
|
|
|
// 创建进程启动信息
|
|
|
ProcessStartInfo startInfo = new ProcessStartInfo
|
|
|
{
|
|
|
FileName = appName,
|
|
|
Arguments = appArguments,
|
|
|
RedirectStandardOutput = false, // 可以选择是否重定向标准输出
|
|
|
UseShellExecute = false, // 必须设置为false,以便在控制台中启动应用程序
|
|
|
CreateNoWindow = false // 设置为true,以便在后台启动应用程序
|
|
|
};
|
|
|
// 创建并启动进程
|
|
|
Process process = new Process
|
|
|
{
|
|
|
StartInfo = startInfo
|
|
|
};
|
|
|
process.Start();
|
|
|
Environment.Exit(0);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if(sender != null)
|
|
|
MessageBox.Show("没有检测到新版本", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MessageBox.Show("没有找到版本文件", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
Console.WriteLine("文件不存在: " + filePath);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
public class UserLogin
|
|
|
{
|
|
|
public string username { get; set; }
|
|
|
|
|
|
public string pwd { get; set; }
|
|
|
|
|
|
public bool? IsChecked { get; set; }
|
|
|
|
|
|
public string teamID { get; set; }
|
|
|
|
|
|
public string shiftID { get; set; }
|
|
|
|
|
|
public string workDate { get; set; }
|
|
|
public string startTime { get; set; }
|
|
|
public string endTime { get; set; }
|
|
|
}
|
|
|
}
|