From 04611220d6ec06fb328c85210b5e3d3e305cfb3d Mon Sep 17 00:00:00 2001 From: liudl <673013083@qq.com> Date: 星期一, 29 九月 2025 17:28:49 +0800 Subject: [PATCH] 结批功能修改 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 83 +++++++++++++++++++++++++---------------- 1 files changed, 50 insertions(+), 33 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 0e5d647..2775a0f 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -29,6 +29,7 @@ private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); private static int fendao = 1; + public static void OnChangeEvent(object sender, EventArgs e) { @@ -714,9 +715,9 @@ //listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey)); PlcTaskInfo taskInfo = new PlcTaskInfo(); - taskInfo = PLCCommon.GetEndPai(modTask.EndRoadway.Substring(1, 2), modTask.EndLocate.Substring(2, 2), - modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(4, 2), - modTask.EndLocate.Substring(6, 2)); + taskInfo = PLCCommon.GetEndPai(endLocat.Substring(1, 2), endLocat.Substring(2, 2), + endLocat.Substring(0, 2), endLocat.Substring(4, 2), + endLocat.Substring(6, 2)); // 缁橮LC鍐欏叆浠诲姟鏁版嵁 var listResult = new List<Result>(); @@ -737,7 +738,7 @@ if (listResult.All(s => s.IsSucceed)) { // 鍚戣泛鏈哄啓鍏ユ帶鍒舵祦绋嬪瓧 - var res = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.WcsPos, "862"); + var res = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "862");//鍐欏叆寮�濮嬫斁璐т俊鍙� var modcTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, @@ -934,6 +935,7 @@ private static void ConveyorLine(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; + // 鑾峰彇妤煎眰鏁癱eshi var louCeng = PLCCommon.GetRoadwayByStationNew(modDevice.StationNum); if (louCeng == "") @@ -1299,16 +1301,16 @@ var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); // 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭� - var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); - var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos); - if (!res.IsSucceed || !taskRes.IsSucceed) - { - break; - } + //var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); + //var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos); + //if (!res.IsSucceed || !taskRes.IsSucceed) + //{ + // break; + //} string pallet = palletVal.ToString(); - string taskNo = taskNoVal.ToString(); + //string taskNo = taskNoVal.ToString(); // 鑾峰彇浠诲姟淇℃伅 - var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In && s.TaskNo == taskNo); + var modTask = _db.Queryable<WcsTask>().OrderByDescending(s=>s.CreateTime).First(s => s.IsDelete == false && s.PalletNo == pallet && s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In );//&& s.TaskNo == taskNo if (modTask == null) { // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず @@ -2519,6 +2521,7 @@ { lock (OLock) { + Thread.Sleep(2000); // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙� var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅 @@ -2617,6 +2620,10 @@ } else { + if (string.IsNullOrEmpty(palletNo)) + { + break; + } // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹� var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList(); if (boxInfoList.Count <= 0) @@ -2627,29 +2634,30 @@ var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); if (retVal.IsSucceed) { + //鏇存柊浠诲姟琛ㄦ暟閲忎俊鎭� + checkTaskMedel.Qty = 0; + _db.Updateable(checkTaskMedel).ExecuteCommand(); // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); } break; } + #region //鍒ゆ柇鎵樼洏涓婄殑绠辩爜鏄惁宸茬粍鐩� - foreach (var item in boxInfoList) - { - var groupBoxno = _db.Queryable<WcsBoxInfoLog>().Where(w => w.BoxNo == item.BoxNo).ToList(); - if (groupBoxno.Count>0) - { - Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum)); - // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 - var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); - if (retVal.IsSucceed) - { - // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� - retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - } - break; - } - } - + //var groupBoxno = _db.Queryable<WcsBoxInfoLog>().Where(w => w.BoxNo == item.BoxNo).ToList(); + //if (groupBoxno.Count>0) + //{ + // Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum)); + // // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 + // var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); + // if (retVal.IsSucceed) + // { + // // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� + // retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); + // } + // break; + //} + #endregion // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛� string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; int insertCount = _db.Ado.ExecuteCommand(sqlStr); @@ -2658,10 +2666,6 @@ string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; _db.Ado.ExecuteCommand(sqlStr2); } - //缁勭洏鎴愬姛鍚庢竻绌哄垎鎷h〃褰撳墠鎵樼洏涓婄墿鏂欐暟閲� - checkTaskMedel.Qty = 0; - _db.Updateable(checkTaskMedel).ExecuteCommand(); - // 鍚慦MS鐢宠宸烽亾 var http = new HttpService(); string TaskNo = "", EndLocate = ""; @@ -2670,10 +2674,23 @@ if (strMsg.Contains("-1")) { Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); + // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 + var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); + if (retVal.IsSucceed) + { + //鏇存柊浠诲姟琛ㄦ暟閲忎俊鎭� + checkTaskMedel.Qty = 0; + _db.Updateable(checkTaskMedel).ExecuteCommand(); + // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� + retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); + } break; } else { + //缁勭洏鎴愬姛鍚庢竻绌哄垎鎷h〃褰撳墠鎵樼洏涓婄墿鏂欐暟閲� + checkTaskMedel.Qty = 0; + _db.Updateable(checkTaskMedel).ExecuteCommand(); //鍒ゆ柇鏄惁缁撴壒涓� var (res, jiepi) = plcConn.GetPlcDBValue(checkTaskMedel.PosType, modDevice.DbNumber, checkTaskMedel.PosLot); if (jiepi == 2)//缁撴壒涓� -- Gitblit v1.8.0