using IWareCC.CacheInfo.Container;
|
using IWareCC.Conveyor.Entity;
|
using IWareCC.ORM;
|
using IWareCC.Properties;
|
using IWareCC.wmsService;
|
using IWareCommon.Enum.Common;
|
using IWareCommon.Help;
|
using IWareCommon.Util;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IWareCC.Conveyor.Handle.FinishConveyorTaskAuto
|
{
|
public class 将输送线完成结果更新至数据库 : IHandler
|
{
|
/// <summary>
|
/// 该节点的下一个节点
|
/// </summary>
|
private IHandler nextHandler = null;
|
public IHandler NextHandler
|
{
|
set { nextHandler = value; }
|
}
|
|
private ConveyorEntity Conveyor;
|
|
/// <summary>
|
/// 任务容器
|
/// </summary>
|
private PartTaskContainer DecompositionTaskContainer;
|
|
|
public 将输送线完成结果更新至数据库(PartTaskContainer decompositionTaskContainer)
|
{
|
this.DecompositionTaskContainer = decompositionTaskContainer;
|
}
|
|
|
public void Handle()
|
{
|
using (var dbModel = new DbModel())
|
{
|
try
|
{
|
var task = DecompositionTaskContainer.DecompositionTask;
|
var parttask = dbModel.PartTasks.FirstOrDefault(x => x.isfinished == (int)EYesOrNo.否 && x.id == task.id);
|
parttask.isfinished = (int)EYesOrNo.是;
|
parttask.status = (int)EPartTaskStatus.已完成;
|
parttask.updatetime = DateTime.Now;
|
parttask.iscurrent = (int)EYesOrNo.否;
|
parttask.filereason = "";
|
var maintask = dbModel.MainTasks.OrderByDescending(x => x.id).FirstOrDefault(x => x.id == parttask.maintaskid);
|
if (maintask != null)
|
{
|
if (parttask.nexthandel == (int)ENextHandelTask.已全部完成)
|
{
|
maintask.finishstatus = 1;//任务已经全部完成
|
}
|
#region 入库高度检测处理
|
if ((parttask.sourceplace == "1021" && parttask.toplace == "1022") || (parttask.sourceplace == "1026" && parttask.toplace == "1027"))
|
{
|
if (task.heighttype != 0)//根据接收到的获取高度调取接口获取目标库位信息以及那个立库
|
{
|
IapitestClient iapservice = new IapitestClient();
|
string toplace = iapservice.getToPlace(int.Parse(maintask.taskno), task.containertype, task.heighttype);
|
LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + "Line" + parttask.sourceplace, "高度是{0}Wcf返回位置{1}", task.heighttype, string.IsNullOrEmpty(toplace) ? "无目标位置" : toplace);
|
if (!string.IsNullOrEmpty(toplace))//获取到了目标库位任务号和目标库位
|
{
|
maintask.heighttype = task.heighttype;
|
maintask.toplace = toplace.Substring(2);
|
maintask.storageno = int.Parse(toplace.Substring(0, 1));
|
parttask.targetplace = toplace.Substring(2);
|
parttask.storageno = int.Parse(toplace.Substring(0, 1));
|
parttask.heighttype = task.heighttype;
|
}
|
else
|
{
|
maintask.finishstatus = 3;
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
parttask.ishandled = (int)EYesOrNo.是;
|
PartTask otparttask = new PartTask
|
{
|
maintaskid = task.id,
|
maintasktype = task.maintasktype,
|
executionsequence = 1,
|
sourceplace = task.toplace,
|
status = (int)EPartTaskStatus.开始执行,
|
createtime = DateTime.Now,
|
updatetime = DateTime.Now,
|
voidlabel = (int)EYesOrNo.否,
|
priority = 100,
|
ismovetask = (int)EYesOrNo.否,
|
packageno = "0000",
|
taskcode = NumberHelp.GenerateRandomCode(),
|
targetplace = "0",
|
containertype = task.containertype,
|
toplace = task.sourceplace,
|
heighttype = (int)task.heighttype,
|
storageno = task.storageno,
|
ishandled = (int)EYesOrNo.是,
|
eqtype = (int)EPartTaskType.输送线任务,
|
type = (int)ENextHandelTask.入库处库口出库输送线任务,
|
nexthandel = (int)ENextHandelTask.已全部完成
|
};
|
if (task.toplace == "1027")
|
{
|
otparttask.toplace = "1026";
|
otparttask.eqid = (int)EDeviceId.Line1027号输送线;
|
otparttask.eqname = EDeviceId.Line1027号输送线.ToString();
|
}
|
else
|
{
|
otparttask.toplace = "1021";
|
otparttask.eqid = (int)EDeviceId.Line1022号输送线;
|
otparttask.eqname = EDeviceId.Line1022号输送线.ToString();
|
}
|
dbModel.PartTasks.Add(otparttask);
|
}
|
}
|
LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + "Line" + parttask.sourceplace, "高度是{0}位置{1}", task.heighttype, parttask.toplace);
|
}
|
#endregion
|
}
|
|
dbModel.SaveChanges();
|
|
LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + "Line"+parttask.sourceplace, "将完成结果更新至数据库:{0}", "保存成功");
|
|
if (nextHandler != null)
|
{
|
nextHandler.Handle();
|
}
|
}
|
|
catch (Exception ex)
|
{
|
//LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "将完成结果更新至数据库:{0}", ex.Message);
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
|
}
|
}
|
}
|
}
|
}
|