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

View File

@ -14,43 +14,17 @@ public class DataClear(ClearData clearData)
/// 定时清理无用数据, ---- 每隔10分钟清理一次 /// 定时清理无用数据, ---- 每隔10分钟清理一次
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[CirculationTime(["10:11","10:12"], "数据清理")] [CirculationTime(["14:34"], "数据清理")]
public void ClearDataCirculate() public void ClearDataCirculate()
{ {
try 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}"); ConsoleLog.Tip(logCount > 0, $"[数据清理]日志文件:{logCount}");
// 清理接口请求记录表 -- 保留多少天 // 清理数据库
int apiRequestCount = clearData.ClearApiRequestData(30); clearData.ClearDataBase();
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}");
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -1,6 +1,10 @@
using WcsMain.ExtendMethod; using WcsMain.ExtendMethod;
using WcsMain.DataBase.Dao; using WcsMain.DataBase.Dao;
using WcsMain.WcsAttribute.AutoFacAttribute; using WcsMain.WcsAttribute.AutoFacAttribute;
using System.Reflection;
using SqlSugar;
using WcsMain.WcsAttribute.Clear;
using WcsMain.Common;
namespace WcsMain.Business.CommonAction; namespace WcsMain.Business.CommonAction;
@ -11,6 +15,37 @@ namespace WcsMain.Business.CommonAction;
public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppApiRequestDao apiRequestDao, public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppApiRequestDao apiRequestDao,
AppApiAcceptDao apiAcceptDao, AppElTagTaskDao elTagTaskDao, AppConveyTaskDao conveyTaskDao, AppScanRecordDao scanRecordDao) 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 任务表 */ /* 定时清除 WMS 任务表 */
/// <summary> /// <summary>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -51,8 +51,6 @@ public class WcsCirculation(IComponentContext componentContext) : StartCirculati
/* END */ /* 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;
}