using iWareCc.DecomposeTask.Entity;
using iWareCc.Properties;
using iWareCommon.Common.Entity;
using iWareCommon.Common.EnumType;
using iWareCommon.Utils;
using iWareDataCore.BASE.EnumType;
using iWareDataCore.ORM;
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 MainTaskContainer MainTaskContainer;
///
/// 分解任务容器
///
private PartTaskContainer PartTaskContainer;
///
/// 呼叫任务容器
///
private PlaceContainer PlaceContainer;
private IHandler nextHandler = null;
///
/// 该节点的下一个节点
///
public IHandler NextHandler
{
set { nextHandler = value; }
}
///
/// 保存分解任务并将主任务标记为已分解
///
public 保存分解任务(MainTaskContainer mainTaskContainer, PartTaskContainer partTaskContainer, PlaceContainer placeContainer)
{
this.MainTaskContainer = mainTaskContainer;
this.PartTaskContainer = partTaskContainer;
this.PlaceContainer = placeContainer;
}
///
/// 将主任务标记为已分解,并将分解任务保存在数据库
///
public void Handle()
{
using (var dbModel = new DbModelCore())
{
try
{
var lTask = dbModel.TASKMainTasks.FirstOrDefault(x => x.id == MainTaskContainer.MainTask.Id);
lTask.status = (int)EMainTaskStatus.已分解;
lTask.decompositiontime = DateTime.Now;
dbModel.TASKPartTasks.Add(PartTaskContainer.PartTask.ToOrm());
if (PlaceContainer.Place != null)
{
var place = dbModel.BASEPlaces.FirstOrDefault(x => x.id == PlaceContainer.Place.Id);
if (place != null && place.id> 0)
{
place.isexecute = (int)EYesOrNo.是;
place.islock = (int)EYesOrNo.是;
place.status = (int)EPlaceStatus.执行中;
}
}
var count = dbModel.SaveChanges();
LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "保存相应的分解任务:{0}", count);
if (nextHandler != null)
{
nextHandler.Handle();
}
}
catch (Exception ex)
{
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
}
}
}
}
}