using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ProjectBase.Data.BaseDAL; using ProjectBase.Data.Logs; using SIMDP.Model; using ProjectBase.Data.hardDisk; using System.IO; namespace SIMDP.BLL { class Job_Timespan : IJob { //定时任务计划类 public void Execute(IJobExecutionContext context) { try { String strData = context.JobDetail.JobDataMap.GetString("clearMode"); //执行任务 if (strData == "Disk") //根据磁盘空间清理数据 { MoSystemParameter mo = BLLFactory.Instance.FindSingle(" parameter_name = 'DiskCleaningMode'"); double percent = 0.0; //获取磁盘空间 List hardDiskList = new List(); hardDiskList = HardDiskInfo.GetDiskListInfo(); if (hardDiskList == null) { return; } foreach (HardDiskPartition item in hardDiskList) { string currentWorkPath = Directory.GetDirectoryRoot(System.Environment.CurrentDirectory); if (!item.PartitionName.Equals(currentWorkPath.Substring(0, 2))) continue; percent = item.UseSpace / item.SumSpace; } //磁盘空间超过或等于设定值则清理数据,清理数据库中最早一天的数据 if (percent >= Convert.ToDouble(mo.ParameterValue)) { MoProductData data = BLLFactory.Instance.FindSingle("1=1", "Order By rule_time ASC"); if (data != null) { DateTime time = data.RuleTime.AddDays(1); bool flag = BLLFactory.Instance.DeleteByCondition(string.Format("rule_time < '{0}'", time.ToString("yyyy-MM-dd"))); } } } else if (strData == "Year") //根据设定年限清理数据,例如今年为2019年,年限为2年,只保留2019年和2018年的数据 { MoSystemParameter mo = BLLFactory.Instance.FindSingle(" parameter_name = 'LifetimeClearance'"); int year = Convert.ToInt32(DateTime.Now.Year) - Convert.ToInt32(mo.ParameterValue); bool flag = BLLFactory.Instance.DeleteByCondition(string.Format("YEAR(rule_time) <= '{0}'", year.ToString())); } } catch (Exception ex) { LogHelper.log.Error(string.Format("执行定时任务出现错误:{0}", ex.ToString())); } } } }