123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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<WCS_EXCEPTION>().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<WCS_TASK>().Where(v => SqlFunc.DateDiff(DateType.Day, v.UPDATETIME, SqlFunc.GetDate()) > 3 && v.STATUS >= TaskStatus.已完成).ToList();
- foreach (var task in taskList)
- {
- var taskOld = TypeExtension.Mapper<WCS_TASK_OLD, WCS_TASK>(task);
- db.Default.Insertable(taskOld).AddQueue();
- db.Default.Deleteable(task).AddQueue();
- }
- db.Default.SaveQueues();
- });
- }
- }
- }
|