using DM_Weight.Finger; using DM_Weight.Port; using DM_Weight.util.TabTip; using DM_Weight.util; using DM_Weight.ViewModels; using DM_Weight.Views.Dialog; using DM_Weight.Views; using log4net.Config; using Prism.Ioc; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using Prism.Unity; using log4net; using System.Windows.Interop; using System.Windows.Threading; using System.Timers; using SqlSugar; using Microsoft.Extensions.DependencyInjection; using DM_Weight.Services; using DM_Weight.Models; using System.Diagnostics; using System.Runtime.InteropServices; //using DM_Dal; //using DM_Dal.Models; namespace DM_Weight { /// /// Interaction logic for App.xaml /// public partial class App : PrismApplication { #region 当前登录用户的发药人信息 private static UserList _currentFaUserList = new UserList(); public static UserList CurrentFaUserList { get => _currentFaUserList; set => _currentFaUserList = value; } #endregion 当前登录用户的发药人信息 #region 当前登录用户的审核人信息 private static UserList _currentShenUserList = new UserList(); public static UserList CurrentShenUserList { get => _currentShenUserList; set => _currentShenUserList = value; } #endregion 当前登录用户的审核人信息 private readonly ILog logger = LogManager.GetLogger(typeof(App)); public App() { TabTipAutomation.IgnoreHardwareKeyboard = HardwareKeyboardIgnoreOptions.IgnoreAll; TabTipAutomation.BindTo(); TabTipAutomation.BindTo(); } protected override Window CreateShell() { //UI线程未捕获异常处理事件 this.DispatcherUnhandledException += OnDispatcherUnhandledException; //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; //多线程异常 AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; return Container.Resolve(); } void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { logger.Error($"发生错误:{e.Exception.Message}"); e.Handled = true; } void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { foreach (Exception item in e.Exception.InnerExceptions) { logger.Error($"异常类型:{item.StackTrace};{item.GetType()}{Environment.NewLine}来自:{item.Source}{Environment.NewLine}异常内容:{item.Message}"); if (item.GetType() == typeof(SqlSugar.SqlSugarException)) { //UserList userList = new SqlHelperService().CheckUserByFingerPrinter(1); } } //将异常标识为已经观察到 e.SetObserved(); } void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) { logger.Error($"Unhandled exception.{e.ToString()}"); } protected override void InitializeShell(Window shell) { base.InitializeShell(shell); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { // 注入日志 XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config")); //containerRegistry.RegisterInstance(LogManager.GetLogger("")); // 串口工具 containerRegistry.RegisterSingleton(); // 指纹机工具 containerRegistry.RegisterSingleton(); // 组态屏工具 containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); containerRegistry.Register(); // 主窗口 containerRegistry.Register(); containerRegistry.RegisterForNavigation(); // 分页 //containerRegistry.Register(); //containerRegistry.Register(); // 登录页面 containerRegistry.RegisterForNavigation(); // 布局页面 containerRegistry.RegisterForNavigation(); // 录入指纹模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); #region 取药 // 处方取药页面 containerRegistry.RegisterForNavigation(); // 处方取药模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 调拨取药页面 containerRegistry.RegisterForNavigation(); // 调拨取药模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 抽屉取药页面 containerRegistry.RegisterForNavigation(); // 自选取药模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 自选取药页面 containerRegistry.RegisterForNavigation(); #endregion #region 加药 // 自选加药页面 containerRegistry.RegisterForNavigation(); // 调拨加药页面 //containerRegistry.RegisterForNavigation(); // 调拨加药页面 containerRegistry.RegisterForNavigation(); // 调拨取药模态框 //containerRegistry.RegisterDialog(); //containerRegistry.RegisterForNavigation(); // 抽屉加药页面 containerRegistry.RegisterForNavigation(); // 自选加药模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); //多批次抽屉加药 containerRegistry.RegisterForNavigation(); #endregion #region 还药 // 还药页面 containerRegistry.RegisterForNavigation(); // 按记录归还药品模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 还药页面2 containerRegistry.RegisterForNavigation(); // 按处方归还药品模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 还空瓶页面 containerRegistry.RegisterForNavigation(); // 归还空瓶模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); #endregion #region 库存管理 // 库存列表页面 containerRegistry.RegisterForNavigation(); // 库位绑定模态框 //containerRegistry.RegisterDialog(); //containerRegistry.RegisterForNavigation(); // 库位绑定模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 库存盘点页面 //containerRegistry.RegisterForNavigation(); containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 库存盘点页面--新(类似库存列表页面) containerRegistry.RegisterForNavigation(); // 库存盘点页面--新(类似库存列表页面) //containerRegistry.RegisterForNavigation(); // 库存盘点页面--新(类似库存列表页面) containerRegistry.RegisterForNavigation(); // 药品列表页面 containerRegistry.RegisterForNavigation(); //库存列表导出账册弹窗 //containerRegistry.RegisterForNavigation(); #endregion #region 系统设置 // 用户管理页面 containerRegistry.RegisterForNavigation(); // 编辑用户模态框 containerRegistry.RegisterDialog(); containerRegistry.RegisterForNavigation(); // 角色管理页面 containerRegistry.RegisterForNavigation(); // 系统设置 containerRegistry.RegisterForNavigation(); // 调试页面 containerRegistry.RegisterForNavigation(); #endregion // 设备记录页面 containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); //交接班 //containerRegistry.RegisterForNavigation(); //交接班记录 containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); //交接班 containerRegistry.RegisterForNavigation(); //containerRegistry.RegisterSingleton(() => SqlSugarHelperNew.GetInstance()); #region SqlSugar-IOC单例 //containerRegistry.RegisterSingleton(s => // { // SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig() // { // ConnectionString = ConfigurationManager.ConnectionStrings["database"].ToString(), // DbType = SqlSugar.DbType.MySql, // IsAutoCloseConnection = true // }, // db => // { // //单例参数配置,所有上下文生效 // db.Aop.OnLogExecuting = (sql, pars) => // { // //获取IOC对象不要求在一个上下文 // //vra log=s.GetService() // //获取IOC对象要求在一个上下文 // //var appServive = s.GetService(); // //var log= appServive?.HttpContext?.RequestServices.GetService(); // }; // }); // return sqlSugar; // }); #endregion //账册页面 containerRegistry.RegisterForNavigation(); //账册服务类 containerRegistry.Register(); //containerRegistry.Register(); // 配置数据库信息 //SCHelper.Database.DBHelper.GetInstance().SetConnectionConfig(SCHelper.Database.SCDbType.MySQL, // ConfigurationManager.AppSettings["DataBaseIP"], // ConfigurationManager.AppSettings["DataBaseName"], // "root", // ConfigurationManager.AppSettings["Password"]); } private void PrismApplication_Startup(object sender, StartupEventArgs e) { // 配置数据库信息 //SCHelper.Database.DBHelper.GetInstance().SetConnectionConfig(SCHelper.Database.SCDbType.MySQL, //"127.0.0.1", //"hunanxianchang_db", //"root", //"root"); //获取欲启动程序名 string processName = System.Diagnostics.Process.GetCurrentProcess().ProcessName; //检查程序是否已经启动,已经启动则显示提示退出程序 if (System.Diagnostics.Process.GetProcessesByName(processName).Length > 1) { //系统在运行 RaiseOtherProcess(); Application.Current.Shutdown(); return; } } private static void RaiseOtherProcess() { Process proc = Process.GetCurrentProcess(); foreach (Process otherProc in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)) { if (proc.Id != otherProc.Id) { IntPtr hWnd = otherProc.MainWindowHandle; if (IsIconic(hWnd)) { ShowWindowAsync(hWnd, 9); } SetForegroundWindow(hWnd); break; } } } [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] private static extern bool IsIconic(IntPtr hWnd); //protected IServiceProvider ConfigureServices(IServiceCollection services) //{ // // 创建 SqlSugar 实例 // var db = new SqlSugarClient(new ConnectionConfig() // { // ConnectionString = "server=127.0.0.1;uid=root;pwd=123456;database=mydb", // DbType = DbType.MySql, // IsAutoCloseConnection = true, // InitKeyType = InitKeyType.Attribute // }); // // 将实例注册到 IServiceCollection 中 // services.AddSingleton(db); //} } }