HH.WCS.QingXiNongfu/core/Monitor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.QingXiNongfu/process/DeviceProcess.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.QingXiNongfu/process/TaskProcess.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.QingXiNongfu/wms/TaskHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1470,11 +1470,10 @@ { // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList(); if (LocLock(WJ_BQ.RK_BBHJQ)) { //标签入库 YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); } //标签入库 YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); if (yuworders.Any()) { LogHelper.Info($" 无菌出库 工单开启中 "); @@ -1494,11 +1493,10 @@ { // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList(); var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "中水标签出库" && x.WorkType == 6 && x.SQL_State == "执行中").FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList(); if (LocLock(SX_BQ.RK_BBHJQ)) { //水标入库 YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); } //水标入库 YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); if (yuworders.Any()) { LogHelper.Info($" 无菌出库 工单开启中 "); @@ -2001,18 +1999,26 @@ var cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault(); if (CNTR.FirstOrDefault().S_TYPE == BQ_PRA.B) { var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0; Location Endbit = null; //if (area == area/* WJ_BQ.RK_BQJBQ*/) //{ var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3); Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); if (Endbit != null) if (cirs.FirstOrDefault().S_ITEM_NAME.Contains("空框"))//空框 退到空框缓存区 { var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "标签叉运-线边标签退库", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62); LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 标签叉运-接驳标签退库 ,创建{re}"); var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); } else { var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0; Location Endbit = null; //if (area == area/* WJ_BQ.RK_BQJBQ*/) //{ var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3); Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); if (Endbit != null) { var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "标签叉运-线边标签退库", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62); LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 标签叉运-接驳标签退库 ,创建{re}"); } } // } //else @@ -4573,7 +4579,7 @@ if (PLC.deviceName.Contains("T2")) pline = "T2提升机-纸箱"; var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中"); var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中").ToList(); bool can = false; if (orkOrd.Any()) { @@ -4586,10 +4592,10 @@ can = true; } orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10); orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).ToList(); ReadCCK = can; if (orkOrd.Any()) foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum)) foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum).ToList()) //foreach (var od in od2.ToList()) { var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" }; @@ -4778,11 +4784,11 @@ var db = new SqlHelper<object>().GetInstance(); od.TagOverTime = DateTime.Now; od.TagOver = StartBit.S_AREA_CODE; if (od.OutNum >= StartBit.N_CURRENT_NUM) { od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM; } var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver, it.OutNum }).ExecuteCommand(); //if (od.OutNum >= StartBit.N_CURRENT_NUM) //{ // od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM; //} var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand(); LogHelper.Info($"上提升机任务 更新工单的时间影响行数: {ggf}"); // var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -334,7 +334,7 @@ } else { if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 3 || !string.IsNullOrEmpty(_clrel0.S_TYPE)) if (!string.IsNullOrEmpty(_clrel0.S_TYPE)) goto ballll; } } @@ -2312,7 +2312,7 @@ } //获取指定库区 指定排 满的货位 然后排除 比最大列还小的空货位 var Mhw = locationInLock.FindAll(e => e.N_CURRENT_NUM > 0).ToList(); var Mhw = locationInLock.FindAll(e => e.N_CURRENT_NUM > 0 && e.S_LOCK_STATE == "无").ToList(); if (Mhw.Count() > 0) { var RowLis = Mhw.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList(); @@ -4219,6 +4219,13 @@ } if (hojs.N_CURRENT_NUM == 0)//上托盘 否则下托盘 { List<string> TaskState = new List<string>() { "完成", "取消" }; var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_START_LOC == location && !TaskState.Contains(x.S_B_STATE)); if (TaskListNum.Count() > 0) { throw new Exception("只能生成一个任务 进出"); } //上托盘 满托 var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "满托").OrderByDescending(g => g.N_PRI).ToList(); var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList(); @@ -4277,11 +4284,17 @@ { var time = LocationHelper.GetT_FULL_TIME(location); LogHelper.Info(location + ":托盘放置时间:(" + time + ") 货位托盘数量(" + hojs.N_CURRENT_NUM + ")"); if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalMinutes < 1) if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalSeconds < 10) { PlcHelper.SendHex(plc.address, "3F00110D0A"); return false; } List<string> TaskState = new List<string>() { "完成", "取消", "推送异常" }; var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_END_LOC == location && !TaskState.Contains(x.S_B_STATE)); if (TaskListNum.Count() > 0) { throw new Exception("只能生成一个任务 进出"); } LocCntrRel _clrel = LocationHelper.GetLocCntrRel(hojs.S_LOC_CODE).FirstOrDefault(); //下托盘 空框 var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "空托").OrderByDescending(g => g.N_PRI).ToList(); HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -433,9 +433,11 @@ && mst.S_TYPE.Trim() != "青溪纸箱搬运物料" && !mst.S_TYPE.Trim().Contains("自由点对点")) { CacheBitUpdate(mst, load: false, mst.S_NOTE); if (mst.S_END_LOC != "YWLT1TSJ") { CacheBitUpdate(mst, load: false, mst.S_NOTE); } } if (mst.S_TYPE.Trim().Contains("成品-空托上线")) { @@ -479,7 +481,8 @@ { // to.AlQty += mst.S_CNTRS.Split(',').Length;// mst.S_CNTRS.Substring(1).Split('v').Length; to.OutNum -= mst.S_CNTRS.Split(',').Length; db.Updateable(to).UpdateColumns(it => new { it.OutNum }).ExecuteCommand(); var ggi = db.Updateable(to).UpdateColumns(it => new { it.OutNum }).ExecuteCommand(); LogHelper.Info($"更新 提升机上料工单表数量为 {to.OutNum} 影响行数为:{ggi}"); } } @@ -1353,18 +1356,18 @@ else return false; } } else if (taskType.Contains("瓶坯翻斗机空托") && mst.S_END_LAREA == "QXPPXXQ") else if (taskType.Contains("瓶坯翻斗机空托")) { start = LocationHelper.GetAgvSite(mst.S_START_LOC); end = LocationHelper.GetAgvSite(mst.S_END_LOC, "2"); LogHelper.Info($"瓶坯机任务 起点终点对应的agv站点 start {start} end {end} 任务:" + mst.S_TASK_NO); LogHelper.Info($"瓶坯机翻斗机任务 起点终点对应的agv站点 start {start} end {end} 任务:" + mst.S_TASK_NO); } else if (taskType.Contains("瓶坯翻斗机满托") && mst.S_START_LAREA == "QXPPXXQ") else if (taskType.Contains("瓶坯翻斗机满托")) { start = LocationHelper.GetAgvSite(mst.S_START_LOC, "2"); end = LocationHelper.GetAgvSite(mst.S_END_LOC); LogHelper.Info($"瓶坯机任务 起点终点对应的agv站点 start {start} end {end} 任务:" + mst.S_TASK_NO); LogHelper.Info($"瓶坯机翻斗机任务 起点终点对应的agv站点 start {start} end {end} 任务:" + mst.S_TASK_NO); } //else if (taskType.Contains("收缩膜叉运-入库") || taskType.Contains("收缩膜叉运-入库") || taskType.Contains("收缩膜叉运-货架出提升机")) //{ HH.WCS.QingXiNongfu/wms/TaskHelper.cs
@@ -1,4 +1,5 @@ using HH.WCS.QingXigongchang.dispatch; using HH.WCS.QingXigongchang.process; using HH.WCS.QingXigongchang.util; using Newtonsoft.Json; using SqlSugar; @@ -241,6 +242,21 @@ { var db = new SqlHelper<object>().GetInstance(); if (task.S_START_LOC == "YWLT1TSJCD-1" && task.N_START_LAYER == 2) { var _clrel = LocationHelper.GetLocCntrRel(task.S_START_LOC); if (_clrel != null) { var sta = db.Queryable<Location>().Where(l => l.S_LOC_CODE == task.S_START_LOC).First(); if (sta.N_CURRENT_NUM > 0 && sta.S_LOCK_STATE == "无") { var sign = Settings.GetTimeStamp(); var res = TaskProcess.CreateTransport(sign, task.S_START_LOC, task.S_END_LOC, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sta.N_CURRENT_NUM, 1, 1, 60); } } } if (task.S_END_LAREA == "YWLYLTKQ" || task.S_END_LAREA == "YWLTKKTQ") { //查询出库锁YWLWJJB