wanshenmean
16 小时以前 c5c3e4e538a11f2a6391e6b2613375b1f92eb20a
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -112,7 +112,9 @@
                    }
                    Dt_Task task = _mapper.Map<Dt_Task>(item);
                    task.Creater = "WMS";
                    InitializeTaskOnReceive(task, item);
                    content = InitializeTaskOnReceive(task, item);
                    if (!content.Status)
                        return content;
                    tasks.Add(task);
                }
                // TOOD: 这里注意添加错误要返回错误
@@ -170,24 +172,20 @@
        /// </summary>
        /// <param name="task">任务实体。</param>
        /// <param name="source">WMS原始任务对象。</param>
        private void InitializeTaskOnReceive(Dt_Task task, WMSTaskDTO source)
        private WebResponseContent InitializeTaskOnReceive(Dt_Task task, WMSTaskDTO source)
        {
            switch (task.TaskType.GetTaskTypeGroup())
            {
                case TaskTypeGroup.OutbondGroup:
                    _outboundTaskFlowService.InitializeOnReceive(task, source);
                    break;
                    return _outboundTaskFlowService.InitializeOnReceive(task, source);
                case TaskTypeGroup.InboundGroup:
                    _inboundTaskFlowService.InitializeOnReceive(task, source);
                    break;
                    return _inboundTaskFlowService.InitializeOnReceive(task, source);
                case TaskTypeGroup.RelocationGroup:
                    _relocationTaskFlowService.InitializeOnReceive(task, source);
                    break;
                    return _relocationTaskFlowService.InitializeOnReceive(task, source);
                case TaskTypeGroup.OtherGroup:
                    _robotTaskFlowService.InitializeOnReceive(task, source);
                    break;
                    return _robotTaskFlowService.InitializeOnReceive(task, source);
                default:
                    break;
                    return WebResponseContent.Instance.Error("WCS不存在当前任务的任务类型");
            }
        }
@@ -398,7 +396,9 @@
                && result.Data is List<WMSTaskDTO> wmsTasks
                && wmsTasks.Count > 0)
            {
                return ReceiveWMSTask(wmsTasks);
                WebResponseContent content = ReceiveWMSTask(wmsTasks);
                if (!content.Status)
                    return content;
            }
            // 更新任务数据
@@ -655,8 +655,42 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                // 收集重复任务的信息
                var duplicateTasks = new List<DuplicateTaskDto>();
                // 倒序遍历,安全删除并收集被移除的项
                for (int i = taskDTOs.Count - 1; i >= 0; i--)
                {
                    var item = taskDTOs[i];
                    var exists = BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode);
                    if (exists != null)
                    {
                        duplicateTasks.Add(new DuplicateTaskDto
                        {
                            TaskNum = exists.TaskNum,
                            PalletCode = exists.PalletCode,
                            TaskType = exists.TaskType,
                            TaskStatus = exists.TaskStatus
                        });
                        taskDTOs.RemoveAt(i);
                    }
                }
                // 调用 ReceiveWMSTask 创建 WCS 任务
                content = ReceiveWMSTask(taskDTOs);
                // 如果有重复任务,修改返回结果
                if (duplicateTasks.Count > 0 && content.Status)
                {
                    var result = new ReceiveTaskResultDto
                    {
                        Success = true,
                        Message = content.Message + $",其中{duplicateTasks.Count}个任务在WCS中已存在",
                        CreatedCount = taskDTOs.Count,
                        DuplicateTasks = duplicateTasks
                    };
                    content.Data = result;
                }
                return content;
            }
            catch (Exception ex)