From 648f4270f4f56c5ca284dbcfa650de05e46a7052 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期三, 16 七月 2025 17:20:59 +0800 Subject: [PATCH] 11111 --- HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs | 427 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 389 insertions(+), 38 deletions(-) diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs index a6b6881..82ae89b 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs @@ -2,12 +2,15 @@ using HH.WCS.Mobox3.NFLZ.process; using HH.WCS.Mobox3.NFLZ.util; using HH.WCS.Mobox3.NFLZ.wms; +using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.Configuration; using System.Linq; 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 @@ -46,82 +49,430 @@ } /// <summary> - /// 鐡剁洊杞繍 + /// 杞繍浠诲姟 /// </summary> internal static void BottleBlankTransportation() { var db = new SqlHelper<object>().GetInstance(); - var jbwInfo = Settings.areaInfos.Where(a => a.areaName == "鐡剁洊鍏ュ簱鎺ラ┏浣� && a.enable == 1).FirstOrDefault(); - if(jbwInfo != null) + #region 鐡剁洊绌烘墭鍏ュ簱 + 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 == jbwInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First(); + 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) { - 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 { - LogHelper.Info($"銆愮摱鐩栬浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); + LogHelper.Info($"銆愮摱鐩栫┖鎵樿浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); } } } else { - LogHelper.Info("銆愮摱鐩栬浆杩愩�鐡跺澂鎺ラ┏浣嶆湭閰嶇疆"); + LogHelper.Info("銆愮摱鐩栫┖鎵樿浆杩愩�鐡剁洊闈炲嵆浜х┖妗�鏈厤缃�); + } + #endregion + + #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 == "鏃�).First(); + if (locInfo != null) + { + string cntrCode = getCntrCode(db, locInfo); + if (!string.IsNullOrEmpty(cntrCode)) + { + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鐡跺澂鎺ラ┏浣嶅叆搴�, cntrCode, "鐡跺澂"); + } + else + { + LogHelper.Info($"銆愮摱鍧弧鎵樿浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}"); + } + } + } + else + { + LogHelper.Info("銆愮摱鍧弧鎵樿浆杩愩�鐡跺澂鍏ュ簱鎺ラ┏ 鏈厤缃�); + } + + #endregion + } + + /// <summary> + /// 鐡跺澂缈绘枟鏈洪潪鍗充骇婊℃鍖鸿ˉ婊℃墭 + /// </summary> + internal static void PPFDFullIn() + { + //浜х嚎鍙�锛�鍐滃か鏋楄姖-1鍙风摱鍧炕鏂楁満 + var db = new SqlHelper<object>().GetInstance(); + var bcpWorkList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo.Contains("鐡跺澂缈绘枟鏈�) && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).ToList(); + if(bcpWorkList.Count > 0) + { + bcpWorkList.ForEach(a => + { + string areaName = a.S_PLineNo.Split('-')[1].Substring(0, 1) + "鍙风摱鍧炕鏂楁満闈炲嵆浜ф弧妗�; + LogHelper.Info($"PPFDFullIn area:{areaName}"); + var areaInfo = Settings.areaInfos.Where(b => b.areaName == 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) + { + //鐢熸垚浠诲姟 + 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 + { + LogHelper.Info($"{areaName}鏈厤缃�); + } + }); + } + } + + private static string getCntrCode(SqlSugar.SqlSugarClient db, Location location) + { + 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) + { + foreach(var a in cntrList) + { + cntr = cntr + a.S_CNTR_CODE + ","; + } + } + 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) + { + 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($"鐡剁洊闈炲嵆浜ф弧妗�鏈厤缃�); + } + } } } /// <summary> - /// 鍗婃垚鍝佸伐鍗曠洃鎺�+ /// 鐡跺澂闈炲嵆浜у嵆鐢ㄥ簱鎵樺簱鍖鸿ˉ绌烘墭 /// </summary> - /// <exception cref="NotImplementedException"></exception> - internal static void BCPWorkSurveillance() + internal static void PPFDFullInEmpty() { - //鍒ゆ柇褰撳墠鍗婃垚鍝佸伐鍗曟槸鍚︽湁鎵ц涓殑浠诲姟锛屽鏋滄病鏈夛紝鍒欒绾胯竟搴撶殑鐗╂枡鍏ュ簱 - var db = new SqlHelper<object>().GetInstance(); - var workList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_WorkState == "鎵ц涓�).ToList(); - if(workList.Count == 0) - { - var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "鎺ラ┏浣嶇Щ搴� && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "鍗歌揣瀹屾垚" && a.S_B_STATE != "寮�鍗歌揣" && a.S_B_STATE != "鍙栬揣瀹屾垚").First(); - if(taskInfo == null) - { - var areaInfo = Settings.areaInfos.Where(a => (a.areaName == "鐡跺澂闈炲嵆浜у嵆鐢� || a.areaName == "鐡跺澂鍗充骇鍗崇敤A") && a.enable == 1).ToList(); - if (areaInfo.Count > 0) - { - foreach (var a in areaInfo) - { - var locInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.areaCode && b.N_CURRENT_NUM > 0 && b.S_LOCK_STATE == "鏃�).Includes(b => b.LocCntrRel).First(); - if (locInfo != null) - { - //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶇Щ搴�, locInfo.LocCntrRel.S_CNTR_CODE); - } + //鐡跺澂闈炲嵆浜х┖妗嗗尯鍫嗗彔搴撳尯涓�叡鍥涗釜璐т綅锛屽鏋滄湁涓変釜璐т綅鏄弧鐨勶紝灏卞紑濮嬭浆杩愬埌鐡跺澂搴撳尯 + //濡傛灉婊¤揣浣嶅皬浜庣瓑浜庝竴灏卞紑濮嬩粠婊℃缂撳瓨鍖虹┖妗嗗尯鍩熻浆杩愶紝濡傛灉婊℃缂撳瓨鍖虹┖妗嗗尯鍩熸棤绌烘墭锛屽垯浠庣摱鍧簱杞繍 + var db = new SqlHelper<object>().GetInstance(); + + 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 > 0).ToList(); + if(LocList.Count <= 1) + { + LogHelper.Info($"鐡跺澂闈炲嵆浜цˉ绌烘 {JsonConvert.SerializeObject(LocList)}"); + var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "鐡跺澂闈炲嵆浜цˉ绌烘" && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷").First(); + if(taskInfo == null) + { + var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_OP_DEF_NAME == "鐡跺澂闈炲嵆浜цˉ绌烘" && (a.N_B_STATE == 0 || a.N_B_STATE == 1)).First(); + if(wmsTask == 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 == "鏃�).OrderBy(a => a.N_ROW).First(); + if (location != null && locInfo != null) + { + string cntrCode = getCntrCode(db, location); + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炲嵆浜цˉ绌烘", cntrCode, "鐡跺澂"); + } } } + } - var areaInfoTwo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇鍗崇敤B" && a.enable == 1).First(); - if (areaInfoTwo != null) + LocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY).ToList(); + if (LocList.Count > 2) + { + //鍒ゆ柇浠诲姟鏄惁瀛樺湪 + LogHelper.Info($"鐡跺澂闈炲嵆浜х┖鎵樺叆搴�{JsonConvert.SerializeObject(LocList)}"); + var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "鐡跺澂闈炲嵆浜х┖妗嗗叆搴� && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "鍗歌揣瀹屾垚" && a.S_B_STATE != "寮�鍗歌揣" && a.S_B_STATE != "鍙栬揣瀹屾垚").First(); + if(taskInfo == null) { - var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfoTwo.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(locInfo.Count > 0) + //鍒ゆ柇浣滀笟鏄惁瀛樺湪 + var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_OP_DEF_NAME == "鐡跺澂闈炲嵆浜х┖妗嗗叆搴� && (a.N_B_STATE == 0 || a.N_B_STATE == 1)).First(); + if(wmsTask == null) { - foreach(var a in locInfo) + //闇�灏嗙┖鎵樿浆杩愬埌搴撳尯 + foreach (var a in LocList) { - if(a.S_LOCK_STATE == "鏃�) + if (a.S_LOCK_STATE == "鏃�) { + //鐢熸垚浠诲姟 + string cntrCode = getCntrCode(db, a); //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(a.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶇Щ搴�, a.LocCntrRel.S_CNTR_CODE,"鐡跺澂"); + WMSHelper.CreateOpTask(a.S_CODE, "", "鍏ュ簱", "鐡跺澂闈炲嵆浜х┖妗嗗叆搴�, cntrCode, "鐡跺澂"); break; } } } } } + + } + #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 PPFDFullInJC() + { + var db = new SqlHelper<object>().GetInstance(); + var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo.Contains("鐡跺澂缈绘枟鏈�) && 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) + { + //濡傛灉搴撳尯鏄┖鐨勶紝骞朵笖娌℃湁鏈夐攣鐨勫氨琛ュ厖绌烘墭 + 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, ""); + } + } + } + } + } + + /// <summary> + /// 鐡剁洊灏忓寘瑁呯洊杞繍 + /// </summary> + /// <exception cref="NotImplementedException"></exception> + internal static void PGXBZZY() + { + var db = new SqlHelper<object>().GetInstance(); + Location endLoca = null; + var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo.Contains("鐡剁洊") && a.S_ITEM_TYPE == "灏忓寘瑁呯洊" && a.S_WorkState == "鎵ц涓�).ToList(); + if(workInfo.Count > 0) + { + foreach(var it in workInfo) + { + LogHelper.Info($"鐡剁洊灏忓寘瑁呯洊杞繍锛�鏌ヨ浜х嚎鍙凤細{it.S_PLineNo},鐗╂枡缂栫爜锛歿it.S_ItemCode}"); + //鏌ヨ缁堢偣璐т綅 + string endAreaName = it.S_PLineNo.Split('-')[1].Substring(0, 1) + "鍙风摱鐩栫炕鏂楁満灏忓寘瑁�; + var areaInfo = Settings.areaInfos.Where(b => b.areaName == endAreaName && b.enable == 1).FirstOrDefault(); + if(areaInfo != null) + { + var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_END_AREA == areaInfo.areaCode && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷").First(); + if(taskInfo != null) + { + //鎺у埗涓�釜搴撳尯鍙兘涓�涓�潯浠诲姟 + return; + } + + var locInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_CURRENT_NUM == 0).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).Take(1).PartitionBy(b => b.N_ROW).ToList(); + if(locInfo.Count > 0) + { + foreach(var endloc in locInfo) + { + var rowInfo = db.Queryable<RowLock>().Where(a => a.S_AREA_CODE == endloc.S_AREA_CODE && a.S_ROW == endloc.S_ROW).First(); + LogHelper.Info($"鐡剁洊灏忓寘瑁呯洊杞繍锛氭煡璇㈤攣淇℃伅锛岃揣浣嶉攣锛歿endloc.S_LOCK_STATE},鎺掗攣锛歿JsonConvert.SerializeObject(rowInfo)}"); + if(rowInfo != null && rowInfo.S_LOCK_STATE == "鏃� && endloc.S_LOCK_STATE == "鏃�) + { + endLoca = endloc; + break; + } + + } + } + } + else + { + LogHelper.Info($"{endAreaName} 鏈厤缃�); + } + + //鏌ヨ璧风偣璐т綅 + LogHelper.Info($"鐡剁洊灏忓寘瑁呯洊杞繍锛氳幏鍙栧埌缁堢偣璐т綅淇℃伅锛歿JsonConvert.SerializeObject(endLoca)}"); + if (endLoca != null) + { + Location startLoca = TaskProcess.BCPInOrOut(db,true,"鐡剁洊搴撳尯",it.S_ItemCode + it.S_ITEM_TYPE); + if (startLoca != null) + { + string cntrCode = getCntrCode(db, startLoca); + WMSHelper.CreateOpTask(startLoca.S_CODE, endLoca.S_CODE, "鍑哄簱", "鐡剁洊闈炲嵆浜цˉ婊℃灏忓寘瑁�, cntrCode, ""); + } + } + } } } } -- Gitblit v1.9.1