| | |
| | | using RYB_PTL_API; |
| | | using SqlSugar; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.DirectoryServices.Protocols; |
| | | using System.Linq; |
| | |
| | | { |
| | | lock (lock_taskReceive) |
| | | { |
| | | WriteLog.Write_Log("å
¥åºä»»å¡ä¸å", "WMSå
¥åºä»»å¡æ¥æ¶åæ°", "æ¥æ¶åæ°", $"åæ°ï¼{taskDTO.ToJson()}"); |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_Task> taskOlds = BaseDal.QueryData(x=> taskDTO.Tasks.Select(x => x.TaskDescribe.ContainerCode).Contains(x.PalletCode)); |
| | | List<Dt_LocationInfo> locationInfos = _locationInfoRepository.GetCanOut(taskDTO.Tasks.Select(x=>x.TaskDescribe.ContainerCode).ToList()); |
| | |
| | | { |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(new List<int>() { task.TaskNum }, "å建å
¥åºä»»å¡"); |
| | | } |
| | | WriteLog.Write_Log("å
¥åºä»»å¡ä¸å", "容å¨å
¥åºä»»å¡æ·»å ä»»å¡", "æ·»å ä»»å¡", $"ä»»å¡ï¼{task.ToJson()}"); |
| | | content.OK("æå"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | _unitOfWorkManage.CommitTran(); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(new List<int>() { task.TaskNum }, $"åé
è´§ä½{locationInfo.LocationCode}"); |
| | | _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Free, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation, task.TaskNum); |
| | | WriteLog.Write_Log("å
¥åºä»»å¡ä¸å", "ç³è¯·å
¥åºæ¥å£", "æ´æ°ä»»å¡", $"ä»»å¡ï¼{task.ToJson()}"); |
| | | content.OK("æå"); |
| | | } |
| | | } |
| | |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task, task.ExceptionMessage); |
| | | |
| | | WriteLog.Write_Log("æ´æ°ä»»å¡å¼å¸¸ä¿¡æ¯", "æ´æ°ä»»å¡æ¥å£", "æ´æ°ä»»å¡", $"ä»»å¡ï¼{task.ToJson()}"); |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | { |
| | | try |
| | | { |
| | | WriteLog.Write_Log("æ¥åWMSæå¨å®æä»»å¡", "æ¥åWMSæå¨å®æä»»å¡æ¥å£", "ä»»å¡å·", $"ä»»å¡å·ï¼{taskNum}"); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task != null) |
| | | { |
| | |
| | | WebResponseContent content=new WebResponseContent(); |
| | | try |
| | | { |
| | | WriteLog.Write_Log("AGV任塿¾è¡", "AGV任塿¾è¡æ¥å£", "æç®±å·", $"æç®±ï¼{code}"); |
| | | string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.AgvTaskFlow.ToString())?.ApiAddress; |
| | | if (string.IsNullOrEmpty(url)) throw new Exception($"{code},æªæ¾å°AGV任塿¾è¡æ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | AgvTaskFlowDTO agvTaskFlowDTO = new AgvTaskFlowDTO() |
| | |
| | | }; |
| | | string request = JsonConvert.SerializeObject(agvTaskFlowDTO, settings); |
| | | string response = HttpHelper.Post(url, request); |
| | | WriteLog.Write_Log("AGV任塿¾è¡æ¥å£è¯·æ±AGV", "AGV任塿¾è¡æ¥å£", $"请æ±ï¼{request}ï¼åä¼ ï¼{response}"); |
| | | AgvResponseContent agvResponse = JsonConvert.DeserializeObject<AgvResponseContent>(response) ?? throw new Exception($"{code},æªæ¥æ¶å°AGV任塿¾è¡è¿åå¼"); |
| | | if (!agvResponse.Success) throw new Exception($"æç®±{code},AGV任塿¾è¡é误,ä¿¡æ¯:{agvResponse.Message}"); |
| | | content.OK(); |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | WriteLog.Write_Log("WMSæç®±å°è¾¾æ£éä½ä¸æ¥", "WMSæç®±å°è¾¾æ£éä½ä¸æ¥ææ¥å£", "ä¿¡æ¯", $"æ£éä½ï¼{stationCode}ï¼æç®±ï¼{pickCode}"); |
| | | string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSPickArrivedUp.ToString())?.ApiAddress; |
| | | if (string.IsNullOrEmpty(url)) throw new Exception($"æªæ¾å°WMSæç®±å°è¾¾æ£éä½ä¸æ¥æ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | ContainerArriveDTO containerArriveDTO = new ContainerArriveDTO() |
| | |
| | | }; |
| | | string request = JsonConvert.SerializeObject(containerArriveDTO, settings); |
| | | string response = HttpHelper.Post(url, request); |
| | | WriteLog.Write_Log("䏿¥WMSæç®±å°è¾¾", "䏿¥WMSæç®±å°è¾¾", "ä¿¡æ¯", $"请æ±ï¼{request}ï¼åä¼ ï¼{response}"); |
| | | WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{pickCode},æªæ¥æ¶å°WMSæç®±å°è¾¾æ£éä½ä¸æ¥è¿åå¼"); |
| | | if (wMSResponse.Code != "0") throw new Exception($"æç®±{pickCode}WMSæç®±å°è¾¾æ£éä½ä¸æ¥é误,ä¿¡æ¯:{wMSResponse.Msg}"); |
| | | content.OK(); |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | WriteLog.Write_Log("ä»»å¡å®æ", "ä»»å¡å®ææ¥å£", "ä»»å¡å·", $"ä»»å¡ï¼{taskNum}"); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//åºåºä»»å¡å®æé»è¾ |
| | | { |
| | |
| | | _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, task.TaskNum); |
| | | //è°ç¨æ¥å£ |
| | | string response = HttpHelper.Post(url, request); |
| | | WriteLog.Write_Log("WMSåºåºä»»å¡å®æåä¼ ", "ä»»å¡å®ææ¥å£", "ä»»å¡ä¿¡æ¯", $"请æ±ï¼{request}ï¼åä¼ ï¼{response}"); |
| | | WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},æªæ¥æ¶å°WMSåºåºä¸æ¥è¿åå¼"); |
| | | if (wMSResponse.Code != "0") content.Message=$"åºåºä»»å¡{task.TaskNum}WMSåºåºä¸æ¥é误,ä¿¡æ¯:{wMSResponse.Msg}"; |
| | | } |
| | |
| | | _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum); |
| | | //è°ç¨æ¥å£ |
| | | string response = HttpHelper.Post(url, request); |
| | | WriteLog.Write_Log("WMSå
¥åºä»»å¡å®æåä¼ ", "ä»»å¡å®ææ¥å£", "ä»»å¡ä¿¡æ¯", $"请æ±ï¼{request}ï¼åä¼ ï¼{response}"); |
| | | WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},æªæ¥æ¶å°WMSå
¥åºä¸æ¥è¿åå¼"); |
| | | if (wMSResponse.Code != "0") content.Message = $"å
¥åºä»»å¡{task.TaskNum}WMSå
¥åºä¸æ¥é误,ä¿¡æ¯:{wMSResponse.Msg}"; |
| | | } |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | WriteLog.Write_Log("ä»»å¡åæ¶æ¥æ¶", "人工æå¨åæ¶æå®ä»»å¡", "ä»»å¡å·", $"ä»»å¡ï¼{taskNum}"); |
| | | // 1. è·åä»»å¡ä¿¡æ¯ |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null)return content.Error($"ä»»å¡{taskNum}ä¸åå¨"); |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | WriteLog.Write_Log("ä»»å¡åæ¶æ¥æ¶", "ä»»å¡åæ¶æ¥å£", "ä»»å¡å·", $"ä»»å¡ï¼{taskNum}"); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//åºåºä»»å¡å®æé»è¾ |
| | | { |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (taskCancels==null || taskCancels.Count<=0) |
| | | // åæ°éªè¯ |
| | | if (taskCancels == null || taskCancels.Count == 0) |
| | | { |
| | | return content.Error("ä¼ å
¥ä¸è½ä¸ºç©º"); |
| | | return content.Error("ä¼ å
¥åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | //è·åæææç®± |
| | | List<Dt_Task> outTasks = BaseDal.QueryData(x=>x.TaskType==TaskTypeEnum.Outbound.ObjToInt()); |
| | | |
| | | WriteLog.Write_Log("ä»»å¡åæ¶æ¥æ¶", "ä»»å¡åæ¶æ¥å£", "ä»»å¡åæ¶", $"ä»»å¡ï¼{taskCancels.ToJson()}"); |
| | | |
| | | // è·åææåºåºä»»å¡ï¼åªæ¥è¯¢ä¸æ¬¡ï¼ |
| | | List<Dt_Task> outTasks = BaseDal.QueryData(x => |
| | | x.TaskType == TaskTypeEnum.Outbound.ObjToInt()); |
| | | |
| | | if (outTasks.Count == 0) |
| | | { |
| | | return content.Error("æªæ¾å°å¯¹åºçä»»å¡"); |
| | | } |
| | | |
| | | // æGroupIdåç»å¤ç |
| | | var tasksByGroup = outTasks.GroupBy(x => x.GroupId) |
| | | .Where(g => !string.IsNullOrEmpty(g.Key)) |
| | | .ToDictionary(g => g.Key, g => g.ToList()); |
| | | |
| | | List<Dt_Task> cancelTasks = new List<Dt_Task>(); |
| | | List<Dt_Task> cancelTasksCompleted = new List<Dt_Task>(); |
| | | //夿æ¯å¦æä»»å¡åå¨ |
| | | foreach (var item in taskCancels) |
| | | // æ¶éææéè¦æ£æ¥çä»»å¡ç» |
| | | var groupsToCheck = new List<List<Dt_Task>>(); |
| | | |
| | | foreach (var taskCancel in taskCancels) |
| | | { |
| | | Dt_Task? taskExist = outTasks.FirstOrDefault(x=>x.PalletCode== item.ContainerCode); |
| | | if (taskExist==null) |
| | | // æ¾å°è¯¥ä»»å¡æå¨çç» |
| | | var group = tasksByGroup.Values.FirstOrDefault(g => |
| | | g.Any(t => t.PalletCode == taskCancel.ContainerCode)); |
| | | |
| | | if (group != null && !groupsToCheck.Contains(group)) |
| | | { |
| | | content.Message += $"{item.ContainerCode}ä»»å¡ä¸åå¨"; |
| | | continue; |
| | | groupsToCheck.Add(group); |
| | | } |
| | | if (taskExist.TaskState==TaskStatusEnum.AGV_TakeFinish.ObjToInt()) |
| | | { |
| | | taskExist.IsCancel = 1; |
| | | cancelTasks.Add(taskExist); |
| | | } |
| | | else if(taskExist.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt()) |
| | | // éªè¯ä»»å¡ç¶æ |
| | | foreach (var group in groupsToCheck) |
| | | { |
| | | cancelTasksCompleted.Add(taskExist); |
| | | var firstTask = group.FirstOrDefault(); |
| | | if (firstTask == null) continue; |
| | | |
| | | // æ£æ¥ç»å
ææä»»å¡ç¶æ |
| | | foreach (var task in group) |
| | | { |
| | | if (task.TaskState == TaskStatusEnum.AGV_TakeFinish.ObjToInt()) |
| | | { |
| | | task.IsCancel = 1; |
| | | cancelTasks.Add(task); |
| | | } |
| | | else if (task.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt()) |
| | | { |
| | | cancelTasksCompleted.Add(task); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ä»»å¡åæ¶å¤±è´¥{item.TaskCode}ä»»å¡ç¶æä¸å¯åæ¶ï¼"); |
| | | return content.Error($"ä»»å¡åæ¶å¤±è´¥{task.PalletCode}ä»»å¡ç¶æä¸å¯åæ¶ï¼"); |
| | | } |
| | | } |
| | | } |
| | | //WriteLog.Write_Log("ä»»å¡åæ¶æ¥æ¶", "ä»»å¡åæ¶æ¥å£", "ä»»å¡åæ¶", $"ä»»å¡ï¼{taskCancels.ToJson()}"); |
| | | //if (taskCancels==null || taskCancels.Count<=0) |
| | | //{ |
| | | // return content.Error("ä¼ å
¥ä¸è½ä¸ºç©º"); |
| | | //} |
| | | ////è·åæææç®± |
| | | //List<Dt_Task> outTasks = BaseDal.QueryData(x=>x.TaskType==TaskTypeEnum.Outbound.ObjToInt()); |
| | | //List<Dt_Task> cancelTasks = new List<Dt_Task>(); |
| | | //List<Dt_Task> cancelTasksCompleted = new List<Dt_Task>(); |
| | | //HashSet<string> processedGroups = new HashSet<string>(); |
| | | ////夿æ¯å¦æä»»å¡åå¨ |
| | | //foreach (var item in taskCancels) |
| | | //{ |
| | | // Dt_Task? taskExist = outTasks.FirstOrDefault(x=>x.PalletCode == item.ContainerCode); |
| | | // if (taskExist==null) |
| | | // { |
| | | // content.Message += $"{item.ContainerCode}ä»»å¡ä¸åå¨"; |
| | | // WriteLog.Write_Log("ä»»å¡åæ¶æ¥æ¶", "ä»»å¡åæ¶æ¥å£", "ä»»å¡ä¸åå¨", $"ä»»å¡ï¼{item.ContainerCode}"); |
| | | // continue; |
| | | // } |
| | | // if (string.IsNullOrEmpty(taskExist.GroupId)) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // processedGroups.Add(taskExist.GroupId); |
| | | // //if (taskExist.TaskState == TaskStatusEnum.AGV_TakeFinish.ObjToInt()) |
| | | // //{ |
| | | // // taskExist.IsCancel = 1; |
| | | // // cancelTasks.Add(taskExist); |
| | | // //} |
| | | // //else if(taskExist.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt()) |
| | | // //{ |
| | | // // cancelTasksCompleted.Add(taskExist); |
| | | // //} |
| | | // //else |
| | | // //{ |
| | | // // return content.Error($"ä»»å¡åæ¶å¤±è´¥{item.TaskCode}ä»»å¡ç¶æä¸å¯åæ¶ï¼"); |
| | | // //} |
| | | //} |
| | | //// åæ¶æ´ä¸ªç» |
| | | //foreach(var processed in processedGroups) |
| | | //{ |
| | | // List<Dt_Task> groupTask = BaseDal.QueryData(x => x.TaskType == TaskTypeEnum.Outbound.ObjToInt() && x.GroupId == processed); |
| | | // foreach (var group in groupTask) |
| | | // { |
| | | // if (group.TaskState == TaskStatusEnum.AGV_TakeFinish.ObjToInt()) |
| | | // { |
| | | // group.IsCancel = 1; |
| | | // cancelTasks.Add(group); |
| | | // } |
| | | // else if (group.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt()) |
| | | // { |
| | | // cancelTasksCompleted.Add(group); |
| | | // } |
| | | // else |
| | | // { |
| | | // return content.Error($"ä»»å¡åæ¶å¤±è´¥{group.PalletCode}ä»»å¡ç¶æä¸å¯åæ¶ï¼"); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.UpdateData(cancelTasks); |
| | | foreach (var item in cancelTasksCompleted) |