| | |
| | | using SqlSugar; |
| | | using SqlSugar.Extensions; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Diagnostics.CodeAnalysis; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å¼ºå¶å®æ |
| | | /// ä»»å¡å¼ºå¶å®æ å åæºå®é
已宿任å¡ï¼WCSæªæ¶å°å®æä¿¡å·æå
¶ä»æªç¥åå 导è´WCS任塿ªå®æï¼å¯ä»¥æ§è¡è¯¥æ¹æ³å¼ºå¶å®æä»»å¡ |
| | | /// </summary> |
| | | /// <param name="taskNum"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent ForceCompleteTask(int taskNum) |
| | | { |
| | | return null; |
| | | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | bool isBack = false; |
| | | //1ï¼å
æ¥è¯¢ä»»å¡ï¼æ ¹æ®ä¸åçä»»å¡ç±»ååä»»å¡å¼ºå¶å®ææä½ |
| | | Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | |
| | | Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString()); |
| | | Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString()); |
| | | if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | { |
| | | if (task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.SC_InFinish; |
| | | //éè¦å°ç®æ å°åæ¹ä¸ºæè´§ç¶æ |
| | | locationdsc.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | |
| | | //æ´æ°ç¶æä¸ºä»»å¡å®æ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å
¥åºä»»å¡å®æ"); |
| | | //æ´æ°è´§ä½ |
| | | _locationInfoRepository.UpdateData(locationdsc); |
| | | isBack = true; |
| | | |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error("该任å¡ç®åç¶æï¼ä¸å
计强å¶å®æï¼"); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | { |
| | | |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory || task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//å¼å¸¸åºåº 空车åºåº |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutFinish; |
| | | //æºå°åæ´æ°ä¸ºç©ºé² |
| | | locationsrc.LocationStatus = (int)LocationStatusEnum.Free; |
| | | |
| | | //æ´æ°ç¶æä¸ºä»»å¡å®æ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºä»»å¡å®æ"); |
| | | //æ´æ°è´§ä½ |
| | | _locationInfoRepository.UpdateData(locationsrc); |
| | | isBack = true; |
| | | } |
| | | else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//ç§»åº |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutFinish; |
| | | //æºå°åæ´æ°ä¸ºç©ºé² |
| | | locationsrc.LocationStatus = (int)LocationStatusEnum.Free; |
| | | //ç®æ å°åæ´æ°ä¸ºæè´§ |
| | | locationdsc.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | |
| | | |
| | | //æ´æ°ç¶æä¸ºä»»å¡å®æ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºä»»å¡å®æ"); |
| | | //æ´æ°è´§ä½ |
| | | _locationInfoRepository.UpdateData(locationsrc); |
| | | _locationInfoRepository.UpdateData(locationdsc); |
| | | isBack = true; |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error($"䏿任å¡ä¸å
计强å¶å®æï¼"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å
计强å¶å®æï¼"); |
| | | } |
| | | } |
| | | |
| | | //ä»»å¡å¼ºå¶å®æåè°MES |
| | | if (isBack) |
| | | { |
| | | |
| | | if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//å
¥åºæ¶åä¼ éä¼ æ°ä»»å¡å· |
| | | { |
| | | task.TaskNum =int.Parse(task.NextAddress); |
| | | } |
| | | MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 }; |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | { |
| | | ServiceLogger.WriteDebug("ForceCompleteTask", $"ä»»å¡å¼ºå¶å®æååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å¼ºå¶å®æååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | } |
| | | else |
| | | { |
| | | ServiceLogger.WriteDebug("ForceCompleteTask", $"ä»»å¡å¼ºå¶å®æååä¼ MESæåï¼,ä»»å¡å·:ã{taskNum}ã"); |
| | | content = WebResponseContent.Instance.Error($"大å åæºå®æååä¼ MESæåï¼,ä»»å¡å·:ã{taskNum}ã"); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="taskid"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CancelTask(int taskid) |
| | | public WebResponseContent CancelTask(int taskNum) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //å
æ¥è¯¢ä»»å¡ï¼æ ¹æ®ä¸åçä»»å¡ç±»ååä»»å¡åæ¶æä½ |
| | | bool isAllow = false; |
| | | Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskid); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡id:ã{taskid}ã"); |
| | | //1ï¼å
æ¥è¯¢ä»»å¡ï¼æ ¹æ®ä¸åçä»»å¡ç±»ååä»»å¡åæ¶æä½ |
| | | Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | |
| | | Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString()); |
| | | Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString()); |
| | | bool isBack = false; |
| | | //妿æ¯å
¥åºåèªå¨åæå¨ä¸¤ç§æ
åµå¤ç |
| | | if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | { |
| | | if (task.WMSId == 0 && task.TaskState == (int)TaskInStatusEnum.InNew)//èªå¨å
¥åºï¼1001-AGVè¯·æ±æ¯å¦å
计è¿å
¥ï¼ä»»å¡ç¶æä¸ºâæ°å»ºå
¥åºä»»å¡200âä¹åå¯ä»¥åæ¶ |
| | | { |
| | | isAllow = true; |
| | | task.TaskState = (int)TaskInStatusEnum.InCancel; |
| | | //éè¦å°ç®æ å°åæ¢å¤ä¸ºç©ºé²ç¶æ |
| | | locationdsc.LocationStatus = (int)LocationStatusEnum.Free; |
| | | //æ´æ°ç¶æä¸ºä»»å¡åæ¶ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å
¥åºä»»å¡åæ¶"); |
| | | _locationInfoRepository.UpdateData(locationdsc); |
| | | isBack = true; |
| | | } |
| | | else if (task.WMSId == 1 && task.TaskState == (int)TaskInStatusEnum.AGV_InExecuting)//æå¨å
¥åºï¼3001-AGVæ¾è´§å®æï¼ä»»å¡ç¶æä¸ºâAGVå
¥åºæ§è¡ä¸210âä¹åå¯ä»¥åæ¶ |
| | | { |
| | | isAllow = true; |
| | | task.TaskState = (int)TaskInStatusEnum.InCancel; |
| | | //éè¦å°ç®æ å°åæ¢å¤ç©ºé²ç¶æ |
| | | locationdsc.LocationStatus = (int)LocationStatusEnum.Free; |
| | | //æ´æ°ç¶æä¸ºä»»å¡åæ¶ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å
¥åºä»»å¡åæ¶"); |
| | | _locationInfoRepository.UpdateData(locationdsc); |
| | | isBack = true; |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å
è®¡åæ¶ï¼"); |
| | | } |
| | | } |
| | | else//å
¶ä»ä»»å¡ï¼ä»»å¡ç¶æâæ°å»ºåºåºä»»å¡âä¹åï¼æå¯ä»¥åæ¶ |
| | | { |
| | | if (task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | { |
| | | if(task.TaskType == (int)TaskOutboundTypeEnum.OutInventory|| task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//å¼å¸¸åºåº 空车åºåº |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutCancel; |
| | | //æºå°åæ¢å¤å°æè´§ |
| | | locationsrc.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | |
| | | //æ´æ°ç¶æä¸ºä»»å¡åæ¶ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºä»»å¡åæ¶"); |
| | | _locationInfoRepository.UpdateData(locationsrc); |
| | | isBack = true; |
| | | } |
| | | else if(task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//ç§»åº |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutCancel; |
| | | //æºå°åæ¢å¤å°æè´§ |
| | | locationsrc.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | //éè¦å°ç®æ å°åæ¢å¤ç©ºé²ç¶æ |
| | | locationdsc.LocationStatus = (int)LocationStatusEnum.Free; |
| | | //æ´æ°ç¶æä¸ºä»»å¡åæ¶ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºä»»å¡åæ¶"); |
| | | _locationInfoRepository.UpdateData(locationsrc); |
| | | _locationInfoRepository.UpdateData(locationdsc); |
| | | isBack = true; |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error($"䏿任å¡ä¸å
è®¡åæ¶ï¼"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | isAllow = true; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutCancel; |
| | | return WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å
è®¡åæ¶ï¼"); |
| | | } |
| | | } |
| | | |
| | | if (isAllow)//妿å
è®¡åæ¶ |
| | | |
| | | |
| | | //ä»»å¡åæ¶åè°MES |
| | | if (isBack) |
| | | { |
| | | //æ´æ°ç¶æä¸ºä»»å¡åæ¶ |
| | | UpdateTaskStatus(task.TaskId, task.TaskState); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"æå¨ä»»å¡åæ¶"); |
| | | content = WebResponseContent.Instance.OK("åæ¶æåï¼"); |
| | | //忥åä¼ WMS |
| | | MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 3 }; |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | { |
| | | ServiceLogger.WriteDebug("ForceCompleteTask", $"ä»»å¡åæ¶åä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡åæ¶åä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | } |
| | | else |
| | | { |
| | | ServiceLogger.WriteDebug("ForceCompleteTask", $"ä»»å¡åæ¶åä¼ MESæåï¼,ä»»å¡å·:ã{taskNum}ã"); |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡åæ¶åä¼ MESæåï¼,ä»»å¡å·:ã{taskNum}ã"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | content = WebResponseContent.Instance.OK("该任å¡ç®åç¶æä¸å
è®¸åæ¶ï¼"); |
| | | |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | _unitOfWorkManage.CommitTran(); |
| | | //åºåºå®æï¼åä¼ WMS |
| | | //åä¼ å°WMS |
| | | MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 }; |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutPick) |
| | | { |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"大å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"大å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 }; |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | { |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"大å åæºå®æç©ºè½¦åºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"大å åæºå®æç©ºè½¦åºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 }; |
| | | MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); |
| | | if (res != null && res.code != 0) |
| | | { |
| | | ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"大å åæºå®æå¼å¸¸åºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | content = WebResponseContent.Instance.Error($"大å åæºå®æå¼å¸¸åºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); |
| | | } |
| | | } |
| | | |
| | | } |