1
pulg
2025-06-23 7c9cc313ed6561130b4cd3c40f9df52b1b972158
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -420,7 +420,7 @@
        static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "")
        {
            LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign);
            LogHelper.Info("移库解锁 doo" + msg + "---" + sign + "--" + WorkNo);
            LogHelper.Info(JsonConvert.SerializeObject(startBit));
            LogHelper.Info(JsonConvert.SerializeObject(EndBit));
            bool j解锁起点库区排 = true;
@@ -429,9 +429,11 @@
                //解锁时,有工单号。  查查除了这个工单号以外的其他 指定出库排执行
                var orders = WCSHelper.GetWorkOrder2();
                var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo);
                LogHelper.Info("移库解锁 --当前工单 sid:" + thisOrder?.S_ID);
                if (thisOrder != null)
                {
                    var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row);
                    LogHelper.Info($"移库解锁 --其他工单 x.start_area == {thisOrder.start_area} start_row == {thisOrder.start_row} SID:" + other?.S_ID);
                    if (other != null)
                        j解锁起点库区排 = false;
                }
@@ -1102,6 +1104,19 @@
                                        //else
                                        var ccr = _clrel0.S_TYPE.Split(',');
                                        string EdnRarea = ccr.First();
                                        if (EdnRarea == "YWLBQWJ" || EdnRarea == "YWLWJJB")//到B区的移库工单最多只能生成两条任务
                                        {
                                            //查询任务数
                                            List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" };
                                            var db = new SqlHelper<object>().GetInstance();
                                            var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "入库锁").ToList();
                                            if (list.Count() >= 2)
                                            {
                                                LogHelper.Info($"CreateTransport-  CreateTask Error" + $"终点库区为YWLRGDD或者YWLWJJB 则最多只能生成两个任务");
                                                continue;
                                            }
                                        }
                                        string Last = string.Join(",", ccr.Skip(1));
                                        if (ABlist.Contains(EdnRarea))
@@ -1152,7 +1167,10 @@
                                            {
                                                isCd = true;
                                                inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "入库锁").ToList();
                                                inlock = inlockLis.FirstOrDefault();
                                                if (inlockLis.Count() > 0)
                                                {
                                                    inlock = inlockLis.FirstOrDefault();
                                                }
                                                if (inlock != null)
                                                {
                                                    //当入库的任务能放满一排并且还有余的时候 开第二排
@@ -1251,6 +1269,7 @@
                                                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 };
                                                    LogHelper.Info($"原物料入库 添加排锁信息{JsonConvert.SerializeObject(rrrr)} ");
                                                    WCSHelper.Do(db => db.Insertable(rrrr).ExecuteCommand());
                                                }
                                                if (EdnRarea == "YWLWJJB") InworkLock = false;
@@ -3735,15 +3754,18 @@
                    {
                        var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" };
                        l2.Remove(od.S_ROW);
                        l2.Remove(od.TagOver);
                        var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList();
                        //l2.Remove(od.TagOver);
                        //var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList();
                        var odsr = new List<string> { od.S_ROW }.Concat(l2).Distinct().ToList();
                        ///汇总仓库里最大层是几层。
                        Dictitems Lart = null;
                        foreach (var area in odsr)//od.S_ROW.Split('$'))
                        {
                            if (string.IsNullOrEmpty(area)) continue;
                            if (string.IsNullOrEmpty(area))
                            {
                                continue;
                            }
                            if (dsi.TryGetValue(area, out var dictitems1))
                            {
                                foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
@@ -4064,6 +4086,19 @@
                var locS = LocationHelper.GetAreaNormalLocList(ODs.Key);
                foreach (var od in ODs)
                {
                    if (od.S_END_AREA == "YWLBQWJ" || od.S_END_AREA == "YWLAQWJ")//到B区的移库工单最多只能生成两条任务
                    {
                        //查询任务数
                        List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" };
                        var db = new SqlHelper<object>().GetInstance();
                        var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "入库锁").ToList();
                        if (list.Count() >= 2)
                        {
                            LogHelper.Info($"CreateTransport-  CreateTask Error" + $"终点库区为YWLRGDD或者YWLWJJB 则最多只能生成两个任务");
                            continue;
                        }
                    }
                    LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》");
                    if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA))
                    {