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; using Hh.Mes.POJO.WebEntity.configure; 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%," if (Environment.OSVersion.Platform == PlatformID.Win32NT) { 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_config>().Where(LinqWhere(currentUser)).Select(x => new { x.name, x.lastSeenDate, }).ToList(); //var clientOnlineInfo = ds.Tables[3]; #endregion response.Result = new { interLog, jobLog, pdaLog, clientOnlineInfo = temp.Select(x => new { clientName = x.name, 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_config, bool>> LinqWhere(string user) { var exp = Expressionable.Create<daq_client_config>(); exp.And(x => x.lastSeenDate <= DateTime.Now.AddMinutes(-5)); exp.And(x => SystemVariable.SoftTypes.Contains(x.type)); 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; }); } } }