From 48d66a079c307356997fb400d27907ff6d363b7b Mon Sep 17 00:00:00 2001 From: liudl <673013083@qq.com> Date: 星期一, 20 一月 2025 08:35:37 +0800 Subject: [PATCH] 修改2楼分拣和1楼拆垛时获取拆垛信息接口 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 891 ++++++++++++++++++++++++++++------------------------------- 1 files changed, 422 insertions(+), 469 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 363e793..e563b98 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -2,6 +2,7 @@ using Dm.filter; using DocumentFormat.OpenXml.Bibliography; using DocumentFormat.OpenXml.Drawing.Charts; +using Elastic.Clients.Elasticsearch.Snapshot; using Elastic.Clients.Elasticsearch.Tasks; using Flurl.Util; using Furion.Logging; @@ -15,6 +16,7 @@ using System.Data; using System.Reflection.Emit; using WCS.Application.Entity; +using WCS.Application.Service.WcsDevice.Dto; using WCS.Application.Util; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressIntracityUpdateStoreRequest.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.NontaxInsertBillRequest.Types.CardExtra.Types.BillCard.Types; @@ -47,7 +49,7 @@ BoxConveyorLine(mod); // 鐮佸灈鏈哄櫒浜� break; case PLCTypeEnum.StackingRobot: - PalletMachine(mod); + StackingRobot(mod); //鎷嗗灈鏈哄櫒浜� break; default: break; @@ -1049,14 +1051,14 @@ //鍒ゆ柇鏄惁瑁瑰寘 var gbPos = modDevice.listStation.FirstOrDefault(s => s.Text == "Element_1"); strMsg = new HttpService().RequestPackWcs(palletVal); - if (IsBale == "1") + if (strMsg == "1") { //鍐欏叆瑁瑰寘鎸囦护 - ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, gbPos.PlcPos, "2"); + ret = plcConn.SetPlcDBValue(gbPos.PosType, modDevice.DbNumber, gbPos.PlcPos, "2"); } else { - ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, gbPos.PlcPos, "1"); + ret = plcConn.SetPlcDBValue(gbPos.PosType, modDevice.DbNumber, gbPos.PlcPos, "1"); } // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� @@ -1512,7 +1514,7 @@ // 鍙嶉WMS var requestMode = new TaskRequestWMS() { - TaskNo = modTask.TaskNo, + TaskNo = modTask.TaskNo + modTask.EndLocate , PalletNo = modTask.PalletNo, TaskType = ((int)TaskTypeEnum.Out).ToString(), TaskStatus = ((int)TaskStatusEnum.Complete).ToString() @@ -1621,7 +1623,7 @@ // 鍙嶉WMS var requestMode = new TaskRequestWMS() { - TaskNo = modTask.TaskNo, + TaskNo = modTask.TaskNo + modTask.EndLocate , PalletNo = modTask.PalletNo, TaskType = ((int)TaskTypeEnum.Out).ToString(), TaskStatus = ((int)TaskStatusEnum.Complete).ToString() @@ -1648,17 +1650,18 @@ #endregion case "10": { - #region 缂犺啘瀹屾垚 11 + #region 缂犺啘瀹屾垚 // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭� var strMsg = ""; var http = new HttpService(); var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); + //鍚慦MS鍙嶉鎵樼洏缂犺啘瀹屾垚 strMsg = http.RequestPackedWcs(palletVal); if (!strMsg.Contains("-1")) { - var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "11"); + var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "11");//鏀跺埌缂犺啘瀹屾垚11 if (ret.IsSucceed) { // 鎻掑叆浠诲姟鏄庣粏 @@ -1684,12 +1687,25 @@ break; case "20": { - #region 鏄惁鎷嗚啘 21锛氬惁 22锛氭槸 //23锛氫汉宸ユ媶 + #region 鏄惁鎷嗚啘 21锛氬惁 22锛氭槸 // 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭� var strMsg = ""; var http = new HttpService(); var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); + // 鑾峰彇鎵樼洏浠诲姟鍙� + var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); + var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + // 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔′俊鎭�,鐩殑宸ヤ綅鏄�009鐨勫啀鍚慦MS鍙戝嚭鎷嗚啘鐢宠 + if (res1.IsSucceed) + { + string tasknoVal = val.ToString(); + var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.EndLocate == "009" && m.IsDelete == false); + if (modTask == null) + { + break; + } + } strMsg = http.RequestUnPackWcs(palletVal); if (!strMsg.Contains("-1")) @@ -1786,7 +1802,7 @@ { var plcConn = modDevice.PLCUtil; - if (modDevice.DbNumber == "DB101") + if (modDevice.DbNumber == "DB101")//&& modDevice.DbNumber == "DB102"&& (modDevice.DbNumber == "DB102"||modDevice.PlcIdIP == "10.18.51.110") { // 涓绘壂浜や簰娴佺▼ switch (modDevice.Value.ToString()) @@ -1856,11 +1872,12 @@ } } } - // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿 - var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1"); - if (checkTaskInfo == null) + + + // 楠岃瘉鏄惁闆剁 + if (boxInfo.BitBoxMark == "1") { - // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� + // 鏄浂绠辩洿鎺ュ墧闄わ紝杩涜浜哄伐缁勬墭 var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); if (ret.IsSucceed) { @@ -1868,8 +1885,225 @@ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (retVal.IsSucceed) { - Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�"); + Log.Error("闆剁锛岃繘琛屽墧闄ゃ��"); break; + } + } + break; + } + + + // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿 + var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1"); + if (checkTaskInfo == null) + { + // 鍒ゆ柇鏄惁鍏宠仈鍗曟嵁 wcsordertask + var orderModel = _db.Queryable<WcsOderTask>() + .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") + {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬� + + // 鑾峰彇鏈粦瀹氶亾 + var lineNoModels = _db.Queryable<WcsCheckTask>() + .Where(m => m.Status == "0" && m.LineNo != "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer).ToList(); + if (lineNoModels.Count > 0) + { + // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙� + var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync(); + if (skuInfo == null) + { + // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎 + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��"); + break; + } + } + break; + } + + foreach (var lineNoModel in lineNoModels) + { + // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾 + var (respg, pzNo) = plcConn.GetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos); + if (respg.IsSucceed) + { + if (pzNo != 0) + { + // plc姝ゅ垎閬撴湭瑙g粦 + break; + } + else + { + // 鑷姩缁戝畾鍒嗛亾 + lineNoModel.OrderNo = orderModel.OrderNo; + lineNoModel.LotNo = boxInfo.LotNo; + lineNoModel.SkuNo = boxInfo.SkuNo; + lineNoModel.SkuName = boxInfo.SkuName; + lineNoModel.Qty = orderModel.Qty; + lineNoModel.Status = "1";//宸茬粦瀹� + lineNoModel.PZNo = skuInfo.PZNo; + + // 缁橮LC鍐欏叆鍝佽 + var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo); + if (ret.IsSucceed) + { + //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 + _db.Updateable(lineNoModel).ExecuteCommand(); + //鏇存柊WcsOderTask琛� + orderModel.Status = TaskStatusEnum.Doing; + _db.Updateable(orderModel).ExecuteCommand(); + // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟 + //涓嬪彂鍒嗘嫞浠诲姟 + HubUtil.PublicCheckTask(lineNoModel.Adapt<WcsDeviceTaskOrderDto>()); + break; + } + else + { + throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒"); + } + } + } + else + { + // 璇诲彇plc澶辫触 + break; + } + } + + } + else + { + // 鑻ユ病鏈夌┖闂查亾锛岃繘琛屽墧闄ゅ鐞嗐�傞槻姝㈠牭濉炰欢绠辩嚎 + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��"); + break; + } + } + break; + } + } + else + {// 缁戝畾鍒�8閬� + // 鑾峰彇鏈粦瀹氶亾 + var lineNo8Model = _db.Queryable<WcsCheckTask>() + .First(m => m.Status == "0" && m.LineNo == "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer); + if (lineNo8Model != null) + { + // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙� + var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync(); + if (skuInfo == null) + { + // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎 + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��"); + break; + } + } + break; + } + + + // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾 + var (respg, pzNo) = plcConn.GetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos); + if (respg.IsSucceed) + { + if (pzNo != 0) + { + // plc姝ゅ垎閬撴湭瑙g粦 + break; + } + else + { + // 鑷姩缁戝畾鍒嗛亾 + lineNo8Model.OrderNo = orderModel.OrderNo; + lineNo8Model.LotNo = boxInfo.LotNo; + lineNo8Model.SkuNo = boxInfo.SkuNo; + lineNo8Model.SkuName = boxInfo.SkuName; + lineNo8Model.Qty = orderModel.Qty; + lineNo8Model.Status = "1";//宸茬粦瀹� + lineNo8Model.PZNo = skuInfo.PZNo; + + // 缁橮LC鍐欏叆鍝佽 + var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo); + if (ret.IsSucceed) + { + //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 + _db.Updateable(lineNo8Model).ExecuteCommand(); + //鏇存柊WcsOderTask琛� + orderModel.Status = TaskStatusEnum.Doing; + _db.Updateable(orderModel).ExecuteCommand(); + + // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟 + //涓嬪彂鍒嗘嫞浠诲姟 + HubUtil.PublicCheckTask(lineNo8Model.Adapt<WcsDeviceTaskOrderDto>()); + break; + } + else + { + throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒"); + } + } + } + else + { + // 璇诲彇plc澶辫触 + break; + } + + + } + else + { + // 娌℃湁绌洪棽閬擄紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎 + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��"); + break; + } + } + break; + } + } + } + else + { + // 涓嶅叧鑱斿崟鎹洿鎺ヨ繘琛屽墧闄ゅ鐞� + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�"); + break; + } } } } @@ -1883,6 +2117,18 @@ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (retVal.IsSucceed) { + { // liudl 姝ゆ绋嬪簭涓嶄細鎵ц 纭鍚庣洿鎺ュ垹闄� + if (modDevice.DbNumber == "DB102")//1L鎷嗚泛鍒嗘嫞鍚庨渶瑕佸洖浼犵鐮� + { + var http = new HttpService(); + IsBaleModel2 ret1 = http.RequestBoxno(boxNoVal); + if (ret1.Success == -1) + { + Log.Error("绠辩爜鍒嗘嫞鍥炰紶澶辫触锛岄渶瑕佹墜鍔ㄦ嫞璐с�傚け璐ョ鐮侊細"+boxNoVal); + break; + } + } + } break; } } @@ -1893,7 +2139,7 @@ break; default: break; } - } + } else { // 鎻掔爜浜や簰 @@ -1991,6 +2237,7 @@ } var rowCount = _db.Updateable(boxInfo).ExecuteCommand(); + Log.Information(string.Format("鎻掔爜鎴愬姛锛岀鐮佹槸锛�"+ boxNo, modDevice.StationNum)); if (rowCount > 0) { // 鎻掔爜鎴愬姛 @@ -1999,8 +2246,8 @@ //鏄惁缁撴壒绠� if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) { - // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾 - AutoEndLot(boxInfo[0].LotNo, plcConn, "0"); + // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓� + AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); } } else @@ -2135,14 +2382,15 @@ } break; } + // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛� string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; int insertCount = _db.Ado.ExecuteCommand(sqlStr); if (insertCount > 0) { - // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛� - string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'"; + string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; _db.Ado.ExecuteCommand(sqlStr2); } + // 鍚慦MS鐢宠宸烽亾 var http = new HttpService(); string TaskNo = "", EndLocate = ""; @@ -2155,6 +2403,29 @@ } else { + //鍒ゆ柇鏄惁缁撴壒涓� + var (res, jiepi) = plcConn.GetPlcDBValue(checkTaskMedel.PosType, modDevice.DbNumber, checkTaskMedel.PosLot); + if (jiepi == 2)//缁撴壒涓� + { + // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0 + var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0"); + if (ret1.IsSucceed) + { + //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌� + checkTaskMedel.OrderNo = ""; + checkTaskMedel.TaskNo = ""; + checkTaskMedel.LotNo = ""; + checkTaskMedel.SkuNo = ""; + checkTaskMedel.SkuName = ""; + checkTaskMedel.BoxType = ""; + checkTaskMedel.Qty = 0; + checkTaskMedel.PZNo = ""; + checkTaskMedel.Status = "0"; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� + + //鏇存柊鍒嗘嫞浠诲姟 + _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + } + } // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait); if (taskModel != null) @@ -2211,13 +2482,13 @@ } /// <summary> - /// 鎷嗗灈鏈哄櫒浜轰笟鍔″鐞� + /// 鍑哄簱浠剁杈撻�佸拰鎷嗗灈鏈哄櫒浜轰笟鍔″鐞� /// </summary> /// <param name="modDevice"></param> private static void StackingRobot(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; - if (modDevice.DbNumber == "DB131" && modDevice.DbNumber == "DB132" && modDevice.DbNumber == "DB133" && modDevice.DbNumber == "DB134") + if (modDevice.DbNumber == "DB131" || modDevice.DbNumber == "DB132" || modDevice.DbNumber == "DB133" || modDevice.DbNumber == "DB134") { switch (modDevice.Value.ToString()) { @@ -2226,461 +2497,142 @@ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "20"); if (ret.IsSucceed) { + //鑾峰彇鎵樼洏鐮� var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); var (res, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos); - //鏍规嵁鎵樼洏鍙峰垽鏂綋鍓嶄换鍔¤〃涓槸鍚︽湁姝や换鍔�,浠诲姟鐢盬MS鍑哄簱鏃朵笅鍙� - string palletno = Convert.ToString(palletVal); - var taskInfo = _db.Queryable<WcsTask>().First(w => w.PalletNo == palletno && w.Status == TaskStatusEnum.Doing); - if (taskInfo == null) + // 鑾峰彇鎵樼洏浠诲姟鍙� + var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); + var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + string tasknoVal = val.ToString(); + + // 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔′俊鎭� + if (res1.IsSucceed) { - Log.Error(string.Format($"鍑哄簱浠诲姟鏈笅鍙戯紝璇蜂汉宸ュ鐞嗭紝鏃犳硶鎷嗗灈锛�")); - break; + var modTask = _db.Queryable<WcsTask>().First(m => m.TaskNo == tasknoVal && m.EndLocate == "009" && m.IsDelete == false); + if (modTask == null) + { + Log.Error(string.Format($"鍑哄簱浠诲姟鏈笅鍙戯紝璇蜂汉宸ュ鐞嗭紝鏃犳硶鎷嗗灈锛�")); + break; + } + + //閫氳繃浠诲姟鍙峰拰鎵樼洏鍙峰悜WMS鐢宠姝ゆ墭鐩樼殑鎷嗗灈淇℃伅 + var http = new HttpService(); + RequestBoxInfoCheckAll tasklist = http.RequestBoxCheckinfo(palletVal, tasknoVal); + if (tasklist.Success != -1) + { + //鑾峰彇鎷嗗灈鐗╂枡鍝佺(闇�瑕佸鍔犵墿鏂欏垽鏂紝鍚屼竴涓墿鏂欏彿鍙兘浼氬嚭鐜颁笉鍚岀殑鐮佸灈瑙勫垯) + var pz = _db.Queryable<WcsMateialPzInfo>().First(m => m.SkuNo == tasklist.data[0].SkuNo); + //涓嬪彂鎷嗘墭瑙勬牸锛屾媶绠辨暟鍜屾墭鐩樹笂鎬荤鏁帮紙涓嶇粦瀹氭満鍣ㄤ汉锛屾媶鍨涗换鍔′俊鎭彧涓嬪彂涓�娆★級 + // 缁橮LC鍐欏叆浠诲姟鏁版嵁 + var listResult = new List<Result>(); + // 鑾峰彇鎵樼洏瑙勫垯 + var Standard = modDevice.listStation.FirstOrDefault(m => m.Text == "瑙勬牸"); + listResult.Add(plcConn.SetPlcDBValue(Standard.PosType, modDevice.DbNumber, Standard.PlcPos, pz.PZNo)); + //鎶撶鏁� + var qty = modDevice.listStation.FirstOrDefault(m => m.Text == "鎷嗙鏁伴噺"); + listResult.Add(plcConn.SetPlcDBValue(qty.PosType, modDevice.DbNumber, qty.PlcPos, tasklist.data[0].Qty.ToString())); + //鎬荤鏁� + var qtycount = modDevice.listStation.FirstOrDefault(m => m.Text == "鎬荤鏁�"); + listResult.Add(plcConn.SetPlcDBValue(qtycount.PosType, modDevice.DbNumber, qtycount.PlcPos, tasklist.data[0].QtyCount.ToString())); + + + // 鏄惁鍐欏叆鎴愬姛 + if (listResult.All(s => s.IsSucceed)) + { + var ret1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "30"); + + } + else + { + Log.Error(string.Format($"鐮佸灈淇℃伅鏈啓鍏ワ紒鎵樼洏鍙凤細" + palletVal + "锛岀爜鍨涗綅锛�" + modDevice.StationNum)); + break; + } + } } - //缁戝畾鏈哄櫒浜烘媶鍨涗綅浠诲姟 - - - //涓嬪彂鎷嗘墭瑙勬牸锛屾媶绠辨暟鍜屾墭鐩樹笂鎬荤鏁� - } - - + break; default: break; } } - } - - /// <summary> - /// 浠剁鎷嗗灈鍒嗘嫞 - /// </summary> - /// <param name="modDevice"></param> - private static async void BoxCheckConveyorLine(WcsDeviceDto modDevice) - { - var plcConn = modDevice.PLCUtil; - - if (modDevice.DbNumber == "DB101") + else { - // 涓绘壂浜や簰娴佺▼ switch (modDevice.Value.ToString()) { case "1": - // 涓绘壂鐢宠鍒嗛亾 wcs鍐欏叆2 + // 1妤间欢绠盤LC璇锋眰WCS璇荤爜 { - // 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡 - if (PLCTaskAction.boDemo) + // 璇诲彇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())) { - // 閫氶亾鍙� - var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); - // 婕旂ず妯″紡鐩存帴鍐欏叆1鍒嗛亾 - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "1"); + // 绠变俊鎭负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) + if (retVal.IsSucceed) { - Log.Error("婕旂ず妯″紡鍐欏叆鍒嗛亾鍙峰け璐�!"); + Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); break; } } } else { + // 绠辩爜 + string boxNoVal = boxNo.ToString(); // 閫氶亾鍙� - var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); + var modLineNo = modDevice.listStation.FirstOrDefault(m => m.Text == "閫氶亾鍙�"); - // 璇诲彇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())) + // 璋冪敤wms鎺ュ彛楠岃瘉绠辩爜鏄惁鍙嫞璐у苟杩斿洖瑁呰溅鍙� + var http = new HttpService(); + RequestloadingAddre requesModel = http.ResultBoxInfoExportWcs(boxNoVal); + if (requesModel.Success != "0") { - // 绠辩爜涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "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("绠辩爜涓簄ull杩涜鍓旈櫎"); + Log.Error("鍑哄簱鍒嗘嫞鏍规嵁绠辩爜鑾峰彇瑁呰溅鍙eけ璐ワ紝杩涜鍓旈櫎銆�" + requesModel.Message); break; } } } - else + else { - // 鏍规嵁绠辩爜鑾峰彇绠卞唴淇℃伅 - string boxNoVal = boxNo.ToString(); - var boxInfo = _db.Queryable<WcsBoxInfo>().First(w => w.IsDelete == false && w.BoxNo == boxNoVal && string.IsNullOrEmpty(w.PalletNo)); - if (boxInfo == null) + // 鍐欏叆鍑哄簱鍒嗛亾鍙� + var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre); + if (ret.IsSucceed) { - // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); - break; - } - } - } - // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿 - var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1"); - if (checkTaskInfo == null) - { - // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�"); - break; - } - } - } - else - { - // 涓巔lc浜や簰鍐欏叆鍒嗛亾鍙峰拰娴佺▼鎺у埗瀛� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.LineNo); - if (ret.IsSucceed) - { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - break; - } - } - } - } - } - } - break; - default: break; - } - } - else - { - // 鎻掔爜浜や簰 - switch (modDevice.Value.ToString()) - { - case "1": - // 鎵樼洏鏉$爜鍙 - { - // 鑾峰彇鎵樼洏鏉$爜閰嶇疆 - var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鏉$爜"); - // 璇诲彇PLC鎵樼洏鏉$爜鍙� - var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos); - string palletNo = palletVal.ToString(); - if (string.IsNullOrEmpty(palletNo)) - { - Log.Error(string.Format("{0}锛岃鍙栫殑鎵樼洏鍙蜂负null", modDevice.Text)); - break; - } - - // 鏍规嵁宸ヤ綅鍙峰皢鎵樼洏鍙蜂繚瀛樺湪鍒嗛亾琛� - var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); - if (checkTaskMedel == null) - { - Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); - break; - } - checkTaskMedel.PalletNo = palletNo; - var rowCount = _db.Updateable(checkTaskMedel).ExecuteCommand(); - if (rowCount > 0) - { - // plc鍐欏叆璇诲彇鎴愬姛琛ㄧず 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) - { - // liudl 姝ゅ闇�娣诲姞 - // 閫氱煡鍒嗘嫞鐮佸灈椤垫洿鏂� - } - } - } - break; - case "20": - // 鐢宠鎻掔爜 - { - // 鑾峰彇鎵樼洏鏉$爜閰嶇疆 - var modAddCode = modDevice.listStation.FirstOrDefault(m => m.Text == "鎻掔爜缁撴灉"); - // 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡 - if (PLCTaskAction.boDemo) - { - // 婕旂ず妯″紡鐩存帴鍐欏叆鎻掔爜缁撴灉 1锛氭垚鍔� - var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); - break; - } - 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)) - { - 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) - { - Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮亄boxNo}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��"); - // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐� - var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); - break; - } - // 鑾峰彇褰撳墠鍒嗛亾鎵樼洏鍙� - var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); - if (checkTaskMedel == null) - { - Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); - break; - } - string palletNo = checkTaskMedel.PalletNo; - if (string.IsNullOrEmpty(palletNo)) - { - Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒", modDevice.StationNum)); - break; - } - // 淇敼鎻掔爜琛� - foreach (WcsBoxInfo item in boxInfo) - { - item.PalletNo = palletNo; - item.UpdateTime = DateTime.Now; - } - - var rowCount = _db.Updateable(boxInfo).ExecuteCommand(); - if (rowCount > 0) - { - // 鎻掔爜鎴愬姛 - var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); - - //鏄惁缁撴壒绠� - if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) - { - // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾 - AutoEndLot(boxInfo[0].LotNo, plcConn, "0"); - } - } - else - { - // 鎻掔爜澶辫触 - Log.Error($"绠辩爜{boxNo};鐮佸灈宸ヤ綅{modDevice.StationNum}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�"); - var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); - if (retVal.IsSucceed) - { - // 瑙﹀彂缁撴壒 涓嶈В缁戝垎閬� - AutoEndLot(boxInfo[0].LotNo, plcConn, "1"); - } - } - } - } - break; - case "40": - // 璇锋眰缁勬墭锛岀敵璇峰叆搴� - { - lock (OLock) - { - // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙� - var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); - // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅 - var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId != modDevice.PlcId); - var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩殑宸ヤ綅" && m.IsDelete == false); - if (checkTaskMedel == null) - { - 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; - } - - // 鐮佸灈宸ヤ綅鎵樼洏鍙� - string palletNo = checkTaskMedel.PalletNo; - - // 鏄惁婕旂ず妯″紡 - if (PLCTaskAction.boDemo) - { - // 鐩存帴绠眞ms鐢宠宸烽亾 - var http = new HttpService(); - string TaskNo = "", EndLocate = ""; - string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); - if (strMsg.Contains("-1")) - { - Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); - break; - } - 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) - { - // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅 - string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2"); - - var listResult = new List<Result>(); - - // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅} - listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅 - var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false); - listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo)); - var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false); - var taskTypeStr = (int)taskModel.TaskType; - listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); - - if (listResult.All(s => s.IsSucceed)) - { - // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� - var retVal1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - if (retVal1.IsSucceed) - { - // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц - taskModel.Status = TaskStatusEnum.Doing; - _db.Updateable(taskModel).ExecuteCommand(); - - // 鎻掑叆浠诲姟鏄庣粏 - var modInsertTaskMonitor = new WcsTaskMonitor() - { - TaskNo = TaskNo, - PlcId = modDevice.Id, - PlcName = modDevice.Text, - InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�", - PalletNo = palletNo, - Status = TaskStatusEnum.Complete, - StartLocat = modDevice.StationNum, - EndLocat = strMsg, - }; - // 鎻掑叆浜や簰鏃ュ織 - _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); - // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } - } - - //// 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅} - //var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue); - //if (retVal.IsSucceed) - //{ - // // 鍐欏叆鐮佸灈浜や簰-缁勬墭鍥炲娴佺▼瀛� - // retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - - // // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц - // taskModel.Status = TaskStatusEnum.Doing; - // _db.Updateable(taskModel).ExecuteCommand(); - //} - } - } - } - else - { - // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹� - var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList(); - if (boxInfoList.Count <= 0) - { - Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum)); - - // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 - var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234"); + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (retVal.IsSucceed) { - // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� - retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - } - break; - } - string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; - int insertCount = _db.Ado.ExecuteCommand(sqlStr); - if (insertCount > 0) - { - // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛� - string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'"; - _db.Ado.ExecuteCommand(sqlStr2); - } - // 鍚慦MS鐢宠宸烽亾 - var http = new HttpService(); - string TaskNo = "", EndLocate = ""; - string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.BoxCount.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList, - modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); - if (strMsg.Contains("-1")) - { - Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); - break; - } - else - { - // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 - var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait); - if (taskModel != null) - { - // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅 - string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2"); - - var listResult = new List<Result>(); - // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅} - listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅 - var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false); - listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo)); - var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false); - var taskTypeStr = (int)taskModel.TaskType; - listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); - - if (listResult.All(s => s.IsSucceed)) - { - // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); - if (retVal.IsSucceed) - { - // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц - taskModel.Status = TaskStatusEnum.Doing; - _db.Updateable(taskModel).ExecuteCommand(); - - // 鎻掑叆浠诲姟鏄庣粏 - var modInsertTaskMonitor = new WcsTaskMonitor() - { - TaskNo = TaskNo, - PlcId = modDevice.Id, - PlcName = modDevice.Text, - InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�", - PalletNo = palletNo, - Status = TaskStatusEnum.Complete, - StartLocat = modDevice.StationNum, - EndLocat = strMsg, - }; - // 鎻掑叆浜や簰鏃ュ織 - _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); - // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } - } + break; } } } } - } + };break; + case "10": + // 1妤间欢绠盤LC璇荤爜澶辫触锛學CS涓嶅仛澶勭悊鐩存帴鍓旈櫎鎵嬫寔鎷h揣銆� + { + + };break; + default: break; - default: break; } } + } /// <summary> @@ -2747,7 +2699,7 @@ // 鍐欏叆缁撴壒淇″彿 var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1"); // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0 - var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0"); + //var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0"); if (ret.IsSucceed) { //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌� @@ -2759,7 +2711,7 @@ //item.BoxType = ""; //item.Qty = 0; item.PZNo = ""; - item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� + item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� 2:缁撴壒涓� //鏇存柊鍒嗘嫞浠诲姟 _db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); @@ -2776,52 +2728,53 @@ private static void Test(WcsDeviceDto modDevice) { - //鍐欐娴嬭瘯璇籹tring - var (res, val) = modDevice.PLCUtil.GetPlcDBValue(PLCDataTypeEnum.String, "DB100", "64"); - Console.WriteLine("DB100.64----" + val); - //娴嬭瘯鎵归噺璇诲彇 - Dictionary<string, PLCDataTypeEnum> listaddress = new Dictionary<string, PLCDataTypeEnum>(); - foreach (var modStation in modDevice.listStation) - { - listaddress.Add(modStation.PlcPos, modStation.PosType); - } - var result = modDevice.PLCUtil.GetPlcBatchDBValue(listaddress); - if (result.Value.Count > 0) - { - foreach (var value in result.Value) - { - Console.WriteLine("鍦板潃" + value.Key + "----鍊�" + value, value); - } - } - if (!result.IsSucceed) - { - foreach (var err in result.ErrList) - { - Console.WriteLine(err); - } - if (result.Value.Count > 0)//鏈夐敊璇殑涔熸湁鎴愬姛鐨� - { + //var strMsg = new HttpService().RequestPackWcs("LN000001"); + ////鍐欐娴嬭瘯璇籹tring + //var (res, val) = modDevice.PLCUtil.GetPlcDBValue(PLCDataTypeEnum.String, "DB100", "64"); + //Console.WriteLine("DB100.64----" + val); + ////娴嬭瘯鎵归噺璇诲彇 + //Dictionary<string, PLCDataTypeEnum> listaddress = new Dictionary<string, PLCDataTypeEnum>(); + //foreach (var modStation in modDevice.listStation) + //{ + // listaddress.Add(modStation.PlcPos, modStation.PosType); + //} + //var result = modDevice.PLCUtil.GetPlcBatchDBValue(listaddress); + //if (result.Value.Count > 0) + //{ + // foreach (var value in result.Value) + // { + // Console.WriteLine("鍦板潃" + value.Key + "----鍊�" + value, value); + // } + //} + //if (!result.IsSucceed) + //{ + // foreach (var err in result.ErrList) + // { + // Console.WriteLine(err); + // } + // if (result.Value.Count > 0)//鏈夐敊璇殑涔熸湁鎴愬姛鐨� + // { - } - } - if (modDevice.Value == 820) - { - //娴嬭瘯鍐欏叆830 - //var result = mod.PLCUtil.SetPlcDBValue(mod.PosType.Value, mod.DbNumber, mod.PlcPos, "830"); - ////鍐欏叆鏄惁鎴愬姛 - //if (result.IsSucceed) - //{ + // } + //} + //if (modDevice.Value == 820) + //{ + // //娴嬭瘯鍐欏叆830 + // //var result = mod.PLCUtil.SetPlcDBValue(mod.PosType.Value, mod.DbNumber, mod.PlcPos, "830"); + // ////鍐欏叆鏄惁鎴愬姛 + // //if (result.IsSucceed) + // //{ - //} - } - else if (modDevice.Value == 840) - { + // //} + //} + //else if (modDevice.Value == 840) + //{ - } - else if (modDevice.Value == 860) - { + //} + //else if (modDevice.Value == 860) + //{ - } + //} } -- Gitblit v1.8.0