11
cjs
7 天以前 1b4deb836c68efb689e13d3512888ae04fc99f09
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;
        }
@@ -1865,7 +1926,23 @@
                    {
                        var cir = new LocCntrRel { S_LOC_CODE = loc, S_CNTR_CODE = cntrCode, S_SRC = deviceName };
                        if (db.Insertable<LocCntrRel>(cir).ExecuteCommand() > 0) LogHelper.Info($"货位容器表绑定成功,货位号:{loc},托盘号:{cntrCode}");
                        BindCntrItem(cntrCode, itemCode, batchNo, itemlayer);
                        var Con = db.Queryable<Container>().Where(a => a.S_CODE == cntrCode).First();
                        if(Con == null)
                        {
                            if(db.Insertable<Container>(new Container
                            {
                                S_CODE = cntrCode,
                                N_TYPE = 1,
                                N_DETAIL_COUNT = 1
                            }).ExecuteCommand() > 0)
                            {
                                LogHelper.Info($"容器表绑定成功,托盘号:{cntrCode}");
                            }
                        }
                        if (!string.IsNullOrEmpty(itemCode))
                        {
                            BindCntrItem(cntrCode, itemCode, batchNo, itemlayer);
                        }
                    }
                }
            });
@@ -2378,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;
        }
    }
}