From 21cd52c5592aad3687be74599a932012d9dd77a4 Mon Sep 17 00:00:00 2001 From: wanshenmean <cathay_xy@163.com> Date: 星期二, 15 四月 2025 10:03:38 +0800 Subject: [PATCH] 条码上传冠宏 --- 代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 100 insertions(+), 3 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" index cc58f54..1f66fc7 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" @@ -1,10 +1,12 @@ -锘縰sing WIDESEAWCS_Common.AGVEnum; +锘縰sing Newtonsoft.Json; +using WIDESEAWCS_Common.AGVEnum; using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; -namespace WIDESEAWCS_Tasks.AGVJob +namespace WIDESEAWCS_Tasks { public class UpdateTaskAGV { @@ -176,6 +178,32 @@ 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); @@ -231,7 +259,7 @@ } } - 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) @@ -322,6 +350,49 @@ 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); @@ -384,5 +455,31 @@ } } } + + // 杈呭姪鏂规硶 + 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; } } } \ No newline at end of file -- Gitblit v1.9.3