| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using DBHelper;using Microsoft.EntityFrameworkCore;using System;using System.ComponentModel;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.Database.ExecuteSqlRaw("delete WCS_EXCEPTION where datediff(dd,UPDATETIME,getdate())>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 {tType.Name} where datediff(dd,Frame,getdate())>7";                    db.Default.Database.ExecuteSqlRaw(sSql);                    DBHelper.DbLog.DB_CLEAN(sSql);                }                var copySql = "INSERT INTO WCS_TASK_OLD (ID,BARCODE,TYPE,STATUS,ADDRFROM,ADDRTO,ADDRNEXT,TUNNEL,FLOOR,DEVICE,SRMSTATION,CREATETIME,STARTTIME,ENDTIME,DOCID,PALLETTYPE,PRODLINE,FULLQTY,HEIGHT,WMSTASK,TaskGroupKey,UPLOADED,AgvTask,Priority,ManualRemarks,ENABLED,UPDATEUSER,UPDATETIME,Length) SELECT ID,BARCODE,TYPE,STATUS,ADDRFROM,ADDRTO,ADDRNEXT,TUNNEL,FLOOR,DEVICE,SRMSTATION,CREATETIME,STARTTIME,ENDTIME,DOCID,PALLETTYPE,PRODLINE,FULLQTY,HEIGHT,WMSTASK,TaskGroupKey,UPLOADED,AgvTask,Priority,ManualRemarks,ENABLED,UPDATEUSER,UPDATETIME,Length FROM WCS_TASK WHERE STATUS >=99 AND UPDATETIME < DATEADD(DAY, -3, GETDATE())";                db.Default.Database.ExecuteSqlRaw(copySql);                var clearSql = "DELETE FROM WCS_TASK WHERE STATUS >=99 AND UPDATETIME < DATEADD(DAY, -3, GETDATE())";                db.Default.Database.ExecuteSqlRaw(clearSql);            });        }    }}
 |