using NPOI.SS.Formula.PTG; using PlcSiemens.Core.Extension; using ServiceCenter.Redis; using ServiceCenter.SqlSugars; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.Core; using WCS.Entity; using WCS.WorkEngineering.Worlds; namespace WCS.WorkEngineering.Systems { /// /// 获取出库任务 /// [BelongTo(typeof(MainWorld))] [Description("获取出库任务")] [Order(order: OrderType.Before, typeof(堆垛机))] public class 获取出库任务 : DeviceSystem> { protected override bool ParallelDo => true; public override void Do(EntityEx obj) { SqlSugarHelper.Do(db => { //每5fenzhong重置出库缓存位数量,防止异常导致数量不对影响出库效率 if (DateTime.Now.Minute % 5== 0 && DateTime.Now.Second == 0) { var tasks = db.Default.Queryable().Where(w => w.BusType == "装箱码垛" && w.Type == TaskType.OutDepot && w.Status > Entity.TaskStatus.NewBuild && w.Status < Entity.TaskStatus.码垛缓存放行 && !SqlFunc.IsNullOrEmpty(w.AddrTo) ).ToList(); tasks.GroupBy(g => g.AddrTo).Select(s => new { addTo = s.Key, cnt = s.Count() }).ForEach(task => { if (!string.IsNullOrEmpty(task.addTo)&& MainWorld.Redis.Exists($"stockOperateNum{task.addTo}")) { MainWorld.Redis.Del($"stockOperateNum{task.addTo}"); MainWorld.Redis.IncrBy($"stockOperateNum{task.addTo}", task.cnt); } }); } var srmStockTasks = db.Default.SqlQueryable("select * from V_TaskOut").ToList(); if (srmStockTasks == null || !srmStockTasks.Any()) return; MainWorld.Redis.Del("StockTasks"); srmStockTasks.ForEach(item => { MainWorld.Redis.HSet("StockTasks", item.SRM, item); }); }); } public override bool Select(Device dev) { return dev.Code == "SXOut"; } } }