using HH.WCS.DaYang.dispatch;
using HH.WCS.DaYang.process;
using HH.WCS.DaYang.util;
using HH.WCS.DaYang.wms;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Web.Http;
using static HH.WCS.DaYang.api.ApiModel;
using static HH.WCS.DaYang.api.OtherModel;
using static System.Net.WebRequestMethods;
namespace HH.WCS.DaYang.api
{
///
/// mobox3调用,脚本中调用
///
public class MoboxController : System.Web.Http.ApiController
{
///
/// 任务暂停的请求
///
///
///
[HttpPost]
public SimpleResult PauseTask()
{
var result = new SimpleResult();
//ManualTaskSwitch [{"Area":"AAA","State":0}]
//准备一个数据模型,作为开关,收到暂停请求后,打开,后续相关流程的任务不再推送
//同时你要查询已经推送的任务,如果全部完成了或者取消了,找不到执行中的,返回成功
//收到暂停请求后,
return result;
}
public SimpleResult RecoverTask()
{
var result = new SimpleResult();
//ManualTaskSwitch [{"Area":"AAA","State":0}]
return result;
}
///
/// 任务取消(目前支持ndc)
///
///
///
[HttpPost]
public SimpleResult CancelTask(MoboxTaskBase model)
{
var result = new SimpleResult();
var task = WCSHelper.GetTask(model.TaskNo);
if (task != null)
{
if (task.N_B_STATE == 0)
{
//等待直接修改状态为取消
WCSHelper.UpdateStatus(model.TaskNo, 4);
result.resultMsg = "任务等待,直接取消";
}
else if (task.N_B_STATE != 3 && task.N_B_STATE != 4)
{
var url = Settings.tableUrls.Find(a => a.id == 2);
if (url != null)
{
HttpHelper http = new HttpHelper();
var CancelResult = http.CancelTask(task, url.url);
if (CancelResult != null && CancelResult.Code == 200)
{
WCSHelper.UpdateStatus(model.TaskNo, 4);
result.resultMsg = "任务取消已下发";
}
else
{
result.resultMsg = "任务取消失败";
}
}
else
{
LogHelper.Info($"任务取消,未找到对应取消任务接口,请检查配置文件");
}
}
else
{
result.resultCode = 1;
result.resultMsg = "任务已结束";
}
}
else
{
result.resultCode = 1;
result.resultMsg = "任务不存在";
}
return result;
}
///
/// 叠盘机状态切换
///
///
///
[HttpPost]
public SimpleResult MoboxChangeStatus(MoboxChangeStatus model)
{
var result = new SimpleResult();
//切换叠盘机状态,去调用wcs接口
HttpHelper http = new HttpHelper();
var url = Settings.tableUrls.Find(a => a.id == 5);
if (url != null)
{
var changeResult = http.ChangeStatus(model.Type, url.url);
if (changeResult.Code == 200)
{
result.resultCode = 0;
result.resultMsg = "切换成功";
}
else
{
result.resultCode = changeResult.Code;
result.resultMsg = "切换失败:" + result.resultMsg;
}
}
else
{
result.resultCode = 1;
result.resultMsg = "根据配置文件未获取到叠盘机状态切换接口,请检查配置文件";
}
return result;
}
///
/// 任务强制完成
///
///
///
[HttpPost]
public SimpleResult CompleteTask(MoboxTaskBase model)
{
var result = new SimpleResult();
var mst = WCSHelper.GetTask(model.TaskNo);
if (mst != null) {
if (!WCSHelper.CheckActionRecordExist(mst.S_CODE, 4))
{
//CacheBitCancelUpdate(mst);
//等待直接修改状态为取消
WCSHelper.UpdateStatus(model.TaskNo, 4);
//起点终点解绑 删除托盘表托盘
TaskProcess.CacheBitUpdate(mst, true);
TaskProcess.CacheBitCancelUpdate(mst);
}
else
{
//如果取货完成,开始卸货,卸货完成取消任务,则让任务直接强制完成
//CacheBitUpdate(mst, false);
//等待直接修改状态为取消
WCSHelper.UpdateStatus(model.TaskNo,3);
TaskProcess.CacheBitUpdate(mst, false);
}
}
else
{
result.resultCode = 1;
result.resultMsg = $"根据任务号{model.TaskNo}未找到对应任务";
}
//非成品取消工单,任务为取货完成直接失败 删除托盘
return result;
}
///
/// 修改任务优先级
///
///
///
public SimpleResult changePriority(ChangePriorityModel model)
{
LogHelper.Info("changePriority 接收:" + JsonConvert.SerializeObject(model), "API");
var result = new SimpleResult();
//切换叠盘机状态,去调用wcs接口
HttpHelper http = new HttpHelper();
var url = Settings.tableUrls.Find(a => a.id == 6);
if (url != null)
{
var changeResult = http.ChangePriority(model.TaskNo,model.Priority, url.url);
if (changeResult.Code == 200)
{
result.resultCode = 0;
result.resultMsg = "修改成功";
}
else
{
result.resultCode = changeResult.Code;
result.resultMsg = "修改失败:" + result.resultMsg;
}
}
else
{
result.resultCode = 1;
result.resultMsg = "根据配置文件未获取到修改任务优先级接口,请检查配置文件";
}
LogHelper.Info("changePriority 返回:" + JsonConvert.SerializeObject(result), "API");
return result;
}
}
}