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<LogOperationSys>, IOperationSysServer
|
{
|
private readonly IOperationSysRepository _operation;
|
private readonly IMapper _mapper;
|
private static readonly SqlSugarScope Db = DataContext.Db;
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="operation">日志</param>
|
/// <param name="mapper">automapper</param>
|
public OperationSysServer(IOperationSysRepository operation, IMapper mapper) : base(Db)
|
{
|
_operation = operation; //日志
|
_mapper = mapper; //automapper
|
}
|
|
|
/// <summary>
|
/// 查询操作日志
|
/// </summary>
|
/// <param name="menuName">菜单名称</param>
|
/// <param name="type">类型</param>
|
/// <param name="msg">内容</param>
|
/// <param name="startTime">开始日期</param>
|
/// <param name="endTime">结束日期</param>
|
/// <param name="page"></param>
|
/// <param name="limit"></param>
|
/// <param name="count"></param>
|
/// <returns></returns>
|
public List<OperationDto> 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<LogOperationASN>()
|
.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<LogOperationASN>().Where(item)
|
.LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
|
.LeftJoin<SysUserInfor>((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<LogOperationSO>()
|
.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<LogOperationSO>().Where(item2)
|
.LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
|
.LeftJoin<SysUserInfor>((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<LogOperationCR>()
|
.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<LogOperationCR>().Where(item3)
|
.LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
|
.LeftJoin<SysUserInfor>((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<LogOperationSys>()
|
.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<LogOperationSys>().Where(item4)
|
.LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
|
.LeftJoin<SysUserInfor>((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);
|
}
|
}
|
|
/// <summary>
|
/// 添加操作日志
|
/// </summary>
|
/// <param name="parentNo">模块号</param>
|
/// <param name="menuNo">菜单号</param>
|
/// <param name="menuName">菜单名称</param>
|
/// <param name="fkNo">数据编号</param>
|
/// <param name="type">类型 添加 修改 删除 停用 启用</param>
|
/// <param name="msg">操作</param>
|
/// <param name="userId"></param>
|
/// <returns></returns>
|
public async Task<bool> 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);
|
}
|
}
|
|
|
/// <summary>
|
/// 获取系统操作日志数据列表
|
/// </summary>
|
/// <param name="menuName">菜单名称</param>
|
/// <param name="type">操作类型</param>
|
/// <param name="msg">操作内容</param>
|
/// <param name="menuNo">菜单号</param>
|
/// <param name="parentNo">模块号</param>
|
/// <returns></returns>
|
public List<OperationDto> GetSysOperationList(string menuName, string type, string msg, string menuNo, string parentNo)
|
{
|
List<OperationDto> operationlist = _operation.GetSysOperationList(menuName, type, msg, menuNo, parentNo);
|
return operationlist;
|
}
|
|
/// <summary>
|
/// 新增系统操作日志
|
/// </summary>
|
/// <param name="parentName">模块号</param>
|
/// <param name="menuName">菜单号</param>
|
/// <param name="fkNo">数据编号</param>
|
/// <param name="type">操作类型</param>
|
/// <param name="msg">操作内容</param>
|
/// <param name="createuser">创建人</param>
|
/// <returns></returns>
|
public async Task<int> 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);
|
}
|
}
|
|
/// <summary>
|
/// 获取类型菜单
|
/// </summary>
|
/// <param name="dicName">字典名称</param>
|
/// <returns></returns>
|
public List<SysDictionary> GetDicTypeList(string dicName)
|
{
|
List<SysDictionary> diclist = _operation.GetDicTypeList( dicName);
|
return diclist;
|
}
|
}
|
}
|