using iWareCc.DecomposeTask.Entity; using iWareCc.Properties; using iWareCommon.Common.Entity; using iWareCommon.Common.EnumType; using iWareCommon.Utils; using iWareDataCore.DEV.EnumType; using iWareDataCore.ORM; using iWareDataCore.TASK.Entity; using iWareDataCore.TASK.EnumType; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareCc.HandleTask.Chain { public class 获取一个已完成但未处理的分解任务 : IHandler { private IHandler nextHandler = null; /// /// 该节点的下一个节点 /// public IHandler NextHandler { set { nextHandler = value; } } /// /// 处理任务容器 /// private PartTaskContainer HandleTaskContainer; /// /// 获取一个已完成但未处理的分解任务 /// public 获取一个已完成但未处理的分解任务(PartTaskContainer handleTaskContainer) { this.HandleTaskContainer = handleTaskContainer; } /// /// 获取一个已完成但未处理的分解任务 /// public void Handle() { using (var dbModel = new DbModelCore()) { try { var pTask = dbModel.TASKPartTasks.OrderBy(x => new{x.handletimes, x.updatetime}).ThenBy(x => x.priority).FirstOrDefault(x => x.isfinished == (int)EYesOrNo.是 && x.ishandled == (int)EYesOrNo.否); if (pTask == null) { LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "获取一个已完成但未处理的分解任务:{0}", "没有找到待处理的分解任务"); return; } pTask.handletimes += 1; if (pTask.handletimes >= 1000) { pTask.handletimes = 0; } dbModel.SaveChanges(); HandleTaskContainer.PartTask = new PartTaskEntity(pTask); LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "获取一个已完成但未处理的分解任务:{0},{1}任务", HandleTaskContainer.PartTask.Id, (EEquipmentType)HandleTaskContainer.PartTask.MainTaskType); if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }