diff --git a/WcsMain/ApiServe/Service/WcsService/StackerService.cs b/WcsMain/ApiServe/Service/WcsService/StackerService.cs index f52c224..58e8bb3 100644 --- a/WcsMain/ApiServe/Service/WcsService/StackerService.cs +++ b/WcsMain/ApiServe/Service/WcsService/StackerService.cs @@ -53,7 +53,7 @@ public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOp if(string.IsNullOrEmpty(errMsg) && stackerInfo != default) { stackerStatusResponse.Message = "查询成功"; - stackerStatusResponse.PlcId = stackerInfo.PlcId.ToString() + "/" + stackerInfo.Spare1.ToString(); + stackerStatusResponse.PlcId = stackerInfo.PlcId.ToString() + " / " + stackerInfo.Spare1.ToString(); stackerStatusResponse.ControlModel = ((int)stackerInfo.ControlModel).ToString(); stackerStatusResponse.StackerStatusEquip = ((int)stackerInfo.StackerStatus).ToString(); stackerStatusResponse.Queue = stackerInfo.Row; diff --git a/WcsMain/Business/CirculationTask/Convey/PickStandButton.cs b/WcsMain/Business/CirculationTask/Convey/PickStandButton.cs new file mode 100644 index 0000000..5d0602f --- /dev/null +++ b/WcsMain/Business/CirculationTask/Convey/PickStandButton.cs @@ -0,0 +1,82 @@ +using CirculateTool.Attribute; +using WcsMain.ApiClient.DataEntity.WmsEntity; +using WcsMain.Common; +using WcsMain.DataBase.Dao; +using WcsMain.DataBase.TableEntity; +using WcsMain.Enum.Convey; +using WcsMain.EquipOperation.Convey; +using WcsMain.ExtendMethod; +using WcsMain.Plugins; + +namespace WcsMain.Business.CirculationTask.Convey; + +/// +/// 拣选站台按钮 +/// +[Circulation] +public class PickStandButton(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost) +{ + + private static List? _pickStands; // 拣选站台 + + /// + /// 当拣选站站台按钮按下时上传 wms + /// + /// + [Circulation("拣选站按钮按下上报", 500)] + public bool UploadInfo() + { + if (_pickStands == default) + { + _pickStands = conveyStandDao.Query(new AppConveyStand() { StandStatus = 1, StandType = (int)ConveyStandTypeEnum.pick }); + return true; + } + if (_pickStands.Count < 1) + { + ConsoleLog.Warning($"【提示】无卡特拣选站台信息,监控已经停止"); + return false; + } + List tasks = []; + foreach (var pickStand in _pickStands) + { + Thread.Sleep(20); + Task task = new(() => + { + int pickButtonStatus = conveyOperation.GetAllowPickStandGo(pickStand.StandId!); + if (pickButtonStatus != 1) return; + ConsoleLog.Info($"【提示】拣选站:{pickStand.StandId} 按钮已经按下"); + + // 发送wms按钮按下 + UploadPickStandRequest request = new UploadPickStandRequest() + { + PickStand = pickStand.StandId, + VehicleNo = "", + Remark = "按钮按下上报" + }; + var responseEntity = wmsWebApiPost.HttpPost(request, + CommonData.AppApiBaseInfos.GetAddress("UploadPickStandButtonMethod") ?? "", 5000); + if (!responseEntity.IsSend) return; // 发送失败不处理,下一次循环在发送 + // 只要发送成功则不再发送 + ConsoleLog.Info( $"拣选站:{pickStand.StandId} 按钮已经按下上报成功,WMS返回:{responseEntity.ResponseMsg}"); + var result = responseEntity.ResponseEntity; + if (result is { Code: 0 }) + { + conveyOperation.AllowPickStandGo(pickStand.StandId!, 2); + ConsoleLog.Success($"{pickStand.StandId}按钮按下,放行成功"); + } + else + { + conveyOperation.AllowPickStandGo(pickStand.StandId!, 0); + ConsoleLog.Error($"【异常】{pickStand.StandId}按钮按下,wms返回异常:{result?.Message}"); + } + }); + task.Start(); + tasks.Add(task); + } + Task.WaitAll([.. tasks]); + + return true; + } + + +} diff --git a/WcsMain/EquipOperation/Convey/ConveyOperation.cs b/WcsMain/EquipOperation/Convey/ConveyOperation.cs index 454bd5c..b6fad19 100644 --- a/WcsMain/EquipOperation/Convey/ConveyOperation.cs +++ b/WcsMain/EquipOperation/Convey/ConveyOperation.cs @@ -191,6 +191,32 @@ public class ConveyOperation } + /// + /// 读取拣选站台释放的信号 + /// + /// + /// + public int GetAllowPickStandGo(string pickStandId) + { + if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) return 0; + var readResult = CommonTool.Siemens.ReadInt16WithName($"拣选确认按钮{pickStandId}"); + if (!readResult.Success) return 0;// 读取失败 + return readResult.Value; + } + + /// + /// 通知 plc 可以释放站台 + /// + /// + /// + /// + public string AllowPickStandGo(string pickStandId, short router) + { + if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) return "PLC尚未连接。"; + var (writeResult, _) = CommonTool.Siemens.WritePlcWhithName($"拣选站台释放{pickStandId}", router); + if (!writeResult.Success) return writeResult.Message ?? "写入失败"; // 读取失败 + return string.Empty; + } diff --git a/WcsMain/appsettings.json b/WcsMain/appsettings.json index b5973b5..9c96cce 100644 --- a/WcsMain/appsettings.json +++ b/WcsMain/appsettings.json @@ -14,7 +14,7 @@ "DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;", "ApplicationConfig": { - "ApiOnly": true, + "ApiOnly": false, "Language": "zh-CN" }, "UseUrls": [ "http://*:890" ]