using System; using System.ComponentModel; using WCS.Core; 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"); // db.Default.Database.ExecuteSqlRaw("delete WCS_StatusLog where datediff(dd,UPDATETIME,getdate())>15"); // 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,MaterialCode) 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,MaterialCode 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); //}); } } }