<update>[important]更新添加反射获取数据库信息,清除指定天数前的记录

This commit is contained in:
葛林强 2024-06-21 14:37:27 +08:00
parent a36b6451fb
commit 89efbfca22
13 changed files with 247 additions and 34 deletions

View File

@ -59,6 +59,8 @@ public class StartCirculation
break;
}
}
/* 执行按时执行的任务 ---- 方法内判断,若没有此类方法则不会执行 */
StartTimeTask();
}
/// <summary>
@ -104,8 +106,6 @@ public class StartCirculation
}
}
/* 执行按时执行的任务 ---- 方法内判断,若没有此类方法则不会执行 */
StartTimeTask();
}
/// <summary>

View File

@ -14,43 +14,17 @@ public class DataClear(ClearData clearData)
/// 定时清理无用数据, ---- 每隔10分钟清理一次
/// </summary>
/// <returns></returns>
[CirculationTime(["10:11","10:12"], "数据清理")]
[CirculationTime(["14:34"], "数据清理")]
public void ClearDataCirculate()
{
try
{
// 清理接口接收记录表 -- 保留多少天
int apiAcceptCount = clearData.ClearApiAcceptData(30);
ConsoleLog.Tip(apiAcceptCount > 0, $"[数据清理]接口接收记录:{apiAcceptCount}");
// 清理日志文件 -- 清理多少天之前
int logCount = clearData.ClearLogFile(60);
int logCount = clearData.ClearLogFile(100);
ConsoleLog.Tip(logCount > 0, $"[数据清理]日志文件:{logCount}");
// 清理接口请求记录表 -- 保留多少天
int apiRequestCount = clearData.ClearApiRequestData(30);
ConsoleLog.Tip(apiRequestCount > 0, $"[数据清理]接口请求记录:{apiRequestCount}");
// 清理WCS任务备份表 -- 保留多少天
int apiWcsTaskCount = clearData.ClearWcsTaskData(30);
ConsoleLog.Tip(apiWcsTaskCount > 0, $"[数据清理]WCS任务备份记录{apiWcsTaskCount}");
// 清理WMS任务表 -- 保留多少天
int apiWmsTaskCount = clearData.ClearWmsTaskData(30);
ConsoleLog.Tip(apiWmsTaskCount > 0, $"[数据清理]WMS任务记录{apiWmsTaskCount}");
// 清理电子标签任务
int clearElTagCount = clearData.ClearElTagTaskData(30);
ConsoleLog.Tip(clearElTagCount > 0, $"[数据清理]电子标签任务记录:{apiWmsTaskCount}");
/// 清理箱式线任务
int clearConveyTaskCount = clearData.ClearConveyTaskData(30);
ConsoleLog.Tip(clearConveyTaskCount > 0, $"[数据清理]箱式线任务记录:{apiWmsTaskCount}");
// 清理扫码记录表 -- 保留多少天
int clearScanRecord = clearData.ClearScanRecordData(15);
ConsoleLog.Tip(clearScanRecord > 0, $"[数据清理]清理扫码记录:{clearScanRecord}");
// 清理数据库
clearData.ClearDataBase();
}
catch (Exception ex)
{

View File

@ -1,6 +1,10 @@
using WcsMain.ExtendMethod;
using WcsMain.DataBase.Dao;
using WcsMain.WcsAttribute.AutoFacAttribute;
using System.Reflection;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
using WcsMain.Common;
namespace WcsMain.Business.CommonAction;
@ -11,6 +15,37 @@ namespace WcsMain.Business.CommonAction;
public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppApiRequestDao apiRequestDao,
AppApiAcceptDao apiAcceptDao, AppElTagTaskDao elTagTaskDao, AppConveyTaskDao conveyTaskDao, AppScanRecordDao scanRecordDao)
{
/// <summary>
/// 扫描清理数据库
/// </summary>
public void ClearDataBase()
{
var assembly = Assembly.GetExecutingAssembly();
var types = assembly.GetTypes();
if (types.Length == 0) return;
foreach (Type type in types)
{
var sqlSuagarTableAttribute = type.GetCustomAttribute<SugarTable>();
if (sqlSuagarTableAttribute == null) continue;
var clearTableAttribute = type.GetCustomAttribute<ClearTableAttribute>();
if(clearTableAttribute == null) continue;
var tableName = sqlSuagarTableAttribute.TableName; // 表名
var timeColumn = clearTableAttribute.TimeColumn; // 时间字段
var saveDays = clearTableAttribute.SaveDays; // 需要保存的天数
try
{
int deleteCount = CommonTool.DbServe.Deleteable<object>().AS($"{tableName}").Where($"{timeColumn} < '{DateTime.Now.AddDays(-saveDays)}'").ExecuteCommand(); // 删除超过一定天数的记录
ConsoleLog.Info(deleteCount > 0, $"清除表:{tableName},保留:{saveDays} 天,清除记录数目:{deleteCount}");
}
catch(Exception e)
{
ConsoleLog.Exception($"【异常】尝试清除指定表的记录失败,表名:{tableName},异常信息:{e.Message}");
}
}
}
/* 定时清除 WMS 任务表 */
/// <summary>

View File

@ -1,6 +1,7 @@
using System.Text;
using System.Text.Json.Serialization;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -8,6 +9,7 @@ namespace WcsMain.DataBase.TableEntity;
/// 接口接收记录表
/// </summary>
[SugarTable("tbl_app_api_accept")]
[ClearTable("request_time", 30)]
public class AppApiAccept
{
/// <summary>

View File

@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -7,6 +8,7 @@ namespace WcsMain.DataBase.TableEntity;
/// 接口请求类,存放请求的信息
/// </summary>
[SugarTable("tbl_app_api_request")]
[ClearTable("request_time", 30)]
public class AppApiRequest
{
/// <summary>

View File

@ -1,5 +1,6 @@
using SqlSugar;
using System.Text.Json.Serialization;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -7,6 +8,7 @@ namespace WcsMain.DataBase.TableEntity;
/// 输送线任务表
/// </summary>
[SugarTable("tbl_app_convey_task")]
[ClearTable("create_time", 30)]
public class AppConveyTask
{
/// <summary>

View File

@ -1,9 +1,11 @@
using SqlSugar;
using System.Text.Json.Serialization;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
[SugarTable("tbl_app_eltag_task")]
[ClearTable("create_time", 30)]
public class AppElTagTask
{
/// <summary>

View File

@ -1,5 +1,6 @@
using SqlSugar;
using System.Text.Json.Serialization;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -7,6 +8,7 @@ namespace WcsMain.DataBase.TableEntity;
/// 扫码记录
/// </summary>
[SugarTable("tbl_app_scan_record")]
[ClearTable("scan_time", 15)]
public class AppScanRecord
{
/// <summary>

View File

@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -8,6 +9,7 @@ namespace WcsMain.DataBase.TableEntity;
/// Wcs任务表
/// </summary>
[SugarTable("tbl_app_wcs_task")]
[ClearTable("create_time", 30)]
public class AppWcsTask
{

View File

@ -0,0 +1,170 @@
using SqlSugar;
using System.Text.Json.Serialization;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
/// <summary>
/// tbl_app_wcs_task_bak
/// Wcs任务表 ---- 备份表
/// </summary>
[SugarTable("tbl_app_wcs_task_bak")]
[ClearTable("create_time", 30)]
public class AppWcsTaskBak
{
/// <summary>
/// Plc任务号
/// </summary>
[SugarColumn(IsPrimaryKey = true, ColumnName = "plc_id")]
[JsonPropertyName("plcId")]
public int? PlcId { get; set; }
/// <summary>
/// 下一个任务号,若没有下一个任务则此处是默认值
/// </summary>
[SugarColumn(ColumnName = "next_plc_id")]
[JsonPropertyName("nextPlcId")]
public int? NextPlcId { get; set; }
/// <summary>
/// 任务号
/// </summary>
[SugarColumn(ColumnName = "task_id")]
[JsonPropertyName("taskId")]
public string? TaskId { get; set; }
/// <summary>
/// 任务类别
/// </summary>
[SugarColumn(ColumnName = "task_category")]
[JsonPropertyName("taskCategory")]
public int? TaskCategory { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[SugarColumn(ColumnName = "task_type")]
[JsonPropertyName("taskType")]
public int? TaskType { get; set; }
/// <summary>
/// 任务排序
/// 999表示最后一个任务
/// </summary>
[SugarColumn(ColumnName = "task_sort")]
[JsonPropertyName("taskSort")]
public int? TaskSort { get; set; }
/// <summary>
/// 任务状态
/// </summary>
[SugarColumn(ColumnName = "task_status")]
[JsonPropertyName("taskStatus")]
public int? TaskStatus { get; set; }
/// <summary>
/// 任务优先级
/// </summary>
[SugarColumn(ColumnName = "priority")]
[JsonPropertyName("priority")]
public int? Priority { get; set; }
/// <summary>
/// 任务起点
/// </summary>
[SugarColumn(ColumnName = "origin")]
[JsonPropertyName("origin")]
public string? Origin { get; set; }
/// <summary>
/// 任务终点
/// </summary>
[SugarColumn(ColumnName = "destination")]
[JsonPropertyName("destination")]
public string? Destination { get; set; }
/// <summary>
/// Wms创建时间
/// </summary>
[SugarColumn(ColumnName = "wms_time")]
[JsonPropertyName("wmsTime")]
public DateTime? WmsTime { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "create_time")]
[JsonPropertyName("createTime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 写入PLC的载具编号
/// </summary>
[SugarColumn(ColumnName = "plc_vehicle_no")]
[JsonPropertyName("plcVehicleNo")]
public int? PlcVehicleNo { get; set; }
/// <summary>
/// 载具编号
/// </summary>
[SugarColumn(ColumnName = "vehicle_no")]
[JsonPropertyName("vehicleNo")]
public string? VehicleNo { get; set; }
/// <summary>
/// 载具尺寸
/// </summary>
[SugarColumn(ColumnName = "vehicle_size")]
[JsonPropertyName("vehicleSize")]
public int? VehicleSize { get; set; }
/// <summary>
/// 重量
/// </summary>
[SugarColumn(ColumnName = "weight")]
[JsonPropertyName("weight")]
public decimal? Weight { get; set; }
/// <summary>
/// 任务创建人
/// </summary>
[SugarColumn(ColumnName = "create_person")]
[JsonPropertyName("createPerson")]
public string? CreatePerson { get; set; }
/// <summary>
/// 开始时间
/// </summary>
[SugarColumn(ColumnName = "start_time")]
[JsonPropertyName("startTime")]
public DateTime? StartTime { get; set; }
/// <summary>
/// 完成时间
/// </summary>
[SugarColumn(ColumnName = "complete_time")]
[JsonPropertyName("completeTime")]
public DateTime? CompleteTime { get; set; }
/// <summary>
/// 备注信息
/// </summary>
[SugarColumn(ColumnName = "remark")]
[JsonPropertyName("remark")]
public string? Remark { get; set; }
public override string ToString()
{
return $"任务号:{TaskId}Plc任务号{PlcId}";
}
}

View File

@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
@ -8,6 +9,7 @@ namespace WcsMain.DataBase.TableEntity;
/// wms任务表
/// </summary>
[SugarTable("tbl_app_wms_task")]
[ClearTable("create_time", 30)]
public class AppWmsTask
{
/// <summary>

View File

@ -51,8 +51,6 @@ public class WcsCirculation(IComponentContext componentContext) : StartCirculati
/* END */
}
}
/* 执行按时执行的任务 ---- 方法内判断,若没有此类方法则不会执行 */
StartTimeTask();
}

View File

@ -0,0 +1,22 @@
namespace WcsMain.WcsAttribute.Clear;
/// <summary>
/// 加上此特性用于标记自动清除的数据库表
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class ClearTableAttribute(string timeColumn, int saveDays) : Attribute
{
/// <summary>
/// 时间列名
/// </summary>
public string TimeColumn { get; set; } = timeColumn;
/// <summary>
/// 保存天数
/// </summary>
public int SaveDays { get; set; } = saveDays;
}