| | |
| | | using WIDESEAWCS_Common.AGVEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | |
| | | plcClient.Communicator.Write(taskFbInteractive2, 1); |
| | | //throw new Exception("ä»»å¡ç¶ææ´æ¹ä¸º4ç»ç¹å·²å®æå¤±è´¥,ä»»å¡ID:" + agvTask.agv_tasknum + DateTime.Now + ",ä»»å¡ç¶æä¸æ¯ç»ç¹æ§è¡ä¸!"); |
| | | } |
| | | if (agvTask.TargetAddress.Contains("HXWLX")) |
| | | { |
| | | if (agvTask.SourceAddress.Contains("KPHLX")) |
| | | { |
| | | // 空ç线è¿çç®± |
| | | // TODO: è°ç¨åæºæ¥å£è·å宿´æ¡ç |
| | | var materials = new List<BakingClass> |
| | | { |
| | | new BakingClass { BarCode = "1", MaterialType = "1" }, |
| | | }; |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | } |
| | | else |
| | | { |
| | | // æåæºè¿çç®± |
| | | // TODO: è°ç¨åæºæ¥å£è·å宿´æ¡ç |
| | | var materials = new List<BakingClass> |
| | | { |
| | | new BakingClass { BarCode = "1", MaterialType = "1" }, |
| | | }; |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | 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, ITaskCZDetailsRepository _detailsRepository) |
| | | { |
| | | // 使ç¨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(); |
| | | |
| | | var details = _detailsRepository.QueryData(x => x.TaskEndAddress == agvTask.TargetAddress && x.TaskName == agvTask.Roadway).OrderBy(x => x.CreateDate).ToList(); |
| | | |
| | | if (details.Count >= 2) |
| | | { |
| | | details = details.Take(2).ToList(); |
| | | } |
| | | |
| | | var materials = details.Select(x => new BakingClass |
| | | { |
| | | MaterialType = x.MaterialType, |
| | | BarCode = x.MaterialBarCode, |
| | | }).ToList(); |
| | | |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | else |
| | | { |
| | | // å é¤detailsæ°æ® |
| | | _detailsRepository.DeleteData(details); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // å é¤å·²å®æçä»»å¡ |
| | | 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 |
| | | { |
| | | public string Devid { get; set; } |
| | | |
| | | public List<BakingClass> Materials { get; set; } |
| | | } |
| | | |
| | | public class BakingClass |
| | | { |
| | | public string MaterialType { get; set; } |
| | | public string BarCode { get; set; } |
| | | } |
| | | } |