| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Autofac.Core; |
| | | using HslCommunication; |
| | | using HslCommunication.Core; |
| | | using Microsoft.VisualBasic.FileIO; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; |
| | | using Quartz; |
| | | using SixLabors.ImageSharp; |
| | | using SixLabors.ImageSharp.PixelFormats; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Communicator; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_TaskInfoService; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class TSJJob : JobBase, IJob |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly IStationMangerService _stationMangerService; |
| | | public TSJJob(ITaskService taskService, IStationMangerService stationMangerService) |
| | | { |
| | | _taskService = taskService;//注å
¥ |
| | | _stationMangerService = stationMangerService; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | |
| | | bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); |
| | | if (flag && value != null) |
| | | { |
| | | OtherDevice device = (OtherDevice)value; |
| | | //Example |
| | | //device.GetValue 读å |
| | | //device.SetValue åå
¥ |
| | | // _taskService.Repository ä»å¨å±ï¼è¿è¡æ°æ®åºè®¿é®- |
| | | try |
| | | { |
| | | List<Dt_Task> Uptasks = new List<Dt_Task>(); |
| | | //æ¥è¯¢ææä»»å¡ç±»å为3,4楼çå
¥åºä»»å¡ç±»åä¸ä»»å¡ç¶æä¸ºAGV_WaitToExecuteçä»»å¡ |
| | | var taskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()); |
| | | //ä»»å¡çç®æ å°å对äºç«å°å·ï¼ |
| | | foreach (var task in taskList) |
| | | { |
| | | //å
æ£æ¥è®¾å¤ç¶æ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.EquipmentStatus, "TSJ") == 2) |
| | | { |
| | | if (task.ExceptionMessage == "æåæºè®¾å¤æ
é") |
| | | { |
| | | continue; |
| | | } |
| | | task.ExceptionMessage = "æåæºè®¾å¤æ
é"; |
| | | Uptasks.Add(task); |
| | | continue; |
| | | //throw new Exception("è®¾å¤æ
é"); |
| | | } |
| | | if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt()) |
| | | { |
| | | //夿3楼å
¥åºç®±å·ææ |
| | | if (device.GetValue<HoistEnum, string>(HoistEnum.OutboundInplace, "TSJ") == "1") |
| | | { |
| | | if (task.ExceptionMessage == "3楼å
¥åºç®±å·æè´§ï¼è¯·å
å¤ç") |
| | | { |
| | | continue; |
| | | } |
| | | task.ExceptionMessage = "3楼å
¥åºç®±å·æè´§ï¼è¯·å
å¤ç"; |
| | | Uptasks.Add(task); |
| | | continue; |
| | | } |
| | | |
| | | //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å
¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ |
| | | var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum); |
| | | if (result.Status == false) |
| | | { |
| | | if (task.ExceptionMessage!= result.Message) |
| | | { |
| | | task.ExceptionMessage = result.Message; |
| | | Uptasks.Add(task); |
| | | } |
| | | continue; |
| | | } |
| | | task.TaskState = (int)TaskStatusEnum.AGV_ToExecute; |
| | | task.ExceptionMessage = ""; |
| | | Uptasks.Add(task); |
| | | //è¿éä»»å¡åæäºCheckPalletCodeing |
| | | |
| | | } |
| | | else if(task.TaskType == TaskTypeEnum.CK3F.ObjToInt()) //åºåº |
| | | { |
| | | ////åºåºæç®±ç¼åæ°é |
| | | //if (device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJ") == 0) throw new Exception("没æåºåºæç®±ç¼åæ°é为空"); |
| | | //读å3楼åºåºæç®±å°ä½ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, "TSJ") != 1) throw new Exception("3楼åºåºæç®±æ²¡æå°ä½"); |
| | | //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å
¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ |
| | | if (_taskService.Hikvisiontaskscontinue(task.WMSTaskNum).Status == false) throw new Exception($"3楼åºåºä»»å¡ä¸¾è¡æ§è¡å¤±è´¥ï¼é误信æ¯{_taskService.Hikvisiontaskscontinue(task.WMSTaskNum).Message}");//ç»ä»»å¡å· |
| | | |
| | | //廿´æ°ä»»å¡éåå¼ |
| | | //å3楼åºåºç®±åè´§å®æ |
| | | device.SetValue<HoistEnum, short>(HoistEnum.Outboundboxon, 1); |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt())//4楼å
¥åº |
| | | { |
| | | //åç©ºç®±çæ¶åè¦è¯»ä¸ä¸ªå |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.Emptycontainernumber, "TSJ") == null) throw new Exception($"4楼空箱,读ç 卿²¡æè¯»å°å¼"); |
| | | |
| | | //夿4楼空箱å°ä½ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.ReturnbinAvailable, "TSJ") == 2) throw new Exception("4楼åæç®±ä¸ºç©º"); |
| | | if (_taskService.Hikvisiontaskscontinue(task.WMSTaskNum).Status == false) throw new Exception($"3楼åºåºä»»å¡ä¸¾è¡æ§è¡å¤±è´¥ï¼é误信æ¯{_taskService.Hikvisiontaskscontinue(task.WMSTaskNum).Message}");//ç»ä»»å¡å· |
| | | //åå
¥ç©ºç®±æ¾å°ä½ä¿¡å· |
| | | device.SetValue(HoistEnum.Emptyboxplacedinposition, "TSJ", "1"); |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt()) //忥¼åºå
å°æåæº |
| | | { |
| | | |
| | | //4楼åºåºæç®±å°ä½ |
| | | if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJ") == 2) throw new Exception("4楼åºåºæç®±æ²¡æå°ä½"); |
| | | //å以ä¸ä¸ªåºåºå®æä¿¡å· |
| | | device.SetValue(HoistEnum.Outboundboxretrievalcompleted, "TSJ", "1"); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | //æ¥æ¾ä¸æ¥¼å
¥åºä»»å¡ç¶æä¸ºCheckPalletCodeingç任塿çå·ç¡®è®¤ä¸ |
| | | var RK3FTasks = taskList.Where(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt()&&x.TaskState== (int)TaskStatusEnum.CheckPalletCodeing).ToList(); |
| | | foreach (var item in RK3FTasks) |
| | | { |
| | | var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); |
| | | //æ£æ¥3楼å
¥åºç®±å·æ¯å¤å°ï¼ç¶åä¼ ç»wms |
| | | var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, "TSJ"); |
| | | //æ ¹æ®è¯»å°çç®±å·è¿è¡æç®±æ£éªï¼æ£éªéè¿å°±è§¦å读ç å¨è¯»åï¼å¦æä¸éè¿å°±æåºå¼å¸¸ |
| | | var Verification = _taskService.MaterialBoxInspection(item.WMSTaskNum, BinNumber.ToString()); |
| | | if (!Verification.Status) |
| | | { |
| | | if (!(item.ExceptionMessage == Verification.Message)) |
| | | { |
| | | item.ExceptionMessage = Verification.Message; |
| | | Uptasks.Add(item); |
| | | } |
| | | //æç®±éªè¯å好åï¼éè¦æ´æ¹ |
| | | item.TargetAddress = Verification.Data.ToString(); |
| | | } |
| | | |
| | | //妿æç®±æ£éªæåå°±åå
¥è¯»ç å¨çå¼ |
| | | var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum, item.TargetAddress); |
| | | if (result.Status == false) |
| | | { |
| | | if (item.ExceptionMessage != result.Message) |
| | | { |
| | | item.ExceptionMessage = result.Message; |
| | | Uptasks.Add(item); |
| | | } |
| | | continue; |
| | | } |
| | | item.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; |
| | | |
| | | |
| | | Uptasks.Add(item); |
| | | } |
| | | if (Uptasks.Count > 0) |
| | | { |
| | | _taskService.UpdateData(Uptasks); |
| | | } |
| | | WriteInfo(device.DeviceName, "infoLog"); |
| | | |
| | | WriteDebug(device.DeviceName, "debugLog"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(device.DeviceName, "é误", ex); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(nameof(TestJob), "åæ°é误,æªä¼ é设å¤åæ°æè®¾å¤ç±»åé误"); |
| | | } |
| | | |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |