using AutoMapper;
|
using Microsoft.Extensions.Logging;
|
using System.Transactions;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseRepository;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_ITaskInfoService;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_TaskInfoService;
|
|
public class Task_HtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITask_HtyService
|
{
|
private readonly ILogger<Task_HtyService> _logger;
|
|
private readonly IMapper _mapper; // AutoMapper实例
|
public Task_HtyService(IRepository<Dt_Task_Hty> BaseDal, IMapper mapper, ILogger<Task_HtyService> logger) : base(BaseDal)
|
{
|
_mapper = mapper;
|
_logger = logger;
|
}
|
public bool DeleteAndMoveIntoHty(Dt_Task task, OperateTypeEnum operateType)
|
{
|
// using var transaction = Db.Ado.UseTran();
|
try
|
{
|
var historyEntity = _mapper.Map<Dt_Task_Hty>(task);
|
|
// 2. 填充历史实体核心字段
|
historyEntity.SourceId = task.TaskId;
|
historyEntity.OperateType = App.User?.UserName != null ? OperateTypeEnum.自动完成.ToString() : OperateTypeEnum.人工完成.ToString();
|
historyEntity.Creater = App.User?.UserName != null ? App.User.UserName : "System";
|
|
// 覆盖修改人/修改时间(优先级高于映射)
|
// historyEntity.Modifier = App.User?.UserId > 0 ? App.User?.UserName : "System";
|
// historyEntity.ModifyDate = DateTime.Now;
|
|
// 3. 插入历史表(类型安全,无反射拼接表名)
|
|
int insertCount = Db.Insertable(historyEntity).ExecuteCommand();
|
|
if (insertCount <= 0)
|
{
|
_logger.LogError($"任务历史表Dt_Task_Hty [{task.TaskNum}]插入失败,影响行数为0");
|
// transaction.RollbackTran();
|
return false;
|
}
|
|
// 4. 删除原实体(类型安全)
|
int deleteCount = Db.Deleteable(task).ExecuteCommand();
|
if (deleteCount <= 0)
|
{
|
_logger.LogError("任务业务实体[{0}]删除失败,影响行数为0", task.TaskNum);
|
// transaction.RollbackTran();
|
return false;
|
}
|
//transaction.CommitTran();
|
_logger.LogInformation("任务实体[{0}]已成功移入历史表[{1}]并删除原数据", task.TaskNum);
|
return true;
|
}
|
catch (Exception ex)
|
{
|
// transaction.RollbackTran();
|
_logger.LogError(ex, "任务删除实体[{0}]并移入历史表失败", task.TaskNum);
|
return false;
|
}
|
}
|
}
|