From 1c637ea862816ae6fa53945fa0327b95c79aa18b Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期五, 22 八月 2025 16:20:27 +0800 Subject: [PATCH] 增强 WMS IP 地址处理逻辑的健壮性在 `TaskService.cs` 文件中,添加了对 `result` 是否为 `null` 的检查,以确保在反序列化之前 `result` 是有效的。同时,调整了对 `content.Data` 的检查逻辑,确保在 `content.Data` 不为空的情况下,才会进一步检查其值是否为 "NG"。如果是 "NG",则设置 `task.Remark` 为 "NG"。这些更改提高了代码的健壮性,避免了潜在的空引用异常。 --- CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 80 ++++++++++++++++++++++++++------------- 1 files changed, 53 insertions(+), 27 deletions(-) diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs index 904fbe6..f7cb0c7 100644 --- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs +++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs @@ -94,7 +94,7 @@ // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔� if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - if ((task.Roadway == "1326"||task.Roadway == "1529" )&& ( task.TaskType == (int)TaskOutboundTypeEnum.OutTray|| task.TaskType == (int)TaskOutboundTypeEnum.InToOut)) + if ((task.Roadway == "2000"||task.Roadway == "1529" )&& ( task.TaskType == (int)TaskOutboundTypeEnum.OutTray|| task.TaskType == (int)TaskOutboundTypeEnum.InToOut)) { // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓 //task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; @@ -226,7 +226,15 @@ var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (hasTask != null) { - return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟"); + var taskExecuting = BaseDal.QueryFirst(x => x.PalletCode == palletCode && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting); + + if (taskExecuting != null) + { + taskExecuting.ExceptionMessage = "鏈帴鏀跺埌绾夸綋瀹屾垚淇″彿绯荤粺鍐呴儴鑷姩瀹屾垚"; + Delete(taskExecuting); + } + ConsoleHelper.WriteErrorLine($"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵palletCode}銆�"); + QuartzLogger.WriteLogToFile($"浠诲姟寮傚父鏈畬鎴�", $"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵palletCode}銆憑Environment.NewLine}"); } var wmsIpAddrss = string.Empty; @@ -284,9 +292,9 @@ { Dt_Task task = null; task= BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress, TaskOrderBy); - if(task == null) + if (task == null) { - task= BaseDal.QueryFirst(x => x.Roadway==currentAddress&& x.TaskType== (int)TaskOutboundTypeEnum.TrayInToOut&&x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); + task = BaseDal.QueryFirst(x => x.Roadway == currentAddress && x.TaskType == (int)TaskOutboundTypeEnum.TrayInToOut && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); } return task; } @@ -338,6 +346,16 @@ public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress,string Barcode) { return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.PalletCode == Barcode, TaskOrderBy); + } + /// <summary> + /// 鏍规嵁鎵樼洏鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟 + /// </summary> + /// <param name="taskNum">浠诲姟鍙�</param> + /// <param name="nextAddress">涓嬩竴鍦板潃</param> + /// <returns></returns> + public Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode) + { + return BaseDal.QueryFirst(x => (x.NextAddress == nextAddress || x.TargetAddress == nextAddress) && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.PalletCode == Barcode, TaskOrderBy); } /// <summary> @@ -745,9 +763,8 @@ var wmsIpAddress = wmsBase + completeTask; var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; - QuartzLogger.WriteLogToFile($"Info_浠诲姟瀹屾垚", $"浠诲姟瀹屾垚,浠诲姟鍙�:銆恵taskNum}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(result)}銆憑Environment.NewLine}{Environment.NewLine}"); - if(result != null) + if (result != null) { content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (!content.Data.IsNullOrEmpty()) @@ -759,14 +776,34 @@ //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG"); } } - task.ExceptionMessage += " " + content.Message; } + task.ExceptionMessage += " " + content.Message; + #endregion WMS鍚屾浠诲姟瀹屾垚 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { - if (!task.Roadway.Contains("GW")) + if (task.Roadway.Contains("GW") || (task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray)|| (task.Roadway.Contains("CW") && task.TaskType == (int)TaskOutboundTypeEnum.InToOut)) { + task.TaskState = (int)TaskOutStatusEnum.OutFinish; + //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙� + if (task.Remark == "NG") + { + BaseDal.UpdateData(task); + } + else + { + BaseDal.DeleteData(task); + ConsoleHelper.WriteWarningLine($"{(task.Roadway)}鍑哄簱鐩殑鍦板潃{task.TargetAddress}"); + } + + var taskHty = task.Adapt<Dt_Task_Hty>(); + _taskHtyRepository.AddData(taskHty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } + else + { + var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); @@ -780,25 +817,6 @@ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); } - else - { - task.TaskState = (int)TaskOutStatusEnum.OutFinish; - //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙� - if (task.Remark == "NG") - { - BaseDal.UpdateData(task); - } - else - { - BaseDal.DeleteData(task); - ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}"); - } - - var taskHty = task.Adapt<Dt_Task_Hty>(); - _taskHtyRepository.AddData(taskHty); - _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); - } - //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙� } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) @@ -954,6 +972,14 @@ return wcsBasez + address; } + public WebResponseContent Delete(Dt_Task task) + { + var taskHty = task.Adapt<Dt_Task_Hty>(); + taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System"; + _taskHtyRepository.AddData(taskHty); + return base.DeleteData(task); + } + #region 閲嶅啓鏂规硶 public override WebResponseContent DeleteData(object[] key) -- Gitblit v1.9.3