From 590ffa097029620655bf57947738df85dc8f5572 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 13 八月 2025 09:22:56 +0800 Subject: [PATCH] 申请入库接口增加托盘重量 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 135 ++++++++++++++++++++++++++++---------------- 1 files changed, 85 insertions(+), 50 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index db502b1..596d1b2 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -21,6 +21,8 @@ public static class PLCService { private static readonly object OLock = new object(); + private static readonly object RuKuLock = new object(); + private static readonly object OutLock = new object(); private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); private static decimal weight94 = 0; @@ -92,7 +94,7 @@ if (modTask.TaskType == TaskTypeEnum.Move) { // 绉诲簱鐩爣鍦板潃 - taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(1, 2), modTask.EndLocate.Substring(2, 2), + taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(2, 2), modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(4, 2), modTask.EndLocate.Substring(6, 2)); @@ -108,7 +110,7 @@ { #region 璺ㄨ泛鏈轰换鍔″鐞� ########### // 鍒ゆ柇鐩爣浣嶇疆鏄惁鏄法璺烘満鍑哄簱宸ヤ綅 - if (modTask.EndLocate == "266" && modTask.StartRoadway != "R05") + if (modTask.EndLocate == "266")// && modTask.StartRoadway != "R05" { // 鍒ゆ柇鍏ュ簱宸ヤ綅鏄惁瀛樺湪鏈畬鎴愮殑鍏ュ簱浠诲姟 var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc) @@ -133,17 +135,19 @@ break; } } - - string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿 - taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; - taskInfo.EndPai = "2"; - taskInfo.EndLie = "60"; - taskInfo.EndCeng = "1"; - taskInfo.EndStation = aaa; + if (modTask.StartRoadway != "R05") + { + string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿 + taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; + taskInfo.EndPai = "2"; + taskInfo.EndLie = "60"; + taskInfo.EndCeng = "1"; + taskInfo.EndStation = aaa; + } } - if (modTask.EndLocate == "265" && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06") + if (modTask.EndLocate == "265") // && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06" { // 鍒ゆ柇鍏ュ簱宸ヤ綅鏄惁瀛樺湪鏈畬鎴愮殑鍏ュ簱浠诲姟 var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc) @@ -168,13 +172,15 @@ break; } } - - string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿 - taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; - taskInfo.EndPai = "2"; - taskInfo.EndLie = "60"; - taskInfo.EndCeng = "1"; - taskInfo.EndStation = aaa; + if (modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06") + { + string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 鑾峰彇1妤间腑涓撳伐浣嶅彿 + taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; + taskInfo.EndPai = "2"; + taskInfo.EndLie = "60"; + taskInfo.EndCeng = "1"; + taskInfo.EndStation = aaa; + } } // 鍐欏叆鏀捐揣宸ヤ綅鍥哄畾鍦板潃 @@ -378,6 +384,14 @@ var retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640"); if (retc.IsSucceed) { + // 鍐嶆璇诲彇wcs鎺у埗瀛�,纭繚鍐欏叆鎴愬姛640 + var (ress2, va1s2) = plcConveyorConn.GetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos); + if (va1s2.ToString() == "630")//杩樻槸绛変簬630璇存槑640娌℃湁鍐欏叆鎴愬姛锛屽啀娆″啓鍏�640 + { + retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640"); + Log.Information($"840鍨涙満鍙栬揣瀹屾垚鍐欏叆640澶辫触鍚庡啀娆″啓鍏ワ紝DbNumber锛歿ConveyorMod.DbNumber}"); + } + modcTaskMonitor.InteractiveMsg = string.Format("宸ヤ綅锛歿0},鍐欏叆鍙栬揣瀹屾垚:640", startStationVal); // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modcTaskMonitor).ExecuteCommand(); @@ -824,14 +838,14 @@ break; case TaskTypeEnum.Move: // 绉诲簱浠诲姟 { - var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); - var result = plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo); - if (!result.IsSucceed) - { - Log.Error($"{modDevice.Text}鍐欏叆浠诲姟鍙峰け璐�"); - break; - } - result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870"); + //var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); + //var result = plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo); + //if (!result.IsSucceed) + //{ + // Log.Error($"{modDevice.Text}鍐欏叆浠诲姟鍙峰け璐�"); + // break; + //} + var result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870"); if (!result.IsSucceed) { Log.Error($"{modDevice.Text}鎺у埗瀛楀啓鍏�870澶辫触"); @@ -1467,7 +1481,7 @@ } //鍚慦MS鐢宠宸烽亾 - strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal); + strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal, Convert.ToString(palletWeightVal)); if (!strMsg.Contains("-1")) { @@ -1814,9 +1828,12 @@ #endregion var http = new HttpService(); - string TaskNo = ""; - // 鍚慦MS鐢宠鍌ㄤ綅淇℃伅 - strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); + string TaskNo = ""; + lock (RuKuLock) + { + // 鍚慦MS鐢宠鍌ㄤ綅淇℃伅 + strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); + } // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆� var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo); @@ -2194,6 +2211,13 @@ // 璺烘満闈炵┖闂茬瓑寰� break; } + //鍒ゆ柇璇ュ贩閬撴湁娌℃湁寰呮墽琛岀殑绉诲簱/鍑哄簱浠诲姟锛屼紭鍏堟墽琛岀Щ搴�/鍑哄簱浠诲姟鍐嶆墽琛屽叆搴撲换鍔� + var taskOutMove = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Wait && (s.TaskType == TaskTypeEnum.Out || s.TaskType == TaskTypeEnum.Move) + && s.StartRoadway == modDevice.StationNum); + if (taskOutMove != null) + { + break; + } // 缁橮LC鍐欏叆浠诲姟鏁版嵁 var listResult = new List<Result>(); @@ -2388,15 +2412,18 @@ 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)); + lock(OutLock) + { + 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)); + } } } @@ -2788,6 +2815,7 @@ var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); break; } + int chaNum = 0; for (int i = 1; i <= boxNum; i++) { // 鑾峰彇绠辨潯鐮� @@ -2798,8 +2826,11 @@ if (string.IsNullOrEmpty(boxNo)) { Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��", modDevice.StationNum)); + // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐� + plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); break; } + Log.Information($"PLC璇锋眰鎻掔爜锛屾墭鐩樺彿锛歿palletNo}锛岀鐮侊細{boxNo}"); // 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜 var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList(); if (boxInfo.Count == 0) @@ -2824,20 +2855,24 @@ plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); break; } + chaNum++; } - // 鎻掔爜鎴愬姛 - var retVal2 = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); - if (retVal2.IsSucceed) + if (chaNum == boxNum) { - //鏇存柊宸叉彃鐮佹暟閲� - checkTaskMedel.BoxCount += boxNum; - _db.Updateable(checkTaskMedel).ExecuteCommand(); - } - else - { - // 鍐欏叆澶辫触 - Log.Error(string.Format("鍐欏叆PLC鎻掔爜缁撴灉澶辫触锛岀爜鍨涘伐浣峽1}锛屾墭鐩樺彿{2}", modDevice.StationNum, palletNo)); - } + // 鎻掔爜鎴愬姛 + var retVal2 = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); + if (retVal2.IsSucceed) + { + //鏇存柊宸叉彃鐮佹暟閲� + checkTaskMedel.BoxCount += boxNum; + _db.Updateable(checkTaskMedel).ExecuteCommand(); + } + else + { + // 鍐欏叆澶辫触 + Log.Error(string.Format("鍐欏叆PLC鎻掔爜缁撴灉澶辫触锛岀爜鍨涘伐浣峽1}锛屾墭鐩樺彿{2}", modDevice.StationNum, palletNo)); + } + } } break; case "40": -- Gitblit v1.8.0