1)将框架引用由SqlSugarCore替换为SqlSugarCoreNoDrive,添加MySqlConnector连接驱动引用。
2)添加数据连接不上异常捕获,捕获异常后将使用无框架连接数据库并记录日志是否能正常连接。
This commit is contained in:
parent
d776e7d724
commit
4d26252cad
|
@ -20,13 +20,13 @@
|
|||
<!--2023/7/13 药房代码 有则写无则空 -->
|
||||
<add key="storage" value="" />
|
||||
<!-- 登录模式 1单人登录2双人登录 -->
|
||||
<add key="loginMode" value="1" />
|
||||
<add key="loginMode" value="2" />
|
||||
<!-- 登录顺序,指定先登录的人的名称有效值,只有在登录模式等于2时才会生效; 发药人:【operator】审核人:【reviewer】 -->
|
||||
<add key="firstLogin" value="operator" />
|
||||
<!-- 按处方还药或者按取药记录还药 1:处方2:药品-->
|
||||
<add key="returnDrugMode" value="1" />
|
||||
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
||||
<add key="autoExit" value="0"/>
|
||||
<add key="autoExit" value="300"/>
|
||||
<!--报表数据库连接-->
|
||||
<add key="gridConnectionString" value="MYSQL; Database=hunanxianchang_db; Password=root; Port=3306; Server=127.0.0.1; User=root;"/>
|
||||
<!-- 查询处方是orderNo还是orderGroupNo -->
|
||||
|
|
|
@ -38,17 +38,17 @@ namespace DM_Weight
|
|||
public partial class App : PrismApplication
|
||||
{
|
||||
#region 当前登录用户的发药人信息
|
||||
private static UserList _currentFaUserList=new UserList();
|
||||
private static UserList _currentFaUserList = new UserList();
|
||||
public static UserList CurrentFaUserList
|
||||
{
|
||||
get => _currentFaUserList;
|
||||
set=> _currentFaUserList = value;
|
||||
set => _currentFaUserList = value;
|
||||
}
|
||||
|
||||
#endregion 当前登录用户的发药人信息
|
||||
|
||||
#region 当前登录用户的审核人信息
|
||||
private static UserList _currentShenUserList= new UserList();
|
||||
private static UserList _currentShenUserList = new UserList();
|
||||
public static UserList CurrentShenUserList
|
||||
{
|
||||
get => _currentShenUserList;
|
||||
|
@ -90,6 +90,10 @@ namespace DM_Weight
|
|||
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 UserService().CheckUserByFingerPrinter(1);
|
||||
}
|
||||
}
|
||||
|
||||
//将异常标识为已经观察到
|
||||
|
@ -260,7 +264,7 @@ namespace DM_Weight
|
|||
//containerRegistry.RegisterSingleton<SqlSugarScope>(() => SqlSugarHelperNew.GetInstance());
|
||||
|
||||
//账册页面
|
||||
containerRegistry.RegisterForNavigation<AccountWindow,AccountWindowViewModel>();
|
||||
containerRegistry.RegisterForNavigation<AccountWindow, AccountWindowViewModel>();
|
||||
//账册服务类
|
||||
containerRegistry.Register<MachineRecordService>();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
using NetTaste;
|
||||
//using NetTaste;
|
||||
using Prism.Commands;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
|
@ -71,10 +71,11 @@
|
|||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2365.46" />
|
||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
|
||||
<PackageReference Include="MySql.Data" Version="8.3.0" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.3.6" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
||||
<PackageReference Include="Prism.Unity" Version="8.1.97" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.151" />
|
||||
<PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
||||
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using log4net;
|
||||
using log4net.Repository.Hierarchy;
|
||||
using NetTaste;
|
||||
//using NetTaste;
|
||||
using Prism.Events;
|
||||
using Prism.Ioc;
|
||||
using SqlSugar;
|
||||
|
@ -24,6 +24,7 @@ using DM_Weight.msg;
|
|||
using DM_Weight.Views;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Speech.Recognition;
|
||||
|
||||
namespace DM_Weight.Port
|
||||
{
|
||||
|
@ -653,8 +654,51 @@ namespace DM_Weight.Port
|
|||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
////创建一组语音识别的语法约束选择
|
||||
//Choices choices = new Choices();
|
||||
////添加语音识别关键字
|
||||
//choices.Add(new string[] { "取药", "加药", "盘点", "开始" });
|
||||
////以编程的方式为语音生成约束
|
||||
//GrammarBuilder gb = new GrammarBuilder(choices);
|
||||
////grammarbuilder封装对象
|
||||
//Grammar grm = new Grammar(gb);
|
||||
////SpeechRecognitionEngine异步方式
|
||||
//recognitionEngine.LoadGrammarAsync(grm);
|
||||
////音频输入
|
||||
//recognitionEngine.SetInputToDefaultAudioDevice();
|
||||
////创建语音接收事件
|
||||
//recognitionEngine.SpeechRecognized += recognitionEngine_SpeechRecognized;
|
||||
// //开始语音识别
|
||||
//recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
|
||||
|
||||
//停止语音识别
|
||||
//recognitionEngine.RecognizeAsyncStop();
|
||||
|
||||
}
|
||||
// //创建接收事件函数
|
||||
//private void recognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
|
||||
//{
|
||||
// switch (e.Result.Text)
|
||||
// {
|
||||
// case "雪糕":
|
||||
// MessageBox.Show("很好吃");
|
||||
// break;
|
||||
// case "大米":
|
||||
// MessageBox.Show("好好吃");
|
||||
// break;
|
||||
// case "饭团":
|
||||
// MessageBox.Show("好吃");
|
||||
// break;
|
||||
// case "开始":
|
||||
// MessageBox.Show("你好");
|
||||
// break;
|
||||
// default:
|
||||
|
||||
// break;
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
private byte[] GetBufferByPort(SerialPort serialPort, int length, int timeout)
|
||||
{
|
||||
|
@ -748,6 +792,9 @@ namespace DM_Weight.Port
|
|||
speechSynthesizer.SpeakAsync(textinfo);
|
||||
}
|
||||
|
||||
//创建语音识别引擎
|
||||
//SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine();
|
||||
|
||||
|
||||
|
||||
#region 抽屉串口操作
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
using DM_Weight.Models;
|
||||
using log4net;
|
||||
using log4net.Repository.Hierarchy;
|
||||
using MySqlConnector;
|
||||
using MySql.Data.MySqlClient;
|
||||
//using MySql.Data.MySqlClient;
|
||||
//using MySqlConnector;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -18,65 +20,61 @@ namespace DM_Weight.Services
|
|||
private readonly ILog logger = LogManager.GetLogger(typeof(UserService));
|
||||
//public static string connStr = ConfigurationManager.AppSettings["database"].ToString();
|
||||
public static string connStr = ConfigurationManager.ConnectionStrings["database"].ToString();
|
||||
public UserList CheckUserByFingerPrinter(int fingerPrinterId)
|
||||
public UserList CheckUserByFingerPrinter(int fingerPrinterId)
|
||||
{
|
||||
UserList? user = null;
|
||||
|
||||
using (MySqlConnection con = new MySqlConnection(connStr))
|
||||
{
|
||||
logger.Info($"connStr:{connStr}");
|
||||
//try
|
||||
//{
|
||||
// con.Open();
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// logger.Info($"Open失败:{ex.ToString()}");
|
||||
// if (con.State == System.Data.ConnectionState.Open)
|
||||
// {
|
||||
// con.Close();
|
||||
// }
|
||||
// Thread.Sleep(200);
|
||||
// logger.Info("再次Open");
|
||||
// con.Open();
|
||||
//}
|
||||
connOpen(con);
|
||||
Thread.Sleep(100);
|
||||
while(con.State != System.Data.ConnectionState.Open)
|
||||
try
|
||||
{
|
||||
logger.Info($"再次Open:{con.State}");
|
||||
connOpen(con);
|
||||
Thread.Sleep(100);
|
||||
con.Open();
|
||||
}
|
||||
|
||||
logger.Info("数据库连接已打开");
|
||||
string sql = @"select ul.id as id,ul.User_name as userName,r.id,r.role_name,r.permissions,r.machine_id from user_list ul
|
||||
INNER JOIN role r on ul.machine_role_id=r.id where ul.Id=@ID and ul.machine_id=@machine_id and r.machine_id=@machine_id;";
|
||||
MySqlCommand cmd = new MySqlCommand(sql, con);
|
||||
cmd.Parameters.Clear();
|
||||
MySqlParameter[] mySqlParameter = new MySqlParameter[] { new MySqlParameter("ID", fingerPrinterId), new MySqlParameter("machine_id", (ConfigurationManager.AppSettings["machineId"] ?? "DM1")) };
|
||||
cmd.Parameters.AddRange(mySqlParameter);
|
||||
//执行语句
|
||||
MySqlDataReader reader = cmd.ExecuteReader();
|
||||
logger.Info("MySqlDataReader读数据");
|
||||
while (reader.Read())
|
||||
catch (Exception ex)
|
||||
{
|
||||
user = new UserList();
|
||||
user.Id = reader.GetInt32("id");
|
||||
user.UserName = reader["userName"] is DBNull ? "" : reader.GetString("userName");
|
||||
//user.UserName = reader["id"] is DBNull ? "" : reader.GetString("id");
|
||||
user.Nickname = reader["userName"] is DBNull ? "" : reader.GetString("userName");
|
||||
user.MachineId = reader["machine_id"] is DBNull ? "" : reader.GetString("machine_id");
|
||||
RoleDm role = new RoleDm();
|
||||
role.Id = reader.GetInt32("id");
|
||||
//role.Permissions = reader["permissions"] is DBNull ? "" : reader.GetString("permissions");
|
||||
role.RoleName = reader["role_name"] is DBNull ? "" : reader.GetString("role_name");
|
||||
role.Permissions = JsonConvert.DeserializeObject<List<PremissionDm>>(reader["permissions"] is DBNull ? "" : reader.GetString("permissions")); // JsonConvert.SerializeObject(reader.GetString("permissions")).ToList();
|
||||
user.Role = role;
|
||||
con.Close();
|
||||
logger.Info($"Open失败:{ex.ToString()};连接状态:{con.State}");
|
||||
logger.Info("再次Open");
|
||||
con.Open();
|
||||
}
|
||||
//connOpen(con);
|
||||
//Thread.Sleep(10);
|
||||
//while (con.State != System.Data.ConnectionState.Open)
|
||||
//{
|
||||
// logger.Info($"再次Open:{con.State}");
|
||||
// connOpen(con);
|
||||
// Thread.Sleep(10);
|
||||
//}
|
||||
|
||||
reader.Close();
|
||||
logger.Info($"sql:{sql}");
|
||||
logger.Info($"数据库连接状态{con.State}");
|
||||
//string sql = @"select ul.id as id,ul.User_name as userName,r.id,r.role_name,r.permissions,r.machine_id from user_list ul
|
||||
// INNER JOIN role r on ul.machine_role_id=r.id where ul.Id=@ID and ul.machine_id=@machine_id and r.machine_id=@machine_id;";
|
||||
//MySqlCommand cmd = new MySqlCommand(sql, con);
|
||||
//cmd.Parameters.Clear();
|
||||
//MySqlParameter[] mySqlParameter = new MySqlParameter[] { new MySqlParameter("ID", fingerPrinterId), new MySqlParameter("machine_id", (ConfigurationManager.AppSettings["machineId"] ?? "DM1")) };
|
||||
//cmd.Parameters.AddRange(mySqlParameter);
|
||||
////执行语句
|
||||
//MySqlDataReader reader = cmd.ExecuteReader();
|
||||
//logger.Info("MySqlDataReader读数据");
|
||||
//while (reader.Read())
|
||||
//{
|
||||
// user = new UserList();
|
||||
// user.Id = reader.GetInt32("id");
|
||||
// user.UserName = reader["userName"] is DBNull ? "" : reader.GetString("userName");
|
||||
// //user.UserName = reader["id"] is DBNull ? "" : reader.GetString("id");
|
||||
// user.Nickname = reader["userName"] is DBNull ? "" : reader.GetString("userName");
|
||||
// user.MachineId = reader["machine_id"] is DBNull ? "" : reader.GetString("machine_id");
|
||||
// RoleDm role = new RoleDm();
|
||||
// role.Id = reader.GetInt32("id");
|
||||
// //role.Permissions = reader["permissions"] is DBNull ? "" : reader.GetString("permissions");
|
||||
// role.RoleName = reader["role_name"] is DBNull ? "" : reader.GetString("role_name");
|
||||
// role.Permissions = JsonConvert.DeserializeObject<List<PremissionDm>>(reader["permissions"] is DBNull ? "" : reader.GetString("permissions")); // JsonConvert.SerializeObject(reader.GetString("permissions")).ToList();
|
||||
// user.Role = role;
|
||||
//}
|
||||
|
||||
//reader.Close();
|
||||
//logger.Info($"sql:{sql}");
|
||||
return user;
|
||||
}
|
||||
|
||||
|
@ -85,7 +83,7 @@ namespace DM_Weight.Services
|
|||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
if (con.State == System.Data.ConnectionState.Open)
|
||||
if (con.State != System.Data.ConnectionState.Closed)
|
||||
{
|
||||
con.Close();
|
||||
}
|
||||
|
@ -100,6 +98,5 @@ namespace DM_Weight.Services
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ namespace DM_Weight.ViewModels
|
|||
private UserList? _userList;
|
||||
private UserList? _userList2;
|
||||
|
||||
|
||||
|
||||
private int loginMode = Convert.ToInt32(ConfigurationManager.AppSettings["loginMode"]?.ToString() ?? "1");
|
||||
public bool MultiLogin
|
||||
{
|
||||
|
@ -389,14 +391,22 @@ namespace DM_Weight.ViewModels
|
|||
// 30秒内无人操作鼠标键盘
|
||||
if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit)
|
||||
{
|
||||
logger.Info($"设备30秒内无人操作,用户【{Operator?.Nickname}】自动退出登录");
|
||||
Operator = null;
|
||||
Reviewer = null;
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
if (Operator is null)
|
||||
{
|
||||
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
|
||||
timer.Stop();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Info($"设备{autoExit}秒内无人操作,用户【{Operator?.Nickname}】自动退出登录");
|
||||
Operator = null;
|
||||
Reviewer = null;
|
||||
timer.Stop();
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
|
||||
timer.Stop();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using log4net;
|
||||
using Microsoft.Xaml.Behaviors;
|
||||
using NetTaste;
|
||||
//using NetTaste;
|
||||
using Prism.Commands;
|
||||
using Prism.Events;
|
||||
using Prism.Mvvm;
|
||||
|
|
|
@ -379,6 +379,10 @@ _exitCommand ??= new DelegateCommand(Exit);
|
|||
catch (Exception e)
|
||||
{
|
||||
logger.Info($"LoginEvent存在异常:{e.Message}");
|
||||
if(e.GetType().Name== "SqlSugarException")
|
||||
{
|
||||
UserList userList = new UserService().CheckUserByFingerPrinter(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
using log4net;
|
||||
using log4net.Repository.Hierarchy;
|
||||
using Microsoft.Xaml.Behaviors;
|
||||
using NetTaste;
|
||||
//using NetTaste;
|
||||
using Prism.Commands;
|
||||
using Prism.Events;
|
||||
using Prism.Mvvm;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using log4net;
|
||||
using Microsoft.Xaml.Behaviors;
|
||||
using NetTaste;
|
||||
//using NetTaste;
|
||||
using Prism.Commands;
|
||||
using Prism.Events;
|
||||
using Prism.Mvvm;
|
||||
|
|
Loading…
Reference in New Issue