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 ; }
}
}