using Microsoft.Data.SqlClient; using Model.ModelDto.ArchivingDto; using Model.ModelVm.SysVm; using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using WMS.DAL; using WMS.Entity.ArchiveEntry; using WMS.Entity.Context; using WMS.Entity.SysEntity; using WMS.IBLL.ILogServer; using WMS.IBLL.ISysServer; namespace WMS.BLL.SysServer { public class ArchivingServer:DbHelper, IArchivingServer { private static readonly SqlSugarScope Db = DataContext.Db; public ArchivingServer() : base(Db) { } private readonly IOperationSysServer _operation; //操作日志 /// /// 获取数据归档操作日志 /// /// /// /// /// public List GetArchivingLogList(int page, int limit, out int count) { try { var item = Expressionable.Create() .And(it => it.IsDel == "0") .ToExpression();//注意 这一句 不能少 var total = 0; var list = GetAllWhereAsync(item) .LeftJoin((it, users) => it.CreateUser == users.Id) .Select((it, users) => new ArchivingLogDto() { Id = it.Id, Status = it.Status, Demo = it.Demo, CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateUserName = users.RealName, }) .OrderByDescending(it => it.CreateTime) .ToOffsetPage(page, limit, ref total); count = total; return list.OrderByDescending(m => m.CreateTime).ToList(); } catch (Exception e) { throw new Exception(e.Message); } } /// /// 数据归档 /// /// /// public void DataArchive(string TimeStr,int userId) { try { if (string.IsNullOrEmpty(TimeStr)) { throw new Exception("请选择30天前日期进行操作"); } if (Convert.ToDateTime(TimeStr) > DateTime.Now.AddDays(-30)) { throw new Exception("请选择30天前日期进行操作"); } string insertSql = $@"EXEC DataArchiving '{TimeStr}';"; //执行数据归档存储过程-插入 Db.Ado.SqlQuery(insertSql).FirstOrDefault(); string deleteSql = $@"EXEC DataArchivingDelete;"; //执行数据归档存储过程-删除 Db.Ado.SqlQuery(deleteSql).FirstOrDefault(); ArchivingLog log = new ArchivingLog(); log.Status = "0"; log.Demo = $"成功进行了数据归档操作"; log.CreateUser = userId; //插入归档日志 Db.Insertable(log).ExecuteCommand(); //记录操作日志 _operation.InsertOperation("系统设置", "数据归档", "", "处理", $"将{TimeStr}之前的数据进行数据归档", userId); } catch (Exception e) { ArchivingLog log = new ArchivingLog(); log.Status = "1"; log.Demo = $"归档数据操作失败:{e.Message}"; log.CreateUser = userId; //插入归档日志 Db.Insertable(log).ExecuteCommand(); throw new Exception(e.Message); } } } }