using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using AutoMapper; using Model.ModelDto.LogDto; using SqlSugar; using WMS.DAL; using WMS.Entity.Context; using WMS.Entity.LogEntity; using WMS.Entity.SysEntity; using WMS.IBLL.ILogServer; using WMS.IDAL.ILogInterface; namespace WMS.BLL.LogServer { public class OperationSysServer : DbHelper, IOperationSysServer { private readonly IOperationSysRepository _operation; private readonly IMapper _mapper; private static readonly SqlSugarScope Db = DataContext.Db; /// /// 构造函数 /// /// 日志 /// automapper public OperationSysServer(IOperationSysRepository operation, IMapper mapper) : base(Db) { _operation = operation; //日志 _mapper = mapper; //automapper } /// /// 查询操作日志 /// /// 菜单名称 /// 类型 /// 内容 /// 开始日期 /// 结束日期 /// /// /// /// public List GetOperationList(string menuName, string type, string msg, string startTime, string endTime, int page, int limit, out int count) { try { var total = 0; #region asn var item = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim())) .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type) .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim())) .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime)) .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) .And(it=>it.IsDel == "0") .ToExpression();//注意 这一句 不能少 var list = Db.Queryable().Where(item) .LeftJoin((it, dic) => it.Type == dic.Id.ToString()) .LeftJoin((it, dic, users) => it.CreateUser == users.Id) .Select((it, dic, users) => new OperationDto() { Id = it.Id, ParentNo = it.ParentNo, MenuNo = it.MenuNo, MenuName = it.MenuName, FkNo = it.FkNo, Type = dic.DictName, Msg = it.Msg, CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateUserName = users.RealName, }); #endregion #region so var item2 = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim())) .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type) .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim())) .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime)) .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) .And(it => it.IsDel == "0") .ToExpression();//注意 这一句 不能少 var list2 = Db.Queryable().Where(item2) .LeftJoin((it, dic) => it.Type == dic.Id.ToString()) .LeftJoin((it, dic, users) => it.CreateUser == users.Id) .Select((it, dic, users) => new OperationDto() { Id = it.Id, ParentNo = it.ParentNo, MenuNo = it.MenuNo, MenuName = it.MenuName, FkNo = it.FkNo, Type = dic.DictName, Msg = it.Msg, CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateUserName = users.RealName, }); #endregion #region cr var item3 = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim())) .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type) .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim())) .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime)) .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) .And(it => it.IsDel == "0") .ToExpression();//注意 这一句 不能少 var list3 = Db.Queryable().Where(item3) .LeftJoin((it, dic) => it.Type == dic.Id.ToString()) .LeftJoin((it, dic, users) => it.CreateUser == users.Id) .Select((it, dic, users) => new OperationDto() { Id = it.Id, ParentNo = it.ParentNo, MenuNo = it.MenuNo, MenuName = it.MenuName, FkNo = it.FkNo, Type = dic.DictName, Msg = it.Msg, CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateUserName = users.RealName, }); #endregion #region sys var item4 = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim())) .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type) .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim())) .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime)) .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(startTime).AddDays(1)) .ToExpression();//注意 这一句 不能少 var list4 = Db.Queryable().Where(item4) .LeftJoin((it, dic) => it.Type == dic.Id.ToString()) .LeftJoin((it, dic, users) => it.CreateUser == users.Id) .Select((it, dic, users) => new OperationDto() { Id = it.Id, ParentNo = it.ParentNo, MenuNo = it.MenuNo, MenuName = it.MenuName, FkNo = it.FkNo, Type = dic.DictName, Msg = it.Msg, CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateUserName = users.RealName, }); #endregion var data = Db.UnionAll(list, list2, list3, list4).OrderByDescending(it => it.CreateTime) .ToOffsetPage(page, limit, ref total); count = total; return data.OrderByDescending(m => m.CreateTime).ToList(); } catch (Exception e) { throw new Exception(e.Message); } } /// /// 添加操作日志 /// /// 模块号 /// 菜单号 /// 菜单名称 /// 数据编号 /// 类型 添加 修改 删除 停用 启用 /// 操作 /// /// public async Task AddOperationSys(string parentNo, string menuNo, string menuName, string fkNo, string type, string msg, int userId) { try { var num = await AddAsync(new LogOperationSys() { ParentNo = parentNo, MenuNo = menuNo, MenuName = menuName, FkNo = fkNo, Type = type, Msg = msg, CreateUser = userId }); if (num > 0) { return true; } else { return false; } } catch (Exception e) { throw new Exception(e.Message); } } /// /// 获取系统操作日志数据列表 /// /// 菜单名称 /// 操作类型 /// 操作内容 /// 菜单号 /// 模块号 /// public List GetSysOperationList(string menuName, string type, string msg, string menuNo, string parentNo) { List operationlist = _operation.GetSysOperationList(menuName, type, msg, menuNo, parentNo); return operationlist; } /// /// 新增系统操作日志 /// /// 模块号 /// 菜单号 /// 数据编号 /// 操作类型 /// 操作内容 /// 创建人 /// public async Task InsertOperation(string parentName, string menuName, string fkNo, string type, string msg, int createuser) { //捕获异常 try { var parentNo = _operation.GetMenuList(parentName).MenuNo; var menuNo = _operation.GetMenuList(menuName).MenuNo; int i = await _operation.InsertOperation(parentNo, menuNo, parentName + "-" + menuName, fkNo, type, msg, createuser); return i; } catch (Exception ex) { //抛出异常 throw new Exception("新增操作日志异常", ex); } } /// /// 获取类型菜单 /// /// 字典名称 /// public List GetDicTypeList(string dicName) { List diclist = _operation.GetDicTypeList( dicName); return diclist; } } }