Job_Timespan.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Quartz;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using ProjectBase.Data.BaseDAL;
  8. using ProjectBase.Data.Logs;
  9. using SIMDP.Model;
  10. using ProjectBase.Data.hardDisk;
  11. using System.IO;
  12. namespace SIMDP.BLL
  13. {
  14. class Job_Timespan : IJob
  15. {
  16. //定时任务计划类
  17. public void Execute(IJobExecutionContext context)
  18. {
  19. try
  20. {
  21. String strData = context.JobDetail.JobDataMap.GetString("clearMode");
  22. //执行任务
  23. if (strData == "Disk") //根据磁盘空间清理数据
  24. {
  25. MoSystemParameter mo = BLLFactory<BlSystemParameter>.Instance.FindSingle(" parameter_name = 'DiskCleaningMode'");
  26. double percent = 0.0;
  27. //获取磁盘空间
  28. List<HardDiskPartition> hardDiskList = new List<HardDiskPartition>();
  29. hardDiskList = HardDiskInfo.GetDiskListInfo();
  30. if (hardDiskList == null)
  31. {
  32. return;
  33. }
  34. foreach (HardDiskPartition item in hardDiskList)
  35. {
  36. string currentWorkPath = Directory.GetDirectoryRoot(System.Environment.CurrentDirectory);
  37. if (!item.PartitionName.Equals(currentWorkPath.Substring(0, 2)))
  38. continue;
  39. percent = item.UseSpace / item.SumSpace;
  40. }
  41. //磁盘空间超过或等于设定值则清理数据,清理数据库中最早一天的数据
  42. if (percent >= Convert.ToDouble(mo.ParameterValue))
  43. {
  44. MoProductData data = BLLFactory<BlProductData>.Instance.FindSingle("1=1", "Order By rule_time ASC");
  45. if (data != null)
  46. {
  47. DateTime time = data.RuleTime.AddDays(1);
  48. bool flag = BLLFactory<BlProductData>.Instance.DeleteByCondition(string.Format("rule_time < '{0}'", time.ToString("yyyy-MM-dd")));
  49. }
  50. }
  51. }
  52. else if (strData == "Year") //根据设定年限清理数据,例如今年为2019年,年限为2年,只保留2019年和2018年的数据
  53. {
  54. MoSystemParameter mo = BLLFactory<BlSystemParameter>.Instance.FindSingle(" parameter_name = 'LifetimeClearance'");
  55. int year = Convert.ToInt32(DateTime.Now.Year) - Convert.ToInt32(mo.ParameterValue);
  56. bool flag = BLLFactory<BlProductData>.Instance.DeleteByCondition(string.Format("YEAR(rule_time) <= '{0}'", year.ToString()));
  57. }
  58. }
  59. catch (Exception ex)
  60. {
  61. LogHelper.log.Error(string.Format("执行定时任务出现错误:{0}", ex.ToString()));
  62. }
  63. }
  64. }
  65. }