using iWareCc.Cache.Entity;
|
using iWareCc.Conveyor.Entity;
|
using iWareCc.DecomposeTask.Entity;
|
using iWareCcTest.Properties;
|
using iWareCommon.Common.Entity;
|
using iWareCommon.Common.EnumType;
|
using iWareCommon.Utils;
|
using iWareDataCore.BASE.Entity;
|
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;
|
using System.Threading.Tasks;
|
|
namespace iWareCc.DoConveyorTaskAuto.Chain
|
{
|
public class 发送输送机任务 : IHandler
|
{
|
/// <summary>
|
/// 该节点的下一个节点
|
/// </summary>
|
private IHandler nextHandler = null;
|
public IHandler NextHandler
|
{
|
set { nextHandler = value; }
|
}
|
|
/// <summary>
|
/// 任务容器
|
/// </summary>
|
private PartTaskContainer DecompositionTaskContainer;
|
|
|
private ConveyorEntity Conveyor;
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="resultContainer">结果容器</param>
|
/// <param name="decompositionTaskContainer">WIP任务容器</param>
|
public 发送输送机任务(ConveyorEntity conveyor, PartTaskContainer decompositionTaskContainer)
|
{
|
this.DecompositionTaskContainer = decompositionTaskContainer;
|
this.Conveyor = conveyor;
|
}
|
|
|
public void Handle()
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
try
|
{
|
var task = DecompositionTaskContainer.PartTask;
|
|
var gate = Conveyor.Gates.FirstOrDefault(x => x.Place.Id == task.SourcePlaceId);
|
|
var dTask = dbModel.TASKPartTasks.FirstOrDefault(x => x.id == task.Id);
|
if (gate.Place.PlaceTypeName == "gate21")//gate21-gate22的任务并不需要gate22反馈
|
{
|
var sc = Conveyor.Gates.FirstOrDefault(x => x.Place.PlaceTypeName == "sc");
|
var materila = dbModel.BASEMaterials.FirstOrDefault(x => x.code == task.MaterialCode);
|
|
dTask.isreleased = (int)EYesOrNo.是;
|
dTask.ishandled = (int)EYesOrNo.是;
|
dTask.voidlabel = (int)EYesOrNo.否;
|
dTask.isfinished = (int)EYesOrNo.是;
|
dTask.status = (int)EPartTaskStatus.已完成;
|
dTask.iscurrent = (int)EYesOrNo.否;
|
dTask.updatetime = DateTime.Now;
|
if (!string.IsNullOrEmpty(materila.wide))
|
{
|
sc.SendMaterialWindTask(materila.wide, materila.thick);
|
|
}
|
//删除库位物料绑定信息
|
var placeMaterial = dbModel.BASEPlaceMaterials.FirstOrDefault(x => x.materialid == materila.id && x.placeid == task.SourcePlaceId);
|
dbModel.BASEPlaceMaterials.Remove(placeMaterial);
|
|
var splace = dbModel.BASEPlaces.FirstOrDefault(x => x.id == task.SourcePlaceId);
|
splace.status = 0;
|
splace.isexecute = 0;
|
splace.islock = 0;
|
var tplace = dbModel.BASEPlaces.FirstOrDefault(x => x.id == task.ToPlaceId);
|
tplace.status = 0;
|
tplace.isexecute = 0;
|
tplace.islock = 0;
|
}
|
else
|
{
|
dTask.isreleased = (int)EYesOrNo.是;
|
dTask.status = (int)EPartTaskStatus.执行中;
|
dTask.iscurrent = (int)EYesOrNo.是;
|
dTask.updatetime = DateTime.Now;
|
var toPlace = dbModel.BASEPlaces.FirstOrDefault(x => x.id == dTask.toplaceid);
|
toPlace.isexecute = (int)EYesOrNo.是;
|
toPlace.islock = (int)EYesOrNo.是;
|
toPlace.status = (int)EPlaceStatus.执行中;
|
}
|
var flag=gate.SendGateTask();
|
if (!flag)
|
{
|
gate.WPutFinishSymbol = false;
|
LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送机任务流程/" + Conveyor.Equipment.EquipName, "发送输送机任务:{0},{1}", task.Id, flag);
|
return;
|
}
|
gate.TaskId = dTask.id.ToString(); ;
|
// var flag1 = gate.SendTaskId(task.Id.ToString());
|
|
// LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送机任务流程/" + Conveyor.Equipment.EquipName, "发送输送机任务:{0},{1}", task.Id, "准备发放完成信号");
|
|
// Thread.Sleep(1000);
|
|
// var flag2 = gate.SendOk();
|
|
// LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送机任务流程/" + Conveyor.Equipment.EquipName, "发送输送机任务:{0},{1}", task.Id, "完成信号发送完毕");
|
|
//if (!flag1 || !flag2)
|
// {
|
// gate.WPutFinishSymbol = false;
|
// LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送机任务流程/" + Conveyor.Equipment.EquipName, "发送输送机任务:{0},{1}", task.Id, flag1 || flag2);
|
// return;
|
// }
|
|
dbModel.SaveChanges();
|
|
gate.WPutFinishSymbol = false;
|
|
LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送机任务流程/" + Conveyor.Equipment.EquipName, "发送输送机任务:{0}", task.Id);
|
|
if (nextHandler != null)
|
{
|
nextHandler.Handle();
|
}
|
}
|
catch (Exception ex)
|
{
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
|
}
|
}
|
}
|
}
|
}
|