using HH.WCS.Mobox3.YNJT_PT.dispatch;
|
using HH.WCS.Mobox3.YNJT_PT.process;
|
using HH.WCS.Mobox3.YNJT_PT.wms;
|
using Newtonsoft.Json;
|
using System.Collections.Generic;
|
using System.Reflection;
|
using System.Threading.Tasks;
|
using HH.WCS.Mobox3.YNJT_PT.util;
|
using System.Web.Http;
|
using static HH.WCS.Mobox3.YNJT_PT.api.ApiModel;
|
using static HH.WCS.Mobox3.YNJT_PT.api.OtherModel;
|
using static HH.WCS.Mobox3.YNJT_PT.api.WmsController;
|
|
namespace HH.WCS.Mobox3.YNJT_PT.api {
|
/// <summary>
|
/// mobox3调用,脚本中调用
|
/// </summary>
|
public class MoboxController : System.Web.Http.ApiController {
|
|
/// <summary>
|
/// 1.胎胚立库抽检出库、人工出库胎胚
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public SimpleResult embryoCheckOutStock(EmbryoCheckOutStockModel model)
|
{
|
LogHelper.Info("【1.胎胚立库抽检出库】embryoCheckOutStock 入参:" + JsonConvert.SerializeObject(model), "WMS");
|
SimpleResult result = new SimpleResult();
|
result = ApiHelper.embryoCheckOutStock(model);
|
LogHelper.Info("【1.胎胚立库抽检出库】embryoCheckOutStock 出参:" + JsonConvert.SerializeObject(result), "WMS");
|
return result;
|
}
|
|
|
/// <summary>
|
/// 任务取消(目前支持ndc)
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public SimpleResult CancelTask(MoboxTaskBase model) {
|
LogHelper.Info("CancelTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
|
var result = new SimpleResult();
|
var task = WCSHelper.GetTask(model.TaskNo);
|
if (task != null) {
|
|
if (task.N_B_STATE == 0)
|
{
|
//等待直接修改状态为取消
|
WCSHelper.UpdateStatus(model.TaskNo, "取消");
|
LocationHelper.UnLockLoc(task.S_START_LOC);
|
LocationHelper.UnLockLoc(task.S_END_LOC);
|
//货位容器解绑
|
/*LocationHelper.UnBindingLoc(task.S_START_LOC, new List<string> { task.S_CNTR_CODE });*/
|
result.resultMsg = "任务等待,直接取消";
|
}
|
else if (task.N_B_STATE < 3)
|
{
|
if (task.S_SCHEDULE_TYPE == "AGV")
|
{
|
//已推送但是没有完成或者取消,通知hosttoagv
|
NDCHelper.Cancel(task.S_CODE);
|
result.resultMsg = "任务取消已经发送给小车";
|
}
|
else if (task.S_SCHEDULE_TYPE == "WCS")
|
{
|
|
}
|
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "任务已结束";
|
}
|
|
|
}
|
else {
|
result.resultCode = 1;
|
result.resultMsg = "任务不存在";
|
}
|
LogHelper.Info("CancelTask response:" + JsonConvert.SerializeObject(result), "TSSG");
|
return result;
|
}
|
|
|
/// <summary>
|
/// 强制取消,正常取消收到车子返回7,判断已经取货的判定为完成
|
/// 强制取消的意思是车子取货了,人工拉走了,任务还是取消,直接标记任务为取消,后续收到任务状态7也不再处理
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public SimpleResult ForceCancelTask(MoboxTaskBase model) {
|
LogHelper.Info("ForceCancelTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
|
var result = new SimpleResult();
|
var task = WCSHelper.GetTask(model.TaskNo);
|
if (task != null)
|
{
|
if (task.N_B_STATE < 3)
|
{
|
//修改状态为取消
|
WCSHelper.UpdateStatus(model.TaskNo, "强制取消");
|
//给车子发送取消请求
|
NDCHelper.Cancel(task.S_CODE);
|
//起点终点解锁
|
LocationHelper.UnLockLoc(task.S_START_LOC);
|
LocationHelper.UnLockLoc(task.S_END_LOC);
|
//货位容器解绑
|
/*LocationHelper.UnBindingLoc(task.S_START_LOC, new List<string> { task.S_CNTR_CODE });
|
LocationHelper.UnBindingLoc(task.S_END_LOC, new List<string> { task.S_CNTR_CODE });*/
|
//同时添加一条动作记录
|
WCSHelper.AddActionRecord(task.S_CODE, 17, null, null);
|
result.resultMsg = "任务强制取消,已经发送给小车";
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "任务已结束";
|
}
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "任务不存在";
|
}
|
LogHelper.Info("ForceCancelTask response:" + JsonConvert.SerializeObject(result), "TSSG");
|
return result;
|
}
|
|
/// <summary>
|
/// 强制完成
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public SimpleResult ForceFinishTask(MoboxTaskBase model)
|
{
|
LogHelper.Info("ForceFinishTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
|
SimpleResult result = new SimpleResult();
|
var task = WCSHelper.GetTask(model.TaskNo);
|
if (task != null)
|
{
|
if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) {
|
task.N_B_STATE = 2;
|
WCSHelper.UpdateStatus(task, "强制完成");
|
TaskProcess.CacheBitUpdate(task, false);
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "取货未完成,无法强制完成";
|
}
|
}
|
else
|
{
|
result.resultCode = 1;
|
result.resultMsg = "任务不存在";
|
}
|
return result;
|
}
|
|
|
|
|
|
|
}
|
}
|