From cb5c4a6e74c9cc070a67051256692b82c3c8b8f0 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期三, 18 六月 2025 17:12:03 +0800 Subject: [PATCH] 11 --- HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs | 251 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 172 insertions(+), 79 deletions(-) diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs index 81846c5..a08a08a 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs @@ -9,6 +9,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using static HH.WCS.Mobox3.NFLZ.wms.WMSHelper.AddChangeModel; using static System.Runtime.CompilerServices.RuntimeHelpers; namespace HH.WCS.Mobox3.NFLZ.core @@ -60,10 +61,11 @@ if (locInfo != null) { LogHelper.Info($"銆愮摱鐩栨弧鎵樿浆杩愩�鐡跺澂鎺ラ┏浣嶆煡璇㈠埌闇�叆搴撶殑鐡跺澂锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); - if (locInfo.LocCntrRel != null) + string cntrCode = getCntrCode(db, locInfo); + if (string.IsNullOrEmpty(cntrCode)) { //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, locInfo.LocCntrRel.S_CNTR_CODE, "鐡剁洊"); + WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntrCode, "鐡剁洊"); } else { @@ -77,15 +79,23 @@ } #endregion - #region 鐡跺澂绌烘墭鍏ュ簱 + #region 鐡剁洊绌烘墭鍏ュ簱 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 == a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First(); - if(locInfo != null && locInfo.LocCntrRel != null) + 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(locInfo != null) { - //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鐡剁洊绌烘墭鍏ュ簱", locInfo.LocCntrRel.S_CNTR_CODE, "鐡剁洊"); + string cntrCode = getCntrCode(db, locInfo); + if (string.IsNullOrEmpty(cntrCode)) + { + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鐡剁洊绌烘墭鍏ュ簱", cntrCode, "鐡剁洊"); + } + else + { + LogHelper.Info($"銆愮摱鐩栫┖鎵樿浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); + } } } else @@ -101,18 +111,16 @@ 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 (locInfo != null) { - string cntr = ""; - var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList(); - if (cntrList.Count > 0) + string cntrCode = getCntrCode(db, locInfo); + if (!string.IsNullOrEmpty(cntrCode)) { - foreach (var a in cntrList) - { - cntr = cntr + a.S_CNTR_CODE + ","; - } + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntrCode, "鐡跺澂"); } - cntr = cntr.TrimEnd(','); - //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntr, "鐡跺澂"); + else + { + LogHelper.Info($"銆愮摱鑳氭弧鎵樿浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); + } } } else @@ -121,90 +129,175 @@ } #endregion - } /// <summary> - /// 鍗婃垚鍝佸伐鍗曠洃鎺�+ /// 鐡跺澂缈绘枟鏈洪潪鎬ヤ骇婊℃鍖鸿ˉ婊℃墭 /// </summary> - /// <exception cref="NotImplementedException"></exception> - internal static void BCPWorkSurveillance() + internal static void PPFDFullIn() { - //鐡剁洊缈绘枟鏈哄伐鍗�- //寮�惎锛屾煡璇�鐡剁洊闈炴�浜ф�鐢�鐗╂枡鏄惁婊★紝涓嶆弧鍒欒ˉ鍏呯墿鏂�- //鍏抽棴锛�1銆佹煡璇�鐡剁洊绌烘墭 鏄惁杩樻湁鎵樼洏锛屾湁鍒欏叆搴� 2銆佹煡璇㈢摱鐩栭潪鍗充骇鍗崇敤 鏄惁鏈夌墿鏂欙紝 鏈夊垯鍏ュ簱 - //鐡跺澂缈绘枟鏈�- //寮�惎锛屾煡璇㈡槸鍚︿负闈炲嵆浜у嵆鐢紝濡傛灉涓洪潪鍗充骇鍗崇敤锛屽垯鍒ゆ柇鐡跺澂闈炲嵆浜у嵆鐢ㄥ簱鍖烘槸鍚︽弧锛�涓嶆弧鍒欒ˉ绌虹墿鏂�- //鍏抽棴锛屾煡璇�鐡跺澂闈炲嵆浜у嵆鐢�鐡跺澂鍗充骇鍗崇敤A 鐡跺澂鍗充骇鍗崇敤B 鏄惁鏈夌墿鏂欙紝鏈夊垯鍏ュ簱 - //鐡跺澂娉ㄥ鏈�- //寮�惎锛屾煡璇�鐡跺澂绌烘墭 鏄惁绌烘墭鏁伴噺澶т簬3鎵橈紝濡傛灉涓嶅ぇ浜庯紝鍒欒ˉ绌烘墭 - //鍏抽棴锛屾煡璇�鐡跺澂绌烘墭 鏄惁鏈夌┖鎵橈紝鏈夊垯鍏ュ簱 - - - - //鍒ゆ柇褰撳墠鍗婃垚鍝佸伐鍗曟槸鍚︽湁鎵ц涓殑浠诲姟 - //宸ュ崟绫诲瀷锛�1銆佸啘澶灄鑺�鐡跺澂鏈�2銆佸啘澶灄鑺�鐡剁洊缈绘枟鏈�3銆佸啘澶灄鑺�鐡跺澂缈绘枟鏈�- bool PPZUUSE = false; //鐡跺澂鏈烘槸鍚︿娇鐢�- bool PPFDUSE = false; //鐡跺澂缈绘枟鏈烘槸鍚︿娇鐢�- bool PGFDUSE = false; //鐡剁洊缈绘枟鏈烘槸鍚︿娇鐢�- + //浜х嚎鍙�锛�鍐滃か鏋楄姖-1鍙风摱鍧炕鏂楁満 var db = new SqlHelper<object>().GetInstance(); - var workList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_WorkState == "鎵ц涓�).ToList(); - if (workList.Count > 0) + var bcpWorkList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo.Contains("鐡跺澂缈绘枟鏈�) && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).ToList(); + if(bcpWorkList.Count > 0) { - foreach (var a in workList) + bcpWorkList.ForEach(a => { - if (a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈�) + string areaName = a.S_PLineNo.Split('-')[1].Substring(0, 1) + "鍙风摱鑳氱炕鏂楁満闈炲嵆浜ф弧妗�; + var areaInfo = Settings.areaInfos.Where(b => b.areaName == areaName && b.enable == 1).FirstOrDefault(); + if(areaInfo != null) { - PPZUUSE = true; - } - else if (a.S_PLineNo == "鍐滃か鏋楄姖-鐡剁洊缈绘枟鏈�) - { - PGFDUSE = true; + var locInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_CURRENT_NUM == 0 && b.S_LOCK_STATE == "鏃�).First(); + if(locInfo != null) + { + //鐢熸垚浠诲姟 + Location location = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", a.S_ItemCode); + if(location != null) + { + string cntrCode = getCntrCode(db,location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ婊℃", cntrCode, "鐡跺澂"); + } + } } else { - PPFDUSE = true; + LogHelper.Info($"{areaName}鏈厤缃�); } - } + }); } - - //鐡跺澂鏈轰娇鐢紝鍒欎粠 鐡跺澂搴撳尯 琛ュ厖绌烘墭鍒�鐡跺澂绌烘墭 锛屾湭浣跨敤锛屽垯灏�鐡跺澂绌烘墭 鐨勭┖鎵�绉诲埌 鐡跺澂搴撳尯 - //鐡跺澂缈绘枟鏈轰娇鐢紝鍒欎粠 鐡跺澂搴撳尯 琛ュ厖绌烘墭鍒�鐡跺澂鍗充骇鍗崇敤/鐡跺澂闈炲嵆浜у嵆鐢�锛屾湭浣跨敤锛屽垯灏�鐡跺澂鍗充骇鍗崇敤/鐡跺澂闈炲嵆浜у嵆鐢�鐨勭┖鎵�绉诲埌 鐡跺澂搴撳尯 - //鐡剁洊缈绘枟鏈轰娇鐢紝鍒欎粠 鐡剁洊搴撳尯 琛ュ厖绌烘墭鍒�鐡跺澂闈炲嵆浜у嵆鐢�锛屾湭浣跨敤锛屽垯灏�鐡跺澂闈炲嵆浜у嵆鐢�鐨勭┖鎵�绉诲埌 鐡剁洊搴撳尯 - - TaskProcess.BCPYiKu(PPZUUSE, "鐡跺澂娉ㄥ鏈�); - TaskProcess.BCPYiKu(PPFDUSE, "鐡跺澂缈绘枟鏈�); - TaskProcess.BCPYiKu(PGFDUSE, "鐡剁洊缈绘枟鏈�); - } - internal static void JBDEIN() + private static string getCntrCode(SqlSugar.SqlSugarClient db, Location location) { - var db = new SqlHelper<object>().GetInstance(); - var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍏ュ簱鎺ラ┏" && a.enable == 1).FirstOrDefault(); - if(areaInfo != null) + string cntr = ""; + var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == location.S_CODE).OrderBy(a => a.T_CREATE).ToList(); + if(cntrList.Count > 0) { - 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(locInfo != null) + foreach(var a in cntrList) { - string cntr = ""; - var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList(); - if(cntrList.Count > 0) - { - foreach(var a in cntrList) - { - cntr = cntr + a.S_CNTR_CODE + ","; - } - } - cntr = cntr.TrimEnd(','); - //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntr, "鐡跺澂"); + cntr = cntr + a.S_CNTR_CODE + ","; } } - else + cntr = cntr.TrimEnd(','); + return cntr; + } + + internal static void PGFDFullIn() + { + //浜х嚎鍙�锛�鍐滃か鏋楄姖-1鍙风摱鐩栫炕鏂楁満 + //鐡剁洊缈绘枟鏈哄叡鐢ㄤ竴涓簱鍖猴紝闇�鍖哄垎鍑犵鎯呭喌锛堟敞锛氱幇鍦哄凡纭锛屼笁涓炕鏂楁満涓嶄細鏈変笁绉嶇墿鏂欙級 + //1銆佸鏋滀笁涓炕鏂楁満鐗╂枡鐩稿悓锛屽垯 鐡剁洊闈炲嵆浜ф弧妗�鏈夌┖璐т綅灏辫ˉ + //2銆佸鏋滀笁涓炕鏂楁満鏈変袱绉嶄笉鍚岀殑鐗╂枡锛屽垯 鐡剁洊闈炲嵆浜ф弧妗�鏈夌┖浣嶇殑琛ュ厖 鏀瑰簱鍖烘病鏈夌殑鐗╂枡 + var db = new SqlHelper<object>().GetInstance(); + string itemList = ""; + var bcpWorkList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo.Contains("鐡剁洊缈绘枟鏈�) && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).ToList(); + if (bcpWorkList.Count > 0) { - LogHelper.Info("鐡惰儦鍏ュ簱鎺ラ┏ 鏈厤缃�); + bcpWorkList.ForEach(a => + { + if (string.IsNullOrEmpty(itemList)) + { + itemList = itemList + a.S_ItemCode + ","; + } + else + { + if (!itemList.Contains(a.S_ItemCode)) + { + itemList = itemList + a.S_ItemCode + ","; + } + } + }); + } + if (!string.IsNullOrEmpty(itemList)) + { + itemList = itemList.TrimEnd(','); + List<string> itemCount = itemList.Split(',').ToList(); + if(itemCount.Count > 0) + { + var areaInfo = Settings.areaInfos.Where(b => b.areaName == "鐡剁洊闈炲嵆浜ф弧妗� && b.enable == 1).FirstOrDefault(); + if (areaInfo != null) + { + var locInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_CURRENT_NUM == 0 && b.S_LOCK_STATE == "鏃�).First(); + if (locInfo != null) + { + if (itemCount.Count == 1) + { + //鍙湁涓�鐗╂枡 + //鐢熸垚浠诲姟 + Location location = TaskProcess.BCPInOrOut(db, false, "鐡剁洊搴撳尯", itemCount[0]); + if (location != null) + { + string cntrCode = getCntrCode(db, location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡剁洊闈炴�浜цˉ婊℃", cntrCode, "鐡剁洊"); + } + } + if (itemCount.Count == 2) + { + //涓ょ鐗╂枡 + + //鍒ゆ柇搴撳尯鏄惁鏈夎揣浣嶆暟閲忓ぇ浜�鎴栬�鏈夊叆搴撻攣鐨勶紝濡傛灉鏈夛紝鍒欏垽鏂墿鏂欙紝濡傛灉娌℃湁锛屽垯鐢熸垚绗竴涓墿鏂欑殑浠诲姟 + var locInfo2 = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && (b.N_CURRENT_NUM > 0 || b.S_LOCK_STATE == "鍏ュ簱閿�)).First(); + if(locInfo2 != null) + { + string itemCode = ""; + if(locInfo2.N_CURRENT_NUM > 0) + { + var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == locInfo2.S_CODE).First(); + if(cntrInfo != null) + { + var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First(); + if(itemInfo != null) + { + itemCode = itemInfo.S_ITEM_CODE; + } + } + } + if(locInfo2.S_LOCK_STATE == "鍏ュ簱閿�) + { + var taskInfo = db.Queryable<WMSTask>().Where(b => b.S_END_LOC == locInfo2.S_CODE && b.S_STATE != "瀹屾垚" && b.S_STATE != "鍙栨秷").First(); + if(taskInfo != null) + { + string cntrCode = taskInfo.S_CNTR_CODE.Split(',')[0]; + var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrCode).First(); + if (itemInfo != null) + { + itemCode = itemInfo.S_ITEM_CODE; + } + } + } + + if (itemCode != "") + { + itemCode = itemCode == itemCount[0] ? itemCount[1] : itemCount[0]; + Location location = TaskProcess.BCPInOrOut(db, false, "鐡剁洊搴撳尯", itemCode); + if (location != null) + { + string cntrCode = getCntrCode(db, location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡剁洊闈炴�浜цˉ婊℃", cntrCode, "鐡剁洊"); + } + } + } + else + { + Location location = TaskProcess.BCPInOrOut(db, false, "鐡剁洊搴撳尯", itemCount[0]); + if (location != null) + { + string cntrCode = getCntrCode(db, location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡剁洊闈炴�浜цˉ婊℃", cntrCode, "鐡剁洊"); + } + } + } + } + } + else + { + LogHelper.Info($"鐡剁洊闈炲嵆浜ф弧妗�鏈厤缃�); + } + } } } } -- Gitblit v1.9.1