zhangchengsong
2026-03-23 c09d4c6bb14496999ca15aea80a6f60665bf788a
ÏîÄ¿´úÂë/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -130,6 +130,7 @@
                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", "");
@@ -144,6 +145,7 @@
                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();
                    CommandResult command = taskreturn(int.Parse(task.WMStaskid), Result, "invmd", "");
@@ -462,6 +464,105 @@
            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;
        }
    }
}