diff --git a/Admin.Core.Extensions/ServiceExtensions/SqlsugarSetup.cs b/Admin.Core.Extensions/ServiceExtensions/SqlsugarSetup.cs index 85475618..3a36e163 100644 --- a/Admin.Core.Extensions/ServiceExtensions/SqlsugarSetup.cs +++ b/Admin.Core.Extensions/ServiceExtensions/SqlsugarSetup.cs @@ -1,5 +1,7 @@ using Admin.Core.Common; +using Admin.Core.Model; using Microsoft.Extensions.DependencyInjection; +using NPOI.SS.Formula.Functions; using SqlSugar; using System; using System.Collections.Generic; @@ -67,7 +69,9 @@ namespace Admin.Core.Extensions } ); }); - return new SqlSugarClient(listConfig); + SqlSugarClient client = new SqlSugarClient(listConfig); + // var childA = client.GetConnection("aucma_mes").Ado.SqlQuery("select * from BASE_BOMINFO where OBJ_ID='1'"); + return client; }); } diff --git a/Admin.Core.Repository/BASE/BaseRepository.cs b/Admin.Core.Repository/BASE/BaseRepository.cs index 0a39521a..ed7a6f97 100644 --- a/Admin.Core.Repository/BASE/BaseRepository.cs +++ b/Admin.Core.Repository/BASE/BaseRepository.cs @@ -51,15 +51,16 @@ namespace Admin.Core.Repository _dbBase = unitOfWork.GetDbClient(); } + #region 判断数据库连接状态 /// /// 判断数据库连接状态 /// /// public bool GetConnectionState() { - return _db.Ado.IsValidConnection(); - } - + return _db.Ado.IsValidConnection(); + } + #endregion #region 异步方法 diff --git a/Aucma.Core.BoxFoam/Startup.cs b/Aucma.Core.BoxFoam/Startup.cs index 7b358d95..9346970d 100644 --- a/Aucma.Core.BoxFoam/Startup.cs +++ b/Aucma.Core.BoxFoam/Startup.cs @@ -8,6 +8,7 @@ using Admin.Core.Repository; using Admin.Core.Service; using Admin.Core.Tasks; using Aucma.Core.RunPlc; +using Aucma.Core.Scanner; using Autofac; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -61,6 +62,9 @@ namespace Aucma.Core.BoxFoam //עҵ AddServices(services); + //ɨ + services.AddScannerSetup(); + // services.AddJobSetup(); //PLC @@ -85,7 +89,7 @@ namespace Aucma.Core.BoxFoam /// /// /// - public void Configure(IApplicationBuilder app, ISysTasksQzService tasksQzService, ISchedulerCenter schedulerCenter, IRunPlcService runPlcService)// + public void Configure(IApplicationBuilder app, ISysTasksQzService tasksQzService, ISchedulerCenter schedulerCenter, IRunPlcService runPlcService,IScannerService scannerService)// { // ʹþ̬ļ app.UseStaticFiles(); @@ -96,6 +100,8 @@ namespace Aucma.Core.BoxFoam app.UseQuartzJobMildd(tasksQzService, schedulerCenter); //PLC app.UsePlcMildd(runPlcService); + //ɨ + app.UseScannerMildd(scannerService); } #region ע diff --git a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs index 11b3f847..191e4513 100644 --- a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs @@ -6,6 +6,10 @@ using System; using log4net; using System.Diagnostics; using System.Threading; +using Admin.Core.Common; +using Aucma.Core.PLc; +using Aucma.Core.Scanner; +using System.Linq; namespace Aucma.Core.BoxFoam.ViewModels { @@ -19,12 +23,82 @@ namespace Aucma.Core.BoxFoam.ViewModels private FoamPlanPageView foamPlanPageView = new FoamPlanPageView(); FoamMonitorPageView foamMonitorPageView = new FoamMonitorPageView(); FoamMachinesPageView foamMachinesPageView = new FoamMachinesPageView(); - + public MainWindowViewModel() { UserContent = firstPage; + init(); + } + public void init() + { + // 设备状态刷新定时器 + System.Timers.Timer timer = new System.Timers.Timer(1000 * 5); + timer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshStatus); + timer.AutoReset = true; + timer.Enabled = true; + timer.Start(); + } + + #region 设备状态刷新 + /// + /// 设备状态刷新 + /// + /// + /// + public void RefreshStatus(object sender, System.Timers.ElapsedEventArgs e) + { + RefreshMesDb(); + RefreshPlc(); + RefreshScanner(); + + } + /// + /// 数据库状态刷新 + /// + /// + /// + public void RefreshMesDb() + { + MesDbState(true); } + + /// + /// plc状态刷新 + /// + /// + /// + public void RefreshPlc() + { + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("泡前库Plc")); + if (obj != null) + { + if (obj.plc.IsConnected) + { + PlcState(true); + } + else + { + PlcState(false); + } + } + else + { + PlcState(false); + } + } + /// + /// 扫码器状态刷新 + /// + /// + /// + public void RefreshScanner() + { + string ip1 = Appsettings.app("Middleware", "Scanner1", "Ip"); + bool flag1 = MvCodeHelper.ConnectionStatus(ip1); + Scanner1State(flag1); + } + #endregion #region 更换界面 public System.Windows.Controls.UserControl _content; @@ -142,19 +216,70 @@ namespace Aucma.Core.BoxFoam.ViewModels break; } } - #endregion + #endregion + + #region MES数据库状态 + /// + /// MES数据库-文字 + /// + public string _mesDbUIStatusWb; + public string MesDbUIStatusWb + { + get => _mesDbUIStatusWb; + set => SetProperty(ref _mesDbUIStatusWb, value); + } + /// + /// MES数据库-颜色 + /// + public string _mesDbUIColor; + public string MesDbUIColor + { + get => _mesDbUIColor; + set => SetProperty(ref _mesDbUIColor, value); + } + /// + /// MES数据库-图标 + /// + public string _mesUIIcon; + public string MesUIIcon + { + get => _mesUIIcon; + set => SetProperty(ref _mesUIIcon, value); + } + + /// + /// MES数据库连接状态 + /// + /// + public void MesDbState(bool type) + { + Application.Current.Dispatcher.Invoke(() => + { + if (type) + { + MesDbUIStatusWb = "MES数据库连接成功"; + MesDbUIColor = "Green"; + MesUIIcon = "Assets/Images/Green.png"; + } + else + { + MesDbUIStatusWb = "MES数据库异常"; + MesDbUIColor = "Red"; + MesUIIcon = "Assets/Images/Red.png"; + } + }); + } + #endregion #region plc 状态 /// /// UI plc 展示状态-文字 /// - public string _plcUIStatus; + public string _plcUIStatusWb; public string PlcUIStatusWb { - //get { return plcUIStatusWb; } - //set { plcUIStatusWb = value; RaisePropertyChanged("PlcUIStatusWb"); } - get => _plcUIStatus; - set => SetProperty(ref _plcUIStatus, value); + get => _plcUIStatusWb; + set => SetProperty(ref _plcUIStatusWb, value); } /// /// UI plc 展示状态-颜色 @@ -162,8 +287,6 @@ namespace Aucma.Core.BoxFoam.ViewModels public string _plcUIColor; public string PlcUIColor { - //get { return plcUIColor; } - //set { plcUIColor = value; RaisePropertyChanged("PlcUIColor"); } get => _plcUIColor; set => SetProperty(ref _plcUIColor, value); } @@ -173,8 +296,6 @@ namespace Aucma.Core.BoxFoam.ViewModels public string _plcUIIcon; public string PlcUIIcon { - //get { return plcUIIcon; } - //set { plcUIIcon = value; RaisePropertyChanged("plcUIIcon"); } get => _plcUIIcon; set => SetProperty(ref _plcUIIcon, value); } @@ -185,18 +306,80 @@ namespace Aucma.Core.BoxFoam.ViewModels /// public void PlcState(bool type) { - if (type) + Application.Current.Dispatcher.Invoke(() => { - PlcUIStatusWb = "PLC连接成功"; - PlcUIColor = "White"; - PlcUIIcon = "Assets/Images/正常.png"; - } - else + if (type) + { + PlcUIStatusWb = "PLC连接成功"; + PlcUIColor = "Green"; + PlcUIIcon = "Assets/Images/Green.png"; + } + else + { + PlcUIStatusWb = "PLC状态异常"; + PlcUIColor = "Red"; + PlcUIIcon = "Assets/Images/Red.png"; + } + }); + } + #endregion + + #region 扫码器1状态 + /// + /// UI 展示状态-文字 + /// + public string _scanner1UIStatusWb; + public string Scanner1UIStatusWb + { + //get { return plcUIStatusWb; } + //set { plcUIStatusWb = value; RaisePropertyChanged("PlcUIStatusWb"); } + get => _scanner1UIStatusWb; + set => SetProperty(ref _scanner1UIStatusWb, value); + } + /// + /// UI 展示状态-颜色 + /// + public string _scanner1UIColor; + public string Scanner1UIColor + { + //get { return plcUIColor; } + //set { plcUIColor = value; RaisePropertyChanged("PlcUIColor"); } + get => _scanner1UIColor; + set => SetProperty(ref _scanner1UIColor, value); + } + /// + /// UI 展示状态-图标 + /// + public string _scanner1UIIcon; + public string Scanner1UIIcon + { + //get { return plcUIIcon; } + //set { plcUIIcon = value; RaisePropertyChanged("plcUIIcon"); } + get => _scanner1UIIcon; + set => SetProperty(ref _scanner1UIIcon, value); + } + + /// + /// 扫码器1连接状态-true:连接成功;false:失败 + /// + /// + public void Scanner1State(bool type) + { + Application.Current.Dispatcher.Invoke(() => { - PlcUIStatusWb = "PLC状态异常"; - PlcUIColor = "Red"; - PlcUIIcon = "Assets/Images/失败-01.png"; - } + if (type) + { + Scanner1UIStatusWb = "扫码器1连接成功"; + Scanner1UIColor = "Green"; + Scanner1UIIcon = "Assets/Images/Green.png"; + } + else + { + Scanner1UIStatusWb = "扫码器1状态异常"; + Scanner1UIColor = "Red"; + Scanner1UIIcon = "Assets/Images/Red.png"; + } + }); } #endregion } diff --git a/Aucma.Core.BoxFoam/Views/MainWindow.xaml b/Aucma.Core.BoxFoam/Views/MainWindow.xaml index 9fde5a44..f5a5bd01 100644 --- a/Aucma.Core.BoxFoam/Views/MainWindow.xaml +++ b/Aucma.Core.BoxFoam/Views/MainWindow.xaml @@ -8,7 +8,7 @@ Title="澳柯玛箱体发泡控制系统" d:DesignHeight="1080" d:DesignWidth="1920" FontFamily="Microsoft YaHei" - WindowStyle="ToolWindow" WindowState="Maximized" + WindowStyle="None" WindowState="Maximized" WindowStartupLocation="CenterScreen" > @@ -59,10 +59,7 @@ - - - - + public static void OpenOsk() { - Process proc = new Process(); + Process proc = new Process(); proc.StartInfo.FileName = @"C:\Windows\System32\osk.exe"; proc.StartInfo.UseShellExecute = true; proc.StartInfo.Verb = "runas"; proc.Start(); } #endregion - #region 界面切换 /// /// 界面切换 @@ -283,11 +282,11 @@ namespace Aucma.Core.CodeBinding.ViewModels /// /// UI plc 展示状态-文字 /// - public string _plcUIStatus; + public string _plcUIStatusWb; public string PlcUIStatusWb { - get => _plcUIStatus; - set => SetProperty(ref _plcUIStatus, value); + get => _plcUIStatusWb; + set => SetProperty(ref _plcUIStatusWb, value); } /// /// UI plc 展示状态-颜色 diff --git a/Aucma.Core.DoorFoam/Startup.cs b/Aucma.Core.DoorFoam/Startup.cs index 74ef69be..2be9db94 100644 --- a/Aucma.Core.DoorFoam/Startup.cs +++ b/Aucma.Core.DoorFoam/Startup.cs @@ -7,6 +7,8 @@ using Admin.Core.Model; using Admin.Core.Repository; using Admin.Core.Service; using Admin.Core.Tasks; +using Aucma.Core.RunPlc; +using Aucma.Core.Scanner; using Autofac; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -60,9 +62,13 @@ namespace Aucma.Core.DoorFoam //עҵ AddServices(services); + //ɨ + services.AddScannerSetup(); + // services.AddJobSetup(); - + //PLC + services.AddPlcSetup(); //ֱ֧ȫ :֧ System.Text.Encoding.GetEncoding("GB2312") System.Text.Encoding.GetEncoding("GB18030") Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } @@ -83,7 +89,7 @@ namespace Aucma.Core.DoorFoam /// /// /// - public void Configure(IApplicationBuilder app, ISysTasksQzService tasksQzService, ISchedulerCenter schedulerCenter) + public void Configure(IApplicationBuilder app, ISysTasksQzService tasksQzService, ISchedulerCenter schedulerCenter, IScannerService scannerService, IRunPlcService runPlcService) { // ʹþ̬ļ app.UseStaticFiles(); @@ -93,6 +99,10 @@ namespace Aucma.Core.DoorFoam // QuartzNetJobȷ app.UseQuartzJobMildd(tasksQzService, schedulerCenter); + //ɨ + app.UseScannerMildd(scannerService); + //PLC + app.UsePlcMildd(runPlcService); } #region ע diff --git a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs index 680ce715..13fba3d9 100644 --- a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs @@ -7,6 +7,10 @@ using log4net; using System.Diagnostics; using System.Threading; using NPOI.HSSF.Record; +using Admin.Core.Common; +using Aucma.Core.PLc; +using Aucma.Core.Scanner; +using System.Linq; namespace Aucma.Core.DoorFoam.ViewModels { @@ -15,12 +19,82 @@ namespace Aucma.Core.DoorFoam.ViewModels private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MainWindowViewModel)); private IndexPageView firstPage = new IndexPageView();//首页 private StatisticsPageView recordPage = new StatisticsPageView(); - + public MainWindowViewModel() { UserContent = firstPage; + init(); + } + public void init() + { + // 设备状态刷新定时器 + System.Timers.Timer timer = new System.Timers.Timer(1000 * 5); + timer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshStatus); + timer.AutoReset = true; + timer.Enabled = true; + timer.Start(); + } + + #region 设备状态刷新 + /// + /// 设备状态刷新 + /// + /// + /// + public void RefreshStatus(object sender, System.Timers.ElapsedEventArgs e) + { + RefreshMesDb(); + RefreshPlc(); + RefreshScanner(); + + } + /// + /// 数据库状态刷新 + /// + /// + /// + public void RefreshMesDb() + { + MesDbState(true); } + + /// + /// plc状态刷新 + /// + /// + /// + public void RefreshPlc() + { + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("发泡Plc")); + if (obj != null) + { + if (obj.plc.IsConnected) + { + PlcState(true); + } + else + { + PlcState(false); + } + } + else + { + PlcState(false); + } + } + /// + /// 扫码器状态刷新 + /// + /// + /// + public void RefreshScanner() + { + string ip1 = Appsettings.app("Middleware", "Scanner1", "Ip"); + bool flag1 = MvCodeHelper.ConnectionStatus(ip1); + Scanner1State(flag1); + } + #endregion #region 更换界面 public System.Windows.Controls.UserControl _content; @@ -122,19 +196,70 @@ namespace Aucma.Core.DoorFoam.ViewModels break; } } - #endregion + #endregion + + #region MES数据库状态 + /// + /// MES数据库-文字 + /// + public string _mesDbUIStatusWb; + public string MesDbUIStatusWb + { + get => _mesDbUIStatusWb; + set => SetProperty(ref _mesDbUIStatusWb, value); + } + /// + /// MES数据库-颜色 + /// + public string _mesDbUIColor; + public string MesDbUIColor + { + get => _mesDbUIColor; + set => SetProperty(ref _mesDbUIColor, value); + } + /// + /// MES数据库-图标 + /// + public string _mesUIIcon; + public string MesUIIcon + { + get => _mesUIIcon; + set => SetProperty(ref _mesUIIcon, value); + } + + /// + /// MES数据库连接状态 + /// + /// + public void MesDbState(bool type) + { + Application.Current.Dispatcher.Invoke(() => + { + if (type) + { + MesDbUIStatusWb = "MES数据库连接成功"; + MesDbUIColor = "Green"; + MesUIIcon = "Assets/Images/Green.png"; + } + else + { + MesDbUIStatusWb = "MES数据库异常"; + MesDbUIColor = "Red"; + MesUIIcon = "Assets/Images/Red.png"; + } + }); + } + #endregion #region plc 状态 /// /// UI plc 展示状态-文字 /// - public string _plcUIStatus; + public string _plcUIStatusWb; public string PlcUIStatusWb { - //get { return plcUIStatusWb; } - //set { plcUIStatusWb = value; RaisePropertyChanged("PlcUIStatusWb"); } - get => _plcUIStatus; - set => SetProperty(ref _plcUIStatus, value); + get => _plcUIStatusWb; + set => SetProperty(ref _plcUIStatusWb, value); } /// /// UI plc 展示状态-颜色 @@ -142,8 +267,6 @@ namespace Aucma.Core.DoorFoam.ViewModels public string _plcUIColor; public string PlcUIColor { - //get { return plcUIColor; } - //set { plcUIColor = value; RaisePropertyChanged("PlcUIColor"); } get => _plcUIColor; set => SetProperty(ref _plcUIColor, value); } @@ -153,8 +276,6 @@ namespace Aucma.Core.DoorFoam.ViewModels public string _plcUIIcon; public string PlcUIIcon { - //get { return plcUIIcon; } - //set { plcUIIcon = value; RaisePropertyChanged("plcUIIcon"); } get => _plcUIIcon; set => SetProperty(ref _plcUIIcon, value); } @@ -165,20 +286,81 @@ namespace Aucma.Core.DoorFoam.ViewModels /// public void PlcState(bool type) { - if (type) + Application.Current.Dispatcher.Invoke(() => { - PlcUIStatusWb = "PLC连接成功"; - PlcUIColor = "White"; - PlcUIIcon = "Assets/Images/正常.png"; - } - else - { - PlcUIStatusWb = "PLC状态异常"; - PlcUIColor = "Red"; - PlcUIIcon = "Assets/Images/失败-01.png"; - } + if (type) + { + PlcUIStatusWb = "PLC连接成功"; + PlcUIColor = "Green"; + PlcUIIcon = "Assets/Images/Green.png"; + } + else + { + PlcUIStatusWb = "PLC状态异常"; + PlcUIColor = "Red"; + PlcUIIcon = "Assets/Images/Red.png"; + } + }); } #endregion + #region 扫码器1状态 + /// + /// UI 展示状态-文字 + /// + public string _scanner1UIStatusWb; + public string Scanner1UIStatusWb + { + //get { return plcUIStatusWb; } + //set { plcUIStatusWb = value; RaisePropertyChanged("PlcUIStatusWb"); } + get => _scanner1UIStatusWb; + set => SetProperty(ref _scanner1UIStatusWb, value); + } + /// + /// UI 展示状态-颜色 + /// + public string _scanner1UIColor; + public string Scanner1UIColor + { + //get { return plcUIColor; } + //set { plcUIColor = value; RaisePropertyChanged("PlcUIColor"); } + get => _scanner1UIColor; + set => SetProperty(ref _scanner1UIColor, value); + } + /// + /// UI 展示状态-图标 + /// + public string _scanner1UIIcon; + public string Scanner1UIIcon + { + //get { return plcUIIcon; } + //set { plcUIIcon = value; RaisePropertyChanged("plcUIIcon"); } + get => _scanner1UIIcon; + set => SetProperty(ref _scanner1UIIcon, value); + } + + /// + /// 扫码器1连接状态-true:连接成功;false:失败 + /// + /// + public void Scanner1State(bool type) + { + Application.Current.Dispatcher.Invoke(() => + { + if (type) + { + Scanner1UIStatusWb = "扫码器1连接成功"; + Scanner1UIColor = "Green"; + Scanner1UIIcon = "Assets/Images/Green.png"; + } + else + { + Scanner1UIStatusWb = "扫码器1状态异常"; + Scanner1UIColor = "Red"; + Scanner1UIIcon = "Assets/Images/Red.png"; + } + }); + } + #endregion } } diff --git a/Aucma.Core.DoorFoam/Views/MainWindow.xaml b/Aucma.Core.DoorFoam/Views/MainWindow.xaml index 905e37e9..d750a37c 100644 --- a/Aucma.Core.DoorFoam/Views/MainWindow.xaml +++ b/Aucma.Core.DoorFoam/Views/MainWindow.xaml @@ -62,10 +62,7 @@ - - - - +