using iWareCc.DecomposeTask.Entity; using iWareCc.Properties; using iWareCommon.Common.Entity; using iWareCommon.Utils; 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.DecomposeTask.Chain { public class 按策略获取一个待分解任务: IHandler { private IHandler nextHandler = null; /// /// 该节点的下一个节点 /// public IHandler NextHandler { set { nextHandler = value; } } /// /// 主任务容器 /// private MainTaskContainer MainTaskContainer; /// /// 从数据库里提取一个待分解的主任务 /// public 按策略获取一个待分解任务(MainTaskContainer mainTaskContainer) { this.MainTaskContainer = mainTaskContainer; } /// /// 从数据库中提取一个未分解的主任务(按照分解次数,优先级,创建时间排序) /// public void Handle() { using (var dbModel = new DbModelCore()) { try { var mTask = dbModel.TASKMainTasks.OrderBy(x => x.decompositiontimes).ThenBy(x => x.sendtime).ThenBy(x => x.priority).FirstOrDefault(x => x.status == (int)EMainTaskStatus.未分解); if (mTask == null) { LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "获取第一个分解任务:暂无待分解的任务"); return; } mTask.decompositiontimes += 1; if (mTask.decompositiontimes >= 100) { mTask.decompositiontimes = 0; } dbModel.SaveChanges(); MainTaskContainer.MainTask = new MainTaskEntity(mTask); LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "获取第一个分解任务:{0}", mTask.id); if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }