From dc600c6298a3231e05875813ec0fa2fa18151d84 Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期一, 14 七月 2025 10:14:38 +0800 Subject: [PATCH] 1 --- HH.WCS.QingXiNongfu/settings.xml | 8 HH.WCS.QingXiNongfu/bin/Debug/settings.xml | 8 HH.WCS.QingXiNongfu/process/DeviceProcess.cs | 324 +++++++++++++++++++++++++++-------- HH.WCS.QingXiNongfu/core/TaskCore.cs | 55 ++++++ HH.WCS.QingXiNongfu/core/Monitor.cs | 99 +++++----- HH.WCS.QingXiNongfu/process/TaskProcess.cs | 14 + 6 files changed, 375 insertions(+), 133 deletions(-) diff --git a/HH.WCS.QingXiNongfu/bin/Debug/settings.xml b/HH.WCS.QingXiNongfu/bin/Debug/settings.xml index 8bb2509..423877b 100644 --- a/HH.WCS.QingXiNongfu/bin/Debug/settings.xml +++ b/HH.WCS.QingXiNongfu/bin/Debug/settings.xml @@ -62,15 +62,15 @@ [ {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"闈掓邯鎴愬搧浠換X1杈撻�绾�,"deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, -{"address":"10.140.9.168","deviceName":"娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, +{"address":"10.140.9.168","deviceName":"550娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, {"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1}, - {"address":"10.140.3.176","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, + {"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, {"address":"10.140.3.150","deviceName":"娉ㄥ鏈�","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1}, - {"address":"10.140.3.161","deviceName":"缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, + {"address":"10.140.9.167","deviceName":"550缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, {"address":"10.140.3.181","deviceName":"3绾跨炕鏂楁満","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1}, @@ -88,7 +88,7 @@ {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"闈掓邯鎴愬搧浠換X4杈撻�绾�,"deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, - {"address":"10.140.9.167","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, + {"address":"10.140.9.161","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, {"address":"10.140.3.167","deviceName":"5L缈绘枟鏈�,"deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, {"address":"10.140.3.155","deviceName":"闂╬lc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1}, diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index 972758d..29f31af 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -1294,18 +1294,18 @@ var sign = Settings.GetTimeStamp(); var res = TaskProcess.CreateTransport(sign, _cl.S_LOC_CODE, endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", _clrel.Select(x => x.S_CNTR_CODE).ToList(), 1, endbit.N_CURRENT_NUM + 1, 1, 50, Last);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : ""); LogHelper.Info($"{r.Key}鍘熺墿鏂欐惉杩�{sign} 浠诲姟 锛屽垱寤簕res} "); - if (CDlist.Contains(endbit.S_AREA_CODE) && res) - { - LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣"); - var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW); - LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 鏄惁鏌ヨ鍒版暟鎹�{JsonConvert.SerializeObject(ggf)}"); - if (ggf == null) - { - var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW }; - inlockLis.Add(rrrr); - LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 娣诲姞鏁版嵁鍒板唴瀛樻帓閿佷腑:{JsonConvert.SerializeObject(inlockLis)}"); - } - } + //if (CDlist.Contains(endbit.S_AREA_CODE) && res) + //{ + // LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣"); + // var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW); + // LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 鏄惁鏌ヨ鍒版暟鎹�{JsonConvert.SerializeObject(ggf)}"); + // if (ggf == null) + // { + // var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW }; + // inlockLis.Add(rrrr); + // LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 娣诲姞鏁版嵁鍒板唴瀛樻帓閿佷腑:{JsonConvert.SerializeObject(inlockLis)}"); + // } + //} //if (res && inlock == null && isCd) //{ // var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW }; @@ -1490,31 +1490,29 @@ } //}); - var task11 = Task.Run(() => + try { - try + // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); + var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList(); + if (LocLock(SX_BQ.RK_BBHJQ)) { - // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); - var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList(); - if (LocLock(SX_BQ.RK_BBHJQ)) - { - //姘存爣鍏ュ簱 - YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); - } - if (yuworders.Any()) - { - LogHelper.Info($" 鏃犺弻鍑哄簱 宸ュ崟寮�惎涓�"); - // 涓按鏍囩閫�簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈�- ZsBQ_CreWJOutOrder(); - } - // 涓按鏍囩閫�簱銆� - ZsBQ_CreWJTK(); + //姘存爣鍏ュ簱 + YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); } - catch (Exception ex) + if (yuworders.Any()) { - LogHelper.Error(ex.Message, ex); + LogHelper.Info($" 鏃犺弻鍑哄簱 宸ュ崟寮�惎涓�"); + // 涓按鏍囩閫�簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈�+ ZsBQ_CreWJOutOrder(); } - }); + // 涓按鏍囩閫�簱銆� + ZsBQ_CreWJTK(); + } + catch (Exception ex) + { + LogHelper.Error(ex.Message, ex); + } + var plc = Settings.GetDeviceInfoList().Where(a => a.deviceName == "T2鎻愬崌鏈�).FirstOrDefault(); var task2 = Task.Run(() => @@ -2007,8 +2005,9 @@ Location Endbit = null; //if (area == area/* WJ_BQ.RK_BQJBQ*/) //{ - var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false); - Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); + var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); + var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3); + Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); if (Endbit != null) { var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62); @@ -4716,21 +4715,21 @@ else { //妫�祴鎸囧畾搴撳尯鐨勭墿鏂欐帓鎬绘暟閲�- if (dsi.TryGetValue(od.S_ROW, out var dictitems1)) - { - //var rows = dictitems1.Select(x => x.Row).Distinct(); - //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW)); - ////鏌ヨ鍙敤璐т綅鏈夊灏�- //List<string> Ky = new List<string>() { "鏃�, "鍑哄簱閿�, "鍏ュ簱閿� }; - //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count(); - //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM); - //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7"); - //if (count < loclistK - 7) - //{ - // autoTurn = true; - // _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od); - //} - } + //if (dsi.TryGetValue(od.S_ROW, out var dictitems1)) + //{ + // //var rows = dictitems1.Select(x => x.Row).Distinct(); + // //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW)); + // ////鏌ヨ鍙敤璐т綅鏈夊灏�+ // //List<string> Ky = new List<string>() { "鏃�, "鍑哄簱閿�, "鍏ュ簱閿� }; + // //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count(); + // //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM); + // //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7"); + // //if (count < loclistK - 7) + // //{ + // // autoTurn = true; + // // _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od); + // //} + //} } Location Endbit = null; @@ -4786,7 +4785,7 @@ var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver, it.OutNum }).ExecuteCommand(); LogHelper.Info($"涓婃彁鍗囨満浠诲姟 鏇存柊宸ュ崟鐨勬椂闂村奖鍝嶈鏁� {ggf}"); - var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; + // var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; //缁欑粓鐐归攣瀹氫綇 if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ") diff --git a/HH.WCS.QingXiNongfu/core/TaskCore.cs b/HH.WCS.QingXiNongfu/core/TaskCore.cs index 6035cc5..2c83a51 100644 --- a/HH.WCS.QingXiNongfu/core/TaskCore.cs +++ b/HH.WCS.QingXiNongfu/core/TaskCore.cs @@ -91,6 +91,61 @@ TaskProcess.OperateStatus(wmsTask, 7); wmsTask.T_END_TIME = DateTime.Now; TaskHelper.UpdateStatus(wmsTask, "鍙栨秷"); + try + { + if (wmsTask.S_TYPE.Contains("娉ㄥ婊℃墭-鍏ュ簱")) + { + var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_START_LOC)).FirstOrDefault(); + if (plc != null) + { + for (var i = 0; i < plc.location.Length; i++) + { + if (wmsTask.S_START_LOC == plc.location[i]) + { + PlcHelper.SendHex(plc.address, "3F00" + (i + 1) + "0" + "0d0a"); + break; + } + } + } + } + else if (wmsTask.S_TYPE.Contains("娉ㄥ绌烘嫋-鍑哄簱")) + { + var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_END_LOC)).FirstOrDefault(); + if (plc != null) + { + for (var i = 0; i < plc.location.Length; i++) + { + if (wmsTask.S_END_LOC == plc.location[i]) + { + PlcHelper.SendHex(plc.address, "3F00" + (i + 1) + "0" + "0d0a"); + break; + } + } + } + } + else if (wmsTask.S_TYPE.Contains("鐡跺澂缈绘枟鏈烘弧鎵�鍑哄簱")) + { + var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_END_LOC)).FirstOrDefault(); + if (plc != null) + { + PlcHelper.SendHex(plc.address, "3F00110D0A"); + } + + } + else if (wmsTask.S_TYPE.Contains("鐡跺澂缈绘枟鏈虹┖鎵�鍏ュ簱")) + { + var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_START_LOC)).FirstOrDefault(); + if (plc != null) + { + PlcHelper.SendHex(plc.address, "3F00110D0A"); + } + } + } + catch (Exception ex) + { + + throw; + } break; case 8://寮哄埗瀹屾垚 - 鏈娇鐢� r = TaskProcess.OperateStatus(wmsTask, 8); diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs index 402373f..f85d37e 100644 --- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs +++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs @@ -98,7 +98,9 @@ //缈绘枟鏈�- 鐡跺澂 else if (plc.deviceType == 5) { - AnalysisBottleCapTipper(data, plc); + + PpFdjData(data, plc); + // AnalysisBottleCapTipper(data, plc); } //缈绘枟鏈�- 鐡剁洊 4 姘寸洊銆� 鏃犺弻 else if (plc.deviceType <= 6) @@ -2001,6 +2003,12 @@ private static object lockoIn = new object(); private static object lockoOut = new object(); + /// <summary> + /// 鐡跺澂鏈�+ /// </summary> + /// <param name="plc"></param> + /// <param name="location"></param> + /// <returns></returns> static bool BottlePEMInfoFullTwo(Settings.deviceInfo plc, string location) { try @@ -2060,6 +2068,10 @@ } } } + if (staBit != null) + { + break; + } } if (staBit != null) { @@ -2103,9 +2115,6 @@ foreach (var Area in AreaList) { var Row = jcjykk.Select(e => e.N_ROW).Distinct().ToList(); - - - var EndList = GetInWork(Area, Row, true, workOrder.SQL_ItemCode); if (EndList.Any()) { @@ -2123,6 +2132,10 @@ break; } } + } + if (endBit != null) + { + break; } } if (endBit != null) @@ -2266,7 +2279,7 @@ /// <param name="Row"></param> /// <param name="ItemCode"></param> /// <returns></returns> - public static List<Location> GetInWork(string AreaCode, List<int> Row, bool InOutLock = true, string ItemCode = "") + public static List<Location> GetInWork(string AreaCode, List<int> Row, bool InOutLock = true, string ItemCode = "", string Jt = "") { var lstCanOutL = new List<Location>(); try @@ -2308,7 +2321,22 @@ var MaxCol = Mhw.FindAll(e => e.N_ROW == item.N_ROW).OrderByDescending(c => c.N_COL).FirstOrDefault(); if (MaxCol != null) { - lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL); + if (!string.IsNullOrEmpty(ItemCode) && AreaCode == "QXPPXXQ") + { + lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL); + } + else if (AreaCode == "QXPPXXQ" && Jt == "缈绘枟鏈�) + { + lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL > MaxCol.N_COL); + } + //if (!string.IsNullOrEmpty(ItemCode) && AreaCode == "QXPPXXQ") + //{ + // lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL); + //} + //else + //{ + // lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL > MaxCol.N_COL); + //} } } @@ -4132,6 +4160,214 @@ return result; } + public static void PpFdjData(string Data, Settings.deviceInfo plc) + { + try + { + if (Data.Length == 2) + { + if (Data == "11") + { + BottlePpFdjFullTwo(plc, plc.location[0]); + } + } + } + catch (Exception ex) + { + + throw; + } + } + private static object lockoPp = new object(); + /// <summary> + /// 鐡跺澂缈绘枟鏈�+ /// </summary> + /// <param name="plc"></param> + /// <param name="location"></param> + /// <returns></returns> + static bool BottlePpFdjFullTwo(Settings.deviceInfo plc, string location) + { + try + { + lock (lockoPp) + { + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); + Location endBit = null; + Location staBit = null; + bool SentTask = false; + if (location == "") + { + throw new Exception("璐т綅涓虹┖"); + } + var workOrder = WCSHelper.GetWorkOrder(plc.deviceName); + if (workOrder == null) + { + throw new Exception("娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟"); + } + //鍏堟煡璇㈣揣浣嶆湁娌℃湁璐� 婊$殑涓嬫弧 绌虹殑鍒欎笂绌�+ // = newDb.Queryable<Location>().FindAll(x => x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM == 0); + var hojs = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == location).First(); + if (hojs != null && hojs.S_LOCK_STATE != "鏃�) + { + return false; + } + var bcpList = WCSHelper.BcpQyOrderList(plc.deviceName); + if (bcpList.Count() == 0) + { + throw new Exception("鏈垝鍒嗗搴旂殑鍖哄煙 鏌ョ湅杩欎釜浜х嚎鏄惁鍦ㄥ崐鎴愬搧鍖哄煙琛ㄨ繘琛岄厤缃�骞跺惎鐢�); + } + if (hojs.N_CURRENT_NUM == 0)//涓婃墭鐩�鍚﹀垯涓嬫墭鐩�+ { + //涓婃墭鐩�婊℃墭 + var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "婊℃墭").OrderByDescending(g => g.N_PRI).ToList(); + var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList(); + foreach (var Area in AreaList) + { + var Row = jcjykk.FindAll(f => f.S_AREA_CODE == Area).Select(e => e.N_ROW).Distinct().ToList(); + //杩囩畻娉�璁$畻璧风偣 + var staList = GetOutWork(Area, Row, true, workOrder.SQL_ItemCode); + if (staList.Any()) + { + foreach (var item in jcjykk) + { + Location sta = null; + var staLisL = staList.FindAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW).ToList(); + if (staLisL.Any()) + { + if (item.S_AREA_CODE != "QXPPXXQ") + { + sta = staLisL.OrderByDescending(e => e.N_COL).First(); + } + else + { + sta = staLisL.OrderBy(e => e.N_COL).First(); + } + + } + if (sta != null) + { + staBit = sta; + break; + } + } + } + if (staBit != null) + { + break; + } + } + if (staBit != null) + { + var _ctrl = LocationHelper.GetLocCntrRel(staBit.S_LOC_CODE); + int StaLayer = staBit.N_CURRENT_NUM; + var carryCntrs = new List<string> { _ctrl.FirstOrDefault().S_CNTR_CODE };//DateTime.Now.ToString("yyMMddHHmmss") }; + var bb = TaskProcess.CreateTransport(workOrder.SQL_WorkNo, staBit.S_LOC_CODE, location, "鐡跺澂缈绘枟鏈烘弧鎵�鍑哄簱", carryCntrs, StaLayer, 1, carryCntrs.Count, plc.taskPri); + if (bb) + { + SentTask = true; + } + } + if (SentTask) + { + return SentTask; + } + } + else + { + var time = LocationHelper.GetT_FULL_TIME(location); + LogHelper.Info(location + "锛氭墭鐩樻斁缃椂闂�(" + time + ") 璐т綅鎵樼洏鏁伴噺(" + hojs.N_CURRENT_NUM + ")"); + if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalMinutes < 1) + { + PlcHelper.SendHex(plc.address, "3F00110D0A"); + return false; + } + LocCntrRel _clrel = LocationHelper.GetLocCntrRel(hojs.S_LOC_CODE).FirstOrDefault(); + //涓嬫墭鐩�绌烘 + var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "绌烘墭").OrderByDescending(g => g.N_PRI).ToList(); + var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList(); + + //杩囩畻娉�璁$畻璧风偣 + foreach (var Area in AreaList) + { + var Row = jcjykk.Select(e => e.N_ROW).Distinct().ToList(); + var EndList = GetInWork(Area, Row, true, "", "缈绘枟鏈�); + if (EndList.Any()) + { + foreach (var item in jcjykk) + { + Location End = null; + var EndListT = EndList.FindAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW).ToList(); + if (EndListT.Count() > 0) + { + if (item.S_AREA_CODE != "QXPPXXQ") + { + End = EndListT.OrderBy(e => e.N_COL).First(); + } + else + { + End = EndListT.OrderByDescending(e => e.N_COL).First(); + } + } + if (End != null) + { + endBit = End; + break; + } + } + } + if (endBit != null) + { + break; + } + } + if (endBit != null) + { + var _ctrl = LocationHelper.GetLocCntrRel(location); + var ggf = 0; + foreach (var item in _ctrl) + { + var cntrrel = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE).FirstOrDefault(); + if (cntrrel != null) + { + ggf = newDb.Deleteable<CntrItemRel>().Where(it => it.S_ID.Trim() == cntrrel.S_ID.Trim()).ExecuteCommand(); + } + } + //if (ggf > 0) + //{ + int endLayer = endBit.N_CURRENT_NUM + 1; + var carryCntrs = new List<string> { _ctrl.FirstOrDefault().S_CNTR_CODE }; + var bb = TaskProcess.CreateTransport(workOrder.SQL_WorkNo, location, endBit.S_LOC_CODE, "鐡跺澂缈绘枟鏈虹┖鎵�鍏ュ簱", carryCntrs, 1, endLayer, carryCntrs.Count, plc.taskPri); + if (bb) + { + SentTask = true; + //瑙﹀彂鑷姩瑙g粦 + //var zdjb = jcjykk.FindAll(e => e.SQL_UsingNow == "Y").OrderByDescending(g => g.N_PRI).ToList(); + //foreach (var item in zdjb) + //{ + + //} + //var Jb = newDb.Queryable<Location>().Where(e => e.S_AREA_CODE == Area && Row.Contains(e.N_ROW)).ToList(); + ////鏌ヨ绗竴鎺掓槸鍚︽弧 骞朵笖绗簩鎺掑叆婊′笁涓悗瑙g粦绗竴鎺�+ ////1.鏌ヨ绗竴鎺掓槸鍚︽湁绌鸿揣浣�鏈�鍒欒烦杩�+ } + // } + } + if (SentTask) + { + return SentTask; + } + + } + return true; + } + } + catch (Exception ex) + { + LogHelper.Info(plc.deviceName + $" 鎶ラ敊: {ex.Message}"); + return false; + } + } @@ -4148,7 +4384,6 @@ internal static void AnalysisBottleCapTipper(string data, Settings.deviceInfo plc) { - //LogHelper.Info($"{plc.deviceName}-{plc.address}-{plc.deviceType}-data:{data}銆�"); bool containsKey = true; int llll = 0; if (!FJD_wwwwFD.TryGetValue(plc.deviceName.Trim(), out llll)) @@ -4164,46 +4399,8 @@ bool flag = data.Length == 2; if (flag) { - //LogHelper.Info(string.Concat(new string[] - //{ - // "缈绘枟鏈洪棬 ", - // plc.deviceNo[1], - // " - 淇″彿锛�", - // data, - // " 闂ㄧ姸鎬侊細锛�寮�鍏筹級 ", - // data.Substring(3, 1) - // }), "鑷姩闂�); - string s = "2";// data.Substring(3, 1); + string s = "2"; - //bool flag4 = DeviceProcess.doorStatus.Keys.Contains(plc.deviceNo[1]); - //if (flag4) - //{ - // DeviceProcess.doorStatus[plc.deviceNo[1]].info = s; - // DeviceProcess.doorStatus[plc.deviceNo[1]].modify = DateTime.Now; - //} - //else - //{ - // DeviceProcess.doorStatus.Add(plc.deviceNo[1], new DeviceProcess.signalInfo - // { - // info = data.Substring(3, 1), - // modify = DateTime.Now - // }); - //} - //if (data.Substring(1, 1) == "1") - //{ - // LogHelper.Info(plc.location[0] + "璇诲埌11淇″彿銆傦紙12淇″彿鎸佺画鏁伴噺锛夛細" + llll); - // if (llll < 10) - // { - // llll = 0; - // LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿,鎴栬繛缁�2淇″彿涓嶈冻10娆�); - // if (containsKey) - // FJD_wwwwFD[plc.deviceName.Trim()] = llll; - // else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll); - - // return; - // } - //} - //else if (data.Substring(1, 1) == "0" || data.Substring(1, 1) == "2") { LogHelper.Info(plc.location[0] + $"璇诲埌1 0/2淇″彿銆傦紙1 0/2淇″彿鎸佺画鏁伴噺锛夛細" + llll); @@ -4213,11 +4410,7 @@ else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll); } - //if (llll < 10) - //{ - // LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿 ,鎴栬繛缁�2淇″彿涓嶈冻10娆�" + llll + "娆�"); - // return; - //} + LogHelper.Info(plc.deviceName + "鏌ョ湅缈绘枟楦$┖绛愪綅" + (data.Substring(1, 1) == "1").ToString() + LocationHelper.CheckLocFree(plc.location[0]).ToString(), "缈绘枟鏈�); bool flag5 = data.Substring(1, 1) == "1" && LocationHelper.CheckLocFree(plc.location[0]) && s == "2"; @@ -4230,15 +4423,7 @@ } else { - //if (llll > 10) - //{ - // LogHelper.Info(plc.deviceName + "浜ょ缁欑炕鏂椾俊鍙峰悗杩樻病鏈夌炕鏂�, "缈绘枟鏈�); - // return; - //} - //else - //{ - // LogHelper.Info(plc.deviceName + "浜ょ缁欑炕鏂椾俊鍙峰悗 宸茬炕鏂�" + llll, "缈绘枟鏈�); - //} + WorkOrder workOrder = WCSHelper.GetWorkOrder(plc.deviceName); bool flag7 = workOrder == null; @@ -4293,21 +4478,17 @@ if (flag11 > 30) { - //if (data.Substring(1, 1) == "1") - //{ + LogHelper.Info(plc.location[0] + "璇诲埌11淇″彿銆傦紙1 0/2淇″彿鎸佺画鏁伴噺锛夛細" + llll); - //if (flag11 < 3.0) + if (llll < 0) { - //llll = 0; + LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿,浣嗘槸娌″嚭鐜拌繃1 0/2"); - //if (containsKey) - // FJD_wwwwFD[plc.deviceName.Trim()] = llll; - //else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll); + return; } - //} var b = TaskProcess.FDJTakeEmpyt2(plc, workOrder); @@ -4321,20 +4502,13 @@ } else { - ///- LogHelper.Info($"{plc.deviceName} 璐т綅 {plc.location} 婊℃鍗歌揣涓嶈冻30S缂撳啿鏃堕棿銆�"); - - //if (time != null && DateTime.Now.Subtract(time ?? DateTime.Now).TotalSeconds < 30) - //{ LogHelper.Info($"缈绘枟鏈烘弧妗嗘斁涓嬫椂闂磠time}涓嶈冻30绉� 鍥炲啓缈绘枟淇″彿", "缈绘枟鏈�); PlcHelper.SendHex(plc.address, $"3f 00 11 0d 0a"); - if (containsKey) FJD_wwwwFD[plc.deviceName.Trim()] = 0; else FJD_wwwwFD.Add(plc.deviceName.Trim(), 0); - return; - //} } } } diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs index da88055..a058a04 100644 --- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs +++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs @@ -1353,6 +1353,19 @@ else return false; } } + else if (taskType.Contains("鐡跺澂缈绘枟鏈虹┖鎵�) && mst.S_END_LAREA == "QXPPXXQ") + { + start = LocationHelper.GetAgvSite(mst.S_START_LOC); + end = LocationHelper.GetAgvSite(mst.S_END_LOC, "2"); + LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end} 浠诲姟:" + mst.S_TASK_NO); + + } + else if (taskType.Contains("鐡跺澂缈绘枟鏈烘弧鎵�) && mst.S_START_LAREA == "QXPPXXQ") + { + start = LocationHelper.GetAgvSite(mst.S_START_LOC, "2"); + end = LocationHelper.GetAgvSite(mst.S_END_LOC); + LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end} 浠诲姟:" + mst.S_TASK_NO); + } //else if (taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�璐ф灦鍑烘彁鍗囨満")) //{ // var ts = 5; @@ -1581,6 +1594,7 @@ LogHelper.Info("SendTask " + mst.S_TASK_NO); Console.WriteLine("start=" + start.ToString()); Console.WriteLine("end= " + end.ToString()); + NDC.AGVResult res = NDC.AddNewOrder(TSNo, new Dictionary<string, string> { { diff --git a/HH.WCS.QingXiNongfu/settings.xml b/HH.WCS.QingXiNongfu/settings.xml index 8bb2509..423877b 100644 --- a/HH.WCS.QingXiNongfu/settings.xml +++ b/HH.WCS.QingXiNongfu/settings.xml @@ -62,15 +62,15 @@ [ {"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"闈掓邯鎴愬搧浠換X1杈撻�绾�,"deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, -{"address":"10.140.9.168","deviceName":"娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, +{"address":"10.140.9.168","deviceName":"550娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1}, {"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1}, - {"address":"10.140.3.176","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, + {"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1}, {"address":"10.140.3.150","deviceName":"娉ㄥ鏈�","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1}, - {"address":"10.140.3.161","deviceName":"缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, + {"address":"10.140.9.167","deviceName":"550缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1}, {"address":"10.140.3.181","deviceName":"3绾跨炕鏂楁満","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1}, @@ -88,7 +88,7 @@ {"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"闈掓邯鎴愬搧浠換X4杈撻�绾�,"deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1}, - {"address":"10.140.9.167","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, + {"address":"10.140.9.161","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1}, {"address":"10.140.3.167","deviceName":"5L缈绘枟鏈�,"deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1}, {"address":"10.140.3.155","deviceName":"闂╬lc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1}, -- Gitblit v1.9.1