231 lines
8.6 KiB
C#
231 lines
8.6 KiB
C#
using Google.Protobuf.WellKnownTypes;
|
|
using LinqToDB;
|
|
using log4net;
|
|
using MasaBlazorApp3.DataAccess.Dao;
|
|
using MasaBlazorApp3.Pojo;
|
|
using MasaBlazorApp3.Pojo.Config;
|
|
using MasaBlazorApp3.Util;
|
|
using Microsoft.Extensions.Options;
|
|
using System.Data;
|
|
using System.Xml.Linq;
|
|
|
|
namespace MasaBlazorApp3.DataAccess.Impl
|
|
{
|
|
public class UserDao : IUserDao
|
|
{
|
|
|
|
//private MyContext Context;
|
|
|
|
private readonly AppDataConnection _connection;
|
|
private readonly SettingConfig _setting;
|
|
private readonly ILog logger = LogManager.GetLogger(typeof(OrderInfoDao));
|
|
|
|
//public UserDao(MyContext context)
|
|
//{
|
|
// Context = context;
|
|
//}
|
|
public UserDao(AppDataConnection connection, IOptions<SettingConfig> setting)
|
|
{
|
|
_connection = connection;
|
|
_setting = setting.Value;
|
|
}
|
|
|
|
public async Task<PageData<User>> GetAllByNickname(string nickname, int? take, int? skip)
|
|
{
|
|
var query = _connection.User.AsQueryable();
|
|
|
|
if (!String.IsNullOrEmpty(nickname))
|
|
{
|
|
query = query.Where(r => r.NickName.IndexOf(nickname) > -1);
|
|
}
|
|
query = query.Where(u => u.MachineId == _setting.boxMachineId);
|
|
|
|
List<User> list = await query
|
|
.LoadWith(u => u.role)
|
|
.OrderBy(u => u.Id)
|
|
.Skip((int)skip)
|
|
.Take((int)take)
|
|
.ToListAsync();
|
|
int pagedData = await query.CountAsync();
|
|
return new PageData<User>()
|
|
{
|
|
|
|
TotalDesserts = pagedData,
|
|
Desserts = list
|
|
};
|
|
}
|
|
|
|
public User GetById(int id)
|
|
{
|
|
return _connection.User.LoadWith(u => u.role).FirstOrDefault(u => u.Id == id && u.MachineId == _setting.boxMachineId);
|
|
}
|
|
|
|
public User GetByUsername(string username)
|
|
{
|
|
|
|
return _connection.User.LoadWith(u => (u.role)).FirstOrDefault(u => u.Username == username && u.MachineId == _setting.boxMachineId);
|
|
}
|
|
|
|
public int InsertUser(User user)
|
|
{
|
|
user.MachineId = _setting.boxMachineId;
|
|
user.Password = MD5.GetMD5Hash("123456").ToLower();
|
|
#region 交接柜添加用户时毒麻柜同时也添加用户
|
|
User userDM = user;
|
|
userDM.MachineId = _setting.machineId;
|
|
_connection.InsertWithInt32Identity(userDM);
|
|
#endregion
|
|
return _connection.InsertWithInt32Identity(user);
|
|
}
|
|
|
|
public bool UpdateUser(User user)
|
|
{
|
|
#region 交接柜修改用户时毒麻柜同时也修改用户
|
|
User userOld = _connection.User
|
|
.Where(u => u.Id == user.Id).FirstOrDefault();
|
|
if(userOld != null)
|
|
{
|
|
User userDm=_connection.User.Where(u => u.Username == userOld.Username&&u.MachineId==_setting.machineId).FirstOrDefault();
|
|
if(userDm!=null)
|
|
{
|
|
userDm.NickName = user.NickName;
|
|
userDm.Username = user.Username;
|
|
userDm.RoleId = user.RoleId;
|
|
_connection.Update(userDm);
|
|
}
|
|
}
|
|
#endregion
|
|
var statement = _connection.User
|
|
.Where(u => u.Id == user.Id)
|
|
.Set(u => u.NickName, user.NickName)
|
|
.Set(u => u.Username, user.Username)
|
|
.Set(u => u.RoleId, user.RoleId);
|
|
//if(!String.IsNullOrEmpty(user.Password))
|
|
//{
|
|
// statement.Set(u => user.Password, MD5.GetMD5Hash(user.Password).ToLower());
|
|
//}
|
|
return statement.Update() > 0;
|
|
}
|
|
|
|
public bool DeleteeUser(int id)
|
|
{
|
|
#region 交接柜删除用户时毒麻柜同时也删除用户
|
|
User userOld = _connection.User
|
|
.Where(u => u.Id == id).FirstOrDefault();
|
|
if (userOld != null)
|
|
{
|
|
User userDm = _connection.User.Where(u => u.Username == userOld.Username && u.MachineId == _setting.machineId).FirstOrDefault();
|
|
if (userDm != null)
|
|
{
|
|
_connection.User.Where(u => u.Id == userDm.Id).Delete();
|
|
}
|
|
}
|
|
#endregion
|
|
return _connection.User.Where(u => u.Id == id).Delete() > 0;
|
|
}
|
|
//重置用户密码
|
|
public bool ResetPassword(int id)
|
|
{
|
|
var statement = _connection.User.Where(u => u.Id == id).Set(u => u.Password, MD5.GetMD5Hash("123456").ToLower());
|
|
return statement.Update() > 0;
|
|
}
|
|
|
|
public async Task<bool> UpdateSign(int id, string sign)
|
|
{
|
|
var statement = _connection.User
|
|
.Where(u => u.Id == id)
|
|
.Set(u => u.Sign, Convert.FromBase64String(sign));
|
|
//if(!String.IsNullOrEmpty(user.Password))
|
|
//{
|
|
// statement.Set(u => user.Password, MD5.GetMD5Hash(user.Password).ToLower());
|
|
//}
|
|
return (await statement.UpdateAsync()) > 0;
|
|
}
|
|
//修改密码
|
|
public bool UpdateUserPassword(User user)
|
|
{
|
|
var statement = _connection.User
|
|
.Where(u => u.Id == user.Id)
|
|
.Set(u => u.Password, MD5.GetMD5Hash(user.Password).ToLower());
|
|
return statement.Update() > 0;
|
|
}
|
|
|
|
//查询当前值班信息
|
|
public HkcChangeShifts GetOnDuty()
|
|
{
|
|
try
|
|
{
|
|
return _connection.HkcChangeShifts.Where(cs => cs.MachineId == _setting.boxMachineId && cs.State == "0").FirstOrDefault();
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Info($"查询当前值班信息异常{ex.Message}");
|
|
return null;
|
|
}
|
|
}
|
|
//保存交接班信息
|
|
public async Task<bool> UpdateChangeShift(HkcChangeShifts changeShift, HkcChangeShifts changeShiftNew)
|
|
{
|
|
try
|
|
{
|
|
_connection.BeginTransaction();
|
|
var insertResult = _connection.InsertWithInt32Identity(changeShiftNew);
|
|
|
|
int updateResult = _connection.HkcChangeShifts
|
|
.Where(cs => cs.Id == changeShift.Id)
|
|
.Set(cs => cs.State, "1")
|
|
.Set(cs => cs.ToDate, DateTime.Now)
|
|
.Set(cs => cs.ToOperator, changeShift.ToOperator).Update();
|
|
|
|
//插入交接班时药品数据信息
|
|
var channelStockList = _connection.ChannelStock
|
|
.Where(cs => (cs.MachineId == _setting.machineId || cs.MachineId == _setting.boxMachineId) && cs.DrawerType == 1)
|
|
.GroupBy(cs => cs.DrugId)
|
|
.Select(g => new
|
|
{
|
|
drugId = g.Key,
|
|
sumQuantity = g.Sum(cs => cs.Quantity)
|
|
}).ToList();
|
|
|
|
if (channelStockList != null && channelStockList.Count > 0)
|
|
{
|
|
//将药品库存信息写入交接明细表
|
|
for (int i = 0; i < channelStockList.Count; i++)
|
|
{
|
|
//查询药品上次交接的明细,用于记录处方数
|
|
HkcChangeShiftsDetail? historyList = _connection.HkcChangeShiftsDetail
|
|
.Where(d => d.DrugId == channelStockList[i].drugId && d.ChangeshiftsId == changeShift.Id).FirstOrDefault();
|
|
|
|
HkcChangeShiftsDetail detail = new HkcChangeShiftsDetail()
|
|
{
|
|
ChangeshiftsId = insertResult,
|
|
DrugId = channelStockList[i].drugId,
|
|
RealNumber = channelStockList[i].sumQuantity,
|
|
OrderNumber = historyList != null ? historyList.OrderNumber + historyList.RealNumber - channelStockList[i].sumQuantity : 0
|
|
};
|
|
var insertDetailResult = _connection.InsertWithInt32Identity(detail);
|
|
}
|
|
}
|
|
|
|
|
|
if (insertResult <= 0 || updateResult <= 0)
|
|
{
|
|
_connection.RollbackTransaction();
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_connection.CommitTransaction();
|
|
return true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error($"更新交接班信息异常: {ex.Message}");
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|