1
HuBingJie
2025-12-25 5ea48455463691678b806badbee198699a878b5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#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
{
    /// <summary>
    /// 任务历史服务实现
    /// </summary>
    public class TaskHtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITaskHtyService
    {
        private readonly IMapper _mapper;
 
        public TaskHtyService(IRepository<Dt_Task_Hty> repository, IMapper mapper) : base(repository)
        {
            _mapper = mapper;
        }
 
        /// <summary>
        /// 添加任务历史记录
        /// </summary>
        /// <param name="task">原任务对象</param>
        /// <param name="operateType">操作类型</param>
        /// <returns>是否添加成功</returns>
        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;
            }
        }
 
        /// <summary>
        /// 根据原任务ID查询历史记录
        /// </summary>
        /// <param name="sourceId">原任务ID</param>
        /// <returns>历史记录列表</returns>
        public List<Dt_Task_Hty> GetHistoryBySourceId(int sourceId)
        {
            return BaseDal.QueryData(x => x.SourceId == sourceId).OrderByDescending(x => x.CreateDate).ToList();
        }
 
        /// <summary>
        /// 根据任务号查询历史记录
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <returns>历史记录列表</returns>
        public List<Dt_Task_Hty> GetHistoryByTaskNum(int taskNum)
        {
            return BaseDal.QueryData(x => x.TaskNum == taskNum).OrderByDescending(x => x.CreateDate).ToList();
        }
    }
}