using DbHelper; using SqlSugar; using System; using System.ComponentModel; using WCS.BaseExtensions; using WCS.Core; using WCS.Entity; namespace WCS.Service { [Description("数据清理")] internal class DataClearHandler : LogicHandler { public override void Start() { } private DateTime last = DateTime.MinValue; public override void Update(double milliseconds) { if ((DateTime.Now - last).TotalMilliseconds < 1000 * 60 * 60 * 24) return; last = DateTime.Now; Db.Do(db => { db.Default.Deleteable().Where(v => SqlFunc.DateDiff(DateType.Day, v.UPDATETIME, SqlFunc.GetDate()) > 7).AddQueue(); //db.Default.Ado.UseStoredProcedure().ExecuteCommand("DELETE FROM wcs_exception WHERE TIMESTAMPDIFF(DAY,UPDATETIME,NOW()) > 7"); var ps = db.Default.GetType().GetProperties(); foreach (var p in ps) { if (!p.PropertyType.IsGenericType) continue; var tType = p.PropertyType.GenericTypeArguments[0]; if (!tType.IsSubclassOf(typeof(WCS_PROTOCOLDATA))) continue; var sSql = $"Delete FROM {tType.Name} where TIMESTAMPDIFF(DAY,Frame,NOW())>7"; db.Default.Ado.UseStoredProcedure().ExecuteCommand(sSql); DbHelper.DbLog.DB_CLEAN(sSql); } var taskList = db.Default.Queryable().Where(v => SqlFunc.DateDiff(DateType.Day, v.UPDATETIME, SqlFunc.GetDate()) > 3 && v.STATUS >= TaskStatus.已完成).ToList(); foreach (var task in taskList) { var taskOld = TypeExtension.Mapper(task); db.Default.Insertable(taskOld).AddQueue(); db.Default.Deleteable(task).AddQueue(); } db.Default.SaveQueues(); }); } } }