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
|
{
|
/// <summary>
|
/// mobox调用
|
/// </summary>
|
// [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;
|
}
|
|
|
/// <summary>
|
/// 强制完成
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[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<object>().GetInstance();
|
SimpleResult result = new SimpleResult();
|
LogHelper.Info($"CreatTask接收数据:{JsonConvert.SerializeObject(model)}");
|
if (model.Location != null && model.Area != null)
|
{
|
var startloc = LocationHelper.GetLocListAnybycode(model.Location).FirstOrDefault();
|
if (startloc.S_LOCK_STATE != "无")
|
{
|
result.resultCode = 1;
|
result.resultMsg = $"起点货位有锁,不生成任务";
|
return result;
|
}
|
string tray = $"{ContainerHelper.GenerateCntrNo()}";
|
var container = new Container { S_CNTR_CODE = tray, S_CNTR_STATE = "" };
|
if (db.Insertable<Container>(container).ExecuteCommand() > 0)
|
{
|
|
var list = LocationHelper.GetLocListAny(model.Area).ToList();
|
Location endloc = ProcessHelperPP.FindEndcolByLocList(list);
|
|
if (endloc != null)
|
{
|
string type="";
|
if (endloc.S_AREA_CODE== "LYP")
|
{
|
type = "留样品下线";
|
}
|
else if(endloc.S_AREA_CODE == "ZX")
|
{
|
type = "纸箱下线";
|
}
|
if (!string.IsNullOrEmpty(type))
|
{
|
TaskProcess.CreateTransport(model.Location, endloc.S_LOC_CODE, type, new List<string> { tray }, 1, 1, 1, 80);
|
}
|
else
|
{
|
|
result.resultCode = 1;
|
result.resultMsg = $"库区编码错误,无法确认任务类型 库区编码:{endloc.S_AREA_CODE}";
|
}
|
}
|
|
}
|
else
|
{
|
|
result.resultCode = 1;
|
result.resultMsg = "托盘创建失败";
|
}
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "起点终点位空,不允许生成任务";
|
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 解绑库区
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
public ReturnResult UntieArea(UntieArea model)
|
{
|
LogHelper.Info("UntieArea Request:" + JsonConvert.SerializeObject(model), "BindCntr");
|
return ApiHelper.UntieArea(model);
|
}
|
|
/// <summary>
|
/// 绑定库区
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public ReturnResult BindArea(BindArea model)
|
{
|
LogHelper.Info("BindArea Request:" + JsonConvert.SerializeObject(model), "BindCntr");
|
return ApiHelper.BindArea(model);
|
}
|
}
|
}
|