From ef83aea1ac3325003b4ed8cddd23d295c6a01b1d Mon Sep 17 00:00:00 2001 From: zxx <Zxx@HanInfo> Date: 星期一, 09 六月 2025 17:31:56 +0800 Subject: [PATCH] jushi --- HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs | 96 +++++++++++++++++++++++++++++++ HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs | 51 ++++++++++------- 2 files changed, 124 insertions(+), 23 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs index dd55966..374ec39 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs @@ -194,7 +194,7 @@ //鎵鹃�妫�叆搴撳尯鍐呮墭鐩樻弧浜嗙殑璐т綅 var locList = db.Queryable<Location>() - .Where(p => p.S_AREA_CODE == reservoirs.areaCode && p.N_LOCK_STATE == 0) + .Where(p => p.S_AREA_CODE == reservoirs.areaCode && p.N_LOCK_STATE == 0 && p.C_ENABLE == "Y") .Where(s => locCntrs.Contains(s.S_CODE.Trim())) .ToList(); @@ -318,7 +318,7 @@ dev = "2"; } var endLocation = db.Queryable<Location>().Where(s => s.S_CODE == endLoc).First(); - if (endLocation == null || endLocation.N_LOCK_STATE != 0) + if (endLocation == null || endLocation.N_LOCK_STATE != 0 || endLocation.C_ENABLE != "Y") { //LogHelper.Info($"鎷嗘墭鏈鸿揣浣峽endLoc}涓嶅瓨鍦ㄦ垨宸茶閿�); return; @@ -422,7 +422,99 @@ } + //浜х嚎鑷姩琛ョ┖鎵�+ public static void AutoRepairEmptyTray() + { + var db = new SqlHelper<object>().GetInstance(); + try + { + var reservoirs1 = Settings.ReservoirAreas.Where(s => s.areaName == "3min绌烘墭鍖�).FirstOrDefault(); + var reservoirs2 = Settings.ReservoirAreas.Where(s => s.areaName == "6min绌烘墭鍖�).FirstOrDefault(); + var linePlcInfo1 = Settings.linePlcInfos.Where(s => s.deviceNo == "1").FirstOrDefault(); + var linePlcInfo2 = Settings.linePlcInfos.Where(s => s.deviceNo == "2").FirstOrDefault(); + ////鎵惧埌绌烘墭缂撳瓨鍖虹殑鎵�湁璐т綅缂栧彿 + //var locList = db.Queryable<Location>() + // .Where(s => s.S_AREA_CODE == reservoirs1.areaCode || s.S_AREA_CODE == reservoirs2.areaCode) + // .Where(s => s.N_LOCK_STATE == 0) + // .OrderByDescending(s => s.N_ROW).OrderByDescending(s => s.N_COL).OrderBy(s => s.N_LAYER) + // .Select(s => s.S_CODE) + // .ToList(); + + + //鏌ヨ姣忔帓鏈�悗涓�垪鏈夋墭鐩樼殑璐т綅 鏍规嵁琛屽垎鍖�鍐嶆壘姣忎竴琛岀殑鏈�悗涓�垪鏈夎揣鐨勮揣浣�+ var list = db.Queryable<Location>(). + Where(a => a.N_CURRENT_NUM > 0).Where(a => a.S_AREA_CODE.Trim() == reservoirs1.areaCode || a.S_AREA_CODE.Trim() == reservoirs2.areaCode) + .PartitionBy(a => a.N_ROW) + .OrderByDescending(a => a.N_COL).Take(1).ToList(); + if (list.Count > 0) + { + for (int i = 0; i < list.Count; i++) + { + //var loc = list[i]; + //鍒ゆ柇閫佸線3瀵歌繕鏄�瀵告媶鎵樻満 + string endLoc = null; + string dev = null; + if (list[i].S_AREA_CODE == reservoirs1.areaCode) + { + endLoc = linePlcInfo1.inLoca; + dev = "1"; + } + else if (list[i].S_AREA_CODE == reservoirs2.areaCode) + { + endLoc = linePlcInfo2.inLoca; + dev = "2"; + } + var endLocation = db.Queryable<Location>().Where(s => s.S_CODE == endLoc).First(); + if (endLocation == null || endLocation.N_LOCK_STATE != 0) + { + //LogHelper.Info($"鎷嗘墭鏈鸿揣浣峽endLoc}涓嶅瓨鍦ㄦ垨宸茶閿�); + return; + } + //鏍¢獙鏄惁鍏佽鏀捐揣 + var plcDeviceTable = S7Helper.plcDeviceTables; + LogHelper.Info($"鑷姩閫佹墭 鎷嗘墭鏈簕dev}:{plcDeviceTable.requestPut1}"); + if ((plcDeviceTable.requestPut1 && dev == "1") || + (plcDeviceTable.requestPut2 && dev == "2")) + { + var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == list[i].S_CODE).First(); + + LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}"); + var res = TaskProcess.CreateTransport(list[i].S_CODE, endLoc, "閫佹墭", locCntrRel.S_CNTR_CODE, 1, 1); + if (res) + { + LogHelper.Info($"璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}浠诲姟鍒涘缓鎴愬姛"); + } + else + { + LogHelper.Info($"璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}浠诲姟鍒涘缓澶辫触"); + } + } + else + { + LogHelper.Info($"鎷嗘墭鏈簕endLoc}涓嶅厑璁告斁妗�); + } + } + } + + + + + + + + } + catch (Exception ex) + { + Console.WriteLine("AutoReplenish:" + ex.Message + ex.StackTrace); + LogHelper.Error("AutoReplenish:" + ex.Message, ex); + throw; + } + + + + } + } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs index 5c14bb5..79e9833 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs @@ -784,11 +784,6 @@ return result; - - - - - return result; } #endregion @@ -814,9 +809,10 @@ for (int i = 0; i < list.Count; i++) { //濡傛灉閿佷簡鎴栬�瀹归噺婊′簡 褰撳墠鏁伴噺 瀹瑰櫒瀹归噺 - if (list[i].N_LOCK_STATE != 0 || list[i].N_CURRENT_NUM >= list[i].N_CAPACITY) + if (list[i].N_LOCK_STATE != 0|| list[i].C_ENABLE != "Y" || list[i].N_CURRENT_NUM >= list[i].N_CAPACITY) { loca.Add(list[i].S_CODE); + LogHelper.Info($"InWorkTransport 婊℃垨鑰呴攣涓婄殑璐т綅锛歿list[i].S_CODE}锛岀姸鎬亄list[i].N_LOCK_STATE}"); } } //绉婚櫎 @@ -858,7 +854,20 @@ //绗﹀悎鏉′欢鐨勬帓搴忛�绗竴涓� 鍏堟壘绗竴涓� if (list.Count > 0) { - result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); + //绔嬪簱鐨勯殢鏈哄垎閰�+ if (reservoirs != null && reservoirs.areaCode.Equals(area)) + { + // 绔嬪簱闅忔満鍒嗛厤绠楁硶 + var random = new Random(); + result = list.OrderBy(x => random.Next()).FirstOrDefault(); + LogHelper.Info($"绔嬪簱闅忔満鍒嗛厤閫夋嫨璐т綅锛歿result?.S_CODE},鐘舵�{result?.N_LOCK_STATE}"); + + } + else + { + result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); + } + } } @@ -889,7 +898,7 @@ for (int i = 0; i < list.Count; i++) { //鍒ゆ柇璐т綅鏄惁琚攣浣忎簡 涓�鏄惁鏈夋墭鐩�- if (list[i].N_LOCK_STATE == 0) + if (list[i].N_LOCK_STATE == 0&& list[i].C_ENABLE =="Y") { var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == list[i].S_CODE).First(); @@ -966,7 +975,7 @@ { return locations .Where(l => targetAreas.Any(area => l.S_CODE.Contains(area))) - .Where(l => l.N_LOCK_STATE == 0 && l.N_CURRENT_NUM < l.N_CAPACITY) + .Where(l => l.N_LOCK_STATE == 0&& l.C_ENABLE == "Y" && l.N_CURRENT_NUM < l.N_CAPACITY) .ToList(); } @@ -995,7 +1004,7 @@ result = db.Queryable<Location>().OrderBy(a => a.N_COL) .Where(a => a.S_AREA_CODE.Trim() == area && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL).First(); - if (result != null && result.N_LOCK_STATE == 0) + if (result != null && result.N_LOCK_STATE == 0 && result.C_ENABLE == "Y") { return result; } @@ -1005,7 +1014,7 @@ else { result = db.Queryable<Location>(). - Where(a => a.S_AREA_CODE.Trim() == area && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0) + Where(a => a.S_AREA_CODE.Trim() == area && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0) .OrderBy(a => a.N_COL).OrderBy(a => a.N_ROW).First(); } } @@ -1202,7 +1211,7 @@ { //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0) + if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") { return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null }; } @@ -1288,7 +1297,7 @@ } //鏍¢獙缁堢偣璐т綅鏄惁瀛樺湪/閿佸畾 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0) + if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") { return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null }; } @@ -1343,7 +1352,7 @@ if (!string.IsNullOrEmpty(model.START_LOC)) { var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0) + if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") { return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null }; } @@ -1396,7 +1405,7 @@ LogHelper.Info($"鏈夌墿鏂檣itemCode}鐨勮揣浣嶇紪鍙穥JsonConvert.SerializeObject(locCntrs)}"); //鎵惧父瑙勯�妫�尯鍐呭惈鏈夋煡鍑虹墿鏂欒揣浣嶇殑璐т綅 var locList = db.Queryable<Location>() - .Where(p => p.S_AREA_CODE == areaCode && p.N_LOCK_STATE == 0) + .Where(p => p.S_AREA_CODE == areaCode && p.N_LOCK_STATE == 0 && p.C_ENABLE == "Y") .Where(s => locCntrs.Contains(s.S_CODE.Trim())) .ToList(); @@ -1442,7 +1451,7 @@ //鎵惧埌璇ョ偣浣嶇殑搴撳尯 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.PointCode).First(); //娌¢攣鍐嶇户缁蛋 - if (loc.N_LOCK_STATE == 0 && loc != null) + if (loc.N_LOCK_STATE == 0 && loc.C_ENABLE =="Y" && loc != null) { var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹鍏ュ簱鍖�).FirstOrDefault(); //濡傛灉鏄�妫�叆搴撳尯 @@ -1531,7 +1540,7 @@ { //鍒涘缓浠诲姟 浠庣┖鎵樼紦瀛樺尯鍒版媶鎵樻満 var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == loc.S_AREA_CODE - && a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_ROW) + && a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").OrderByDescending(a => a.N_ROW) .OrderByDescending(a => a.N_COL).First(); var startLoc = list.S_CODE; @@ -1577,7 +1586,7 @@ } //缁堢偣 var endloc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First(); - if (endloc == null || endloc.N_LOCK_STATE != 0) + if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y") { return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null }; } @@ -1613,7 +1622,7 @@ try { var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.BIND_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0) + if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") { return new Results { Code = "1", Message = $"缁戝畾璐т綅涓嶅瓨鍦ㄦ垨宸茶閿�, Data = null }; @@ -1695,7 +1704,7 @@ { //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇 var loc = db.Queryable<Location>().Where(a => a.S_CODE == startLoc).First(); - if (loc == null || loc.N_LOCK_STATE != 0) + if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") { LogHelper.Info("璧风偣璐т綅涓嶅瓨鍦ㄦ垨宸查攣" + startLoc); return false; @@ -1757,7 +1766,7 @@ { //鏍¢獙缁堢偣璐т綅鏄惁閿� var endloc = db.Queryable<Location>().Where(a => a.S_CODE == endLoc).First(); - if (endloc == null || endloc.N_LOCK_STATE != 0) + if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y") { LogHelper.Info("缁堢偣璐т綅宸查攣" + endLoc); return false; -- Gitblit v1.9.1