using HH.WCS.NongFuChaYuan.DeviceService;
using HH.WCS.NongFuChaYuan.DispatchService;
using HH.WCS.NongFuChaYuan.TaskController;
using HH.WCS.NongFuChaYuan.OtherService;
using HH.WCS.NongFuChaYuan.WmsService;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using static HH.WCS.NongFuChaYuan.ApiService.ApiModel;
using static HH.WCS.NongFuChaYuan.ApiService.OtherModel;
using System;
namespace HH.WCS.NongFuChaYuan.ApiService
{
///
/// API接口实现类
///
public class ApiHelper
{
static ApiHelper()
{
}
#region HostToAgv接口实现类
///
/// AGV信号处理
///
///
public static void OperateTaskStatus(AgvTaskState model)
{
if (string.IsNullOrEmpty(model.No))
{
//无任务号请求(交管)
DeviceProcess.SpecialTraffic(model.ForkliftNo, model.LockNo, model.State);
}
else
{
var wmsTask = TaskHelper.GetTask(model.No);
if (wmsTask != null)
{
if (model.ForkliftNo != "0")
{
if (model.State <= 7)
{
if (!TaskHelper.CheckActionRecordExist(model.No, model.State.ToString()))
{
//有任务号请求
switch (model.State)
{
case 1:
TaskHelper.Begin(wmsTask, model.ForkliftNo);
break;
#region MyRegion
case 3:
TaskHelper.UpdateStatus(wmsTask, "开始取货");
break;
case 4:
TaskProcess.OperateStatus(wmsTask, 4);
TaskHelper.UpdateStatus(wmsTask, "取货完成");
break;
case 5:
TaskHelper.UpdateStatus(wmsTask, "开始卸货");
break;
case 6:
TaskProcess.OperateStatus(wmsTask, 6);
TaskHelper.UpdateStatus(wmsTask, "卸货完成");
break;
#endregion
case 2:
if (!TaskHelper.CheckActionRecordExist(model.No, "6"))
{
TaskProcess.OperateStatus(wmsTask, 6);
}
TaskHelper.End(wmsTask);
break;
case 7:
TaskProcess.OperateStatus(wmsTask, 7);
TaskHelper.Fail(wmsTask);
break;
}
TaskHelper.UpdateAgvNo(wmsTask, model.ForkliftNo);
TaskHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData);
TaskProcess.ThirdReportStatus(wmsTask.S_SRC_NO.Trim(), model.ForkliftNo, model.State, model.ExtData, wmsTask);
TaskProcess.GeneralInterFaceFunc(wmsTask, model.State.ToString());
TaskProcess.RoboticarmTask(wmsTask, model.State);
}
}
else
{
//安全请求等
TaskProcess.OperateReq(model.No, model.State, model.ForkliftNo, model.ExtData);
TaskHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData);
}
}
}
}
}
internal static SimpleResult AddTask(ApiModel.AddTaskModel model)
{
var result = new SimpleResult();
var db = new SqlHelper