| | |
| | | } |
| | | 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: 这里注意添加错误要返回错误 |
| | |
| | | /// </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不存在当前任务的任务类型"); |
| | | } |
| | | } |
| | | |
| | |
| | | && result.Data is List<WMSTaskDTO> wmsTasks |
| | | && wmsTasks.Count > 0) |
| | | { |
| | | return ReceiveWMSTask(wmsTasks); |
| | | WebResponseContent content = ReceiveWMSTask(wmsTasks); |
| | | if (!content.Status) |
| | | return content; |
| | | } |
| | | |
| | | // 更新任务数据 |
| | |
| | | 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) |