using iWareCc.Conveyor.EnumType;
using iWareCc.DecomposeTask.Entity;
using iWareCc.Properties;
using iWareCommon.Common.Entity;
using iWareCommon.Common.EnumType;
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.CreateOutMainTask.chain
{
public class 生成出库主任务: IHandler
{
///
/// 该节点的下一个节点
///
private IHandler nextHandler = null;
public IHandler NextHandler
{
set { nextHandler = value; }
}
private MainTaskContainer MainTaskContainer;
///
/// 构造函数
///
/// 结果容器
/// WIP任务容器
public 生成出库主任务( MainTaskContainer mainTaskContainer)
{
this.MainTaskContainer = mainTaskContainer;
}
public void Handle()
{
using (var dbModel = new DbModelCore())
{
try
{
var inoutlistdetail = dbModel.BASEInOutListDetailViews.FirstOrDefault(x =>x.isfinish== 0&&x.typename=="出库");
if (inoutlistdetail == null)
{
LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "在出库批次中未找到要出库的任务");
return;
}
string materialcode = inoutlistdetail.materialcode;
var placematerial = dbModel.BASEPlaceMaterialViews.FirstOrDefault(x => x.materialcode == materialcode);
if (placematerial == null)
{
inoutlistdetail.isfinish = 1;
dbModel.SaveChanges();
// alarm.SendGateAlarmTask((int)ESendCode.已在立库中不能入库);
LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", materialcode + "不在立库中");
return;
}
var tasknew = dbModel.TASKPartTasks.FirstOrDefault(x => x.type == (int)EPartTaskType.输送机任务 && x.isreleased == (int)EYesOrNo.否 && x.isfinished == (int)EYesOrNo.否 && x.materialcode == materialcode && x.maintasktype == (int)EMainTaskType.出库任务);
if (tasknew != null)
{
LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", materialcode + "已在要执行的任务序列中");
return;
}
var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == materialcode && x.tasktype == (int)EMainTaskType.出库任务&&x.status == 0);
if (task != null)
{
LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", "该任务已存在");
return;
}
TASKMainTask matask = new TASKMainTask()
{
taskno = DateTime.Now.ToFileTime().ToString(),
tasktype = (int)EMainTaskType.出库任务,
materialcode = materialcode,
syscode = "1",
sendtime = DateTime.Now,
sourceplace = "100101",
toplace = inoutlistdetail.placecode,
packageno = "",
processcardnumber = "",
quantity = 1,
status = 0,
decompositiontime = DateTime.Now,
wipstatus = 0,
decompositiontimes = 0,
islots = 0,
priority = 0,
};
MainTaskContainer.MainTask = new MainTaskEntity(matask);
if (nextHandler != null)
{
nextHandler.Handle();
}
}
catch (Exception ex)
{
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
}
}
}
}
}