Admin
2026-04-01 80c208e2f0587693cf098b9eeae272b046bf6b8b
ÏîÄ¿´úÂë/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -16,6 +16,7 @@
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using AutoMapper;
using HslCommunication;
using Microsoft.AspNetCore.Mvc.RazorPages;
using NetTaste;
using Newtonsoft.Json;
@@ -49,6 +50,7 @@
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Service;
@@ -92,6 +94,12 @@
            _Dt_roadwayinfoService = dt_RoadwayinfoService;
        }
        //根据任务号,查询任务
        public Dt_Task? CurrtaskInfo(int taskNum)
        {
            return BaseDal.QueryData().Where(x => x.TaskNum == taskNum).FirstOrDefault();
        }
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
@@ -112,7 +120,9 @@
                    string Result = WMSTaskStatusEnum.outsuccess.GetDescription();
                    //同步给上游反馈任务完成
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                    Dt_roadwayinfo roadwayinfo = _Dt_roadwayinfoService.GetRoadwayinfo(task.Roadway);
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, roadwayinfo.WarehouseInvType, "");
                    if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
                    task.ModifyDate = DateTime.Now;
@@ -121,11 +131,28 @@
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"出库完成");
                }
                else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                else if (task.TaskType == (int)TaskTypeEnum.Inbound && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                {
                    task.TaskState = (int)TaskInStatusEnum.InFinish;
                    BaseDal.UpdateData(task);
                    string Result = WMSTaskStatusEnum.insuccess.GetDescription();
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                    Dt_roadwayinfo roadwayinfo = _Dt_roadwayinfoService.GetRoadwayinfo(task.Roadway);
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, roadwayinfo.WarehouseInvType, "");
                    if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = "System";
                    BaseDal.DeleteData(task);
                    _task_HtyService.AddTaskHty(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"入库完成");
                }
                else if (task.TaskType == (int)TaskTypeEnum.Inventorybound && task.TaskState == (int)TaskinventoryStatusEnum.SC_inventoryExecuting)
                {
                    task.TaskState = (int)TaskinventoryStatusEnum.inventoryFinish;
                    BaseDal.UpdateData(task);
                    string Result = WMSTaskStatusEnum.insuccess.GetDescription();
                    Dt_roadwayinfo roadwayinfo = _Dt_roadwayinfoService.GetRoadwayinfo(task.Roadway);
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, roadwayinfo.WarehouseInvType, "");
                    if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
@@ -221,10 +248,10 @@
                task.ModifyDate = DateTime.Now;
                task.Modifier = "System";
                BaseDal.UpdateData(task);
                Dt_roadwayinfo roadwayinfo = _Dt_roadwayinfoService.GetRoadwayinfo(task.Roadway);
                //反馈至上游
                CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, roadwayinfo.WarehouseInvType, "");
                Console.WriteLine(command.ToJsonString());
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"人工手动将任务状态从【{oldState}】跳转到【{task.TaskState}】" : $"系统自动流程,任务状态从【{oldState}】转到【{task.TaskState}】");
                content = WebResponseContent.Instance.OK();
@@ -437,5 +464,110 @@
            return BaseDal.QueryData(x => x.Roadway == deviceNo && (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
        }
        public Dt_Task CutStackerCraneTask(string deviceNo)
        {
            Dt_Task dt_Task = BaseDal.QueryFirst(x => x.Roadway == deviceNo && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting  || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting));
            return dt_Task;
        }
        /// <summary>
        /// æ‰‹åŠ¨å–æ¶ˆä»»åŠ¡
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        public WebResponseContent TaskCancel(int taskNum)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                if (task != null)
                {
                    BaseDal.DeleteData(task);
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = App.User?.UserName;
                    task.Remark = "人工手动取消";
                    BaseDal.DeleteData(task);
                    _task_HtyService.AddTaskHty(task);
                    content.Status = true;
                }
                else
                {
                    WebResponseContent.Instance.Error($"取消失败,该任务【{taskNum}】不存在");
                }
                return content;
            }
            catch (Exception e)
            {
                return WebResponseContent.Instance.Error();
            }
        }
        /// <summary>
        ///手动完成任务
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        public WebResponseContent TaskHandCompleted(int taskNum)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】");
                if (task.TaskType == (int)TaskTypeEnum.Outbound)
                {
                    string Result = WMSTaskStatusEnum.outsuccess.GetDescription();
                    //同步给上游反馈任务完成
                    //CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                    //if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = App.User?.UserName;
                    task.Remark = "人工手动完成";
                    BaseDal.DeleteData(task);
                    _task_HtyService.AddTaskHty(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"手动出库完成");
                }
                else if (task.TaskType == (int)TaskTypeEnum.Inbound)
                {
                    string Result = WMSTaskStatusEnum.insuccess.GetDescription();
                    //CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                    //if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = App.User?.UserName;
                    task.Remark = "人工手动完成";
                    BaseDal.DeleteData(task);
                    _task_HtyService.AddTaskHty(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"手动入库完成");
                }
                else if (task.TaskType == (int)TaskTypeEnum.Inventorybound)
                {;
                    string Result = WMSTaskStatusEnum.insuccess.GetDescription();
                    //CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
                    //if (command.status != "success") return content.Error($"调取上游返回失败,完成堆垛机任务失败,条码:{task.PalletCode},任务号:{task.TaskNum}");
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = App.User?.UserName;
                    task.Remark = "人工手动完成";
                    BaseDal.DeleteData(task);
                    _task_HtyService.AddTaskHty(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"手动入库完成");
                }
                else
                {
                    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】");
                }
                content.OK();
            }
            catch (Exception ex)
            {
                content.Error($"任务完成异常,任务号:【{taskNum}】,原因:{ex.Message}");
            }
            return content;
        }
    }
}