From 5818ac31e7d82e611fa98c35e9a353319bebd3c3 Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-JIE70N9> Date: 星期日, 25 五月 2025 14:30:01 +0800 Subject: [PATCH] 主流程测试完成 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 262 ++++++++++++++++++------------------- Admin.NET/WCS.Application/Util/HttpService.cs | 5 Admin.NET/WCS.Application/Model/AGVModel.cs | 21 ++ Admin.NET/WCS.Application/OpenApi/OpenApi.cs | 43 ++++- Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 5 Admin.NET/WCS.Application/Util/AGVStorageUtil.cs | 67 +++++---- 6 files changed, 222 insertions(+), 181 deletions(-) diff --git a/Admin.NET/WCS.Application/Model/AGVModel.cs b/Admin.NET/WCS.Application/Model/AGVModel.cs index 42651d5..e6231ee 100644 --- a/Admin.NET/WCS.Application/Model/AGVModel.cs +++ b/Admin.NET/WCS.Application/Model/AGVModel.cs @@ -162,18 +162,29 @@ public string ReqTime { get; set; } public string CurrentPositionCode { get; set; } /// <summary> - /// 鏂规硶鍚� end : 浠诲姟缁撴潫 - /// </summary> - public string Method { get; set; } - /// <summary> /// 浠诲姟鍙� /// </summary> - public string TaskCode { get; set; } + public string robotTaskCode { get; set; } /// <summary> /// 鎵樼洏鍙� /// </summary> public string CtnrCode { get; set; } + public ExtraInfo Extra { get; set; } + + + } + public class ExtraInfo + { + public ExtraInfoVal Values { get; set; } + } + public class ExtraInfoVal + { + + /// <summary> + /// 鏂规硶鍚� end : 浠诲姟缁撴潫 + /// </summary> + public string Method { get; set; } } public class AGVCallBackResponse { diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs index ba4d4a6..e1a8e4b 100644 --- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs @@ -418,21 +418,22 @@ [UnitOfWork] public async Task<dynamic> agvCallback(AGVCallBackInput input) { + Log.Information("AGV鍙嶉浠诲姟" + input.ToJson()); AGVCallBackResponse result = new AGVCallBackResponse() { ReqCode = input.ReqCode, Message = "鎴愬姛", Code = "0" }; - if (input.TaskCode.Substring(0, 3) != "WCS" && input.TaskCode.Substring(0, 2) != "TK") + if (input.robotTaskCode.Substring(0, 3) != "WCS" && input.robotTaskCode.Substring(0, 2) != "TK") return result; PLCUtil modUtil = null; try { - var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.TaskCode); + var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.robotTaskCode); if (modTask != null) { - switch (input.Method) + switch (input.Extra.Values.Method) { case "end"://浠诲姟瀹屾垚 { @@ -459,15 +460,26 @@ var inputs = new TaskRequestWMS(); inputs.TaskNo = modTask.TaskNo; inputs.PalletNo = modTask.PalletNo; - inputs.TaskType = modTask.TaskType.ToString(); + inputs.TaskType = ((int)modTask.TaskType).ToString(); inputs.TaskStatus = "2"; var modResponseTask = httpService.RequestTask(inputs).Result; } } break; - case "admin"://璧板嚭鍌ㄤ綅 + case "outbin"://璧板嚭鍌ㄤ綅 { + WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + //PlcId = modDevice.PlcId, + PlcName = "AGV", + StartLocat = modTask.StartLocate, + EndLocat = modTask.EndLocate, + Status = TaskStatusEnum.Complete, + InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍙栬揣瀹屾垚锛岃蛋鍑哄偍浣�", + }; + await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); //鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵�� if (modTask.Origin == "WMS") { @@ -475,22 +487,22 @@ var inputs = new TaskRequestWMS(); inputs.TaskNo = modTask.TaskNo; inputs.PalletNo = modTask.PalletNo; - inputs.TaskType = "2"; + inputs.TaskType = ((int)modTask.TaskType).ToString(); inputs.TaskStatus = "2"; var modResponseTask = httpService.RequestTaskQh(inputs).Result; } } break; - case "continue"://鏀捐揣鐢宠 + case "release"://鏀捐揣鐢宠 { - if (modTask.EndLocate != "B010101")//9鍙峰伐浣嶅湴鍧� + if (modTask.EndLocate != "B040101")//9鍙峰伐浣嶅湴鍧� { result.Code = "1"; result.Message = "鎵句笉鍒拌浠诲姟"; return result; } - modTask.Status = TaskStatusEnum.Complete; + //modTask.Status = TaskStatusEnum.Complete; modTask.IsComple = "1"; await _db.Updateable(modTask).ExecuteCommandAsync(); WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() @@ -506,7 +518,16 @@ await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - + if (modTask.Origin == "WMS") + { + HttpService httpService = new HttpService(); + var inputs = new TaskRequestWMS(); + inputs.TaskNo = modTask.TaskNo; + inputs.PalletNo = modTask.PalletNo; + inputs.TaskType = ((int)modTask.TaskType).ToString(); + inputs.TaskStatus = "2"; + var modResponseTask = httpService.RequestTaskQh(inputs).Result; + } } break; case "cancel"://浠诲姟鍙栨秷 @@ -555,7 +576,7 @@ modUtil?.Close(); } - + Log.Information("AGV鍙嶉浠诲姟杩斿洖" + result.ToJson()); return result; } diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 08d9606..6784e79 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -271,6 +271,22 @@ modFinshTask.Status = TaskStatusEnum.Complete; modFinshTask.FinishDate = DateTime.Now; _db.Updateable(modFinshTask).ExecuteCommand(); + //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚 + if (modFinshTask.Origin == "WMS") + { + HttpService httpService = new HttpService(); + var requestMode = new TaskRequestWMS() + { + TaskNo = modFinshTask.TaskNo, + PalletNo = modFinshTask.PalletNo, + TaskType = ((int)modFinshTask.TaskType).ToString(), + TaskStatus = ((int)TaskStatusEnum.Complete).ToString() + }; + var modResponseTask = httpService.RequestTask(requestMode).Result; + modFinshTask.IsSuccess = TaskSuccessEnum.Success; + _db.Updateable(modFinshTask).ExecuteCommand(); + HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>()); + } } //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠� @@ -281,20 +297,7 @@ plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2"); } - //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚 - //HttpService httpService = new HttpService(); - //var requestMode = new TaskRequestWMS() - //{ - // TaskNo = modFinshTask.TaskNo, - // PalletNo = modFinshTask.PalletNo, - // TaskType = ((int)modFinshTask.TaskType).ToString(), - // TaskStatus = ((int)TaskStatusEnum.Complete).ToString() - //}; - //var modResponseTask = httpService.RequestTask(requestMode).Result; - //modFinshTask.IsSuccess = TaskSuccessEnum.Success; - //_db.Updateable(modFinshTask).ExecuteCommand(); - HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>()); - + } } } @@ -541,6 +544,76 @@ } if (listResult.All(s => s.IsSucceed)) { + if (modTask.TaskType == TaskTypeEnum.Out) + { + #region 杈撻�佺嚎 鍐欏叆PLC 730 + + var text = ""; + var devStation = ""; + var endLocate = modTask.EndRoadway; + var carcon = new carConverModel(); + if (carcon.conveyorBei.Keys.Contains(endLocate)) + { + text = "杈撻�佺嚎鍖�"; + devStation = carcon.conveyorBei[endLocate]; + } + else if (carcon.conveyorNan.Keys.Contains(endLocate)) + { + text = "杈撻�佺嚎鍗�"; + devStation = carcon.conveyorNan[endLocate]; + } + if (text != "") + { + var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text); + var modConn = new PLCUtil(modPlc); + + var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation); + var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos); + if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720) + { + modConn.Close(); + return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂� + } + var listResultcon = new List<Result>(); + + //浠诲姟鍙蜂笌鎵樼洏鏉$爜 + var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�"); + listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString())); + var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜"); + listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString())); + + // 璧峰宸ヤ綅銆佺洰鐨勫伐浣� + var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅"); + listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum)); + var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅"); + listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate)); + + if (listResultcon.All(s => s.IsSucceed)) + { + var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730"); + if (!plcResult.IsSucceed) + { + modConn.Close(); + return; + } + //娣诲姞浠诲姟鏄庣粏 + var taskMonitor2 = new WcsTaskMonitor() + { + TaskNo = carTaskNext.TaskNo, + PlcName = modDevice.Text, + Status = TaskStatusEnum.Complete, + InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}" + }; + _db.Insertable(taskMonitor2).ExecuteCommand(); + } + + modConn.Close(); + } + + + #endregion + } + var modStart = modDevice.listStation.FirstOrDefault(s => s.Text == "鍚姩鍛戒护"); var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1"); if (result.IsSucceed) @@ -549,75 +622,7 @@ carTaskNext.CarTaskNo = carTaskNo; _db.Updateable(carTaskNext).ExecuteCommand(); - if (modTask.TaskType == TaskTypeEnum.Out) - { - #region 杈撻�佺嚎 鍐欏叆PLC 730 - - var text = ""; - var devStation = ""; - var endLocate = modTask.EndRoadway; - var carcon = new carConverModel(); - if (carcon.conveyorBei.Keys.Contains(endLocate)) - { - text = "杈撻�佺嚎鍖�"; - devStation = carcon.conveyorBei[endLocate]; - } - else if (carcon.conveyorNan.Keys.Contains(endLocate)) - { - text = "杈撻�佺嚎鍗�"; - devStation = carcon.conveyorNan[endLocate]; - } - if (text != "") - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text); - var modConn = new PLCUtil(modPlc); - - var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation); - var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos); - if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720) - { - modConn.Close(); - return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂� - } - var listResultcon = new List<Result>(); - - //浠诲姟鍙蜂笌鎵樼洏鏉$爜 - var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�"); - listResultcon.Add(modConn.SetPlcDBValue(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString())); - var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜"); - listResultcon.Add(modConn.SetPlcDBValue(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString())); - - // 璧峰宸ヤ綅銆佺洰鐨勫伐浣� - var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅"); - listResultcon.Add(modConn.SetPlcDBValue(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum)); - var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅"); - listResultcon.Add(modConn.SetPlcDBValue(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate)); - - if (listResultcon.All(s => s.IsSucceed)) - { - var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730"); - if (!plcResult.IsSucceed) - { - modConn.Close(); - return; - } - //娣诲姞浠诲姟鏄庣粏 - var taskMonitor2 = new WcsTaskMonitor() - { - TaskNo = carTaskNext.TaskNo, - PlcName = modDevice.Text, - Status = TaskStatusEnum.Complete, - InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}" - }; - _db.Insertable(taskMonitor2).ExecuteCommand(); - } - - modConn.Close(); - } - - - #endregion - } + //娓呴櫎灏忚溅绌洪棽鏃堕棿 var carTimeClear = _db.Queryable<WcsCarTime>().First(m=>m.IsDelete == false && m.CarIp == modDevice.PlcIdIP); @@ -758,7 +763,7 @@ } // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠� - var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); + var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); if (ret.IsSucceed) { plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); @@ -779,7 +784,7 @@ } // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠� - var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); + var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); if (ret.IsSucceed) { plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); @@ -854,7 +859,7 @@ } // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠� - var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); + var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); if (ret.IsSucceed) { plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); @@ -899,17 +904,17 @@ var listResult = new List<Result>(); // 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿 var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); - listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString())); + listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString())); var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); var taskTypeStr = (int)modTask.TaskType; - listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); + listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鏉$爜"); - listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); + listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); // 璧峰宸ヤ綅銆佺洰鐨勫伐浣� var modPosStrLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅"); - listResult.Add(plcConn.SetPlcDBValue(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum)); + listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum)); var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅"); - listResult.Add(plcConn.SetPlcDBValue(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue)); + listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue)); if (listResult.All(s => s.IsSucceed)) @@ -1185,12 +1190,18 @@ var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos); int taskNoVal = Convert.ToInt32(taskVal); - var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal); + var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal && w.TaskType == TaskTypeEnum.Out); if (taskInfo == null) { Log.Error(string.Format("杈撻�佺嚎430:鏈壘鍒板搴旂殑浠诲姟銆�")); break; } + // 鏀瑰彉浠诲姟鐘舵�� + taskInfo.Status = TaskStatusEnum.Complete; + taskInfo.FinishDate = DateTime.Now; + //modTask.Levels = 999; + _db.Updateable(taskInfo).ExecuteCommand(); + HubUtil.PublicTask(taskInfo.Adapt<WcsTaskOutput>()); // 鎻掑叆浠诲姟鏄庣粏 var modInsertTaskMonitor = new WcsTaskMonitor() { @@ -1203,7 +1214,28 @@ StartLocat = Convert.ToString(starVal), EndLocat = modDevice.StationNum, }; - + if (taskInfo.Origin == "WMS") + { + // 鍙嶉WMS + var requestMode = new TaskRequestWMS() + { + TaskNo = taskInfo.TaskNo, + PalletNo = taskInfo.PalletNo, + TaskType = ((int)taskInfo.TaskType).ToString(), + TaskStatus = ((int)TaskStatusEnum.Complete).ToString() + }; + HttpService httpService = new HttpService(); + var modResponseTask = httpService.RequestTask(requestMode).Result; + if (modResponseTask.StatusCode == 0) + { + modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚"; + } + else + { + Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg)); + } + } + // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); @@ -1250,66 +1282,30 @@ int tasknoVal = Convert.ToInt32(taskVal); - var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.IsDelete == false && m.TaskId == tasknoVal); + var modTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskId == tasknoVal); if (modTask == null) { Log.Error(string.Format("杈撻�佺嚎440:鏈壘鍒板搴旂殑浠诲姟銆�")); break; } - // 鏀瑰彉浠诲姟鐘舵�� - modTask.Status = TaskStatusEnum.Complete; - modTask.FinishDate = DateTime.Now; - //modTask.Levels = 999; - _db.Updateable(modTask).ExecuteCommand(); - HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); + // 鎻掑叆浠诲姟鏄庣粏 var modInsertTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, PlcId = modDevice.Id, PlcName = modDevice.Text, - InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鍑哄簱瀹屾垚", + InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鎵樼洏绂诲紑宸ヤ綅", PalletNo = palletVal, Status = TaskStatusEnum.Complete, StartLocat = starVal.ToString(), EndLocat = modDevice.StationNum, }; - if (modTask.Origin == "WMS") - { - //// 鍙嶉WMS - //var requestMode = new TaskRequestWMS() - //{ - // TaskNo = modTask.TaskNo + modTask.EndLocate, - // PalletNo = modTask.PalletNo, - // TaskType = ((int)TaskTypeEnum.Out).ToString(), - // TaskStatus = ((int)TaskStatusEnum.Complete).ToString() - //}; - //HttpService httpService = new HttpService(); - //var modResponseTask = httpService.RequestTask(requestMode).Result; - //if (modResponseTask.StatusCode == 0) - //{ - // modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚"; - //} - //else - //{ - // Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg)); - //} - } - // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - // led鏄剧ず鍐呭 - var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId); - - ledText += $"鍑哄簱瀹屾垚\n\n"; - ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n"; - ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; - ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; - ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; - LedDisplay(ledDevice.LedIP, ledText); } #endregion } @@ -1376,7 +1372,7 @@ } }; var response = new HttpService().GenAgvSendTask(taskModel).Result; - if (response.code == "0") + if (response.code == "SUCCESS") { modTask.Status = TaskStatusEnum.Doing; _db.Updateable(modTask).ExecuteCommand(); diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index 38b08f4..6464193 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -332,7 +332,7 @@ - Thread.Sleep(3000); + Thread.Sleep(500); } catch (OperationCanceledException) { @@ -433,7 +433,8 @@ var gongwei = carcon.conveyorRuKu[endLocate]; //鍒ゆ柇浠诲姟 - var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei && m.Type == PLCTypeEnum.ConveyorLine); + var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei + && m.Type == PLCTypeEnum.ConveyorLine && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)); if (convarTask != null) { continue;//鏀捐揣宸ヤ綅鏈変换鍔� diff --git a/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs b/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs index b1746af..141f599 100644 --- a/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs +++ b/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs @@ -26,47 +26,58 @@ type2 = ""; jiebo = ""; var taskModle = "";//浠诲姟妯℃澘 - var locate1 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == straLocate); - var locate2 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == endLocate); - if (locate1 == null || locate2 == null) + //鍓嶇紑L绔嬪簱 鍓嶇紑B 骞冲簱 + var locate1q = straLocate.Substring(0,1); + var locate2q = endLocate.Substring(0, 1); + + if (locate1q == null || locate2q == null) { return taskModle; } - switch (locate1.WareHouseNo) + switch (locate1q) { - case "W02": - type1 = "SITE"; - break; - case "W04": + case "L": type1 = "STORAGE"; + break; + case "B": + type1 = "SITE"; break; default: break; } - switch (locate2.WareHouseNo) + switch (locate2q) { - case "W02": - type2 = "SITE"; - break; - case "W04": + case "L": type2 = "STORAGE"; + break; + case "B": + type2 = "SITE"; break; default: break; } - var AreaAll = new List<string>() { "B06", "B07" };//1002銆�1003鍏ㄩ儴鍖哄煙 - var Area1002 = new List<string>() { "B06",""};//1002杞﹂棿鍖哄煙 - var Area10031 = new List<string>() { ""};//1003 1妤艰溅闂村尯鍩� + + var AreaAll = new List<string>() { "B06", "B07", "B09" };//1002銆�1003鍏ㄩ儴鍖哄煙 + var Area1002 = new List<string>() { "B06"};//1002杞﹂棿鍖哄煙 + var Area10031 = new List<string>() { "B09"};//1003 1妤艰溅闂村尯鍩� var Area10032 = new List<string>() { "B07"};//1003 2妤艰溅闂村尯鍩� - if (Area1002.Contains(locate2.AreaNo)) + + var locate1 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == straLocate); + var locate2 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == endLocate); + + if (locate1q == "B" || locate2q == "B") { - jiebo = "1JB";//鎺ラ┏浣� + if (Area1002.Contains(locate2.AreaNo) || Area1002.Contains(locate1.AreaNo)) + { + jiebo = "1JB";//鎺ラ┏浣� + } + if (Area10031.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo) || Area10031.Contains(locate1.AreaNo) || Area10032.Contains(locate1.AreaNo)) + { + jiebo = "2JB"; + } } - if (Area10031.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo)) - { - jiebo = "2JB"; - } + if (type1 == "" || type2 == "") { return taskModle; @@ -86,21 +97,21 @@ break; case "SITE" when type2 == "SITE": { - if (Area10032.Contains(locate1.AreaNo) && locate2.AreaNo == "B04") + if ((Area10032.Contains(locate1.AreaNo) || Area10031.Contains(locate1.AreaNo)) && locate2.AreaNo == "B04") { - taskModle = "CPRK"; + taskModle = "CPRK1003"; } else if(Area1002.Contains(locate1.AreaNo) && locate2.AreaNo == "B04") { - taskModle = "CPRK2"; + taskModle = "CPRK1002"; } - else if ((Area10032.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo)) && !AreaAll.Contains(locate1.AreaNo)) + else if ((Area10032.Contains(locate2.AreaNo) || Area10031.Contains(locate2.AreaNo)) && !AreaAll.Contains(locate1.AreaNo)) { - taskModle = "YFLSX"; + taskModle = "YCLSX"; } else if (Area1002.Contains(locate2.AreaNo) && !AreaAll.Contains(locate1.AreaNo)) { - taskModle = "YFLSX2"; + taskModle = "YCLSX2"; } } diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs index fe2a969..545364f 100644 --- a/Admin.NET/WCS.Application/Util/HttpService.cs +++ b/Admin.NET/WCS.Application/Util/HttpService.cs @@ -78,7 +78,8 @@ TaskNo = result.TaskList.TaskNo, Levels = 999, EndLocate = result.TaskList.EndLocate, - EndRoadway = result.TaskList.EndRoadway + EndRoadway = result.TaskList.EndRoadway, + TaskId = FourWayCarUtil.GetTaskId() }; var endLocat2 = PLCCommon.RoadwayToStationNum(taskAdd.EndRoadway, stationNum); @@ -350,7 +351,7 @@ var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); var dic = new Dictionary<string, object>() { - {"X-lr-request-id","123456879" }, + {"X-lr-request-id",requestId }, {"X-lr-version","4.2" }, }; var mod = new -- Gitblit v1.8.0