using HH.WCS.JingyuNongfu.core;
using HH.WCS.JingyuNongfu.device;
using HH.WCS.JingyuNongfu.dispatch;
using HH.WCS.JingyuNongfu.process;
using HH.WCS.JingyuNongfu.util;
using HH.WCS.JingyuNongfu.wms;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using static HH.WCS.JingyuNongfu.api.ApiModel;
namespace HH.WCS.JingyuNongfu.api
{
///
/// mobox调用
///
// [RoutePrefix("mobox")]
public class MoboxController : System.Web.Http.ApiController
{
[HttpPost]
//[Route("CancelTask")]
public SimpleResult CancelTask(MoboxTaskBase model)
{
var result = new SimpleResult();
var task = TaskHelper.GetTask(model.TaskNo);
if (task != null)
{
if (task.S_B_STATE.Trim() == "未执行")
{
//未执行直接修改状态为取消
TaskHelper.UpdateStatus(model.TaskNo, "取消");
//var wmsTask = TaskHelper.GetTask(model.TaskNo);
TaskProcess.CacheBitCancelUpdate(task);
}
else if (task.S_B_STATE.Trim() == "已推送")
{
NDCHelper.Cancel(task.S_TASK_NO.Trim());
result.resultMsg = "任务取消已经发送给小车";
#region 翻斗机复位信号 现在统一接收7来处理
//瓶坯翻斗机强制取消发送复位信号
//if (task.S_TYPE.Contains("翻斗机即产满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机即产空筐下线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存空筐下线(瓶胚)"))
//{
// var info = Settings.deviceInfos.Where(a => a.location.Contains(task.S_END_LOC)).FirstOrDefault();
// if (info != null)
// {
// LogHelper.Info($"取消接口 翻斗机发送复位信号", "发送信号");
// PlcHelper.SendHex(info.address, "3F00100D0A");
// }
//}
#endregion
}
else
{
result.resultCode = 1;
result.resultMsg = "执行中任务不允许取消";
}
}
else
{
result.resultCode = 1;
result.resultMsg = "任务不存在";
}
return result;
}
///
/// 强制完成
///
///
///
[HttpPost]
//[Route("CompleteTask")]
public SimpleResult CompleteTask(MoboxTaskBase model)
{
var result = new SimpleResult();
var task = TaskHelper.GetTask(model.TaskNo);
if (task != null)
{
if (task.S_B_STATE.Trim() == "未执行" || task.S_B_STATE.Trim() == "已推送" || task.S_B_STATE.Trim() == "完成" || task.S_B_STATE.Trim() == "强制完成" || task.S_B_STATE.Trim() == "失败")
{
result.resultMsg = "任务未执行或者已完成,不允许强制完成!";
}
#region 强制完成流程,现在统一接收7来处理(未取货完成取消订单,取货完成订单强制完成)
//else if (task.S_B_STATE.Trim() != "未执行" && task.S_B_STATE.Trim() != "待推送" && task.S_B_STATE.Trim() != "取消")
//else if (task.S_B_STATE.Trim() != "未执行" && task.S_B_STATE.Trim() != "待推送" && task.S_B_STATE.Trim() != "取货失败" && task.S_B_STATE.Trim() != "完成")
//{
// if (task.S_B_STATE.Trim() == "开始取货" || task.S_B_STATE.Trim() == "执行中")
// {
// //已推送但是没有完成或者取消,通知hosttoagv
// TaskHelper.UpdateStatus(model.TaskNo.Trim(), "失败");
// NDCHelper.Cancel(task.S_TASK_NO.Trim());
// result.resultMsg = "任务取消已经发送给小车";
// //起点解绑 删除托盘
// TaskProcess.CacheBitUpdate(task, true);
// TaskProcess.CacheBitCancelUpdate(task);
// var tpid = task.S_CNTRS.Split(',');
// foreach (var item in tpid)
// {
// ContainerHelper.delCntr(item);
// }
// //瓶坯翻斗机强制取消发送复位信号
// if (task.S_TYPE.Contains("翻斗机即产满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机即产空筐下线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存空筐下线(瓶胚)"))
// {
// var info = Settings.deviceInfos.Where(a => a.location.Contains(task.S_END_LOC)).FirstOrDefault();
// if (info != null)
// {
// LogHelper.Info($"强制完成 接口翻斗机发送复位信号", "发送信号");
// PlcHelper.SendHex(info.address, "3F00100D0A");
// }
// }
// }
// //取货完成货位直接加到终点,任务状态改为强制完成
// else if (task.S_B_STATE.Trim() == "取货完成" || task.S_B_STATE.Trim() == "开始卸货")
// {
// TaskHelper.UpdateStatus(model.TaskNo.Trim(), "强制完成");
// TaskProcess.CacheBitUpdate(task, false);
// //告诉小车取消任务
// NDCHelper.Cancel(task.S_TASK_NO.Trim());
// result.resultMsg = "任务强制完成已经发送给小车";
// //瓶坯翻斗机强制取消发送复位信号
// if (task.S_TYPE.Contains("翻斗机即产满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机即产空筐下线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存满筐上线(瓶胚)") || task.S_TYPE.Contains("翻斗机库存空筐下线(瓶胚)"))
// {
// var info = Settings.deviceInfos.Where(a => a.location.Contains(task.S_END_LOC)).FirstOrDefault();
// if (info != null)
// {
// LogHelper.Info($"强制完成接口 翻斗机发送复位信号", "发送信号");
// PlcHelper.SendHex(info.address, "3F00100D0A");
// }
// }
// }
// else
// {
// result.resultCode = 1;
// result.resultMsg = "任务未执行,不允许强制完成!";
// }
//}
#endregion
else
{
NDCHelper.Cancel(task.S_TASK_NO.Trim());
result.resultMsg = "任务强制完成已经发送给小车";
//result.resultCode = 1;
//result.resultMsg = "任务已结束";
}
}
else
{
result.resultCode = 1;
result.resultMsg = "任务不存在";
}
return result;
}
[HttpPost]
public SimpleResult CreatTask(MoboxCreatTask model)
{
var db = new SqlHelper