cjs
cjs
2025-05-20 067c69928ce6d3d3ed5710fd9652af7b3380dcd5
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -52,16 +52,16 @@
        {
            var db = new SqlHelper<object>().GetInstance();
            var jbwInfo = Settings.areaInfos.Where(a => a.areaName == "瓶盖入库接驳位" && a.enable == 1).FirstOrDefault();
            if(jbwInfo != null)
            if (jbwInfo != 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();
                if(locInfo != null)
                if (locInfo != null)
                {
                    LogHelper.Info($"【瓶盖转运】瓶坯接驳位查询到需入库的瓶坯,货位编码:{locInfo.S_CODE}");
                    if(locInfo.LocCntrRel != null)
                    if (locInfo.LocCntrRel != null)
                    {
                        //创建作业
                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "瓶盖转运", locInfo.LocCntrRel.S_CNTR_CODE,"瓶盖");
                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "瓶盖转运", locInfo.LocCntrRel.S_CNTR_CODE, "瓶盖");
                    }
                    else
                    {
@@ -81,48 +81,55 @@
        /// <exception cref="NotImplementedException"></exception>
        internal static void BCPWorkSurveillance()
        {
            //判断当前半成品工单是否有执行中的任务,如果没有,则讲线边库的物料入库
            //瓶盖翻斗机工单
            //开启,查询 瓶盖非急产急用 物料是否满,不满则补充物料
            //关闭, 1、查询 瓶盖空托 是否还有托盘,有则入库  2、查询瓶盖非即产即用 是否有物料, 有则入库
            //瓶坯翻斗机
            //开启,查询是否为非即产即用,如果为非即产即用,则判断瓶坯非即产即用库区是否满, 不满则补空物料
            //关闭,查询 瓶坯非即产即用 瓶坯即产即用A 瓶坯即产即用B 是否有物料,有则入库
            //瓶坯注塑机
            //开启,查询 瓶坯空托 是否空托数量大于3托,如果不大于,则补空托
            //关闭,查询 瓶坯空托 是否有空托,有则入库
            //判断当前半成品工单是否有执行中的任务
            //工单类型: 1、农夫林芝-瓶坯机 2、农夫林芝-瓶盖翻斗机 3、农夫林芝-瓶坯翻斗机
            bool PPZUUSE = false; //瓶坯机是否使用
            bool PPFDUSE = false; //瓶坯翻斗机是否使用
            bool PGFDUSE = false; //瓶盖翻斗机是否使用
            var db = new SqlHelper<object>().GetInstance();
            var workList = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_WorkState == "执行中").ToList();
            if(workList.Count == 0)
            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)
                foreach (var a in workList)
                {
                    var areaInfo = Settings.areaInfos.Where(a => (a.areaName == "瓶坯非即产即用" || a.areaName == "瓶坯即产即用A") && a.enable == 1).ToList();
                    if (areaInfo.Count > 0)
                    if (a.S_PLineNo == "农夫林芝-瓶坯机")
                    {
                        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);
                            }
                        }
                        PPZUUSE = true;
                    }
                    var areaInfoTwo = Settings.areaInfos.Where(a => a.areaName == "瓶坯即产即用B" && a.enable == 1).First();
                    if (areaInfoTwo != null)
                    else if (a.S_PLineNo == "农夫林芝-瓶盖翻斗机")
                    {
                        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)
                        {
                            foreach(var a in locInfo)
                            {
                                if(a.S_LOCK_STATE == "无")
                                {
                                    //创建作业
                                    WMSHelper.CreateOpTask(a.S_CODE, "", "入库", "接驳位移库", a.LocCntrRel.S_CNTR_CODE,"瓶坯");
                                    break;
                                }
                            }
                        }
                        PGFDUSE = true;
                    }
                    else
                    {
                        PPFDUSE = true;
                    }
                }
            }
            //瓶坯机使用,则从 瓶坯库区 补充空托到 瓶坯空托 ,未使用,则将 瓶坯空托 的空托 移到 瓶坯库区
            //瓶坯翻斗机使用,则从 瓶坯库区 补充空托到 瓶坯即产即用/瓶坯非即产即用 ,未使用,则将 瓶坯即产即用/瓶坯非即产即用 的空托 移到 瓶坯库区
            //瓶盖翻斗机使用,则从 瓶盖库区 补充空托到 瓶坯非即产即用 ,未使用,则将 瓶坯非即产即用 的空托 移到 瓶盖库区
            TaskProcess.BCPYiKu(PPZUUSE, "瓶坯注塑机");
            TaskProcess.BCPYiKu(PPFDUSE, "瓶坯翻斗机");
            TaskProcess.BCPYiKu(PGFDUSE, "瓶盖翻斗机");
        }
    }
}