| | |
| | | using Newtonsoft.Json; |
| | | using WIDESEAWCS_Common.AGVEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //agvtask_HtyRepository.AddTaskHistory(agvTask, OperateType.Finished.ToString()); |
| | | _taskRepository.DeleteData(agvTask); |
| | |
| | | } |
| | | } |
| | | |
| | | public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository) |
| | | public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository, ITaskCZRepository _taskCZRepository) |
| | | { |
| | | // 使ç¨Interlocked.Exchangeä¿è¯å䏿¶é´åªæä¸ä¸ªçº¿ç¨å¯ä»¥æ§è¡ä»»å¡æ´æ° |
| | | if (Interlocked.Exchange(ref _readUpdateAGVTaskSignalso, 1) == 0) |
| | |
| | | throw new Exception($"ä»»å¡ç¶ææ´æ¹ä¸º4ç»ç¹å·²å®æå¤±è´¥,ä»»å¡ID:{taskId},å½åç¶æ:{agvTask.TaskState}"); |
| | | } |
| | | |
| | | if (agvTask.TargetAddress.Contains("HXWLX")) |
| | | { |
| | | if (agvTask.SourceAddress.Contains("KPHLX")) |
| | | { |
| | | // 空ç线è¿çç®± |
| | | // TODO: 任塿ªå宿´æ¡ç |
| | | var materials = new List<BakingClass>(); |
| | | |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | } |
| | | else |
| | | { |
| | | // æåæºè¿çç®± |
| | | // TODO: è°ç¨åæºæ¥å£è·å宿´æ¡ç |
| | | var czTask = _taskCZRepository.QueryFirst(x => x.Id == agvTask.WMSId); |
| | | CZTaskBarCodeDto barCodeDto = JsonConvert.DeserializeObject<CZTaskBarCodeDto>(czTask.DtCZTaskDetails); |
| | | var materials = Enumerable.Range(0, 2) |
| | | .Select(i => new BakingClass |
| | | { |
| | | MaterialType = czTask.TaskProductCode, |
| | | BarCode = GetBarCodeByIndex(barCodeDto, i, hasDesc: !string.IsNullOrEmpty(czTask.TaskDesc)) |
| | | }) |
| | | .ToList(); |
| | | |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | else |
| | | { |
| | | if (!string.IsNullOrEmpty(czTask.TaskDesc)) |
| | | { |
| | | czTask.TaskDesc = "ä»»å¡å®æä¸¤æ¬¡æ¬¡"; |
| | | _taskCZRepository.DeleteData(czTask); |
| | | } |
| | | else |
| | | { |
| | | czTask.TaskDesc = "ä»»å¡å®æä¸æ¬¡"; |
| | | _taskCZRepository.UpdateData(czTask); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // å é¤å·²å®æçä»»å¡ |
| | | taskRepository.DeleteData(agvTask); |
| | | plcClient.Communicator.Write(taskFbInteractive2, 1); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // è¾
婿¹æ³ |
| | | private static string GetBarCodeByIndex(CZTaskBarCodeDto dto, int index, bool hasDesc) |
| | | { |
| | | return (index, hasDesc) switch |
| | | { |
| | | (0, false) => dto.BarCode1, |
| | | (1, false) => dto.BarCode2, |
| | | (0, true) => dto.BarCode3, |
| | | (1, true) => dto.BarCode4, |
| | | _ => throw new IndexOutOfRangeException() |
| | | }; |
| | | } |
| | | } |
| | | |
| | | public class BakingFeedingClass |