using Hh.Mes.Common.config; using Hh.Mes.Common.log; using Hh.Mes.Pojo.System; using Hh.Mes.POJO.Entity; using Hh.Mes.POJO.Response; using Hh.Mes.Service.Repository; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Data; using Hh.Mes.Common; using System.Linq; 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 clientName , seconds = ISNULL(DATEDIFF(second, LastSeenDate, GETDATE()), 130) from [dbo].[daq_client_status] --数据库 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 = ""; var clientOnlineInfo = ds.Tables[3]; #endregion response.Result = new { interLog, jobLog, pdaLog, clientOnlineInfo, serverLog = string.IsNullOrWhiteSpace(tempServerLog) ? "" : tempServerLog, sqlServerLog = ds.Tables[4].Rows.Count>0? ds.Tables[4]:null }; return response; }); } 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; }); } } }