renmingwang
2026-03-30 2a21c41c5a700641eb2f0ac2437144eeac94ff1c
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs
@@ -52,26 +52,47 @@
                    return false;
                }
                // ä½¿ç”¨AutoMapper将任务对象映射到历史对象
                var historyTask = _mapper.Map<Dt_Task_Hty>(task);
                // è®¾ç½®åŽ†å²è®°å½•ç‰¹æœ‰çš„å­—æ®µ
                historyTask.TaskId = 0; // é‡ç½®ä¸»é”®ï¼Œè®©æ•°æ®åº“自动生成
                historyTask.SourceId = task.TaskId; // è®¾ç½®æºè®°å½•ID
                historyTask.OperateType = operateType; // è®¾ç½®æ“ä½œç±»åž‹
                historyTask.CreateDate = DateTime.Now;
                historyTask.Creater = "System";
                historyTask.ModifyDate = DateTime.Now;
                historyTask.Modifier = "System";
                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(historyTask);
                int result = BaseDal.AddData(task_hty);
                return result > 0;
            }
            catch (Exception ex)
            {
                // è®°å½•异常日志
                Console.WriteLine($"添加任务历史记录失败: {ex.Message}");
                //Console.WriteLine($"添加任务历史记录失败: {ex.Message}");
                return false;
            }
        }
@@ -95,5 +116,47 @@
        {
            return BaseDal.QueryData(x => x.TaskNum == taskNum).OrderByDescending(x => x.CreateDate).ToList();
        }
        /// <summary>
        /// åˆ é™¤æŒ‡å®šæ—¥æœŸä¹‹å‰çš„历史任务数据
        /// </summary>
        /// <param name="keepMonths">保留的月数,默认为3个月(本月+后两个月)</param>
        /// <returns>删除的记录数</returns>
        public int DeleteOldTaskHistory(int keepMonths = 3)
        {
            try
            {
                // è®¡ç®—保留日期:当前日期减去keepMonths个月
                DateTime keepDate = DateTime.Now.AddMonths(-keepMonths);
                // å…ˆæŸ¥è¯¢å‡ºè¦åˆ é™¤çš„æ•°æ®
                List<Dt_Task_Hty> 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;
            }
        }
        /// <summary>
        /// å®šæ—¶ä»»åŠ¡è°ƒç”¨çš„åŽ†å²ä»»åŠ¡åˆ é™¤æ–¹æ³•
        /// </summary>
        public void Task_Hty_Job()
        {
            // åˆ é™¤3个月之前的历史任务数据,保留本月和后两个月的数据
            DeleteOldTaskHistory(3);
        }
    }
}
}