SysCompanyService.cs
6.84 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
using Hh.Mes.Common.log;
using Hh.Mes.POJO.Response;
using Hh.Mes.Service.Repository;
using System.Data;
using Hh.Mes.Common;
using System.Linq;
using Hh.Mes.POJO.Entity;
using Hh.Mes.Pojo.System;
using SqlSugar;
using System;
using System.Linq.Expressions;
namespace Hh.Mes.Service.Configure
{
/// <summary>
/// 公司设置
/// </summary>
public class SysCompanyService : RepositorySqlSugar<dynamic>
{
/// <summary>
/// 主页面错误信息提示
/// </summary>
public dynamic LogTips()
{
var response = new Response();
return ExceptionsHelp.Instance.ExecuteT(() =>
{
#region cpu,硬盘,内存
var tempServerLog = string.Empty;//"cpu 使用率:80%,内存使用率:80%,C盘使用率:80%,"
var cpu = ComputerHelp.GetCpuUsage();
if (int.TryParse(cpu.Replace("%", ""), out int cpuUsage) && cpuUsage >= 80)
{
tempServerLog += $"cpu 使用率:{cpu};";
}
var memory = ComputerHelp.GetMemery();
if (int.TryParse(memory.Item4.Replace("%", ""), out int memoryUsage) && memoryUsage >= 80)
{
tempServerLog += $"内存 使用率:{memory.Item4};";
}
var disk = ComputerHelp.GetDriveInfos();
var driveInfos = disk.Where(x => ((x.TotalSize - x.TotalFreeSpace) * 100 / x.TotalSize) >= 80).Select(x => new
{
dirName = x.Name,
usage = ((x.TotalSize - x.TotalFreeSpace) * 100 / x.TotalSize).ToString("N1") + "%"
}).ToList();
foreach (var item in driveInfos)
{
tempServerLog += $"{item.dirName}盘使用率:{item.usage};";
}
#endregion
#region 日志
var log = @" --接口
select count(1) as total from sys_interface_log t (nolock)
where t.flag is null
and t.response NOT LIKE '%200%'
--定时器
select count(1) as total from sys_job_log t (nolock)
where t.flag is null
--PDA
select count(1) as total from sys_interface_log t (nolock)
where t.flag is null and [system] ='app Android'
and t.response NOT LIKE '%200%'
--客户端
select * from (
select clientName ,
seconds = ISNULL(DATEDIFF(second, LastSeenDate, GETDATE()), 130)
from [dbo].[daq_client_status] with(nolock)
)t
where t.seconds>=120
--数据库
DECLARE @DriveInfo TABLE (drive VARCHAR(10), freeSpaceMB INT);
INSERT INTO @DriveInfo EXEC xp_fixeddrives;
SELECT drive, freeSpaceMB
FROM @DriveInfo
WHERE FreeSpaceMB<30480";
var ds = Context.Ado.GetDataSetAll(log);
var interLog = ds.Tables[0].Rows[0]["total"].ToString();
if (interLog == "0") interLog = "";
var jobLog = ds.Tables[1].Rows[0]["total"].ToString();
if (jobLog == "0") jobLog = "";
var pdaLog = ds.Tables[2].Rows[0]["total"].ToString();
if (pdaLog == "0") pdaLog = "";
string currentUser = sysWebUser.Account;
var temp = Context.Queryable<daq_client_status>().Where(LinqWhere(currentUser)).Select(x => new
{
x.clientName,
x.lastSeenDate,
}).ToList();
//var clientOnlineInfo = ds.Tables[3];
#endregion
response.Result = new
{
interLog,
jobLog,
pdaLog,
clientOnlineInfo = temp.Select(x => new
{
x.clientName,
seconds = (DateTime.Now - x.lastSeenDate).TotalSeconds,
}).ToList(),
serverLog = string.IsNullOrWhiteSpace(tempServerLog) ? "" : tempServerLog,
sqlServerLog = ds.Tables[4].Rows.Count > 0 ? ds.Tables[4] : null
};
return response;
});
}
public Expression<Func<daq_client_status, bool>> LinqWhere(string user)
{
var exp = Expressionable.Create<daq_client_status>();
exp.And(x => x.lastSeenDate <= DateTime.Now.AddMinutes(-5));
if (user != SystemVariable.DefaultCreated)
{
var projectKeys = GetProjectInfoKeys(user);
var projectCodes = Context.Queryable<base_project>().Where(x => projectKeys.Contains(x.keys)).Select(x => x.projectCode).ToList();
exp.And(x => projectCodes.Contains(x.projectCode));
}
return exp.ToExpression();
}
public dynamic UpdateLogTips(string flag)
{
var response = new Response();
return ExceptionsHelp.Instance.ExecuteT(() =>
{
if (flag == "inter")
{
string sql = "update sys_interface_log set flag=1 where flag is null";
var result = base.Context.Ado.ExecuteCommand(sql);
return result > 0 ? response.ResponseSuccess() : response.ResponseError();
}
else if (flag == "job")
{
string sql = "update sys_job_log set flag=1 where flag is null";
var result = base.Context.Ado.ExecuteCommand(sql);
return result > 0 ? response.ResponseSuccess() : response.ResponseError();
}
else if (flag == "upstream")
{
string sql = "update sys_interface_log set flag=1 where flag is null and [system] ='api' and [type] like 'API%'";
var result = base.Context.Ado.ExecuteCommand(sql);
return result > 0 ? response.ResponseSuccess() : response.ResponseError();
}
else if (flag == "pda")
{
string sql = "update sys_interface_log set flag=1 where flag is null and [system] ='app Android'";
var result = base.Context.Ado.ExecuteCommand(sql);
return result > 0 ? response.ResponseSuccess() : response.ResponseError();
}
return response;
});
}
}
}