From 1b4deb836c68efb689e13d3512888ae04fc99f09 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期五, 11 七月 2025 17:26:12 +0800 Subject: [PATCH] 11 --- HH.WCS.Mobox3.NongFuLinZhi/Program.cs | 1 HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs | 108 +++++++++++++++++++++++--- HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs | 95 +++++++++++++++++++++++ HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs | 2 4 files changed, 191 insertions(+), 15 deletions(-) diff --git a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs index 3c4f2aa..4952c11 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs @@ -100,6 +100,7 @@ tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //鎺ラ┏浣嶅叆搴� tasks.Add(GetTask(Monitor.PPFDFullIn)); //鐡跺澂缈绘枟鏈洪潪鎬ヤ骇婊℃鍖鸿ˉ婊℃墭 tasks.Add(GetTask(Monitor.PGFDFullIn)); //鐡剁洊缈绘枟鏈洪潪鎬ヤ骇婊℃鍖鸿ˉ婊℃墭 + tasks.Add(GetTask(Monitor.PGFDFullInJC)); //鐡剁洊缈绘枟鏈烘�浜ф弧妗嗗尯琛ユ弧鎵�绌烘墭鍖哄煙琛ョ┖鎵� tasks.Add(GetTask(Monitor.PPFDFullInEmpty)); //鐡跺澂娉ㄥ鏈洪潪鎬ヤ骇绌烘鍖鸿ˉ绌烘墭 diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs index 188adbe..45008d6 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs @@ -307,29 +307,111 @@ /// </summary> internal static void PPFDFullInEmpty() { + //鐡跺澂闈炲嵆浜х┖妗嗗尯鍫嗗彔搴撳尯涓�叡鍥涗釜璐т綅锛屽鏋滄湁涓変釜璐т綅鏄弧鐨勶紝灏卞紑濮嬭浆杩愬埌鐡跺澂搴撳尯 + //濡傛灉婊¤揣浣嶅皬浜庣瓑浜庝竴灏卞紑濮嬩粠婊℃缂撳瓨鍖虹┖妗嗗尯鍩熻浆杩愶紝濡傛灉婊℃缂撳瓨鍖虹┖妗嗗尯鍩熸棤绌烘墭锛屽垯浠庣摱鍧簱杞繍 + var db = new SqlHelper<object>().GetInstance(); - var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).First(); - if(workInfo != null) + + var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault(); + if (areaInfo != null) { - var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault(); - if(areaInfo != null) + var LocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY).ToList(); + if(LocList.Count <= 1) { - var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First(); - if(locInfo != null) + //闇�浠庡簱鍖鸿ˉ鍏呯┖鎵�+ Location location = TaskProcess.FJCKTLoc(); + var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).First(); + if(location != null && locInfo != null) { - //鐢熸垚浠诲姟 - Location location = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", ""); - if (location != null) + string cntrCode = getCntrCode(db, location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂"); + } + } + if (LocList.Count >= 2) + { + //闇�灏嗙┖鎵樿浆杩愬埌搴撳尯 + foreach (var a in LocList) + { + if(a.S_LOCK_STATE == "鏃�) { - string cntrCode = getCntrCode(db, location); + //鐢熸垚浠诲姟 + string cntrCode = getCntrCode(db, a); //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂"); + WMSHelper.CreateOpTask(a.S_CODE, "", "鍏ュ簱", "鐡跺澂闈炴�浜х┖妗嗗叆搴�, cntrCode, "鐡跺澂"); + break; } } } - else + + } + #region + //var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).First(); + //if(workInfo != null) + //{ + // var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault(); + // if(areaInfo != null) + // { + // var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First(); + // if(locInfo != null) + // { + // //鐢熸垚浠诲姟 + // Location location = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", ""); + // if (location != null) + // { + // string cntrCode = getCntrCode(db, location); + // //鍒涘缓浣滀笟 + // WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂"); + // } + // } + // } + // else + // { + // LogHelper.Info("鐡跺澂闈炲嵆浜х┖妗�鏈厤缃�); + // } + //} + #endregion + + } + + internal static void PGFDFullInJC() + { + var db = new SqlHelper<object>().GetInstance(); + var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "Y" && a.S_WorkState == "鎵ц涓�).First(); + if(workInfo != null) + { + var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃" && a.enable == 1).FirstOrDefault(); + if(areaInfo != null) { - LogHelper.Info("鐡跺澂闈炲嵆浜х┖妗�鏈厤缃�); + var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First(); + if (locInfo != null) + { + //寮�杞繍 + Location startLoca = TaskProcess.BCPInOrOut(db, false, "鐡跺澂鍗充骇婊℃缂撳瓨", workInfo.S_ItemCode); + if (startLoca != null) + { + //鍒涘缓浣滀笟 + string cntrCode = getCntrCode(db, startLoca); + WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo.S_CODE, "鍑哄簱", "鐡跺澂鎬ヤ骇琛ユ弧妗�, cntrCode, ""); + } + } + } + + areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇绌烘" && a.enable == 1).FirstOrDefault(); + if (areaInfo != null) + { + var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).ToList(); + if (locInfo.Count == 2) + { + //寮�杞繍 + Location startLoca = TaskProcess.BCPInOrOut(db, false, "鐡跺澂鍗充骇婊℃缂撳瓨", ""); + if (startLoca != null) + { + //鍒涘缓浣滀笟 + string cntrCode = getCntrCode(db, startLoca); + WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo[0].S_CODE, "鍑哄簱", "鐡跺澂鎬ヤ骇琛ョ┖妗�, cntrCode, ""); + } + } } } } diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs index 97110a5..fd850f0 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs @@ -1306,6 +1306,10 @@ .ToList(); if (locInfo.Count > 0) { + if(areaName == "鐡跺澂鍗充骇婊℃缂撳瓨") + { + locInfo = locInfo.Where(a => a.N_ROW == 1 || a.N_ROW == 2).ToList(); + } LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}"); foreach (var a in locInfo) { @@ -1437,6 +1441,10 @@ var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList(); if (locList.Count > 0) { + if(areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && string.IsNullOrEmpty(itemCode)) + { + locList = locList.Where(a => a.N_ROW == 3).ToList(); + } LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}"); foreach (var a in locList) { @@ -1629,7 +1637,60 @@ { LogHelper.Info($"{endAreaName}鏈厤缃�); } - + if(result == null) + { + if(endAreaName == "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡跺澂锛�) + { + //鐡跺澂闈炲嵆浜х┖鎵樹笅绾�濡傛灉闈炲嵆浜х┖妗嗗簱鍖烘棤娉曞叆搴擄紝鍒欎笅绾垮埌鐡跺澂鍗充骇婊℃缂撳瓨 4 5 鎺�+ areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault(); + if (areaInfo != null) + { + var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && (a.N_ROW == 4 || a.N_ROW == 5) && a.N_CURRENT_NUM == 0).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); + if (locList.Count > 0) + { + foreach (var a in locList) + { + var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.S_ROW == a.S_ROW && a.S_LOCK_STATE == "鏃�).First(); + if (rowInfo != null && a.S_LOCK_STATE == "鏃�) + { + result = a; + break; + } + + } + } + } + else + { + LogHelper.Info("鐡跺澂鍗充骇婊℃缂撳瓨鏈厤缃�); + } + } + if(endAreaName == "缈绘枟鏈哄嵆浜х┖鎵樹笅绾匡紙鐡跺澂锛�) + { + //鐡跺澂鍗充骇绌烘墭涓嬬嚎 濡傛灉鍗充骇绌烘搴撳尯鏃犳硶鍏ュ簱锛屽垯涓嬬嚎鍒扮摱鍧嵆浜ф弧妗嗙紦瀛�3 鎺�+ areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault(); + if (areaInfo != null) + { + var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_ROW == 3 && a.N_CURRENT_NUM == 0).OrderBy(a => a.N_COL).First(); + if (locInfo != null ) + { + var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == locInfo.S_AREA_CODE && b.S_ROW == locInfo.S_ROW && locInfo.S_LOCK_STATE == "鏃�).First(); + if (rowInfo != null && locInfo.S_LOCK_STATE == "鏃�) + { + result = locInfo; + } + } + } + else + { + LogHelper.Info("鐡跺澂鍗充骇婊℃缂撳瓨鏈厤缃�); + } + if(result == null) + { + BCPEmptyOut(db, "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡跺澂锛�); + } + } + } return result; } @@ -2394,6 +2455,38 @@ } } + /// <summary> + /// 璁$畻鐡跺澂闈炲嵆浜х┖鎵樿捣鐐�+ /// </summary> + /// <returns></returns> + internal static Location FJCKTLoc() + { + var db = new SqlHelper<object>().GetInstance(); + Location result = null; + //鍦ㄧ摱鍧嵆浜ф弧妗�鏌ヨ 4 5涓ゆ帓鐨勭┖妗�+ var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault(); + if(areaInfo != null) + { + var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && (a.N_ROW == 4 || a.N_ROW == 5) && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); + if(locList.Count > 0) + { + foreach (var a in locList) + { + var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.S_ROW == a.S_ROW && b.S_LOCK_STATE == "鏃�).First(); + if(rowInfo != null && a.S_LOCK_STATE == "鏃�) + { + result = a; + break; + } + } + } + } + if(result == null) + { + result = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", ""); + } + return result; + } } } diff --git a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs index e6cc54a..ad228be 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs @@ -703,7 +703,7 @@ else { LogHelper.Info($"鍏ュ簱浠诲姟 璁$畻缁堢偣锛屼换鍔$被鍨嬶細{a.S_OP_DEF_NAME}"); - if (a.S_OP_DEF_NAME == "鎺ラ┏浣嶅叆搴� || a.S_OP_DEF_NAME == "鐡剁洊绌烘墭鍏ュ簱") + if (a.S_OP_DEF_NAME == "鎺ラ┏浣嶅叆搴� || a.S_OP_DEF_NAME == "鐡剁洊绌烘墭鍏ュ簱" || a.S_OP_DEF_NAME == "鐡跺澂闈炴�浜х┖妗嗗叆搴�) { string itemCode = ""; var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_START_LOC).First(); -- Gitblit v1.9.1