| | |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Diagnostics.Eventing.Reader; |
| | | using System.DirectoryServices.Protocols; |
| | | using System.IO.Ports; |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Reflection.Metadata; |
| | |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ISystemServices; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_TaskInfoService; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | |
| | | try |
| | | { |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | |
| | | |
| | | if (commonStackerCrane != null) |
| | | { |
| | | |
| | | UpdateHandShake(commonStackerCrane.CurrentTaskNum, commonStackerCrane.StackerCraneWorkStatusDes); |
| | | //ä»»å¡å®æStackerCraneWorkStatus |
| | | if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted) |
| | | { |
| | |
| | | if (webResponse.Status) |
| | | { |
| | | WriteLog.Write_Log("å åæºä»»å¡ä¸æ¥å®æä¿¡æ¯", "å åæºä»»å¡ä¸æ¥å®æä¿¡æ¯", $"ã{commonStackerCrane.DeviceCode}ãåºå åæºä¸æ¥ä»»å¡å·:ã{commonStackerCrane.CurrentTaskNum}ãå®æä¿¡å·ï¼"); |
| | | |
| | | bool ddjfk = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | } |
| | | } |
| | |
| | | $"å åæºå·¥ä½æ¨¡å¼å°å:ãDB105.3.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.StackerCraneStatusDes}ã\n" + |
| | | $"å åæºä½ä¸ç¶æå°å:ãDB105.22.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.StackerCraneWorkStatusDes}ã\n" + |
| | | $"å åæºå½å任塿§è¡ä¸å°å:ãDB105.18.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.CurrentTaskNum}ã\n"); |
| | | |
| | | |
| | | |
| | | |
| | | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal) |
| | | { |
| | | |
| | |
| | | |
| | | int StationNum = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress); |
| | | int HandShake = conveyorLine.Communicator.Read<ushort>(HandShakeprodto.DeviceProAddress); |
| | | WriteLog.Write_Log("åºåºåºå£ç¶æä¿¡æ¯", "åºåºåºå£ç¶æä¿¡æ¯", $"åºå£æ¯ã{NextAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{HandShakeprodto.DeviceProAddress}ã\n" + |
| | | $"读åçæ°æ®ï¼ã{HandShake}ãï¼åºå£æ¯å¦æè´§ç¶æå°åï¼ã{deviceProDTO.DeviceProAddress}ãï¼è¯»åçæ°æ®ã{StationNum}ã"); |
| | | conveyorLine.Communicator.Write<short>(HandShakeprodto.DeviceProAddress, 1); |
| | | |
| | | WriteLog.Write_Log("åºåºåºå£ç¶æä¿¡æ¯", "åºåºåºå£ç¶æä¿¡æ¯", $"åºå£æ¯ã{NextAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{HandShakeprodto.DeviceProAddress}ã,读åçæ°æ®ï¼ã{HandShake}ã\n" + |
| | | $"åºå£æ¯å¦æè´§ç¶æå°åï¼ã{deviceProDTO.DeviceProAddress}ãï¼è¯»åçæ°æ®ã{StationNum}ã"); |
| | | if (StationNum == 0 && HandShake == 0 && Roadway == "C") |
| | | { |
| | | return true; |
| | |
| | | { |
| | | StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand(); |
| | | |
| | | |
| | | stackerCraneTaskCommand.Barcode = task.PalletCode; |
| | | stackerCraneTaskCommand.TaskNum = task.TaskNum; |
| | | stackerCraneTaskCommand.WorkType = 1; |
| | | stackerCraneTaskCommand.TrayType = 0; |
| | | if (task.Roadway == "B" || task.Roadway == "C") |
| | | { |
| | | //夿 task.PalletCode æ¯ä¸æ¯ä¸ä¸ªææç GUID |
| | | stackerCraneTaskCommand.Barcode = stackerCraneTaskCommand.Barcode = Guid.TryParse(task.PalletCode, out var guid) ? guid.ToString("N")[0..6] : task.PalletCode; |
| | | } |
| | | else if (task.Roadway == "G" ) |
| | | { |
| | | if (Guid.TryParse(task.PalletCode, out var palletGuid)) |
| | | { |
| | | stackerCraneTaskCommand.Barcode = palletGuid.ToString("N")[0..6]; |
| | | |
| | | // æ åGUIDå°±æ¯36ä½ï¼æä»¥ç´æ¥å¤æé¿åº¦å³å¯ |
| | | stackerCraneTaskCommand.TrayType = (short)(task.PalletCode.Length == 36 ? 1 : 2); |
| | | } |
| | | else |
| | | { |
| | | stackerCraneTaskCommand.Barcode = task.PalletCode; |
| | | stackerCraneTaskCommand.TrayType = 2; |
| | | } |
| | | } |
| | | |
| | | if (task.TaskType == (int)TaskTypeEnum.Inbound)//夿æ¯å¦æ¯å
¥åºä»»å¡ |
| | | { |
| | | //è·åç«å°ç¼å· |
| | |
| | | return SCRow.ToString(); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// çæµGåºãCåºåºåºæ¾è´§æ¶å±è½å
æ
|
| | | /// </summary> |
| | | /// <param name="taskNum"></param> |
| | | /// <param name="stackerCraneWorkStatusDes"></param> |
| | | public void UpdateHandShake(int taskNum, string stackerCraneWorkStatusDes) |
| | | { |
| | | // 1. æ¥è¯¢ä»»å¡ï¼ç©ºå¼ç´æ¥è¿å |
| | | Dt_Task? dtTask = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (dtTask == null) return; |
| | | |
| | | // 2. å®ä¹åºå®å°å |
| | | string[] targetAddresses = { "G03", "G04", "C02", "C01" }; |
| | | |
| | | // 3. æ¡ä»¶å¤æ + ç¡®å®åå
¥å¼ |
| | | short writeValue = -1; |
| | | if (dtTask.TaskType == 100 && targetAddresses.Contains(dtTask.TargetAddress)) |
| | | { |
| | | writeValue = stackerCraneWorkStatusDes switch |
| | | { |
| | | "æ¾è´§ä¸" => 1, |
| | | "ä»»å¡å®æ" => 0, |
| | | _ => -1 |
| | | }; |
| | | } |
| | | |
| | | // 4. è·å设å¤ç¼ç |
| | | string deviceCode = dtTask.CurrentAddress.StartsWith("C") ? "1004" : "1003"; |
| | | |
| | | // 5. è·å设å¤ï¼ç©ºå¼ç´æ¥è¿å |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == deviceCode); |
| | | if (device != null && writeValue != -1) |
| | | { |
| | | CommonConveyorLine? conveyorLine = (CommonConveyorLine)device; |
| | | |
| | | // 6. è·åæ¡æç¹ä½ï¼ç©ºå¼ç´æ¥è¿å |
| | | DeviceProDTO? handShake = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == dtTask.TargetAddress && x.DeviceProParamName == "HandShake"); |
| | | if (handShake == null) |
| | | { |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶æé误信æ¯", "åºåºåºå£å
æ
ç¶æé误信æ¯", $"WCSæªæ¾å°åºå£ä¿¡æ¯æ¯ã{dtTask.TargetAddress}ãï¼ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | } |
| | | // 7. åå
¥å¼ |
| | | conveyorLine.Communicator.Write<short>(handShake.DeviceProAddress, writeValue); |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶ææ£å¸¸ä¿¡æ¯", "åºåºåºå£å
æ
ç¶ææ£å¸¸ä¿¡æ¯", $"åºå£æ¯ã{dtTask.TargetAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{handShake.DeviceProAddress}ã,读åçæ°æ®ï¼ã{conveyorLine.Communicator.Read<ushort>(handShake.DeviceProAddress)}ã\n" + |
| | | $"ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶æé误信æ¯", "åºåºåºå£å
æ
ç¶æé误信æ¯", $"åºå£æ¯ã{dtTask.TargetAddress}ãï¼ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |