1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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<ArchivingLog>, IArchivingServer
    {
        private static readonly SqlSugarScope Db = DataContext.Db;
        public ArchivingServer() : base(Db)
        {
        }
        private readonly IOperationSysServer _operation; //操作日志
        /// <summary>
        /// 获取数据归档操作日志
        /// </summary>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List<ArchivingLogDto> GetArchivingLogList(int page, int limit, out int count)
        {
            try
            {
                var item = Expressionable.Create<ArchivingLog>()
                     .And(it => it.IsDel == "0")
                     .ToExpression();//注意 这一句 不能少
                var total = 0;
                var list = GetAllWhereAsync(item)
                    .LeftJoin<SysUserInfor>((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);
            }
        }
        /// <summary>
        /// 数据归档
        /// </summary>
        /// <param name="TimeStr"></param>
        /// <param name="userId"></param>
        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<int>(insertSql).FirstOrDefault();
 
                string deleteSql = $@"EXEC DataArchivingDelete;";
                //执行数据归档存储过程-删除
                Db.Ado.SqlQuery<int>(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);
            }
        }
    }
}