HH.WCS.Mobox3.NongFuLinZhi/Program.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HH.WCS.Mobox3.NongFuLinZhi/Program.cs
@@ -100,6 +100,7 @@ tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //接驳位入库 tasks.Add(GetTask(Monitor.PPFDFullIn)); //瓶坯翻斗机非急产满框区补满托 tasks.Add(GetTask(Monitor.PGFDFullIn)); //瓶盖翻斗机非急产满框区补满托 tasks.Add(GetTask(Monitor.PPFDFullInEmpty)); //瓶坯注塑机非急产空框区补空托 Task.WaitAll(tasks.ToArray()); HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -105,7 +105,7 @@ #endregion #region 瓶坯满托入库 areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚入库接驳" && a.enable == 1).FirstOrDefault(); 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(); @@ -119,13 +119,13 @@ } else { LogHelper.Info($"【瓶胚满托转运】当前货位未绑定托盘码,货位编码:{locInfo.S_CODE}"); LogHelper.Info($"【瓶坯满托转运】当前货位未绑定托盘码,货位编码:{locInfo.S_CODE}"); } } } else { LogHelper.Info("【瓶坯满托转运】瓶胚入库接驳 未配置"); LogHelper.Info("【瓶坯满托转运】瓶坯入库接驳 未配置"); } #endregion @@ -143,7 +143,8 @@ { bcpWorkList.ForEach(a => { string areaName = a.S_PLineNo.Split('-')[1].Substring(0, 1) + "号瓶胚翻斗机非即产满框"; 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) { @@ -300,5 +301,26 @@ } } } /// <summary> /// 瓶坯非即产即用库托库区补空托 /// </summary> internal static void PPFDFullInEmpty() { var db = new SqlHelper<object>().GetInstance(); 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) { } else { LogHelper.Info("瓶坯非即产空框 未配置"); } } } } } HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
@@ -65,21 +65,7 @@ var endinfo = db.Queryable<Location>().Where(it => it.S_CODE == end.S_CODE).First(); int startLayer = startinfo.N_CURRENT_NUM; int endlayer = endinfo.N_CURRENT_NUM + 1; if(a.S_OP_DEF_NAME == "瓶坯非急产补满框" || a.S_OP_DEF_NAME == "瓶盖非急产补满框" || a.S_OP_DEF_NAME == "瓶坯非急产补空框" || a.S_OP_DEF_NAME == "瓶盖非急产补空框") { startLayer = 1; endlayer = Settings.dXSites.Where(it => it.loc == a.S_END_LOC).First().site; } if(a.S_OP_DEF_NAME == "注塑即产满托下线(瓶坯)") { endlayer = Settings.dXSites.Where(it => it.loc == a.S_END_LOC).First().site; } if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库") { startLayer = 1; endlayer = 1; } var wcsTask = new WCSTask { S_OP_CODE = a.S_CODE, HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
@@ -520,7 +520,7 @@ { LogHelper.Info("即产即用工单"); //即产即用在起点为线边 var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产满框" && a.enable == 1).FirstOrDefault(); var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "瓶坯即产满框" && a.enable == 1).FirstOrDefault(); if (bcpInfo != null) { startArea = bcpInfo.areaCode; @@ -532,7 +532,7 @@ { LogHelper.Info("非即产即用工单"); //非即产即用起点为库区 string areaName = plc.deviceName.Split('-')[1].Substring(0, 1) + "号瓶胚翻斗机非即产满框"; string areaName = plc.deviceName.Split('-')[1].Substring(0, 1) + "号瓶坯翻斗机非即产满框"; var bcpInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault(); if (bcpInfo != null) { @@ -574,12 +574,12 @@ //初始状态,无托盘,直接上满托(非即产即用需要校验 套袋完成,即产即用直接使用) if (workInfo.S_UsingNow == "Y") { LogHelper.Info($"瓶胚即产满框 查找"); LogHelper.Info($"瓶坯即产满框 查找"); startLoca = getFDSXArea(db, workInfo, startArea); } else { LogHelper.Info($"瓶胚翻斗机非即产满框 查找"); LogHelper.Info($"瓶坯翻斗机非即产满框 查找"); startLoca = getFDSXArea(db, workInfo, startArea); } HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -684,7 +684,7 @@ if (mst.S_TYPE.Contains("满托下线")) { LogHelper.Info($"空托任务生成处理,任务类型:{mst.S_TYPE}"); string areaName = mst.S_TYPE.Contains("库存") ? "瓶胚非即产空框" : "瓶胚即产空框"; string areaName = mst.S_TYPE.Contains("库存") ? "瓶坯非即产空框" : "瓶坯即产空框"; var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).First(); if(areaInfo != null) { @@ -729,14 +729,14 @@ { if (bcpW.S_UsingNow == "Y") { LogHelper.Info($"瓶胚即产满框 查找"); startArea = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产满框" && a.enable == 1).FirstOrDefault().areaCode; LogHelper.Info($"瓶坯即产满框 查找"); startArea = Settings.areaInfos.Where(a => a.areaName == "瓶坯即产满框" && a.enable == 1).FirstOrDefault().areaCode; startLoca = DeviceProcess.getFDSXArea(db, bcpW, startArea); } else { LogHelper.Info($"瓶胚翻斗机非即产满框 查找"); string areaName = bcpW.S_PLineNo.Split('-')[1].Substring(0, 1) + "号瓶胚翻斗机非即产满框"; LogHelper.Info($"瓶坯翻斗机非即产满框 查找"); string areaName = bcpW.S_PLineNo.Split('-')[1].Substring(0, 1) + "号瓶坯翻斗机非即产满框"; startArea = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault().areaCode; startLoca = DeviceProcess.getFDSXArea(db, bcpW, startArea); } @@ -1111,6 +1111,11 @@ { Extend2 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE; } if(mst.S_TYPE == "瓶坯非急产补满框" || mst.S_TYPE == "瓶盖非急产补满框" || mst.S_TYPE == "瓶坯非急产补空框" || mst.S_TYPE == "瓶盖非急产补空框" || mst.S_TYPE == "注塑即产满托下线(瓶坯)") { Extend2 = Settings.dXSites.Where(it => it.loc == mst.S_END_LOC).First().site.ToString(); } Extend3 = "0"; // 获取 任务参数4 DATA 数据 string startLayerValue = Convert.ToString(startLayer, 16).ToUpper(); @@ -1285,7 +1290,7 @@ if (action) { //瓶盖库区,两层密集型库区 空满在同一个库区,需要区分不同排 var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderBy(a => a.pri).ToList(); var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderByDescending(a => a.pri).ToList(); if (areaInfo.Count > 0) { foreach(var it in areaInfo) @@ -1423,7 +1428,7 @@ } else { var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderBy(a => a.pri).ToList(); var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderByDescending(a => a.pri).ToList(); if(areaInfo.Count > 0) { foreach(var it in areaInfo) @@ -1487,7 +1492,7 @@ if(usingNow == "Y") { //即产即用 var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产空框" && a.enable == 1).FirstOrDefault(); 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 == "无").Includes(a => a.LocCntrRel).First(); @@ -1498,13 +1503,13 @@ } else { LogHelper.Info("瓶胚即产空框未配置"); LogHelper.Info("瓶坯即产空框未配置"); } } else { //非即产即用 var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚非即产空框" && a.enable == 1).FirstOrDefault(); 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).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList(); @@ -1524,7 +1529,7 @@ } else { LogHelper.Info("瓶胚非即产空框未配置"); LogHelper.Info("瓶坯非即产空框未配置"); } } @@ -1546,7 +1551,7 @@ if (taskName.Contains("即产")) { //注塑机急产即用下线,首先下线到即产即用满框线边,满眶线边满了,下到即产即用满框缓存区,满框缓存区满了,下到入库接驳堆叠位 var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产满框" && a.enable == 1).FirstOrDefault(); 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 < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_ROW).First(); @@ -1557,11 +1562,11 @@ } else { LogHelper.Info($"瓶坯注塑满托下线:瓶胚即产满框 未配置"); LogHelper.Info($"瓶坯注塑满托下线:瓶坯即产满框 未配置"); } if (result == null) { result = TaskProcess.BCPInOrOut(db, true, "瓶胚即产满框缓存", itemCode); result = TaskProcess.BCPInOrOut(db, true, "瓶坯即产满框缓存", itemCode); } if(result == null) { @@ -1578,7 +1583,7 @@ private static Location getJBLoc(SqlSugarClient db, Location result) { //注塑机非即产即用下线,下到入库接驳堆叠位 var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚入库接驳" && a.enable == 1).FirstOrDefault(); 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 < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).First(); @@ -1593,7 +1598,7 @@ } else { LogHelper.Info($"瓶坯注塑满托下线:瓶胚入库接驳 未配置"); LogHelper.Info($"瓶坯注塑满托下线:瓶坯入库接驳 未配置"); } return result; @@ -1610,7 +1615,7 @@ { Location result = null; string endAreaName = taskName.Contains("瓶盖") ? "瓶盖非即产空框" : taskName.Contains("库存") ? "瓶胚非即产空框" : "瓶胚即产空框"; string endAreaName = taskName.Contains("瓶盖") ? "瓶盖非即产空框" : taskName.Contains("库存") ? "瓶坯非即产空框" : "瓶坯即产空框"; var areaInfo = Settings.areaInfos.Where(a => a.areaName == endAreaName && a.enable == 1).FirstOrDefault(); if (areaInfo != null) { HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs
@@ -339,11 +339,6 @@ location.N_CURRENT_NUM = 0; } if (type == "接驳位入库" || type == "瓶盖空托入库" || type == "瓶坯非急产补满框" || type == "瓶盖非急产补满框") { location.N_CURRENT_NUM = 0; } location.S_LOCK_STATE = "无"; location.N_LOCK_STATE = 0; db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); @@ -382,10 +377,7 @@ } }); location.N_CURRENT_NUM = lcrList.Count + count; if(type == "接驳位入库" || type == "瓶盖空托入库" || type == "瓶坯非急产补满框" || type == "瓶盖非急产补满框") { location.N_CURRENT_NUM = location.N_CAPACITY; } if(location.N_CURRENT_NUM >location.N_CAPACITY) location.N_CURRENT_NUM = location.N_CAPACITY; location.N_LOCK_STATE = 0; location.S_LOCK_STATE = "无";