| | |
| | | var task = tasks.First(x => x.PalletCode == item.outPod); |
| | | if (item.blockPods != null && item.blockPods.Count > 0) |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | var responseContent = AddMoveTask(item.blockPods, task);//æ·»å ç§»åºä»»å¡ |
| | | if (!responseContent.Status) task.ExceptionMessage = responseContent.Message; |
| | | else task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; |
| | | dt_Tasks.Add(task); |
| | | AddMoveTask(item.blockPods);//æ·»å ç§»åºä»»å¡ |
| | | } |
| | | else |
| | | { |
| | |
| | | try |
| | | { |
| | | #region è·åè´§ä½ |
| | | var rGVLocationInfo = _rGVLocationInfoService.GetInFreeLocationInfo(item.Roadway); |
| | | var rGVLocationInfo = _rGVLocationInfoService.GetInFreeLocationInfo(item.Roadway.ObjToInt()); |
| | | if (rGVLocationInfo == null) |
| | | { |
| | | item.ExceptionMessage = $"æªæ¾å°ç»ç¹åºåºã{item.Roadway}ãå¯ç¨ç©ºè´§ä½ï¼"; |
| | |
| | | #endregion |
| | | |
| | | #region æ·»å ç§»åºä»»å¡ |
| | | public void AddMoveTask(List<string> blockPods) |
| | | public WebResponseContent AddMoveTask(List<string> blockPods, Dt_Task task) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_RGVLocationInfo> _UpRGVLocationInfos = new List<Dt_RGVLocationInfo>(); |
| | | List<Dt_RGVLocationInfo> rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => blockPods.Contains(x.PalletCode)); |
| | | var FreeLocationInfos = _rGVLocationInfoService.GetFreeLocationInfos(); |
| | | if (FreeLocationInfos.Count < 1) throw new Exception($"æååºå建移åºä»»å¡æ å¯ç¨ç©ºè´§ä½"); |
| | | foreach (var item in rGVLocationInfos) |
| | | var Items = _rGVLocationInfoService.GetMoveFreeLocationInfo(rGVLocationInfos); |
| | | |
| | | List<Dt_Task> tasks = Items.Item1; |
| | | List<Dt_RGVLocationInfo> _UpRGVLocationInfos = Items.Item2; |
| | | if (tasks.Count < blockPods.Count) throw new Exception("å¯ç§»åºç©ºè´§ä½å°äºéç§»åºæçæ°é"); |
| | | |
| | | tasks.ForEach(x => |
| | | { |
| | | Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer && x.RoadwayNo != item.RoadwayNo).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault(); |
| | | rGVLocationInfo ??= FreeLocationInfos.First(); |
| | | Dt_Task dt_Task = new() |
| | | { |
| | | TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | //WMSTaskNum = taskDTO.taskCode, |
| | | //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Grade = 1, |
| | | PalletCode = item.PalletCode, |
| | | Roadway = item.RoadwayNo, |
| | | TaskState = TaskStatusEnum.RGV_NewMoveTask.ObjToInt(), |
| | | TaskType = TaskTypeEnum.CPMoveInventory.ObjToInt(), |
| | | SourceAddress = item.LocationCode, |
| | | CurrentAddress = item.LocationCode, |
| | | NextAddress = rGVLocationInfo.LocationCode, |
| | | TargetAddress = rGVLocationInfo.LocationCode, |
| | | Creater = "WCS", |
| | | }; |
| | | tasks.Add(dt_Task); |
| | | item.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | rGVLocationInfo.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | _UpRGVLocationInfos.Add(rGVLocationInfo); |
| | | FreeLocationInfos.Remove(rGVLocationInfo); |
| | | x.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)); |
| | | x.WMSTaskNum = task.WMSTaskNum; |
| | | }); |
| | | rGVLocationInfos.ForEach(x => |
| | | { |
| | | x.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | }); |
| | | _UpRGVLocationInfos.ForEach(x => |
| | | { |
| | | x.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt(); |
| | | }); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | _rGVLocationInfoService.UpdateData(rGVLocationInfos); |
| | | _rGVLocationInfoService.UpdateData(_UpRGVLocationInfos); |
| | | _taskService.AddData(tasks); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | _rGVLocationInfoService.UpdateData(rGVLocationInfos); |
| | | _rGVLocationInfoService.UpdateData(_UpRGVLocationInfos); |
| | | _taskService.AddData(tasks); |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | #endregion |
| | | |