#region << 版 本 注 释 >>
/*----------------------------------------------------------------
* 命名空间:WIDESEAWCS_TaskInfoService
* 创建者:系统自动生成
* 创建时间:2024/11/14
* 版本:V1.0.0
* 描述:任务历史服务实现
*
* ----------------------------------------------------------------
* 修改人:
* 修改时间:
* 版本:V1.0.1
* 修改说明:
*
*----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using AutoMapper;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using SqlSugar;
using System.Linq;
namespace WIDESEAWCS_TaskInfoService
{
///
/// 任务历史服务实现
///
public class TaskHtyService : ServiceBase>, ITaskHtyService
{
private readonly IMapper _mapper;
public TaskHtyService(IRepository repository, IMapper mapper) : base(repository)
{
_mapper = mapper;
}
///
/// 添加任务历史记录
///
/// 原任务对象
/// 操作类型
/// 是否添加成功
public bool AddTaskHistory(Dt_Task task, string operateType = "自动完成")
{
try
{
if (task == null)
{
return false;
}
var task_hty = new Dt_Task_Hty
{
// 主键TaskId在历史表中是自增的,所以不需要赋值
TaskNum = task.TaskNum,
PalletCode = task.PalletCode,
PalletType = task.PalletType,
DeviceCode = task.Roadway,
Roadway = task.Roadway,
TaskType = task.TaskType,
TaskState = task.TaskState,
SourceAddress = task.SourceAddress,
TargetAddress = task.TargetAddress,
CurrentAddress = task.CurrentAddress,
NextAddress = task.NextAddress,
ExceptionMessage = task.ExceptionMessage,
Grade = task.Grade,
WMSId = task.WMSId,
Dispatchertime = task.Dispatchertime,
Remark = task.Remark,
Depth = task.Depth,
// 源记录ID设置为原任务的TaskId
SourceId = task.TaskId,
// 操作类型使用传入的参数
OperateType = operateType,
// 基础实体字段(如果有的话)
CreateDate = DateTime.Now,
Creater = task.Creater,
};
// 插入历史记录
int result = BaseDal.AddData(task_hty);
return result > 0;
}
catch (Exception ex)
{
// 记录异常日志
//Console.WriteLine($"添加任务历史记录失败: {ex.Message}");
return false;
}
}
///
/// 根据原任务ID查询历史记录
///
/// 原任务ID
/// 历史记录列表
public List GetHistoryBySourceId(int sourceId)
{
return BaseDal.QueryData(x => x.SourceId == sourceId).OrderByDescending(x => x.CreateDate).ToList();
}
///
/// 根据任务号查询历史记录
///
/// 任务号
/// 历史记录列表
public List GetHistoryByTaskNum(int taskNum)
{
return BaseDal.QueryData(x => x.TaskNum == taskNum).OrderByDescending(x => x.CreateDate).ToList();
}
///
/// 删除指定日期之前的历史任务数据
///
/// 保留的月数,默认为3个月(本月+后两个月)
/// 删除的记录数
public int DeleteOldTaskHistory(int keepMonths = 3)
{
try
{
// 计算保留日期:当前日期减去keepMonths个月
DateTime keepDate = DateTime.Now.AddMonths(-keepMonths);
// 先查询出要删除的数据
List tasksToDelete = BaseDal.QueryData().Where(x => x.CreateDate < keepDate).ToList();
// 如果没有要删除的数据,直接返回0
if (tasksToDelete.Count == 0)
{
return 0;
}
// 删除查询出的历史记录
bool result = BaseDal.DeleteData(tasksToDelete);
return result ? tasksToDelete.Count : 0;
}
catch (Exception ex)
{
// 记录异常日志
//Console.WriteLine($"删除历史任务记录失败: {ex.Message}");
return 0;
}
}
///
/// 定时任务调用的历史任务删除方法
///
public void Task_Hty_Job()
{
// 删除3个月之前的历史任务数据,保留本月和后两个月的数据
DeleteOldTaskHistory(3);
}
}
}