From 9db096bf7366bb953f961bef9fa68a7b5d4c27fe Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期三, 30 四月 2025 11:11:18 +0800 Subject: [PATCH] 修改显示屏 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 494 ++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 328 insertions(+), 166 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 42f3e22..c44363d 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -28,6 +28,8 @@ private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); + private static int fendao = 1; + public static void OnChangeEvent(object sender, EventArgs e) { try @@ -216,11 +218,16 @@ //淇敼led灞忎俊鎭� var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == taskInfo.EndStation && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business); - ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n"; - ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n"; + //ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n"; + //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; + //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; + //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; + ledText += $"鍚嶇О:{modTask.SkuName}\n"; + ledText += $"鎵瑰彿:{modTask.LotNo}\n"; + ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n"; ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; - ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; - ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; + LedDisplay(ledDevice.LedIP, ledText); } } @@ -451,13 +458,18 @@ // led鏄剧ず鍐呭 var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modTask.StartLocate && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business); - ledText += $"鍏ュ簱瀹屾垚\n\n"; + //ledText += $"鍏ュ簱瀹屾垚\n\n"; - ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n"; + //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; + + //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; + //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; + + ledText += $"鍚嶇О:{modTask.SkuName}\n"; + ledText += $"鎵瑰彿:{modTask.LotNo}\n"; + ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n"; ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; - - ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; - ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; LedDisplay(ledDevice.LedIP, ledText); // 姝ゅ娣诲姞涓嶇┖璺戜笟鍔� @@ -997,10 +1009,11 @@ string groupMsg = ""; if (modDevice.StationNum == "27") { - var Qty = plcConn.GetPlcDBValue(PLCDataTypeEnum.Int,"DB135.0").ToString();//鑾峰彇鍙犳墭鏈哄彔鎵樻暟閲� - groupMsg = http.BindPlnInHouseWcs(Qty, palletVal); + var (res2,Qty) = plcConn.GetPlcDBValue(PLCDataTypeEnum.Short,"DB135","0");//鑾峰彇鍙犳墭鏈哄彔鎵樻暟閲� + + groupMsg = http.BindPlnInHouseWcs(Qty.ToString(), palletVal); - if (!groupMsg.Contains("-1")) + if (groupMsg.Contains("-1")) { var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); if (res350.IsSucceed && palletVal350 != "350") @@ -1017,8 +1030,8 @@ { plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); } + break; } - break; } string IsBale = "0"; strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo); @@ -1066,13 +1079,18 @@ // led鏄剧ず鍐呭 try { - ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n"; + //ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n"; - ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; + + //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; + //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; + ledText += $"鍚嶇О:{taskInfo.SkuName}\n"; + ledText += $"鎵瑰彿:{taskInfo.LotNo}\n"; + ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n"; ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; - ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; - ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; LedDisplay(modDevice.LedIP, ledText); } @@ -1248,11 +1266,15 @@ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business); - ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n"; - ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n"; + //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; + //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; + //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; + ledText += $"鍚嶇О:{taskInfo.SkuName}\n\n"; + ledText += $"鎵瑰彿:{taskInfo.LotNo}\n"; + ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n"; ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; - ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; - ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; LedDisplay(modDevice.LedIP, ledText); } } @@ -1427,6 +1449,9 @@ var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos); var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅"); var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos); + string tasknoVal = taskVal.ToString(); + ////string b = taskVal.GetValue(); + //string a = palletVal.ToString(); // 鎻掑叆浠诲姟鏄庣粏 var modInsertTaskMonitor = new WcsTaskMonitor() { @@ -1436,10 +1461,10 @@ InteractiveMsg = $"鍐欏叆鎸囦护430锛氭墭鐩樺埌杈緖modDevice.StationNum}宸ヤ綅", PalletNo = palletVal, Status = TaskStatusEnum.Complete, - StartLocat = starVal, + StartLocat = starVal.ToString(), EndLocat = modDevice.StationNum, }; - + // 鎻掑叆浜や簰鏃ュ織 _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); @@ -1455,10 +1480,15 @@ 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 += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; + //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; + //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; + ledText += $"鍚嶇О:{taskInfo.SkuName}\n"; + ledText += $"鎵瑰彿:{taskInfo.LotNo}\n"; + ledText += $"鍑哄簱鏁伴噺:{taskInfo.Qty}\n"; + ledText += $"鍒嗛厤鏁伴噺:{taskInfo.CompleteQty}\n"; ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n"; - ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n"; - ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}"; LedDisplay(ledDevice.LedIP, ledText); } // 鍙嶉WMS鍑哄簱瀹屾垚 @@ -1483,7 +1513,7 @@ var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos); var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅"); var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos); - + string tasknoVal = taskVal.ToString(); var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false); if (modTask == null) @@ -1540,10 +1570,16 @@ 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.TaskNo}\n"; + //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; + //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; + //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; + ledText += $"鍚嶇О:{modTask.SkuName}\n"; + ledText += $"鎵瑰彿:{modTask.LotNo}\n"; + ledText += $"鍑哄簱鏁伴噺:{modTask.Qty}\n"; + ledText += $"鍒嗛厤鏁伴噺:{modTask.CompleteQty}\n"; ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n"; - ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; - ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}"; + LedDisplay(ledDevice.LedIP, ledText); } #endregion @@ -1771,16 +1807,16 @@ if (ret.IsSucceed) { //鍥炰紶WMS鍙斁淇″彿 - strMsg = http.RequesContinueAgv(res1.ToString(),modTask.StationNum); + strMsg = http.RequesContinueAgv(val.ToString(), modDevice.StationNum); if (!strMsg.Contains("-1")) { // 鎻掑叆浠诲姟鏄庣粏 var modInsertTaskMonitor = new WcsTaskMonitor() { + TaskNo = tasknoVal, PlcId = modDevice.Id, PlcName = modDevice.Text, InteractiveMsg = $"鍐欏叆鎸囦护151锛歿modDevice.StationNum}宸ヤ綅鍙帴鍙桝GV鏀捐揣鍏ュ簱", - PalletNo = modTask.PalletNo, Status = TaskStatusEnum.Complete, StartLocat = modDevice.StationNum }; @@ -1846,7 +1882,7 @@ private static async void BoxConveyorLine(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; - + //浜屾ゼ涓绘壂鍒嗛亾 if (modDevice.DbNumber == "DB101")//&& modDevice.DbNumber == "DB102"&& (modDevice.DbNumber == "DB102"||modDevice.PlcIdIP == "10.18.51.110") { // 涓绘壂浜や簰娴佺▼ @@ -1856,15 +1892,26 @@ // 涓绘壂鐢宠鍒嗛亾 wcs鍐欏叆2 { // 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡 - if (PLCTaskAction.boDemo) + if (PLCTaskAction.boDemo) { // 閫氶亾鍙� var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); - // 婕旂ず妯″紡鐩存帴鍐欏叆1鍒嗛亾 - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "1"); + // 婕旂ず妯″紡鐩存帴鍐欏叆鍒嗛亾鍙� + //Random random = new Random(); + //int ranNumber = random.Next(2) == 0 ? 1 : 5; + if (fendao == 1) + { + fendao = 5; + } + else + { + fendao = 1; + } + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, fendao.ToString()); // if (ret.IsSucceed) { + Log.Information(string.Format("鍒嗛亾鎴愬姛锛岄亾鍙锋槸锛�" + fendao)); // 鍐欏叆娴佺▼鎺у埗瀛� 2 var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (!retVal.IsSucceed) @@ -1944,11 +1991,11 @@ { // 鍒ゆ柇鏄惁鍏宠仈鍗曟嵁 wcsordertask var orderModel = _db.Queryable<WcsOderTask>() - .First(m => m.SkuNo == boxInfo.SkuNo && m.Status== TaskStatusEnum.Wait && m.LotNo == boxInfo.LotNo && m.IsDelete == false); + .First(m => m.SkuNo == boxInfo.SkuNo && m.Status == TaskStatusEnum.Wait && m.LotNo == boxInfo.LotNo && m.IsDelete == false); if (orderModel != null) { // 鏍规嵁boxinfo琛ㄤ骇绾垮瓧娈佃嚜鍔ㄧ粦瀹氬垎閬�(1绾夸骇鍝佸彧鑳界粦瀹氬埌8閬�) - if (boxInfo.LineNo != "1") + if (boxInfo.LineNo != "涓�绾�") {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬� // 鑾峰彇鏈粦瀹氶亾 @@ -1975,7 +2022,7 @@ break; } - foreach (var lineNoModel in lineNoModels) + foreach (var lineNoModel in lineNoModels) { // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾 var (respg, pzNo) = plcConn.GetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos); @@ -1986,16 +2033,17 @@ // plc姝ゅ垎閬撴湭瑙g粦 break; } - else + else { // 鑷姩缁戝畾鍒嗛亾 lineNoModel.OrderNo = orderModel.OrderNo; lineNoModel.LotNo = boxInfo.LotNo; lineNoModel.SkuNo = boxInfo.SkuNo; lineNoModel.SkuName = boxInfo.SkuName; - lineNoModel.Qty = orderModel.Qty; + lineNoModel.Qty = 0; lineNoModel.Status = "1";//宸茬粦瀹� lineNoModel.PZNo = skuInfo.PZNo; + lineNoModel.FinishQty = 0; // 缁橮LC鍐欏叆鍝佽 var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo); @@ -2017,7 +2065,7 @@ } } } - else + else { // 璇诲彇plc澶辫触 break; @@ -2025,7 +2073,7 @@ } } - else + else { // 鑻ユ病鏈夌┖闂查亾锛岃繘琛屽墧闄ゅ鐞嗐�傞槻姝㈠牭濉炰欢绠辩嚎 var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); @@ -2042,7 +2090,7 @@ break; } } - else + else {// 缁戝畾鍒�8閬� // 鑾峰彇鏈粦瀹氶亾 var lineNo8Model = _db.Queryable<WcsCheckTask>() @@ -2085,9 +2133,10 @@ lineNo8Model.LotNo = boxInfo.LotNo; lineNo8Model.SkuNo = boxInfo.SkuNo; lineNo8Model.SkuName = boxInfo.SkuName; - lineNo8Model.Qty = orderModel.Qty; + lineNo8Model.Qty = 0; lineNo8Model.Status = "1";//宸茬粦瀹� lineNo8Model.PZNo = skuInfo.PZNo; + lineNo8Model.FinishQty = 0; // 缁橮LC鍐欏叆鍝佽 var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo); @@ -2115,7 +2164,7 @@ // 璇诲彇plc澶辫触 break; } - + } else @@ -2136,7 +2185,7 @@ } } } - else + else { // 涓嶅叧鑱斿崟鎹洿鎺ヨ繘琛屽墧闄ゅ鐞� var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); @@ -2169,7 +2218,7 @@ IsBaleModel2 ret1 = http.RequestBoxno(boxNoVal); if (ret1.Success == -1) { - Log.Error("绠辩爜鍒嗘嫞鍥炰紶澶辫触锛岄渶瑕佹墜鍔ㄦ嫞璐с�傚け璐ョ鐮侊細"+boxNoVal); + Log.Error("绠辩爜鍒嗘嫞鍥炰紶澶辫触锛岄渶瑕佹墜鍔ㄦ嫞璐с�傚け璐ョ鐮侊細" + boxNoVal); break; } } @@ -2185,10 +2234,88 @@ default: break; } } - else + //涓�妤间富鎵垎閬� + else if (modDevice.DbNumber == "DB102") + { + switch (modDevice.Value.ToString()) + { + case "1": + // 1妤间欢绠盤LC璇锋眰WCS璇荤爜 + { + // 璇诲彇plc绠辩爜 + var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "涓绘壂鏉$爜"); + var (res, boxNo) = plcConn.GetPlcDBValue(modBoxNo.PosType, modDevice.DbNumber, modBoxNo.PlcPos); + if (string.IsNullOrWhiteSpace(boxNo.ToString())) + { + + // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0 + var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); + break; + } + } + } + else + { + // 绠辩爜 + string boxNoVal = boxNo.ToString(); + // 閫氶亾鍙� + var modLineNo = modDevice.listStation.FirstOrDefault(m => m.Text == "閫氶亾鍙�"); + + // 璋冪敤wms鎺ュ彛楠岃瘉绠辩爜鏄惁鍙嫞璐у苟杩斿洖瑁呰溅鍙� + var http = new HttpService(); + RequestloadingAddre requesModel = http.ResultBoxInfoExportWcs(boxNoVal); + if (requesModel.Success != "1") + { + // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0 + var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("鍑哄簱鍒嗘嫞鏍规嵁绠辩爜鑾峰彇瑁呰溅鍙eけ璐ワ紝杩涜鍓旈櫎銆�" + requesModel.Message); + break; + } + } + } + else + { + // 鍐欏叆鍑哄簱鍒嗛亾鍙� + // var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre); + var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + break; + } + } + } + } + }; break; + case "10": + // 1妤间欢绠盤LC璇荤爜澶辫触锛學CS涓嶅仛澶勭悊鐩存帴鍓旈櫎鎵嬫寔鎷h揣銆� + { + + }; break; + default: + break; + } + } + else { // 鎻掔爜浜や簰 - switch (modDevice.Value.ToString()) + switch (modDevice.Value.ToString()) { case "1": // 鎵樼洏鏉$爜鍙 @@ -2198,7 +2325,7 @@ // 璇诲彇PLC鎵樼洏鏉$爜鍙� var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos); string palletNo = palletVal.ToString(); - if (string.IsNullOrEmpty(palletNo)) + if (string.IsNullOrEmpty(palletNo)) { Log.Error(string.Format("{0}锛岃鍙栫殑鎵樼洏鍙蜂负null", modDevice.Text)); break; @@ -2206,18 +2333,18 @@ // 鏍规嵁宸ヤ綅鍙峰皢鎵樼洏鍙蜂繚瀛樺湪鍒嗛亾琛� var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); - if (checkTaskMedel == null) + if (checkTaskMedel == null) { Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); break; } checkTaskMedel.PalletNo = palletNo; var rowCount = _db.Updateable(checkTaskMedel).ExecuteCommand(); - if (rowCount > 0 ) + if (rowCount > 0) { // plc鍐欏叆璇诲彇鎴愬姛琛ㄧず 2 var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) + if (retVal.IsSucceed) { // liudl 姝ゅ闇�娣诲姞 // 閫氱煡鍒嗘嫞鐮佸灈椤垫洿鏂� @@ -2237,24 +2364,24 @@ var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); break; } - else + else { // 鑾峰彇绠辨潯鐮� // 鑾峰彇绠辨潯鐮侀厤缃� var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "绠辨潯鐮�"); var (res, boxVal) = plcConn.GetPlcDBValue(modBoxNo.PosType, modDevice.DbNumber, modBoxNo.PlcPos); string boxNo = boxVal.ToString(); - if (string.IsNullOrEmpty(boxNo)) + if (string.IsNullOrEmpty(boxNo)) { - Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��" ); + Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��"); // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐� var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); - + break; } // 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜 var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList(); - if (boxInfo.Count == 0) + if (boxInfo.Count == 0) { Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮亄boxNo}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��"); // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐� @@ -2262,45 +2389,123 @@ break; } // 鑾峰彇褰撳墠鍒嗛亾鎵樼洏鍙� - var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); + string port = modDevice.StationNum.ToString(); + var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == port && m.Status == "1"); if (checkTaskMedel == null) { Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); break; } string palletNo = checkTaskMedel.PalletNo; - if (string.IsNullOrEmpty(palletNo)) + if (string.IsNullOrEmpty(palletNo)) { - Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒",modDevice.StationNum)); + Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒", modDevice.StationNum)); break; } // 淇敼鎻掔爜琛� - foreach (WcsBoxInfo item in boxInfo) + foreach (WcsBoxInfo item in boxInfo) { item.PalletNo = palletNo; item.UpdateTime = DateTime.Now; + item.OrderCode = checkTaskMedel.OrderNo; } - + + checkTaskMedel.Qty += boxInfo.First().QtyCount;//璁板綍褰撳墠鎵樼洏涓婄墿鏂欐暟閲� + _db.Updateable(checkTaskMedel).ExecuteCommand(); var rowCount = _db.Updateable(boxInfo).ExecuteCommand(); - Log.Information(string.Format("鎻掔爜鎴愬姛锛岀鐮佹槸锛�"+ boxNo, modDevice.StationNum)); + Log.Information(string.Format("鎻掔爜鎴愬姛锛岀鐮佹槸锛�" + boxNo, modDevice.StationNum)); if (rowCount > 0) { // 鎻掔爜鎴愬姛 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); - + //鏄惁缁撴壒绠� - if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) + //if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) + //{ + // // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓� + // AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); + //} + if (retVal.IsSucceed) { - // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓� - AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); + //鍒よ鏄惁鎺ユ敹瀹屽伐鏁伴噺 + var models = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.First().SkuNo && w.LotNo == boxInfo.First().LotNo); + if (models.FinishQty>0) + { + //妫�鏌ュ凡鐮佸灈绠辨暟(涓嶅惈闆剁)锛岀爜鍨涙暟閲忎笌瀹屽伐鏁伴噺鐩哥瓑鍚庤嚜鍔ㄧ粨鎵�:鍐欏叆PLC淇″彿鈥斺�旂粨鎵逛腑 + int Fqty = (int)models.FinishQty;//瀹屽伐鏁伴噺 + int Jpqty = 0;//宸茬爜鍨涙暟閲� + + //鑾峰彇宸茬粍鐩樻暟閲� + var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == checkTaskMedel.OrderNo).ToList();//缁勭洏琛ㄧ鐮佷俊鎭� + if (checkNum.Count > 0) + { + if (!string.IsNullOrEmpty(checkNum.First().BoxNo2) || !string.IsNullOrEmpty(checkNum.First().BoxNo3))//鏈夋敮鐮� + { + foreach (var item in checkNum) + { + Jpqty = (int)(Jpqty + item.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item in checkNum) + { + Jpqty = (int)(Jpqty + item.QtyCount); + } + } + } + //鑾峰彇宸叉彃鐮佹暟閲� + var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo &&(m.PalletNo != null || m.PalletNo != "") && m.OrderCode == checkTaskMedel.OrderNo).ToList();//绠辩爜琛ㄥ凡鐮佸灈绠辩爜淇℃伅 + if (checkNum2.Count > 0) + { + if (!string.IsNullOrEmpty(checkNum2.First().BoxNo2) || !string.IsNullOrEmpty(checkNum2.First().BoxNo3))//鏈夋敮鐮� + { + foreach (var item2 in checkNum2) + { + Jpqty = (int)(Jpqty + item2.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item2 in checkNum2) + { + Jpqty = (int)(Jpqty + item2.QtyCount); + } + } + } + //鑾峰彇闆剁鏁伴噺 + var checkNum3 = _db.Queryable<WcsBoxInfo>().Where(m => m.BitBoxMark == "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo).ToList(); + if (checkNum3.Count > 0) + { + if (!string.IsNullOrEmpty(checkNum3.First().BoxNo2) || !string.IsNullOrEmpty(checkNum3.First().BoxNo3))//鏈夋敮鐮� + { + foreach (var item3 in checkNum3) + { + Jpqty = (int)(Jpqty + item3.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item3 in checkNum3) + { + Jpqty = (int)(Jpqty + item3.QtyCount); + } + } + } + if (Jpqty == Fqty) + { + // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓� + AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); + } + } } } - else + else { // 鎻掔爜澶辫触 Log.Error($"绠辩爜{boxNo};鐮佸灈宸ヤ綅{modDevice.StationNum}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�"); var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); - if (retVal.IsSucceed) + if (retVal.IsSucceed) { // 瑙﹀彂缁撴壒 涓嶈В缁戝垎閬� AutoEndLot(boxInfo[0].LotNo, plcConn, "1"); @@ -2311,8 +2516,8 @@ break; case "40": // 璇锋眰缁勬墭锛岀敵璇峰叆搴� - { - lock (OLock) + { + lock (OLock) { // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙� var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); @@ -2325,7 +2530,7 @@ // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); - if (retVal.IsSucceed) + if (retVal.IsSucceed) { // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); @@ -2348,11 +2553,11 @@ Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); break; } - else + else { // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)); - if (taskModel != null) + if (taskModel != null) { // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅 string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2"); @@ -2407,10 +2612,10 @@ // taskModel.Status = TaskStatusEnum.Doing; // _db.Updateable(taskModel).ExecuteCommand(); //} - } + } } } - else + else { // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹� var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList(); @@ -2427,6 +2632,24 @@ } break; } + //鍒ゆ柇鎵樼洏涓婄殑绠辩爜鏄惁宸茬粍鐩� + 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; + } + } + // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛� string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; int insertCount = _db.Ado.ExecuteCommand(sqlStr); @@ -2435,11 +2658,14 @@ 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 = ""; - string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo,palletNo, checkTaskMedel.BoxCount.ToDecimal(),"0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "","", boxInfoList, + string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.Qty.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); if (strMsg.Contains("-1")) { @@ -2456,6 +2682,17 @@ var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0"); if (ret1.IsSucceed) { + //鏇存柊鍏ュ簱璁㈠崟 + var orderTask = _db.Queryable<WcsOderTask>().Where(w => w.SkuNo == checkTaskMedel.SkuNo && w.LotNo == checkTaskMedel.LotNo && w.IsDelete == false).ToList(); + if (orderTask.Count >0) + { + foreach (var item in orderTask) + { + item.Status = TaskStatusEnum.Complete; + _db.Updateable(item).ExecuteCommand(); + } + } + //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌� checkTaskMedel.OrderNo = ""; checkTaskMedel.TaskNo = ""; @@ -2466,9 +2703,12 @@ checkTaskMedel.Qty = 0; checkTaskMedel.PZNo = ""; checkTaskMedel.Status = "0"; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� + checkTaskMedel.FinishQty = 0; //鏇存柊鍒嗘嫞浠诲姟 _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + + } } // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 @@ -2491,7 +2731,7 @@ { // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - if (retVal.IsSucceed) + if (retVal.IsSucceed) { // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц taskModel.Status = TaskStatusEnum.Doing; @@ -2521,8 +2761,8 @@ } } break; - default:break; - } + default: break; + } } } @@ -2538,7 +2778,8 @@ switch (modDevice.Value.ToString()) { case "10"://10 plc璇锋眰wcs璇绘墭鐩樼爜 20 wcs璇诲彇ok wcs 鍐欏叆鏁伴噺鍙婅鏍� 30 - var strMsg = ""; + + //wcs璇诲彇ok20 var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "20"); if (ret.IsSucceed) { @@ -2584,6 +2825,7 @@ // 鏄惁鍐欏叆鎴愬姛 if (listResult.All(s => s.IsSucceed)) { + //wcs 鍐欏叆鏁伴噺鍙婅鏍� 30 var ret1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "30"); } @@ -2595,89 +2837,9 @@ } } } - - break; - default: - break; + break; } - } - else - { - switch (modDevice.Value.ToString()) - { - case "1": - // 1妤间欢绠盤LC璇锋眰WCS璇荤爜 - { - // 璇诲彇plc绠辩爜 - var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "涓绘壂鏉$爜"); - var (res, boxNo) = plcConn.GetPlcDBValue(modBoxNo.PosType, modDevice.DbNumber, modBoxNo.PlcPos); - if (string.IsNullOrWhiteSpace(boxNo.ToString())) - { - - // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0 - var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "0"); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); - break; - } - } - } - else - { - // 绠辩爜 - string boxNoVal = boxNo.ToString(); - // 閫氶亾鍙� - var modLineNo = modDevice.listStation.FirstOrDefault(m => m.Text == "閫氶亾鍙�"); - - // 璋冪敤wms鎺ュ彛楠岃瘉绠辩爜鏄惁鍙嫞璐у苟杩斿洖瑁呰溅鍙� - var http = new HttpService(); - RequestloadingAddre requesModel = http.ResultBoxInfoExportWcs(boxNoVal); - if (requesModel.Success != "0") - { - // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0 - var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, "0"); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - Log.Error("鍑哄簱鍒嗘嫞鏍规嵁绠辩爜鑾峰彇瑁呰溅鍙eけ璐ワ紝杩涜鍓旈櫎銆�" + requesModel.Message); - break; - } - } - } - else - { - // 鍐欏叆鍑哄簱鍒嗛亾鍙� - var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - break; - } - } - } - } - };break; - case "10": - // 1妤间欢绠盤LC璇荤爜澶辫触锛學CS涓嶅仛澶勭悊鐩存帴鍓旈櫎鎵嬫寔鎷h揣銆� - { - - };break; - default: - break; - } - } - + } } /// <summary> -- Gitblit v1.8.0