´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -117,6 +117,13 @@ /// <returns></returns> Dt_Task QueryStackerCraneTask(); /// <summary> /// æ¥è¯¢å°å åæºç§»åºä»»å¡ /// </summary> /// <param name="taskNum"></param> /// <returns></returns> Dt_Task QueryStackerCraneTaskByRelotion(int taskNum); /// <summary> /// æ¥è¯¢å°å åæºåºåºå®æä»»å¡ ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -144,7 +144,7 @@ public DateTime? Dispatchertime { get; set; } /// <summary> /// 夿³¨ ç¨äºå䏿æè½¦çæ»å±æ°åå½å屿° æ ¼å¼ï¼æ»å±æ°-å½å屿° /// 夿³¨ 䏿任塿¶ ç¨äºå䏿æè½¦çæ»å±æ°åå½å屿° æ ¼å¼ï¼æ»å±æ°-å½å屿° åºåºä»»å¡æ¶ï¼åæ»å±æ° /// </summary> [ImporterHeader(Name = "夿³¨")] [ExporterHeader(DisplayName = "夿³¨")] ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Common/ApiInvoke.cs
@@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Common.ServiceLog; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO.TaskInfo; using static System.Net.WebRequestMethods; @@ -21,13 +22,16 @@ string response = ""; try { ServiceLogger.WriteDebug("SendTaskCMD", $"请æ±åæ°ï¼{postData}"); response = HttpManager.HttpPostAsync(url, postData).Result; ServiceLogger.WriteDebug("SendTaskCMD", $"ååºåæ°ï¼{response}"); MESResponse res = JsonConvert.DeserializeObject<MESResponse>(response); return res; } catch (Exception ex) { throw new Exception(ex.Message); ServiceLogger.WriteDebug("SendTaskCMD", $"å¼å¸¸æè¿°ï¼{ex.Message}--{ex.StackTrace}--{ex.InnerException}"); return null; } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -42,6 +42,7 @@ using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Service; @@ -210,7 +211,7 @@ if (taskinfo != null) { UpdateTaskStatus(taskinfo.TaskId, (int)TaskInStatusEnum.AGV_InExecuting); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGVå ¥åºæ§è¡ä¸"); _taskExecuteDetailService.AddTaskExecuteDetail(taskinfo.TaskId, $"AGVå ¥åºæ§è¡ä¸"); ServiceLogger.WriteDebug("ReceiveTask", $"AGVå ¥åºæ§è¡ä¸ï¼èªå¨3001ï¼æ´æ°ç¶ææåï¼ä»»å¡å·ï¼{taskinfo.TaskId}"); return content = WebResponseContent.Instance.OK($"AGVå ¥åºæ§è¡ä¸ï¼èªå¨3001ï¼æ´æ°ç¶ææåï¼ä»»å¡å·ï¼{taskinfo.TaskId}"); } @@ -226,7 +227,7 @@ { //æ´æ°ä»»å¡è¡¨ä¸NextAddressåæ®µä¸ºæ°çä»»å¡å· taskDTO.weight-æ§çä»»å¡å· taskDTO.task_id-æ°çä»»å¡å· UpdateTaskStatus(taskinfo.TaskId, taskDTO.task_id, (int)TaskInStatusEnum.AGV_InFinish); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGVæ¬è¿å®æ"); _taskExecuteDetailService.AddTaskExecuteDetail(taskinfo.TaskId, $"AGVæ¬è¿å®æ"); ServiceLogger.WriteDebug("ReceiveTask", $"AGVæ¬è¿å®æï¼101ï¼æ´æ°ç¶ææåï¼ä»»å¡å·ï¼{taskinfo.TaskId}"); return content = WebResponseContent.Instance.OK($"AGVæ¬è¿å®æï¼101ï¼æ´æ°ç¶ææåï¼ä»»å¡å·ï¼{taskinfo.TaskId}"); } @@ -241,6 +242,10 @@ task.TaskType= (int)TaskRelocationTypeEnum.Relocation; task.TaskState = (int)TaskOutStatusEnum.OutNew; task.Roadway = "SC01"; if (taskDTO.total > 0) { task.Remark = taskDTO.total.ToString();//ååºåºçæ»å±æ° } task.Grade = 1; break; case 102: @@ -586,6 +591,15 @@ } /// <summary> /// æ¥è¯¢ç§»åºä»»å¡ /// </summary> /// <returns></returns> public Dt_Task QueryStackerCraneTaskByRelotion(int taskNum) { return BaseDal.QueryFirst(x => (x.Roadway == "SC01" )&&x.TaskType==(int)TaskRelocationTypeEnum.Relocation && x.TaskNum==taskNum, TaskOrderBy); } /// <summary> /// æ¥è¯¢å°å åæºåºåºå®æä»»å¡ /// </summary> /// <returns></returns> @@ -749,7 +763,7 @@ { if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory || task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//å¼å¸¸åºåº 空车åºåº { task.TaskState = (int)TaskOutStatusEnum.OutFinish; @@ -1176,7 +1190,7 @@ 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}ã"); } @@ -1225,6 +1239,24 @@ ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"大å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); content = WebResponseContent.Instance.Error($"大å åæºå®æåºåºä»»å¡ååä¼ MES失败ï¼,ä»»å¡å·:ã{taskNum}ã,失败信æ¯:ã{res.message}ã"); } //if(task.TaskType== (int)TaskRelocationTypeEnum.Relocation&&!string.IsNullOrEmpty(task.Remark.Trim()))//åºåºä»»å¡åæ»å±æ°æ è¯ //{ // CommonStackerCrane commonStackerCrane = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC01") as CommonStackerCrane; // //æ ¹æ®ä»»å¡æºå°åç¡®å®åå ¥PLCä½ç½® Depth // Dt_LocationInfo location = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress); // if (commonStackerCrane!=null&&location != null) // { // bool issuccess = commonStackerCrane.Communicator.Write<short>("DB28." + location.Depth + ".0", 9); // if (issuccess) // { // ServiceLogger.WriteDebug("TaskService", $"åæåºåºååå ¥æ è¯æåï¼"); // } // else // { // ServiceLogger.WriteDebug("TaskService", $"åæåºåºååå ¥æ è¯å¤±è´¥ï¼"); // } // } //} } catch (Exception ex) ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -53,15 +53,15 @@ public Task Execute(IJobExecutionContext context) { //WriteDebug("大å åæºè¿è¡æ¥å¿", "å¼å§æ¶é´" + DateTime.Now); Console.WriteLine("å½åçº¿ç¨æ°"+ThreadPool.ThreadCount); WriteDebug("线ç¨ç»è®¡æ¥å¿", "çº¿ç¨æ°" + ThreadPool.ThreadCount); //CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); CommonStackerCrane commonStackerCrane = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC01") as CommonStackerCrane; try { if (commonStackerCrane != null) { WriteDebug("大å åæºè¿è¡æ¥å¿", $"大å åæºä»»å¡æ§è¡ä¸..."); //WriteDebug("大å åæºè¿è¡æ¥å¿", $"大å åæºä»»å¡æ§è¡ä¸..."); //if (!commonStackerCrane.IsEventSubscribed) //{ // commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é ä»»å¡å®æäºä»¶ @@ -69,7 +69,7 @@ if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal) { commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ // commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) { @@ -77,7 +77,7 @@ if (task != null) { WriteDebug("大å åæºè¿è¡æ¥å¿", $"大å åæºä»»å¡å·{task.TaskNum}"); WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºä»»å¡å·{task.TaskNum}"); StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); if (stackerCraneTaskCommand != null) { @@ -128,9 +128,7 @@ } //Task.Run(delegate //{ try { if (commonStackerCrane != null) @@ -138,7 +136,7 @@ //读å大å åæºä»»å¡å·åä»»å¡å®æç¡®è®¤ç¶æï¼å 为å°è£ çäºä»¶ç»å¸¸ä¸è§¦åï¼æä»¥å ä¸ªç´æ¥è¯»çé»è¾ï¼ä»¥å åºç°å åæºä¸ç´æ¥å¤äºçå¾ wcsç¡®è®¤ï¼ byte IsOver = commonStackerCrane.Communicator.Read<byte>("DB106.22"); int tasknum = commonStackerCrane.Communicator.Read<int>("DB106.18"); //WriteDebug(nameof(CommonStackerCraneJob), $"读å大å åæºSC01ä»»å¡å®æä¿¡å·å¼:{IsOver} ä»»å¡å·ï¼{tasknum}"); WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºSC01ä»»å¡å·å åæºä»»å¡å·ï¼{tasknum}ç¶æï¼{IsOver}"); if (IsOver == 6) { if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) @@ -146,17 +144,38 @@ _taskService.StackCraneTaskCompleted(tasknum); Console.Out.WriteLine("TaskCompleted" + tasknum); bool issuccess = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); if (issuccess) if(issuccess) { WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºSC01ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5æå{tasknum}"); WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºSC01ä»»å¡å·å åæºä»»å¡å·ï¼{tasknum},åå5æå"); //æ¥è¯¢å½åä»»å¡å·ï¼æ¯ä¸æ¯åºåºï¼æ£å¸¸åºä½-->æåä½ï¼ Dt_Task tasktemp = _taskService.QueryStackerCraneTaskByRelotion(tasknum); if (tasktemp != null&&!string.IsNullOrEmpty(tasktemp.Remark.Trim())) { //æ ¹æ®ä»»å¡ç®æ å°åç¡®å®åå ¥PLCä½ç½® Depth Dt_LocationInfo location = _locationInfoRepository.QueryFirst(x => x.LocationCode == tasktemp.TargetAddress); if (commonStackerCrane != null && location != null) { bool issuccess2 = commonStackerCrane.Communicator.Write<short>("DB28." + location.Depth + ".0", 9); if (issuccess2) { ServiceLogger.WriteDebug("TaskService", $"åæåºåºååå ¥æ è¯æåï¼"); } else { ServiceLogger.WriteDebug("TaskService", $"åæåºåºååå ¥æ è¯å¤±è´¥ï¼"); } } } } else { WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºSC01ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5失败{tasknum}"); WriteDebug(nameof(CommonStackerCraneJob), $"大å åæºSC01ä»»å¡å·å åæºä»»å¡å·ï¼{tasknum},åå5失败"); } } } //æåæºäº¤äº Dt_Task? task1001 = _taskService.QueryStackerCraneTaskByAGVRequest("SC01"); @@ -176,18 +195,6 @@ { MESSendCMD sendcmd = new MESSendCMD { cmd = 2001, task_id = task1001.TaskNum, status = 6 }; MESResponse res = ApiInvoke.SendTaskCMD(sendcmd); if (res != null && res.code != 0) { WriteDebug(nameof(CommonStackerCraneJob), $"å 计AGVè¿å ¥æåæºï¼åä¼ WMS失败ï¼ä»»å¡å·{task1001.TaskNum}"); } else { WriteDebug(nameof(CommonStackerCraneJob), $"å 计AGVè¿å ¥æåæºï¼åä¼ WMSæåï¼ä»»å¡å·{task1001.TaskNum}"); } } else { WriteDebug(nameof(CommonStackerCraneJob), $"æªè¯»åå°æåæºå 计è¿å ¥ä¿¡å·ï¼æä¸å 计AGVè¿å ¥æåæºï¼ä»»å¡å·{task1001.TaskNum}"); } } Dt_Task? task3001 = _taskService.QueryStackerCraneTaskByAGVPutFinish("SC01"); @@ -208,10 +215,7 @@ { commonStackerCrane.Communicator.Write<short>("DB1.0.0", 1); } else { WriteDebug(nameof(CommonStackerCraneJob), $"æªåå ¥æåä¿¡å·ï¼å¯è½æ¯å·²åå ¥æè æåæºæªå¤çå°±ç»ªç¶æ,ä»»å¡å·ï¼{task3001.TaskNum}"); } //读åæåæºä¿¡å·ï¼ç¡®å®æ¯å¦æå宿 IsFinish = commonStackerCrane.Communicator.Read<short>("DB2.2.0"); @@ -228,10 +232,7 @@ { commonStackerCrane.Communicator.Write<short>("DB1.6.0", 1); } else { WriteDebug(nameof(CommonStackerCraneJob), $"æªåå ¥æåä¿¡å·ï¼å¯è½æ¯ä¿¡å·å·²åå ¥æè æåæºæªå¤çå°±ç»ªç¶æï¼ä»»å¡å·ï¼{task3001.TaskNum}"); } //读åæåæºä¿¡å·ï¼ç¡®å®æ¯å¦æå宿 IsFinish = commonStackerCrane.Communicator.Read<short>("DB2.10.0"); } @@ -247,10 +248,7 @@ WriteDebug(nameof(CommonStackerCraneJob), $"æåæºæå宿ï¼åä¼ WMS失败ï¼ä»»å¡å·{task3001.TaskNum}"); } } else { WriteDebug(nameof(CommonStackerCraneJob), $"æåæºæåä¸...ï¼ä»»å¡å·ï¼{task3001.TaskNum}"); } } //å°å åæºåºåºå®æä»»å¡ @@ -334,10 +332,8 @@ } catch (Exception ex) { WriteError(nameof(CommonStackerCraneJob), "æ¥è¯¢æåå ¥PLCç¶æå¤±è´¥ï¼", ex); WriteError(nameof(CommonStackerCraneJob), "æ§è¡å¼å¸¸ï¼", ex); } // WriteDebug("大å åæºè¿è¡æ¥å¿", "ç»ææ¶é´" + DateTime.Now); //}); return Task.CompletedTask; } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs
@@ -52,7 +52,7 @@ public Task Execute(IJobExecutionContext context) { //WriteDebug("å°å åæºè¿è¡æ¥å¿", "å¼å§æ¶é´" + DateTime.Now); CommonStackerCrane? stackerCraneOne = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC02") as CommonStackerCrane; CommonStackerCrane? stackerCraneTwo = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC03") as CommonStackerCrane; @@ -66,7 +66,7 @@ CommonStackerCrane? StackerCrane = GetStrackerCrane(task, stackerCraneOne, stackerCraneTwo); if (StackerCrane != null) { WriteDebug("å°å åæºè¿è¡æ¥å¿", $"å°å åæºä»»å¡å·{task.TaskNum}"); WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºä»»å¡å·{task.TaskNum}"); StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); if (stackerCraneTaskCommand != null) { @@ -79,8 +79,8 @@ } else { _taskService.UpdateTaskExceptionMessage(task.TaskNum, "å åæºæ§è¡ä»»å¡å½ä»¤å¤±è´¥ï¼"); WriteDebug(nameof(DoubleStackerCraneJob), "å åæºæ§è¡ä»»å¡å½ä»¤å¤±è´¥ï¼"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, "å åæºåéä»»å¡å½ä»¤å¤±è´¥ï¼"); WriteDebug(nameof(DoubleStackerCraneJob), $"å åæºåéä»»å¡å½ä»¤å¤±è´¥ï¼{task.TaskNum}"); } } @@ -98,9 +98,7 @@ WriteError(nameof(DoubleStackerCraneJob), "å°å åæºæ§è¡ä»»å¡å¼å¸¸ï¼", ex); } //读åå åæºä»»å¡å·åä»»å¡å®æç¡®è®¤ç¶æ //Task.Run(delegate //{ try { @@ -108,7 +106,7 @@ { byte IsOver = stackerCraneOne.Communicator.Read<byte>("DB106.22"); int tasknum = stackerCraneOne.Communicator.Read<int>("DB106.18"); // WriteDebug(nameof(DoubleStackerCraneJob), $"读åå°å åæºSC02ä»»å¡å®æä¿¡å·å¼:{IsOver}ä»»å¡å·ï¼{tasknum}"); WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC02ä»»å¡å·å åæºä»»å¡å·ï¼{tasknum}ç¶æï¼{IsOver}"); if (IsOver == 6) { if (stackerCraneOne.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) @@ -116,14 +114,6 @@ _taskService.StackCraneTaskCompleted(tasknum); Console.Out.WriteLine("TaskCompleted" + tasknum); bool issuccess = stackerCraneOne.SetValue(StackerCraneDBName.WorkType, 5); if (issuccess) { WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC02ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5æå{tasknum}"); } else { WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC02ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5失败{tasknum}"); } } } @@ -134,7 +124,7 @@ //读åå åæºä»»å¡å·åä»»å¡å®æç¡®è®¤ç¶æ byte IsOver = stackerCraneTwo.Communicator.Read<byte>("DB106.22"); int tasknum = stackerCraneTwo.Communicator.Read<int>("DB106.18"); // WriteDebug(nameof(DoubleStackerCraneJob), $"读åå°å åæºSC03ä»»å¡å®æä¿¡å·å¼:{IsOver}ä»»å¡å·ï¼{tasknum}"); WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC03ä»»å¡å·å åæºä»»å¡å·ï¼{tasknum}ç¶æï¼{IsOver}"); if (IsOver == 6) { if (stackerCraneTwo.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) @@ -142,27 +132,18 @@ _taskService.StackCraneTaskCompleted(tasknum); Console.Out.WriteLine("TaskCompleted" + tasknum); bool issuccess = stackerCraneTwo.SetValue(StackerCraneDBName.WorkType, 5); if (issuccess) { WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC03ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5æå{tasknum}"); } else { WriteDebug(nameof(DoubleStackerCraneJob), $"å°å åæºSC03ä»»å¡å·åå ¥ä»»å¡å®æç¡®è®¤å¼5失败{tasknum}"); } } } } } catch (Exception ex) { WriteError(nameof(DoubleStackerCraneJob), "æ¥è¯¢æåå ¥PLCç¶æå¤±è´¥ï¼", ex); WriteError(nameof(DoubleStackerCraneJob), "æ§è¡å¼å¸¸ï¼", ex); } //}); //WriteDebug("å°å åæºè¿è¡æ¥å¿", "ç»ææ¶é´" + DateTime.Now); return Task.CompletedTask; }